游戏引擎开发与应用最佳 实践 【引擎开发篇】 之一 :目录、引擎模块划分

 

《开心锤子》是一款以探索箱子护送角色到达目标点为核心的游戏,结合通过数字判断箱子中是否存在危机。加入探索、收集、竞技、玩家成长元素,并延伸出多种游戏模式。以休闲益智娱乐为轴心,卡通Q版风格为背景,集成角色扮演、数字逻辑、关卡设计、多种多样的玩法、宠物系统、成就系统,包裹系统评分系统等多种元素。在这里可以体味数字解密,随机事件发生的气氛,挑战才智,构建出让自己进入卡通世界里解密的一款休闲游戏。 iOS下载地址: https://itunes.apple.com/cn/app/kai-xin-chui-zi/id1091140275?l=en&mt=8 下载就送红包

 

另提供网络远程语音视屏的技术培训,包括: .net 、cocos2d、xna 、sqlsever、C++编程与技巧 、IOS游戏开发、ANDROID游戏开发相关的技术培训 300 元一个月,周一至周五 每天晚上8:30~9:30 详情请联系QQ:371741579 email:czjone@126.com 架构师技术培训群: 57230994

 

本系列文章用于总结对游戏开发的应用与理解,在总结的过程中会融入当信最流行的移动终端的开发

  (以下内容摘自己2012工作总结部分内容

      经过了一个比较失败的项目(捕鱼项目),成功了一个项目(跑灯,最少所有功能开发完成了,就差生产成产品经过市场的检验了)这两个项目对个人的成长还算是比较有帮助的。

  首先分析一下第一个项目为何会失败:第一,是个人的管理能力久缺的,一下子就要面对不同性格的人,再加上自己有一些个性,心中想的是。要是你几爷子不给力,我自己也不给力,到最后交不出工作。那黑锅就只能我去背了。那只好我自己多做点了,把你们做不好的事也给一起做了。

     第二,自己的定力不够,心中想着。只要是出自我之手。就一定是精品,所以,对所做的项目在开发阶段就去做了过多有优化,到最后只能完成一部分功能的开发,还有一块大头没有足够的人力物力去支撑开发。

  第三,没有合理的利用团队成员的潜力,过于仁慈,面对对项目不热心的同志,不能及时的纠正团队成员的扭曲心理,造成团队恶化下去,到最后能在项目中发挥作用的人力渐渐减少。

  第四,没有正确的评估成员的流失影响力以及成员的能力!没能把功能时间计划强制执行下去。都以为时间还多,已经很紧了!

  综上所述:项目的失败,绝对不是我技术的问题,而是我管理能力的问题。需要牢牢把握游戏的可控性,协调好成员间的工作,不能让人力资源浪费(这是很大的一个考验)

  还有一个成功的跑灯项目:这个项目的成功。有一大部分还得取决于老板的认可,才能把我的一些不算先进的思想融入进去。这个项目也算是对我这两年来的技术沉淀的一个总结,对这个些经验的东西没什么好分享的。都是仁者见仁。智者见智的东西。做过架构的人都知道~没有什么可比性,没有更好,只有更合适,只有经过对行业的深入理解后才有能做出更适合的架构来....就是对知识点的一个提炼。

  下面我会把一些游戏开发的一些经验,与在游戏开发中遇到的问题做一个总结,让游戏开发不再神秘。

    【引擎开发篇】

    1、引擎产生的背景

    2、引擎模块划分

    3、引擎实现(一)模块划分

    4、引擎实现(二)模块功能描述与设计抽象思想

    5、引擎模块  (三)  模块的实现

    5、引擎应用到项目中

    6、测试项目的同时改进引擎

    7、工具

    8、技术总结

    9、总结

    【cocos2d篇

    【u3d开发篇】

    【服务器篇】

    【项目管理篇】

 项目a 分析

   项目a 分析:在使用上比较直观,但是结构设计上不是很合理(比如引擎),容易造成了逻辑的混乱,新模块的添加比较吃力(或者对某些功能模块的不集中,很难比较方便的共享,管理模块,对共同表现的业务逻辑共用率不高),并且要示对通信的状态和数据处理约定还得比较熟悉的情况下才能更好的增加新功能。资源管理还有很大的提升空间。通信模块做得比较复杂,修改任何一个位置的数据都很容易造成游戏不能正常的调试下去,给调试带来了很大的难度。同时也影响开发速度。

    项目b分析:模块设计思路比较清晰。对使用者的要求不会太高,过多的去关注细节,只要能用就行了。甚至不会xna的人也可以使用,方便的同时也在使用上带来了风险。让不熟悉结构的人容易对容器滥用。不熟悉的同学使用,会带来恶劣的结果,或者不理解设计者的思路的时候随意增加逻辑,随着逻辑的增加更难控制游戏的稳定。

另提供网络远程语音视屏的技术培训,包括: .net 、cocos2d、xna 、sqlsever、C++编程与技巧 、IOS游戏开发、ANDROID游戏开发相关的技术培训 300 元一个月,周一至周五 每天晚上8:30~9:30 详情请联系QQ:371741579 email:czjone@126.com 架构师技术培训群: 57230994

  解决方法:

  a) 模块划分,对不同的游戏进行相应的抽象

  b) 模块封装,方便装载器在不同的应用中装载不同的游戏

  c)  框架和数据的完全分开(实施起来比较难,需要一群人的毅力才能完成,可以不考虑)

  实现目标: 

  1. 复杂的动画,能在flash中完的就是flash中完成
  2. 能用图完成的就用图完成
  3. 目前的动画处理不能满足有的游戏的需求。需要升级游戏库,在动画扩展管理 模块加载相应的模块设计就可以了,但是必须满足我们设计约定的接口
  4. 只要是在flash中能做出来的动画,在他们出了设计之后。相就的动画在半小时内就能准确无误加入到游戏中并运行起来,做到了可视化的编辑并能和我们的游戏兼容,

    风队评估

  时间上的风险:因为引入了一些新的概念,只能做到最低的降低风险,保证程序的稳定性,但不能排除一定能在非常短的时候能一下子稳定,和使用plantworld做新的游戏的风险是同等的。

      冒险理由:模块相对比较独立。能很容易的移植到其它的地方,能很快的做到和美术工具(flash)的兼容默契,并形成一个比较直观的开发接口标准,并且培训简单,只要有编程基础的童鞋都能容易的上手,就是有一个flash的学习成本,不一定是人人都愿意。

  实施原则

严格的按照设计概要做,对于写核心部分的人员要求比较高。一定要细心,严格的验证第一个算法的正确性和可行性。把固定的模块固定死,不能随意的增加设计概要之外的东西。至少得在可行性分析之后才能加上扩展升级!要严格的控制美术使用动画工具的方式方法。

      缺点

 周期长,要要求一些美术工具,对美术的设计方式有限制(美术不一定能适应过来),对团队成员有一定的冲击力。

  2、引擎模块划分

  游戏流程概述  

  在游戏启动时,先是进行开机加载,再到游戏待机状态,如果新一轮的游戏开始,就会收到新游戏开始的相关信息,进入倒计时,完成倒计时后。后等待硬件发送结果,如果在一定的时间内还没有收到硬件发送结果,就可以认为是硬件出现了故障,游戏就会DOWN机,并给出相应的错误提示。如果在规定的时间内收到相应的结果,就会跑结果,进到展示结果完成回到待机画面。在游戏的各个阶段都有可能会出现不能正常运行的状态,会用相应的提示来告诉用户,系统出来了什么样的故障。

  游戏流程图

 

框架分层

核心算法库

设计说明

通用函数更集中一些。在修改的时候不会到处理去找。避免一个函数在不同的地方多次出现。

IEncryption:加密解密接口。

DES :DES加密算法的实现,对接口的一个直接的实现

ILog:日志接口

textLog:记事本方式的日志

Serializtion:序列化相关

MilException:指定类型的异常封装

logHandler:异常处理委托

DispserHandler:资源释放委托

ICache:缓存抽象

Cache:缓存实现

LogPersitenceModel:日志持久化模式

SerializationModel:序列化模式

ISerialization:序列化接口抽象

BinarySerializable:二进制序列化

XmlSerializable: xml序列化

StringExtentions:字符处理扩展

LogFactory:日志构造工厂

logHandler:消息处理委托

FileHelper:文件处理扩展

Argument:参数检查器

Cacheelement:实际缓存的对象

IEnumberExtention:迭代器扩展

Check:检查器集合

Data:数据检查器

Assembly:程序集处理扩展

Excetesink:程序执行器

未完 待续 ....

本文为原创,博客园为唯一官方博客,转载请说明出处....

若有问题请发 邮箱 czjone@126.com 或者加qq:371741579

 

另提供网络远程语音视屏的技术培训,包括: .net 、cocos2d、xna 、sqlsever、C++编程与技巧 、IOS游戏开发、ANDROID游戏开发相关的技术培训 300 元一个月,周一至周五 每天晚上8:30~9:30 详情请联系QQ:371741579 email:czjone@126.com 架构师技术培训群: 57230994

posted @ 2013-12-28 13:54  czjone  阅读(4542)  评论(0编辑  收藏  举报