`
public0821
  • 浏览: 236146 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SDL游戏开发教程13(总结和代码调整)

阅读更多

    到目前为止,该教程已经涵盖了开发一般桌面游戏所需要的大部分技术,后续主要集中在网络这块的开发,到时候将会介绍一些基本的网络编程知识。

    SDL游戏开发是我第一次接触,写这个教程也是对自己的学习过程做一个记录和总结,希望对想要了解SDL游戏开发的人有些帮助。在编写这个教程的过程中,暴露了一些问题,在此,自己总结一下:

    1、开始这个教程的时候,用的是MINGW+ECLIPSE环境,最初的想法是通过熟悉这套环境,以后到LINUX环境下做SDL游戏开发,会容易上手。结果是,这套环境在windows下并不太好用,一个原因是GCC和VC8两个编译器有些差别,错误提示的方式不一样,并且对异常的处理方式也不一样。另一个原因是DEBUG不好用,速度慢,还常启动不起来或者出些莫名其妙的错误。通过这次得出的结论是:对于开发环境的选择,一定要选当前系统平台下的主流开发工具,毕竟用的人多,BUG少。对于学习来说,如果代码量少,可以尝试选择其他系统平台主流开发工具的当前系统版本,为以后跨系统平台的开发积累经验。

    2、SDLCore.h文件的设计。开始的时候,将这个头文件设置成这样主要有三个目的:a、工厂类模式,这里统一生成常用类的对象,并且保证对象只有一份。b、将常用类集中到这里,便于使用的人了解这个库提供了哪些功能,提供一个统一的代码查看入口。c、使用方便,只要一个SDL::就什么都出来了。但造成的结果是过渡依赖,比如你只用到了sceneManager,并没有用到别的类,那么包含了这个头文件后,当其他类的头文件发生变化,当前类也需要重新编译,造成编译时间变长;同时由于过渡依赖,造成头文件包含关系过于复杂,常常出现找不到类定义的错误。

 

基于第二个原因,重新设计了SDLCore.h文件,将它定位为只供外部模块调用的头文件。模块内部类之间相互包含的时候尽量最小化依赖,只包含自己依赖的头文件。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics