一、2D,3D图形库
我们把一条一条的函数调用,某个类的使用,这种情况叫库。
比如2D图像,java 1.6的库,导入java.awt, java.swing包,调函数。
图形库,比如OpenCV库,使用一个类Mat,来存放一张图片的像素数据。
使用Mat类的函数,处理图片。
然后调函数,就能提取一张图片的长、宽,调整图片的颜色、对比度。
3D图形库,OpenGL. 代码:
public void onDrawFrame(GL10 gl){
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIndentity();
GLU.gluLookAt(gl,0,0,-5,0,0,0,0,1,0);
}
用一条一条的函数,画出点、3D效果的面,画出3D的模型。查函数手册,就能知道对应功能。
二、游戏框架
封装公共功能,提供很多工具类,这就是一个框架。比如Cocos2d。
使用Sprite,MoveTo,Scene这三个类,一款游戏60%的代码都省了。
所有人按这个框架做,使用统一标准。
语言问题:Cocos2d主要用C++写,可以跨平台生成IOS, 安卓不同平台下的软件。
这样的框架,不止一款。人们管这样的开发框架,叫游戏引擎。
三、带编辑器的游戏引擎
例如Cocos2d,自己建好工程,在代码中使用Cocos提供的类编程,仍然对编程能力有要求。
能不能可视化地编辑,拖拽图片、动画素材,代码量大大减少。这就是Cocos Creator。官方的这张图,很有代表性:
属性设置,右侧可以设置。素材,动画,都可以拖拽设置。程序很少了。
语言问题,Cocos Creator用JS.
可视化游戏引擎,行业领先的当然是Unity 3D.
操作的界面
所有的属性都可以设置,复杂的行为控制,特效,都有插件完成,代码很少了。
Cocos Creator和Unity ,相同的套路。
语言问题:Unity可以用C#(会C++就行),js。网上的建议都是用C#.
动画、属性、是否碰撞检测,都是在属性面板设置,不需要编程。
即使是写程序,Cocos用Sprite,MoveTo,Scene这三个类表示动画精灵、行为、场景,已经简化很多。
Unity的类,GameObject表示一个物体,表示一个碰撞检测的范围。
大概划分一下,Unity的库,完成了60%的基础功能。开发人员在面板设置,完成了30%的工作,程序只剩10%。
良好的编程技术,还要练。
所有的库、插件只有基础功能。复杂的业务逻辑,道具装备,任务剧情,数值计算,还得编程。
库、插件,没有的功能,都得编程。比如Collision2D只实现了两个碰撞范围是否碰到,护甲怎么算,伤害怎么算,打到不同位置怎么算。
用户启动道具,效果持续五秒,然后冷却三秒,怎么写。没有这样的库,也没有现成的插件。
只有用程序,才能做出更多功能。