网页开发与游戏开发的区别

想学下游戏开发,最近一直在看egret相关的东西。有一些想法。

网页开发

浏览器提供的dom渲染机制,我们可以通过写html和css来描绘ui,浏览器会通过解析dom tree和css tree,最终生成render tree,然后写到显存区域,就是我们看到的网页。

dom tree和css tree有自己的一套机制,像盒模型、浮动、定位等。而且标签的方式也避免了手动调用api创建对象和组合的过程,android的布局也是类似的思路。

元素可以绑定事件,浏览器提供了事件的机制,可以处理用户交互的行为,结合网络请求获取的数据,就可以做一些可以交互的网页应用。

游戏开发

网页游戏的绘制是基于canvas。

canvas是网页中的一块独立绘图区域,可以用api操作具体的每一像素,渲染结果和dom+css相同,但是却没有dom之类的机制,一切都需要手动去绘制,去绘制直线、曲线、圆、矩形、图片等,因为没有css的机制,需要通过不断地刷新来做到视图的更新,刷新的频率就叫帧率。而且因为没有dom元素,所以也没法给具体的元素绑定事件,只能通过判断点击的位置和元素的区域的位置关系来判定和派发事件。

基于原始的canvas api太过麻烦,做游戏开发一般都会选用一个游戏引擎,他做的事我觉得就是在canvas之上实现了一套dom 、css的机制,当然他没有元素和样式,也没有特别复杂的事件交互。但是他会有 Stage、Sprite,会有DisplayObjectContainer和DisplayObject组成的树形结构,类似dom,但又不同,而且基于canvas实现了一套事件绑定的机制,可以做到和dom事件类似的使用方式,极大地简化事件处理。另外游戏中会有对音视频和图片的处理,游戏引擎也都做了封装。

总之,我觉得游戏引擎就是在canvas上实现了一套类似dom机制但又有自己特点的框架。

总结

网页应用需要处理的是显示逻辑、交互逻辑和业务逻辑,而游戏是更复杂的显示逻辑(动画)、以及交互逻辑、游戏逻辑。网页开发的dom +css 和游戏引擎在canvas之上建立起的类似机制,思想上相似之处,使用上有很多的不同。

游戏开发和dom类似但又不同的东西,学习的过程可以对渲染和交互还有ui有更深的理解。

你可能感兴趣的:(网页开发与游戏开发的区别)