[分享] 新手游戏制作过程分享

楼主: cjamhe01385 (彻)   2017-06-26 05:11:44
前言:
人在英国进修程式,其中一门课是要求自制一款游戏
两个月时间限制。我在这作业中负责底层架构建立和模组化功能
游戏制作:
当初想法是,既然是来学习程式的,那就不用现有游戏引擎
而是用C++和SDL2,并以Entity-Component-System为主架构来实作
因为目标是做一款RPG闯关游戏,所以想法是先做一个简易游戏引擎
然后再利用引擎来编写游戏剧本,这样比较好扩充后续关卡
游戏简易流程图:http://imgur.com/bYokLS3
通用Component包含:图像(图片/文字)、事件、位置、物品属性
内部系统(负责单一Entity内的Component更新):移动
中层系统(内含Entity List,系统只负责逻辑处理):背包、选单、关卡、任务
环境系统:事件侦测、碰撞侦测(从EntityManager中观察含有特定component的Entity)
InputManager(收集玩家按键的Queue)、EntityManager(所有Entity)
游戏成果图(注意!背景和人物图像是由图片网站购买再加工)
http://imgur.com/nWOH98K
因为只有两个月时间,所以遗留几个待处理问题:
1. smart pointer不够熟悉,导致memory leak
2. 如果后续增加关卡的话,EntityManager势必会太长,这部份没有效控管
3. 图像没有进行分批读取处理
4. 碰撞仅以四边体侦测,相对粗糙
5. 图片仅有显示,无任何特效
虽然整个阳春又有很多错误地方,但我觉得这个作业是个好的开始
多亏这个作业的磨练,我在使用cocos2dx可以上手快些,即使架构不同
而且让我对游戏整个流程有初步了解,还会仔细研究现有引擎是如何处理问题
虽然因此而常常只能睡4-5小时,但是过程很值得:)
作者: fishball990 (邪恶鱼丸汤)   2017-06-26 20:41:00
有点猛 推一个
作者: Jr0000 (阶R)   2017-06-27 01:29:00
太强了@@果然还是要被逼才会进度快
作者: cjcat2266 (CJ Cat)   2017-06-27 03:38:00
entity manager可从list改用BST或hashtable(name当key)hashtable优点是entity lookup费时O(1),缺点是有洞iterate会浪费时间,BST没这问题,但存取费时O(log n)要依照游戏需求做抉择,我会选BST,如果lookup造成效能瓶颈,那就要重新审视有没有必要这么多entity了^ 针对你的代处理事项提出的一点小建议 :)待
楼主: cjamhe01385 (彻)   2017-06-27 03:47:00
天啊cj大,你是我默默关注的偶像,太开心了谢谢建议,我是有改用hashtable,但我会改BST试试
作者: j1551082 (薄荷哈亚铁)   2017-06-28 15:59:00
其实只要知道大概的东西就能做,但是实际上看着企划再思考游戏内容.. 引擎只是一种工具而已呢
作者: milk518abc (Wolin)   2017-06-29 00:39:00
作者: RINPE (RIN)   2017-07-01 09:13:00
太强了!最近也从app转写程式 有点想去进修

Links booklink

Contact Us: admin [ a t ] ucptt.com