工作日志(2007.9.27)

Kevin Lynx
2007.9.27

Mainly about recent work.

从PacShooter开发完成后,我的学习进度明显慢了下来。可能自己真的懂得爱惜自己的身体,
所以即使慢了下来,心里也不至于很内疚。最近慢慢恢复了一些,只是突然间觉得需要做
的事情又多了起来。习惯问题,我需要对过去一段时间,以及将来一段时间做出总结以及计
划。

从PacShooter开发完成,到现在差不多接近两个月。接触的东西主要包括(其他的太琐碎了,
记不得了):
1.整理Irrlicht论坛上一个日本人的代码,使其不用修改Irrlicht引擎代码就可以使用Free
Type实现中文。
2.修改那个日本人的代码,将其结合进HGE里,使得在HGE里可以使用FreeType实现中文输出。
3.接触了AngelScript脚本系统,然后将HGE引擎绑定到该脚本系统里,使的可以直接写脚本
代码来使用HGE
4.这样就到了9月,接触Lua,读了lua的一些文档以及<Programming in Lua>的部分篇章,
然后将HGE绑定到Lua中,使用了tolua++库来结合Lua和C++.
5.9月上旬在一游戏公司待了几天,大致地读了一分MMORPG的客户端代码,对网络游戏中宿主
程序与脚本程序之间的协作,以及客户端程序,客户端脚本,网络,服务器端之间的协作有
了初步认识。
6.离开那个公司,继续自己的学习。开始要求自己认真阅读<Game Programming RPGs With DirectX>
一书。很早以前读过这本书讲DirectX的部分,这一次则是读后面讲制作RPG游戏的章节。
对脚本在RPG游戏中的运用有了更深的认识,以及加强读代码的能力。

然后时间到了现在。这几天想开发一个自己的2D游戏引擎的想法越来越强烈。很早之前我就
做过打算,如果我还能读大三的话,我就要写一个自己的引擎。这个时候我觉得是很合适的。
我写过八万行(可统计的)的C++代码,从如何实现一个程序功能,到如何改善程序结构,再
到迷恋面向对象软件架构,迷恋漂亮的设计模式,再到程序功能和代码架构两者兼顾。我
接触过很多开源库,虽然大部分都停留在使用、扩展的层次,但是即使如此,我还是获得
很多软件架构的感性认识。

因此,现在来着手写一款自己的2D游戏引擎,是再适合不过的时机了。我的目标不仅仅只是
单纯地封装一些底层代码,并不是单纯地玩玩facade模式,我的目标是要尽我所能地将它
做成一个扩展性强,模块度高,功能让大部分游戏程序员满足的游戏引擎。但是我不会贸然
地就开始。我深知要孕育这么一个高度的库不是容易的事。我更不愿意我现在所说的一切,
将来永远成不了现实。

就目前而言,在我心里面,这个引擎包含的特点有:
1.基于功能的接口,这样灵活性更大,但是会以插件的形式提供一个框架代码,框架会让
  引擎更易上手。
2.使用硬件加速,跨平台图形库。这个引擎整体的设计会大面积地运用抽象机制,并且将
  插件化思想贯彻到整个设计中。因此,图形库将不单局限于DirectX或OpenGL。目前的
  想法是实现DirectX8.0和OpenGL两个版本,也许将来还会加入DirectX9.0。
  具体设计时可能会以System->LoadRenderer( "d3d8renderer.dll )的形式处理,这样
  可以让用户在不修改引擎代码的基础上就加进新的底层渲染引擎。
3.支持常见的图片格式。为了加强灵活性(主要考虑到资源打包等情况),会将图片手动
  载入到内存然后再处理。可能会涉及到使用一些图片文件解析库。
  在设计时可能会做成类似于System->registerImageLoader( new TGALoader() )之类的
  形式,这样使用户可以再不修改引擎代码的前提下就能扩展引擎支持的图片格式数量。
4.支持三种字体系统:GDI(windows下),图片字模,FreeType。同理,用户可以通过
  注册的方式来决定引擎使用哪一个字体系统。其中,默认情况下GDI和FreeType系统
  可以支持中文输出。后期完善可能会提供创建图片字模的工具。
5.设计自己的IO文件库,同理,可以以注册的方式注册进新的IO处理,引擎默认将提供
  读取ZIP压缩格式的IO文件库。当然,也可以直接读取文件。
6.挂接到CEGUI的GUI系统,这也将使用注册的方式,这使得不喜欢CEGUI的用户不用将
  CEGUI连接进工程。对于小游戏,CEGUI也许太过庞大,因此也考虑创建自己的GUI
  系统,或者挂接guichan.
7.简易的帧动画引擎,主要我觉得我很早前写的CSpriteAnim类不错,被用在我的很多
  游戏里。后期完善可考虑提供一个动画编辑工具。
8.支持对资源的脚本定义,以及提供读取脚本配置文件的功能。脚本文件将考虑ini和
  XML两者。这里也许没有必要提供注册功能,如果使用的ini和xml解析库本身就是
  跨平台的话,就不需要。但是,有时候注册的方式只是为了增强引擎的可定制能力。
  后期完善可能会提供资源脚本文件编辑的工具。
9.声音处理也将使用注册的方式,可使用bass库,或者fmod库,目前考虑到时候提供
  这两个music manager,当然采用注册机制,也就允许用户创建自己的声音处理器。
10.输入部分也许会考虑直接使用OIS库,从而跨平台。如果不使用这个库的话,到时候
  我就需要进行一定的linux平台编程。引擎第一版可能就只支持linux和windows两个
  平台,其他的操作系统我没有。
11.可能会提供基本的碰撞检测什么的,是否提供象素级的检测,可能性比较小。

基本上目前想得到的就是这些,引擎定位于开发casual games,因此我没加网络部分。
24号读了2D引擎代码,比较简单,25号到今天读了另一个2D引擎代码,稍微复杂点,
有些地方目前我也没懂。值得注意的是,后者使用了很多boost的东西,读的过程中也算是
接触了下boost.

刚才在硬盘上找第三个引擎,准备继续读代码。突然发现,每准备新读一个引擎代码,就
感觉自己要面临一个新的世界。

打算未来一段时间学习OpenGL,对其基本的工作模式有个了解,这样在我设计引擎抽象层
时,才会考虑到一些细节。将来写OpenGLRenderer的时候更是需要足够的OpenGL知识。不
过这个不是难点,在有了足够的学习经验后,这些都是小事。

在gamedev找到一篇貌似是讲解引擎开发的系列文章,接下来几天打算好好读下,不打算
翻译出来。然后是接触OpenGL,再然后是继续读一些引擎代码,这个时候就可以读基于
OpenGL的引擎代码。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值