游戏开发当然要找一款游戏引擎啦.

什么游戏引擎是完全免费/开源/跨平台而又不被特定厂商绑死的呢?

当然是【浏览器】啦.

在HTML5画布标签中可以用程序画2d和3d(WebGL)界面.

视频(CG)和音乐(BGM)播放可以用和标签.

浏览器提供的keydown/keyup等各种键盘和鼠标以及触屏事件可以用于处理用户输入.

网络通信可以用HTTP的AJAX和全双工的WebSocket.

所以当然是用世界上最好的编程语言JS来写游戏简单呀.

如何开发一个简单的HTML5 Canvas 2D小游戏(重点在于理解【游戏主循环】):

http://www.lostdecadegames.com/how-to-make-a-simple-html5-canvas-game/

主循环函数:

主循环函数控制了整个游戏的流程.

先是拿到当前的时间用来计算时间差(距离上次主函数被调用时过了多少毫秒).

得到时间差delta(增量)后除以1000(1秒=1000毫秒)作为modifier(因子)传入update函数.

最后调用render函数并且将本次的时间保存下来.

// 游戏主函数(GameLoop)

var main = function() {

var now = Date.now(); // 获取帧开始时间

var delta = now - then; // 变量增量(模拟时间:GameLoop帧之间的时间差),作为update操作的参数modifier

// http://blog.csdn.net/buck84/article/details/8235159

// 采集用户输入,根据模拟时间将移动命令打包发送给服务器.

// 获取服务器传过来的数据包,根据服务器数据包的内容决定可见物体(视野)及其状态(坐标),渲染场景.

update(delta / 1000); // CPU:根据时间增量delta计算并更新游戏对象的属性

render(); // GPU:画出所有物体

then = now; // 获取帧结束时间(结束时间减去开始时间就是下一帧的模拟时间delta)

// GameLoop:递归调用main方法来不断更新画面以达到动起来的效果

requestAnimationFrame(main); // 类似于 setTimeout(main, 1000/60);

};

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐