网页游戏开发入门教程.docx

上传人:b****8 文档编号:28690872 上传时间:2023-07-19 格式:DOCX 页数:12 大小:21.42KB
下载 相关 举报
网页游戏开发入门教程.docx_第1页
第1页 / 共12页
网页游戏开发入门教程.docx_第2页
第2页 / 共12页
网页游戏开发入门教程.docx_第3页
第3页 / 共12页
网页游戏开发入门教程.docx_第4页
第4页 / 共12页
网页游戏开发入门教程.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

网页游戏开发入门教程.docx

《网页游戏开发入门教程.docx》由会员分享,可在线阅读,更多相关《网页游戏开发入门教程.docx(12页珍藏版)》请在冰豆网上搜索。

网页游戏开发入门教程.docx

网页游戏开发入门教程

网页游戏开发入门教程

一、简单的程序框架。

webgame程序组成:

三大部份。

第一是数据流程。

第二是程序。

第三是美术。

其中,数据流程包括了功能。

也只有在功能中才能表现数据流程。

数据流程相当的麻烦,后面再讨论。

比如最简单的卖买产品。

要实现那个功能。

那么需要有产品基础表、产品详细表、商店表、背包表。

若是扩展性更强,相应的双表是少不不了的。

表的问题都简单了。

关键是那个物品有什么用。

如此物品的来源,一大堆数据,物品的走向,又是一大堆数据。

最后,这些数据得绕成一个圈。

绕圈是一件困难的情形。

专门是功能和道具多了起来的时候。

难度是2的n次方。

在绕圈之前,若是你比较熟练设计模式。

那么那个进程能够简化。

难度由2的n次方变成1。

只需要有操纵器、事件工厂、抽象道具工厂这三个虚类;再加上按时器,任务编辑器,这两个通用类。

即能够构建一个健壮、高扩展的webgame。

在webgame里操纵器几乎能够等同于页面。

随意采纳一种模板技术即能很方便的处置。

事件工厂是一个抽象类,所有的事件,如打工、战斗、移动等都由事件工厂的生产。

而且接口相同,方便操纵器操纵。

工厂模式。

抽象道具工厂是一个抽象类,所有的道具,如城市、地图、装备等,都由抽象道具工厂生产。

而且接口相同。

工厂模式。

事件与道具的结合又是一个桥接模式。

 

美术:

UI。

简练漂亮的界面总会有益处。

小图标。

道具,地图,装备。

一类至少10个吧?

大体上百把个是需要的。

 

程序分5个部份:

效劳器按时器。

(C语言或自己设定效劳器)按时循环执行某一段代码。

而这段代码主若是依照数据库的数据进行更新。

那个能够找个C语言程序员来做。

关于C语言程序员来讲,那个功能是相当的简单。

固然,具体的处置数据的判定和操作数据库,需要你自己写。

让C语言程序员给你段标准代码就好了。

完全支持sql语句的。

php的话,能够配置corn实现。

可是不管是什么操作系统,配置的时刻最低是1分钟。

因此,若是你要处置1秒钟刷新一次的情形。

你还需要专门的按时器程序来处置,或被按时执行的php需要包括sleep().

固然,即便有即时交互,能够不管效劳器端。

只处置交互的两边的客户端。

js和ajax实现。

 

功能页面、功能函数。

要紧确实是数据存取,判定,数据走向。

用上抽象类,会比较轻松。

只是子类的爆炸是少不了的了。

ajax函数。

(可选)某些需要伪即时的功能要用到。

为了让游戏看起来酷一点。

用吧。

javascript函数。

(可选)模拟客户端的数据计算。

也确实是webgame的与时刻相关的数据。

分为两部份。

一部份是真实数据,是由效劳器端的按时器计算的。

另一部份是只有初始值,客户端显示用的。

不需要即时同步,仅仅需要模拟同步就行。

那个地址还包括一些漂亮的UI特效。

毕竟是游戏。

数据库。

一大堆基础数据表和详细数据表。

基础数据表:

比如品级1到品级100的用户的属性初始值。

详细数据表:

每一个用户的具体属性。

数据库上,尽可能优化。

结构上能用1字节的就别用2字节。

 

二、一个详细的例子。

单纯的讨论数据流程是件痛楚的情形。

讨论程序而不给代码也是比较痛楚。

那个地址用的是php+mysql的。

同时,那个例子没有效到类。

若是时刻充沛的话,今年年末,我会提供一个带即时交互的简单webgame代码和核心类来讲明利用了设计模式的益处。

那就按一个超简单的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。

 

classMapthis->Map_ID."'limit1";  

  $result=mysql_query($sql,$link);  

  echo"";

  $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;}";

 

  }

 

functionMap_bg($Map_ID){

  $this->Map_ID=$Map_ID;

 

  $sql="select*frommapwhereMap_ID='".$this->Map_ID."'";    

  $result=mysql_query($sql,$link);

  while($rs=mysql_fetch_array($result))  

  {

  echo"";

  echo"

";

 

  }

 

}

}

上面是一个很简单的地图类。

代码可能不太正确,意思是正确的。

确实是依照map表中的坐标,生成了一组div层,和这一组层的css。

你能够改成table的。

你能够也把坐标放到一个字段里,用数组的形式取。

利用的时候,用

newmap;

map(N);

其中N是map内外的地图Map_ID.

城市内的建筑也类似。

若是要显示出来的话。

关于地图,此刻我采纳的方式更为简单。

通过坐标来判定需要哪些图,然后直接显示出来。

固然没有碰撞什么的,因为临时不需要。

至于人物走动什么的,不在本文讨论范围。

有了地图和城市后。

涉及到的问题确实是城市里资源的产生。

这时,City内外需要有可供判定的时刻和数量的字段。

比如:

产生资金量Money,产生资金花费的时刻Action_Time,上次产生资金时刻Money_time。

这两个字段的数值应该在City_base内外显现。

(即城市基础表,不同品级,不同类型城市的对应数值。

这是给策划填数据用的,建好表后就等策划去头痛吧。

若是你身兼数职。

如何自动产生资源呢?

咱们能够在城市所有人改变的时候,写入一个时刻。

或在城市初始化的时候写入一个时刻。

$Now_Time=date('Y-m-dH:

i:

s');

(说明:

$开头是变量的意思。

php里特有的。

若是是asp的话能够写成。

Now_Time=Now())

把$Now_Time写入到Money_time里。

update("UPDATECitySET  Money_time='$Now_Time  WHERE  City_ID='$City_ID'LIMIT1;");

$City_ID是你自己概念的。

指某一个城市。

如:

$City_ID=1;

咱们假定当前城市产生资金量为100。

即$Money=100;(具体的数值,应该是由City_base内外掏出的。

假设距离时刻为$Action_Time,咱们再假定是每小时执行一次。

即$Action_Time=3600;(具体的数值,是依照你的初始化内外取得的。

也能够依照城市品级或用户品级取得。

终归随意你自己怎么设定。

这时,有基础时刻了。

有基础资金产量了。

有距离时刻了。

让它循环执行起来就好了。

上面说过,效劳端用C语言按时器。

客户端用javascript。

效劳端,资源按时器设定为5分钟执行一次。

那么咱们的误差确实是5分钟。

对网页游戏来讲,能够同意。

(战斗的按时器得1分钟吧。

固然效劳器够牛的话,几秒钟都能够。

固然,能够完全php写,然后配置php的corn。

此刻我在做的程序确实是直接用php写了。

包括任意长时刻的按时器类,专门操纵抽象事件用的。

C的按时器临时没用。

每次执行什么代码呢?

第一得新建一个按时器任务的表。

目的确实是让按时器明白需要执行哪些程序和数据的更新。

表内容比如:

城市资源更新。

固然,那个表可要可不要。

成立的益处是方便处置类似爱惜状态不产生资源之类的问题。

效劳端程序:

获适当前效劳器时刻。

获适当前需要更新城市。

判定效劳器时刻与$Money_time的时刻差。

(时刻戳,具体的时刻戳网上资料满多的。

判按时刻差是不是大于$Action_Time。

  大于,那么更新资源。

同时更新$Money_time。

  小于,那么无操作。

 

客户端程序:

获适当前效劳器时刻。

获适当前城市的$Money,$Money_time,$Action_Time。

利用javascript显示剩余时刻的倒计时,和增加的资源量。

 

客户端特殊情形触发:

因为客户端显示的资源情形是伪同步,因此当客户端利用该资源的时候。

需要效劳端将当前的实际资源更新,属于按时器处置的时刻也需要更新。

即,当客户端触发涉及资源的情形时,当即更新当前资源。

同时更新按时器中会用到的$Money_time。

如此才可不能造成,看的资源用不到,或按时重视复产生资源。

 

整体来讲。

这部份程序都很简单。

难点在C语言按时器的制作,和前台javascipt倒计时的写法上。

C语言按时器,找个C语言程序员,超简单;前台的javascipt,网上有很多倒计时的代码,找个来改改就能够用。

 

varmaxtime=那个地址是你的时刻差nnerHTML=msg;

nnerHTML='只剩3秒!

';

--maxtime;

}

else{

clearInterval(timer);

["timer"].innerHTML='时刻到';

}

}

timer=setInterval("CountDown()",1000);

那个是网上找的代码。

略微修改就能够够用的。

那个地址只是显示了倒计时。

也能够改成显示资源的增加情形。

C语言里操作mysql数据库。

rc='修建后建筑的图片地址';

rc='建筑动画所在的地址';//显示修建动画。

    }

    donghua();

    xiujian1();

    

附带讲一下。

若是要考虑多阅读器兼容,那么用。

若是只需要ff和ie。

那么用而

或尽可能自己写。

因为120k的不算小。

后台部份,把时刻到,增加资源的代码,改成时刻到,增加或更新建筑就好了。

又是增加N个表。

新的方式是,增加事件子类。

建筑基础表:

产出,类型,图片等等。

建筑详细表:

属于哪个城市,能够在城市内外关联。

关联的方式不同会对程序有专门大的阻碍。

各类关联方式都行,可是一旦关联方式确信后,最好别改动。

此刻建筑也有了。

用类似的按时方式,打工,征兵等等都能够实现。

战斗,

兵的参数:

军种,数量,解决,防御等等。

战斗的临时表:

谁的兵,打谁,动身时刻,战斗时刻,战斗结果。

那个地址的几个字到是简单。

实际的表会复杂一些。

webgame中,战斗的进程分两种,

一种是给出两边参数,时刻到,就依照公式计算结果。

一种是半即时或即时的战斗,能够边打边喝药边用技术的那种。

第一种流程。

点出兵。

这时,兵的参数,动身时刻,抵达时刻,都记录进战斗临时表。

按时器中,处置战斗的部份,判按时刻是不是到开打的时候。

到开打的时刻了,那么取得被解决方的兵的参数。

然后通过几个公式计算结果。

处置结果,比如谁的兵挂了多少,战场掉落了多少钱,城市被谁抢到了。

一大堆判定和updata。

(那个地址的按时器处置和取得资源的按时器处置是很类似的。

最后把结果别离发给两边。

(又涉及到一个短信息系统。

第二种流程。

点解决。

马上就处置数据。

打打npc好做。

玩家之间对战,也能够把被解决的玩家当做npc来处置。

两个人或两人以上即时战斗。

需要用到ajax了。

目前在技术上和理论上是没问题的,还没实际写代码,因此不行讲。

此刻,技术上已经确信能够专门好的实现了。

 

很简单的公式,两种战斗都能够用到:

intval(sqrt($User_B_AP)-sqrt($User_A_DP));

根号下解决-根号下防御=损害。

具体写的时候,公式确信会复杂很多,只是这头痛的事,仍是交给策划去做吧。

战斗的具体参数,其实已经不是程序考虑的了。

程序只需要考虑从数据表A取得数据,存入临时表B。

然后那时刻到了后(通过按时器实现),再从数据表C取得数据,通过公式计算,最后删除临时表B或把临时表B存到另外一个地址备份。

那个地址的思路其实确实是按时器类。

数据是哪些?

找策划要。

有几个表?

找策划要。

战斗公式?

找策划要。

有地图、城市、建筑、士兵、战斗后,道具的显现就有必要了。

什么缘故呢?

有了城市能做什么?

产生资源,产生钱,产生兵。

有了士兵做什么?

能够抢资源,抢钱。

资源和钱做什么?

买道具。

买道具做什么?

更好的抢资源和抢钱。

(同时,抢资源,抢钱的时候,资源会被消耗)

这是一个很简单的循环。

确实是绕成了一个圈,尽管那个圈很小。

有部份策划想得超级好,确实是绕不成圈,那样没任何意义。

第一,需要一个道具的基础表。

自动ID,道具类型,道具属性,说明。

在道具的处置上,能够在玩家内外增加更多字段,道具跟从玩家。

也能够单独建一个道具的详细表。

用类似背包的方式实现。

背包的方式有两种,一是用数组存储,二是用横向表存储。

都挺麻烦的。

只是从道具流通和生意上考虑。

用背包的方式是值得的。

接下来的功能。

商店。

拍卖行。

大体上跟一样的网站应用很类似。

只只是产品变成了游戏里的道具。

货币是游戏币。

三、总结

上面的小例子,思路上是大体完善,没问题的。

程序代码上只给了一小部份,能真正明白得这一小部份。

其他部份的程序应该不是问题。

webgame重要的仍是数据流的绕成圈,和可玩性。

此刻讲为:

程序的健壮和数据流的清楚。

上面的功能,真的做出来,是不够玩的。

确实是没什么可玩性,做出来都没意义。

可是,仅仅是做出来,仍然是一件困难的情形。

游戏里涉及的东西太多。

即便是很简单的游戏,即便webgame看上去很简单,乃至实际也很简单;做出来,超级困难。

没有过开发webgame体会的人,来策划webgame或说开发webgame。

会感觉很简单。

大功能其实就那么几个。

思路上也容易绕成圈。

实际情形是,一个超级简单的功能,当它需要绕圈的时候;当它需要交互的时候。

那个功能就再也不简单,而是复杂,相当的复杂。

这是当你不太明白设计模式的时候,若是你精通设计模式,那么功能就会简单起来。

专门是你想制作一款有足够的可玩性,能面向市场的产品,即便是初期思路超级简单,功能也很单纯。

但你实际策划的时候,实际编程的时候。

大量的数据、数值需要你去向理,大量的交互需要你去向理。

这时,开始的简单,已经变得复杂了。

尽管从程序的角度讲,技术含量不高。

更准确的讲,是繁琐,超级繁琐。

优秀的策划是能够把数据表列出来,把数据走向清楚的列出来,放在你眼前。

如此的策划不多的。

固然,他不必然列得很准确,可是程序员能比较准确的明白得他的意思。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1