我也算用过游戏引擎了~

    上周三晚上接到的任务,是用Irrlicht 循序渐进的做一个小游戏,要求完成时间是这周五,也就是今天,一共7个工作日。由于之前一直忙,没见媳妇,周三晚上去陪陪她。所以周三接手的任务,周四早上才算正式开始。

    之前上学的时候自学过一点点OpenGL,但的确很肤浅。不过说实话,终究比一点没学过强一些。在接触Irrlicht引擎后,还是从里面发现了一些以前的经验用得上的地方。

    这次的任务主要分为5步:1.Load一个地面,地面上摆好箱子,给整个场景套个天空盒;2.用2D贴图在地面上摆上草,用公司提供的类库,解析公司特有的bsprite文件字体,在屏幕上写个2D的 Hello World;3.解析bsprite,在场景里摆一个3D 的 公司名称LOGO;4.加一个可以在地面滚动的小球,以第三人称视角观察;5.增加5个一直追随小球的敌人小球,追上就给主人公小球掉血,然后这个敌人重新产生。

 

    我DOWN下来了 IRRLICHT 1.5引擎---公司暂时用这个版本,照着里面的教程文档做了几个DEMO,对Irrlicht有了个初步了解。这个引擎许多三维的东西,包括相机,甚至是光照和粒子效果,都被归为Scene Node。 布置3D场景就是一个个SceneNode的摆放。引擎封装了许多细节,用起来比较简单。他还支持许多种模型格式,配合公司的资源,很轻松就能布置一个自己都觉得很华丽的场景(之所以觉得华丽,是因为这个是自己做的。。。要是看到别的游戏这样,我肯定得说“这游戏怎么这么糙”)。

    第2个和第3个任务主要是考察阅读和扩展代码的能力。公司的bsprite解析类库很完善,尤其是里面对泛型和STL的运用让我叹为观止。为了完成任务,我也没空认真研究,一遍遍地单步调试,把需要用到的函数找出来,是private把它改成public,有功能类似的函数就重载一个,加上自己所需要的功能,把这个类库改得一团糟,不择手段地实现了解析bsprite,摆放文字的功能。

    第4个任务是难点。我真的没有想到第三人称视角的实现会遇到这么多的困难。自己这里做的很乱。由于小球只在XZ平面上运动,许多函数都只能在这种条件下工作,Y方向一旦产生速度,就会出现种种不兼容。视角出现仰角和俯角时,小球的运动格外不平滑,磕磕绊绊,我一直也不知道如何解决。。。之前复习的图形学的矩阵变换一点也没有用上,只是简单地拼凑了IrrLicht的API,基本实现了第三人称视角,但只能从正后方看----有仰角和俯角就会比较颤抖。。。。。一直对此耿耿于怀。。。。视角转动后,还原背后视角这个功能在许多地方都有用到,都能正常地工作。但郁闷的是有一个地方给camera setTarget(),数值怎么也不正确,这个错误也一直没有解决。

    第5个任务反而是相对简单的功能。如果不考虑光照实现的不好,这个功能做得相当顺利-----5个敌人在帧循环里更新方向向量,并且保持移动即可。敌人撞到了主人就消失,然后从RANDOM的地点重生,让我想起了小时候8位机上的《淘金者》……功能基本上实现了。碰撞检测用的不是物理上的碰撞,仅仅是判断距离和半径的关系。

    总而言之,这次任务目前的完成度大约85%吧,有两个技术问题没能彻底解决,而且许多地方实现得很粗糙。但无论怎么说,也是自己一星期的心血。我总是乐呵呵地看着自己的小球跑来跑去,然后被小球突然的坠落吓一跳----自己的劳动成果,自己玩起来比较投入。。。

  

     下午再对几个关键问题完善完善,不知道这样程度的程序提交上去会得到怎样的评价。

     由于工作时间的关系,直接接触了游戏引擎,而几乎没有DX 和 OPENGL的基础,这样的空中楼阁肯定是不牢固的。这让我想起了当初没学WIN32 SDK就直接学MFC,彻底本末倒置了。以后有时间的时候,还是要学习学习DX和 OPENGL。另外感觉自己的C++基础也很薄弱,对C++的理解实在太浅薄了。有空的时候真应该抱着《C++ Primer》恶补一下。

 

     最后感谢老婆最近我的支持,我加班和熬夜,她每次都过来给我送饭,陪我解决问题,很辛苦,也很操心。尽管我写在这里你看不见,还是谢谢你了!

 

    时间关系,先说这么多吧。不能松懈,还有一下午的时间,要好好完善啊~~

   

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值