学习游戏开发也有3个月了,其中也做一个安卓的原创游戏(2D游戏,目前没有接触到3D游戏),之前没有接触过游戏引擎,游戏的一些简单的物理效果都是自己写,cocos2d-x是我第一次接触游戏引擎,下载源码后就开始深入源码去学习,学习别人更好的思想,也在寻找在设计上和自己做的有什么异同点。记录下我现在所看到的,了解到的。废话不多说,我现在看的版本是cocos2d-2.1rc0-x-2.1.2。
做个游戏的应该都知道,我们的游戏一般是在一个死循环中渲染的,比如下面:
所以我首先在底层源代码中寻找这个样子的东东。(注:我是用VS在WIN32平台下查看)
首先打开 ...\cocos2d-2.1rc0-x-2.1.2\samples\Cpp\TestCpp\proj.win32\main.cpp
这里就是程序的主入口,没有什么好说的,唯一注意的就是AppDelegate类在这里被实例化了。接着进入 CCApplication::run();
...\cocos2d-2.1rc0-x-2.1.2\cocos2dx\platform\win32\CCApplication.cpp
在这里省去了一些平台有关的代码,主要是WIN32平台的窗口消息的获取等,还有一些计算时间的代码。在这个循环中,只要达到渲染要求,就进入CCDirector::sharedDirector()->mainLoop();代码中,把处理交给引擎自己去完成。接着进入。。。
...\cocos2d-2.1rc0-x-2.1.2\cocos2dx\CCDirector.cpp
CCDisplayLinkDirector是CCDisplay的子类,从命名就应该可以很清晰的知道它的用处。通过CCDirector::sharedDirector()代码,得到的都是CCDisplayLinkDirector对象。通过drawScene()代码就可以实现场景的绘制了。而开篇我要寻找的那个东东,也就在里面了。。。
...\cocos2d-2.1rc0-x-2.1.2\cocos2dx\CCDirector.cpp
好了,到目前为止,我们看到了,我们想看到的东东,开心了,第一次写博文,记录下自己的成长路,今天放假,玩去。。。 未来记下引擎核心之一的CCScheduler的工作方式和里面所用到的数据结构。
做个游戏的应该都知道,我们的游戏一般是在一个死循环中渲染的,比如下面:
复制代码
|
首先打开 ...\cocos2d-2.1rc0-x-2.1.2\samples\Cpp\TestCpp\proj.win32\main.cpp
复制代码
|
...\cocos2d-2.1rc0-x-2.1.2\cocos2dx\platform\win32\CCApplication.cpp
复制代码
|
...\cocos2d-2.1rc0-x-2.1.2\cocos2dx\CCDirector.cpp
复制代码
|
...\cocos2d-2.1rc0-x-2.1.2\cocos2dx\CCDirector.cpp
复制代码
|