2个登峰造极的Javascript应用

百晓生用Javascript重现的《新剑侠情缘》:

[url]http://www.script8.com/bbs/project/newsword[/url]


游戏相关截图以下:

游戏开始界面:


制做人员:

打斗:



————————————————————————————————————————
用Javascript重建星际争霸  

 

演示地址

     [url]http://www.script8.com/works/sc/index.htm[/url]

 

背景介绍
  对不少人来讲,javaScript是一种颇为神秘的语言,这种语言由浏览器解析,能够实现很复杂的功能,但在实际中又使用甚少。在以相对定位为基础的网站体系中,js并非必不可少的,最先的浏览器并不支持js,只需使用纯静态的html,也能创建功能完备的网站。对于页面开发人员来讲,使用js的时候估计也就是用于数据合法性检查而已。近年来,随着ajax概念崛起,js的使用有所增长,不过除了web邮箱等少数工具型的网站以外,其做用仍然是辅助性的。
  实际上,js做为最流行的脚本语言,功能是很是强大的,笔者就曾经利用js来模拟星际争霸。你们都知道,星际争霸是即时战略游戏史上的里程碑,在玩家心目中的地位是不言而喻的,泡在各类各样的网吧里玩星际曾经是笔者生活的一部分。仅凭一腔热血,我就着手用js来开发星际,这是一次坚难的历程,充满了挫折,也享受到了乐趣,最后可以完成,倒是开始时我也没有奢望到的。
  js星际源码最先发布于无忧脚本的论坛里,获得了不少网友的好评,让我感动之余,也惟有更加努力。经过此次开发,个人js开发技术有了不少提升,还认识了许多喜欢js开发的朋友,幸哉!js星际如今的存放地址是 [url]http://www.script8.com/works/sc/index.htm[/url],有兴趣的朋友欢迎参与讨论。 解决方案   寻径算法是游戏的基础,也是运算量最大的部分。我没有使用A*算法,由于对脚原本说开销太大了,而是自主开发一种新算法,称之为交点法,特色是线性寻径,运算量比较小,缺点是不能保证结果为最短路径。交点法的基本思路简述以下:   1.从起点到终点画直线,与障碍物相交时,总会出现对应的穿入点和穿出点。   2.从穿入点的两个方向同时绕行障碍物,选择先到达穿出点的路线做为前进路线,这样就获得了一条比较原始的路线。   3.对路线进行优化,判断两点是否造成通路,删除冗余点,获得最终的路径。   寻径时大量使用了判断是否障碍点的运算,通常的作法是遍历数组,分别比较才能获得结果。我把障碍点序列变成一个长字符串,经过字符串包含关系就能够判断出当前点是否障碍点,这样就减小了不少运算量。   js星际所实现的,至关因而星际争霸的开场部分,即采矿、制造建筑物和生产士兵,战斗部分略有涉及。在编码以前,就须要有许多准备工做,光是图片的制做就很是烦锁,须要万分的耐心才行。另外,我还用hta技术开发了一个地图编辑器,用于生成地图数据。   游戏里的控制面板比较精简,缩略地图和选择信息集成到右上角的一个小面板里,其余部分都属于游戏场景。每一个移动单位有8个方向,以枪兵为例,须要用24张图片来表现站立和走动各类姿态。这些图片都集成在一张大图里,根据走动或站立状况,显示其中的对应部分,好比在走动时,判断出走动方向,一边移动枪兵位置,一边三张图片轮显,表现出走动的情形。   游戏初始化时,载入地图数据,根据不一样的建筑物属性,一方面生成场景,另外一方面生成障碍物列表,用于寻路之用。默认状况下,地图上有几个矿工,圈选后,点击目标能够自主行走,根据游戏要求,若是点击到的是矿石,就会在矿区和总部间来回走动,每次往返都会增长矿藏量。   至于哪种建筑物能生产什么兵,每一个兵须要多少资源,建筑物的生产顺序是什么,这些相对来讲都比较容易,无非是作更多的图片处理和更多的逻辑判断而已,限于篇幅就不详细介绍了。 经验分享   不用太担忧功能的实现,由于js已经很是完善了,能够为所欲为地进行各类运算,使用绝对定位的机制,能够轻松建立界面,再利用时钟模拟多线程,实时移动图片,就能够表现动画了,问题主要体如今速度和性能上。由于js做为一种脚本语言,其计算性能无疑是先天不足的,同时浏览器也不支持directX和openGL等硬加速,动画能力没法另人满意。只有经过减轻运算量,合理分配动画资源,才能保证游戏的平滑运行。js星际的开发,正是到处遵循了这个原则,能简则简,能省则省,很是节约地使用各类资源,才最终得以实现。   千万不要在游戏中使用滤镜技术,特别是动态滤镜,滤镜渲染时会占用大量的cpu,在cpu占用达到80%以上时,游戏就会感受比较卡。这一点和flash作的同类程序有明显区别,即便cpu占用率接近100%,flash程序仍然能保持至关的平滑。   凭心而论,客户端的游戏开发,应该仍是以flash为主。与之相比,js的好处是可与网站无缝链接,也不须要安装插件。固然了,只要是好玩实用的游戏,即便是用js开发的,也何尝不可。
相关文章
相关标签/搜索