网页三剑客:flash、fireworks、dreamweaver。主要是这三个不过还要学html 最常见的是flash游戏,开发环境是windows加flash软件。 此外java或javascript或类似语言也可以做一些简单的网页游戏,如以前常见的俄罗斯方块等,不过资源多,编写麻烦,快绝种了。 所以说现在流行的网页游戏基本上等同于Flash游戏。
一、简单的程序框架。
webgame程序构成:
三大部分。
第一是数据流程。第二是程序。第三是美术。
其中,数据流程包括了功能。也只有在功能中才能体现数据流程。
数据流程相当的麻烦,后面再讨论。
比如最简单的卖买产品。
要实现这个功能。
那么需要有产品基础表、产品详细表、商店表、背包表。如果扩展性更强,相应的双表是少不不了的。
表的问题都简单了。关键是这个物品有什么用。这样物品的来源,一大堆数据,物品的走向,又是一大堆数据。
最后,这些数据得绕成一个圈。
绕圈是一件困难的事情。特别是功能和道具多了起来的时候。难度是2的n次方。
美术:
UI。简洁漂亮的界面总会有好处。
小图标。道具,地图,装备。一类至少10个吧?大体上百把个是需要的。
程序分5个部分:
服务器定时器。(C语言或自己设定服务器)定时循环执行某一段代码。而这段代码主要是根据数据库的数据进行更新。这个可以找个C语言程序员来做。对于C语言程序员来讲,这个功能是相当的简单。当然,具体的处理数据的判断和 *** 作数据库,需要你自己写。让C语言程序员给你段标准代码就行了。完全支持sql语句的。
功能页面、功能函数。主要就是数据存取,判断,数据走向。
ajax函数。(可选)某些需要伪即时的功能要用到。
javascript函数。(可选)模拟客户端的数据计算。也就是webgame的与时间相关的数据。分为两部分。一部分是真实数据,是由服务器端的定时器计算的。另一部分是只有初始值,客户端显示用的。不需要即时同步,仅仅需要模拟同步就行。
数据库。一大堆基础数据表和详细数据表。基础数据表:比如等级1到等级100的用户的属性初始值。详细数据表:每个用户的具体属性。
二、一个详细的例子。
单纯的讨论数据流程是件痛苦的事情。
讨论程序而不给代码也是比较痛苦。
这里用的是php+mysql的。
那就按一个超简单的webgame的方式来讨论。配上适当的代码。应该有所帮助。不足的地方也请大家指出,对我个人也是帮助。
我们不去考虑游戏的可玩性,数值平衡等等问题。我们先只考虑一个简单例子的实现。
那么一个webgame的基本内容需要些什么呢?
数据库:玩家、地图、城市、建筑、武器、士兵。
功能:登陆、升级、个人战斗、士兵之间的战斗、与城市的战斗、修建建筑、打造武器、买卖道具。
(注意:每一个功能,必然对应1个或多个数据表。上面数据库中所列的只是基础中的基础。)
首先是地图、城市、建筑。
这里认为,地图可以有多张,城市在地图上,建筑在城市内。
地图表
Map :Map_ID ,X坐标, Y坐标,City_ID(城市ID),描述。
其中Map_ID是指地图的id。不是自动编号。一张地图就是一个Map_ID,可以重复。
城市表
City:City_ID,城市名字,城市所有人,城市等级,城市资源,描述。
建筑表
Build:ID,City_ID,建筑名称,建筑等级,建筑功能。
其中,地图表确定城市的位置,城市表确定城市的相关数据以及所有人,建筑表内的多条信息属于某一个城市。
建表后,显示出来。
一个for循环。把地图表整个取出来就ok。
跟普通网站的新闻列表没太大区别。不同的是,你需要取得X坐标和Y坐标定位。可以用tabel也可以用div。
class Map//地图类
{
var $Map_ID;
function Map_bg_css($Map_ID) {
$this->Map_ID = $Map_ID;
mysql_select_db($db_name,$link);
$sql=”select from map where Map_ID=’”$this->Map_ID”‘ limit 1″;
$result=mysql_query($sql,$link);
echo “<style type=””text””/””css>”;
$rs=mysql_fetch_array($result);
echo “#map{”;
echo “position:absolute;”;
echo “width:”$rs[X坐标]”px;”;
echo “height:”$rs[Y坐标]”px;”;
echo “z-index:0;”;
echo “left:0px;top:0px;}”;
}
function Map_bg($Map_ID){
$this->Map_ID = $Map_ID;
$sql=”select from map where Map_ID=’”$this->Map_ID”‘”;
$result=mysql_query($sql,$link);
while($rs=mysql_fetch_array($result))
{
echo “<div id=Layer_bg_”$rs[X坐标]”_”$rs[Y坐标]”>”;
echo “<img src=”$rs[Map_bg]” border=0 title=”$rs[ID]”></div>”;
}
}
}
上面是一个很简单的地图类。代码可能不太正确,意思是正确的。就是根据map表中的坐标,生成了一组div层,以及这一组层的css。
你可以改为table的。你可以也把坐标放到一个字段里,用数组的形式取。
使用的时候,用
new map;
map(N);
其中N是map表里的地图Map_ID
城市内的建筑也类似。如果要显示出来的话。
有了地图和城市后。
涉及到的问题就是城市里资源的产生。
这时候,City表里需要有可供判断的时间和数量的字段。
比如:产生资金量Money,产生资金花费的时间Action_Time,上次产生资金时间Money_time。
这两个字段的数值应该在City_base表里出现。(即城市基础表,不同等级,不同类型城市的对应数值。这是给策划填数据用的,建好表后就等策划去头痛吧。如果你身兼数职。。。)
如何自动产生资源呢?
我们可以在城市所有人改变的时候,写入一个时间。或者在城市初始化的时候写入一个时间。
$Now_Time=date(’Y-m-d H:i:s’);
(说明:$开头是变量的意思。php里特有的。如果是asp的话可以写成。Now_Time=Now() )
把$Now_Time写入到Money_time里。
update(”UPDATE City SET Money_time=’$Now_Time WHERE City_ID=’$City_ID’ LIMIT 1;”);
$City_ID是你自己定义的。指某一个城市。如:$City_ID=1;
我们假定当前城市产生资金量为100。即$Money=100;(具体的数值,应该是由City_base表里取出的。)
假设间隔时间为$Action_Time,我们再假定是每小时执行一次。即$Action_Time=3600;(具体的数值,是根据你的初始化表里取得的。也可以根据城市等级或者用户等级取得。反正随便你自己怎么设定。)
这时候,有基础时间了。有基础资金产量了。有间隔时间了。
让它循环执行起来就行了。
上面说过,服务端用C语言定时器。客户端用javascript。
服务端,资源定时器设定为5分钟执行一次。那么我们的误差就是5分钟。对网页游戏来说,可以接受。(战斗的定时器得1分钟吧。当然服务器够牛的话,几秒钟都可以。)
每次执行什么代码呢?
首先得新建一个定时器任务的表。目的就是让定时器知道需要执行哪些程序和数据的更新。表内容比如:城市资源更新。当然,这个表可要可不要。建立的好处是方便处理类似保护状态不产生资源之类的问题。
服务端程序:
获得当前服务器时间。
获得当前需要更新城市。
判断服务器时间与$Money_time的时间差。(时间戳,具体的时间戳网上资料满多的。)
判断时间差是否大于$Action_Time。
大于,则更新资源。同时更新$Money_time。
小于,则无 *** 作。
客户端程序:
获得当前服务器时间。
获得当前城市的$Money,$Money_time,$Action_Time。
使用javascript显示剩余时间的倒计时,以及增加的资源量。
客户端特殊情况触发:
因为客户端显示的资源情况是伪同步,所以当客户端使用该资源的时候。需要服务端将当前的实际资源更新,属于定时器处理的时间也需要更新。
即,当客户端触发涉及资源的情况时,立即更新当前资源。同时更新定时器中会用到的$Money_time。这样才不会造成,看的资源用不到,或者定时器重复产生资源。
总体来说。这部分程序都很简单。难点在C语言定时器的制作,以及前台javascipt倒计时的写法上。
C语言定时器,找个C语言程序员,超简单;前台的javascipt,网上有很多倒计时的代码,找个来改改就能用。
<SCRIPT LANGUAGE=”JavaScript”>
var maxtime = 这里是你的时间差///一个小时,按秒计算,自己调整!
function CountDown(){
if(maxtime>=0){
minutes = Mathfloor(maxtime/60);
seconds = Mathfloor(maxtime%60);
msg = “你的文字说明”+minutes+”分”+seconds+”秒”;//动态显示剩余时间。
documentall["timer"]innerHTML=msg;
//if(maxtime == 3) documentall["timer"]innerHTML=’只剩3秒!’;
–maxtime;
}
else{
clearInterval(timer);
documentall["timer"]innerHTML=’时间到’;
}
}
timer = setInterval(”CountDown()”,1000);
</SCRIPT>
<div id=timer></div>
这个是网上找的代码。稍微修改就可以用的。这里只是显示了倒计时。也可以改为显示资源的增加情况。
C语言里 *** 作mysql数据库。
// TODO: Add your control notification handler code here
bool bRes = m_dbConnConnect(”数据库ip地址”, 3306 , “用户名”, “[email=d203!@#ghj]密码[/email]“, “数据库名”);
if(!bRes)
{
AfxMessageBox(”connect fail”);
return;
}
string strSql = “select from city limit 1″;//所有显示或取值类的都用这段。中间的sql语句可以自己构造。
ResultSet rs = m_dbConnExecuteQuery(strSql);
while(rs->Next())
{
string str = rs->GetString(”username”);
AfxMessageBox(strc_str());
}
/
strSql = “update city set money=money +100 where City_ID=’xxx’”;//所有的增加、删除、更新都用这段,中间的sql语句可以自己构造。
bRes = m_dbConnExecuteUpdate(strSql);
if(!bRes)
{
AfxMessageBox(”ExecuteUpdate fail”);
}
/
m_dbConnClose();
定时器的主函数。
void CBeiLiDlg::Go()
{
while(true)
{
// AfxMessageBox(”go”);
Sleep(51000);//毫秒。定时器刷新时间。
}
}
//相当的简单。
当然。这里的C的代码不能直接用。只是一部分。
地图、城市、基本上算是有了。
接下来是城市里的建筑。
上面讲的资源增加,其实定位在建筑上更准确。不过建筑的分类和数值会复杂很多。那是策划考虑的问题。
建筑上,只讲一个前台的修建效果。
当然,这个效果是可有可无。你可以直接给个类似新闻列表的显示,再加个倒计时就行。
显示的效果就是,点修建后。不刷新页面,调入一张动画。并在时间到后自动转换为其他。
<script language=’javascript’>
function xiujian()
{
topabcdocumentgetElementById(’前台建筑位置所在的id’)src=’修建后建筑的地址’;
//显示修建后的建筑。可以加上后台时间判断。其中abc,是建筑所在层的id,
}
function xiujian1()
{
setTimeout(’xiujian()’,5000);//动画时间5秒。这里也可以加入时间判断。当时间不到的完成的时候,继续调用动画。
}
function donghua()
{
topabcdocumentgetElementById(’前台建筑位置所在的id’)src=’建筑动画所在的地址’;//显示修建动画。
}
donghua();
xiujian1();
</script>
后台部分,把时间到增加资源的代码改为时间到增加或更新建筑就行了。又是增加N个表。。
建筑基础表:产出,类型,等等。。
建筑详细表:属于哪个城市,可以在城市表里关联。关联的方式不同会对程序有很大的影响。各种关联方式都行,但是一旦关联方式确定后,最好别改动。
现在建筑也有了。用类似的定时方式,打工,征兵等等都可以实现。
战斗,
兵的参数:兵种,数量,攻击,防御等等。
战斗的临时表:谁的兵,打谁,出发时间,战斗时间,战斗结果。
这里的几个字到是简单。实际的表会复杂一些。
webgame中,战斗的过程分两种,
一种是给出双方参数,时间到,就根据公式计算结果。
一种是半即时或者即时的战斗,可以边打边喝药边用技能的那种。
第一种流程。
点出兵。这时候,兵的参数,出发时间,到达时间,都记录进战斗临时表。
定时器中,处理战斗的部分,判断时间是否到开打的时候。到开打的时间了,则取得被攻击方的兵的参数。然后通过几个公式计算结果。处理结果,比如谁的兵挂了多少,战场掉落了多少钱,城市被谁抢到了。一大堆判断以及updata。(这里的定时器处理和获得资源的定时器处理是很类似的。)
最后把结果分别发给双方。(又涉及到一个短信息系统。)
第二种流程。
点攻击。马上就处理数据。打打npc好做。玩家之间对战,也可以把被攻击的玩家当成npc来处理。
两个人或两人以上即时战斗。需要用到ajax了。目前在技术上和理论上是没问题的,还没实际写代码,所以不好讲。
很简单的公式,两种战斗都可以用到:
intval(sqrt($User_B_AP)-sqrt($User_A_DP));
根号下攻击-根号下防御=伤害。
很多人想投身游戏行业,成为真正的游戏制作人。但是他们对游戏的制作过程,和各个职位的职能都是比较陌生的。对网页游戏开发也不够了解,游戏到底是怎么制作出来的呢?\x0d\\x0d\网页游戏开发的程序构成分为三大部分:第一是数据流程。第二是美术。第三是程序。\x0d\1、数据流程\x0d\数据流程其中,数据流程包括了功能。也只有在功能中才能体现数据流程。\x0d\比如最简单的卖买产品。要实现这个功能,那么需要有产品基础表、产品详细表、商店表、背包表。如果扩展性更强,相应的双表是少不不了的。\x0d\表的问题都简单了,关键是这个物品有什么用,这样物品的来源,一大堆数据,物品的走向,又是一大堆数据。最后,这些数据得绕成一个圈。绕圈是一件困难的事情,特别是功能和道具多了起来的时候。难度是2的n次方。\x0d\2、美术\x0d\UI:简洁漂亮的界面总会有好处。\x0d\小图标:道具,地图,装备,一类至少10个吧?大体上百把个是需要的。\x0d\3、程序分5个部分\x0d\数据库:一大堆基础数据表和详细数据表。基础数据表:比如等级1到等级100的用户的属性初始值。详细数据表:每个用户的具体属性。\x0d\功能页面、功能函数。主要就是数据存取,判断,数据走向。\x0d\ajax函数:(可选)某些需要伪即时的功能要用到。\x0d\javascript函数:(可选)模拟客户端的数据计算。也就是webgame的与时间相关的数据。分为两部分。一部分是真实数据,是由服务器端的定时器计算的。另一部分是只有初始值,客户端显示用的。不需要即时同步,仅仅需要模拟同步就行。\x0d\服务器定时器:(C语言或自己设定服务器)定时循环执行某一段代码。而这段代码主要是根据数据库的数据进行更新。这个可以找个C语言程序员来做。对于C语言程序员来讲,这个功能是相当的简单。当然,具体的处理数据的判断和 *** 作数据库,需要你自己写。让C语言程序员给你段标准代码就行了。完全支持sql语句的。\x0d\当然在网页游戏开发前,还要组织相关的专业人才,制作一款网络游戏需要的最核心人才是原画、2D、3D、程序设计、策划等这些方面的人才是必不可少的,因此,要开发一个网页游戏除了要程序员以外,千万不要忘了准备以上人才。
1 其实网页游戏出现得很早,最早的网页游戏其实就是一些用HTML写的简单网页,界面简陋,交互手段贫乏,玩家与游戏的每次交互都会引起浏览器刷屏一次。这时的网页游戏,用户体验与PC单机游戏相比,判若云泥,天壤之别。界面与交互手段的限制,使网页游戏在游戏玩法设计上也无法施展,因此网页游戏一直难以登堂入室,不被玩家认可。近两年来,网页游戏的兴旺发展、逐渐为人所知乃至被一些受众接受和喜爱,是浏览器技术发展的必然产物。技术的发展为网页游戏提供了丰富的表现手段。最近几年兴起的丰富互联网应用(Rich Internet Application,简称RIA)技术,能在浏览器这个应用最广的平台上做出美不胜收的显示和交互效果来。尤其值得一提的是AJax技术,在浏览器上不刷屏就能与服务器通信,更新网页的局部信息,极大地提高了用户体验。使用这种技术,做出的应用与传统桌面程序即使暂时无法平分秋色,但分庭抗礼的发展趋势已然初现。拿目前最流行的网页游戏《猫游记》作为例子:它的界面和动态交互过程,已经让人难以区分这是一个独立的游戏程序,还是浏览器上的网页应用。技术的发展趋势是,今后大多数应用程序都可以在浏览器里面去做。业界最近把浏览器作为一个虚拟的 *** 作系统来看,称之为WebOS, WebOS上跑Writely、Gmail、Flickr来替代写字板,Foxmail和Acdsee这类桌面应用。那么,WebOS上也会出现抢眼的游戏佳作。
2 按照游戏市场和用户视角来分析,网页游戏绝对不是主流游戏,而且也不可能成为主流。但是它满足了一部分人的需求,适应了一个细分市场。营销专家说过“你不可能把东西卖给所有人,深耕小众市场往往有大收获。”玩网页游戏的小众是哪些人根据中国网页游戏论坛的投票调查,网页游戏的主要玩家分布为上班白领(6039%)和学生群体(3263%)。白领特点是工作压力大,玩游戏的时间和精力都相当有限。但是无论如何,娱乐需求、尤其是忙碌工作间歇放松心情的需求,对于白领来说是一直存在的。上班的间隙不可能玩魔兽或者魔域这样大游戏,除非你吃了豹子胆!老板发现非得炒了你的鱿鱼!即使老板不管,你工作已经累得要趴下了,还有精力和时间放在这些耗时间和精力的游戏上吗这时,打开浏览器,清闲自在地玩一下网页游戏《开心农场》或者《抢车位》如何你在瞬间得到了放松和乐趣,而老板还以为你在上网查资料。因此,网页游戏最基本的特征,显然不是绚丽的画面、高超的3D技术,而是它刺中了上班族那根潜藏已久、没时间又怕辛苦的游戏娱乐神经。网页游戏提供的轻量级娱乐,占时间少, *** 作简单,给忙碌紧张的上班族一丝难得的轻松快意。这是它存在的理由。我们还注意到一个细节,那就是玩魔兽网游的玩家,并不排斥玩网页游戏。笔者就认识一个朋友,晚上回家大战魔兽,但白天上班时会偶尔打开浏览器,在开心网上里管理他的农场。一个是主流,一个是支流,一个是重量级大作,一个是轻量级娱乐,各有各的风格,各有各的玩法,道并行而不悖。大餐并不妨碍精制小菜的存在。如果说存在的就是合理的,那么网页游戏这种新形式的游戏,存在不仅合理,其发展也是合理的,因为符合市场需求。
3 从制作者的视角来看,网页游戏最大的贡献是它提供了一个低门槛的、通向财富和名声之路。何以见得网页游戏本来就是网络游戏。在这里,网络通信细节被浏览器实现了,屏蔽了,游戏开发者无需购买昂贵的网游引擎,就可廉价地实现网络游戏。这对于中国的游戏制作者意义重大。
4 从受众群体容量的角度来说,网页游戏有天然优势。只要能浏览网页的人都是网页游戏的潜在受众。这个群体非常巨大。以下是一些2007年的CNNIC调查数据:
中国网民数量达137亿,世界第二。据市场统计,中国2006年网游的收入是59亿,人群达到率70%,其中,QQ游戏到达率37%(5000万人),联众:20%(2700万), 盛大:19%。这里有一个细节值得研究:为什么QQ游戏的达到率远高于盛大因为有QQ的存在,它提供了简化的到达途径。人性都是懒惰的,喜爱用举手之劳的 *** 作来达到目的。在QQ上一点击就能达到QQ游戏,而盛大就没有这样的利器,联众更没有。游戏的到达率与简便的途径关系非常密切。与此类似,网页游戏,使用浏览器把游戏体验的途径简化到了极致:能上网的人,都可以"无需下载任何东西,无成本、无等待"地玩网页游戏,只要输入URL地址就可。这种简化是革命性的,与PC网游成鲜明对比。PC网游需要下载庞大的客户端,无法与网页游戏的便利性相比。因此,网页游戏有巨大的潜在受众,又把体验游戏的过程简化到了极致,其发展潜力不容忽视,现在所缺的,就是好游戏。
5 网页游戏首先是游戏,而游戏的黏人程度是远远超过一般网站。媒体报道,据美国市场研究机构Parks Associates近日公布的一份报告称,尽管网络视频和社交网站非常流行,但网络游戏仍然是美国网民最喜爱的娱乐方式。据数据显示,34%的美国成年网民每周都会玩网络游戏,而观看YouTube等视频网站的比例为29%,访问MySpace和Facebook等社交网站的比例为19%。无独有偶,在国内,同样是猫扑的产品,《猫游记》的知名度和黏人程度超过了它的视频网站。可以说,许多所谓的Web20,在吸引和黏住网民方面远不如网页游戏。话也可反过来说,那就是,网页游戏是web20的最佳实践(best practice)之一。中国的情况和欧美不一样,互联网被当作一个巨大的娱乐平台,所以这更具有实践指导意义。那些扭捏作态、从国外拷贝模式的所谓web20网站,还不如立刻放弃,直奔网页游戏而去。
以上就是关于网页游戏用到什么网页设计软件或工具全部的内容,包括:网页游戏用到什么网页设计软件或工具、怎么制作一个网页游戏、怎么制作网页游戏等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)