从2012年5月底开始,手机游戏《呜啦乱世纪》正式开工。我们的技术团队是第一次接触手机游戏项目,现在想起来,一路走来还是做了不少事情的。
10个月的时间,我到底做了哪些事情呢。
1、Excel表格读取。
Excel表格(转存为TXT格式)读取方面我至今做了3次,第一次是Python版本,用在数据提取工具上;第二次是C++版本,实现了所有基本的按列的数据类型读取数据的功能;由于第二次的版本将所有单元格作为字符串存储,不仅内存占用偏大,而且在读取时要再一次转为数字或者vector,比较慢,所以我实现了第三个版本:按列存储数据,每列用一个vector存储(见博文《TXT格式的Excel表格读取问题优化解法》)。
2、cocos2d 动画编辑器
为了把游戏中的动画水平提高到一定高度,我们制作了一个简易但是完整的动画编辑器,我们的美术大哥使用过后赞不绝口。大家以后可以在《呜啦乱世纪》游戏中看看成果。
这个动画编辑器蕴含了不少新鲜的点子。整个编辑器只是一个简单的窗口,编辑产生xml配置文件;播放器是另外一个简单的Cocos2d-x工程,读取xml进行播放。播放器由Python语言写成,采用了wxPython这个史上最棒的界面库。
编辑器的设计很有意思,主窗体是一个简单的PropertyGrid,在VisualStudio中很常见的控件。当你需要调动画时,d出一个GridView,也就是类似Excel的表格控件,妙在我们把表格的单元格缩的非常小,模仿出Flash的时间线效果。在时间线上可以制作任何cocos2d支持的Action,包括音效。简单明了。
(这里缺截图,记得补)
3、战斗动画
为了做战斗动画,我走了不少弯路。主要是为了把战斗动画做的尽量变化丰富、调整灵活。这里受到的最大教训是:系统动工前,一定要由技术人员想清楚整体的实现方式,否则美术一旦动工就很难停下来返工修改了。
在制作时我大胆采用了纯Lua的方式,算是用Lua开发手机游戏的一次大胆尝试,现在看来积累了非常多宝贵的经验,而且项目也在一直受灵活的Lua语法恩惠。
话说回来,cocos2d-x到lua的绑定依然缺了很多东西,结果是依然容易崩溃和留着一些陷阱。这些东西需要很多工作去弥补,可惜我没有时间去做。
提一句,如果遇到Lua调试困难的问题,可以用debug.traceback() 获取调用栈信息,这个函数调用可能要放在tolua++的C++胶水层里,用c语言调用lua函数的方式去做就可以了。有问题可以回复我。
4、服务器
《呜啦乱世纪》的服务器倾注了我不少心力,由于是第一次制作完整的服务器,其间有过多次返工和思索,当然也离不开朋友们的帮助,这个独一无二的服务器才能初步完成。
哪里特别呢?
《呜啦乱世纪》是一个不用联网的网络游戏,如果你没有网络,依然能正常进行任务、探索等游戏主要玩法。而且同时我们能严格判断出你这段不在线时间游戏数据的合法性。如果有必要可以做到99.9%的准确性。
整个服务器采用Python语言编写,内含SWIG转换过的RakNet高性能网络库,还采用了Python界最好的ORM模块SqlAlchemy。
服务器架构介于游戏服务器和网页服务器之间,比较特殊。Python为我们提供了快速开发的可能性,任何逻辑系统都可以由尽可能少的人来完成,事实上绝大多数系统是我一个人用不多的时间完成的。
我们采用了Python2.7开始提供的MultiProcessing模块进行进程管理和快速数据交换,目前仅用于管理玩家数据。预期目标是实现服务器完美并行化,最终解决服务器压力问题。并行优化还在计划中。
值得一提的是我们用到了python内嵌lua的方式处理lua脚本,其中用到了Lunatic-Python这个库。这个库小毛病很多,需要自行维护。当然它也让我学到了不少东西,把《Python源码剖析》一书中的知识点用到了实际中。
5、Excel表格数据生成工具、导出工具、检查工具。
游戏里涉及到任务、战斗、NPC、道具等系统时,会由策划填写大量数据。最要命的是,多个表格之间需要用ID来做关联。这些关联用的ID是牵一发而动全身,修改时非常繁琐而且容易出错,这时就需要自动化的数据生成工具了。表格不是特别复杂的时候,由策划来做公式、数据透视来生成ID即可,但是遇到稍复杂的情况就需要程序协助了。我们的项目里最终利用VBA做了任务ID自动生成工具,为项目后期进度和质量提供了保障。
策划在使用Excel时,会用到一些中间数据或者特殊格式。导出到最终资源时需要再次整理一遍才能提交。这时需要用到表格导出工具。我们最终制作了VBA版本的自动导出工具和一个简单的保存工具,两步 *** 作就完成了所有导出工作。
检查工具自不必说,是用来检验表格正确性的。这个需要策划的长期维护,随着检查条件的增多,越用越有效。
————————————————————————————————————————————————————————————————————
一年时间,可以充实也可以虚度。非常喜欢Himi的博客,简单但是完整准确,帮助我们解决了IOS内付费等等棘手的问题,向他学习我也得做好技术总结。
Nothing replaces hardworking. 简单回顾,谨以自勉。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)