概要:
一直想看看游戏引擎是怎么回事,听说了很多,最终选择了微云的WiEngine作为入手点
相对于其他而言 WiEngine毕竟是中方开发的,一上来就看英文的可能会有些难懂,这也是选择它的一个原因,另外一方面是看到WiEngine提供了相当丰富的DEMO演示,但是这里也要说的是WiEngine的文档真是非常简陋,只是一个类关系图,方法,很多甚至连参数意义和函数作用都没有,这也导致了在看demo代码的过程中,很多问题没法方便的解决。
WiEngine是吸取cocos2d改写的,但是很可惜并不开源,不过这暂时没有大碍,作为看看游戏引擎是怎么回事的我,已经算足够了。同时WiEngine虽说是iOS,android等都支持,但是真正要移植还是需要用C++,NDK去开发,这个暂时也不讨论了。
WiEngine中一些比较重要的概念有场景Scene,导演Director,节点Node,层Layer,Sprite精灵,Atlas图片集,Action动作等,这些概念在以前模模糊糊也都听说过
Scene场景
一般而言场景Scene指游戏画面,比如菜单界面,读取界面,游戏界面等,并不是代表游戏场景本身,游戏场景本身其实是画布上清空重置,如果不用游戏引擎,场景就类似于我们自己定义的SurfaceView,而通过调用setContentView(SurfaceView)切换场景。WiEngine使用的是GLSurfaceView
Director导演
个人感觉是类似于一个游戏总体管理的类,通过它来得到跟画布屏幕的相关参数,与游戏画面渲染动作本身是没有关系的,但是很多东西需要通过它得到。Director是单例模式,在demo中经常可以看到诸如Director.getInstance().xxxx这样的方法,同样的,对场景的置换也是通过它。
Node节点
Node是所有元素的基类,游戏中精灵,场景等都是扩展于Node的,在绘制游戏的过程中也是从根部开始,逐个绘制所有节点。可以通过setAnchorPercent设置锚点,以及setPosition设置位置。旋转缩放等是相对于锚点进行的。
Layer层
一个场景可以有多个层,也可以一个层都没有,属于Node的子类,可以在层中加入场景。
Sprite精灵
精灵这个概念是我在看游戏开发中最先看到的名词,个人理解所有画面中会进行运动的,也就是除了背景这些,所有的都是精灵。而WiEngine说得更直白,精灵其实代表的就是图片资源。
Atlas图片集
就是常见的将各个资源图拼接成的大图,一般结合TextureAtlas使用
Action动作
动画效果,通过runAction()来启动动作,动作也分很多类型,在demo里都有演示
要注意的一点是Android的坐标系原点在屏幕左上,右方向和下方向为正
而OpenG的坐标系原点则在屏幕左下,上方向和有方向为正
WiEngine中提供了诸如convertToGL等方法来进行转换
在看demo学习的过程中,做了很多记录,原本想全部写下来,可是demo很多又很难组织,恰巧看到一个博客中有WiEngine的demo学习笔记,所以附上链接,稍显简单,不过自己结合着看的话也差不多够了
http://blog.sina.com.cn/s/blog_670f9b990100xt4v.html Action部分的一些
http://blog.sina.com.cn/s/blog_670f9b990100xt4x.html Box2D部分的一些
http://blog.sina.com.cn/s/blog_670f9b990100xt51.html Lua,Node等的一些
另外其实微云本身也有一些PDF资料,在官网上有下载,但是其中说的也是非常简要,只能作为在接触前了解一下用
2/20更新
由于WiEngine对于Box2D的文档实在简陋,很多只是一句简单的英文,连中文都免了,有时会摸不清方向,搜索的过程中发现了一个cocos2d的博客,虽然使用的语言是Objective-C,不过语言大家都是共同的,具体语法可能有些米糊,但是意思肯定是非常明确,这个博客的资料非常好,所以转到这里