作者cjamhe01385 (彻)
看板GameDesign
标题[分享] 新手游戏制作过程分享
时间Mon Jun 26 05:11:44 2017
前言:
人在英国进修程式,其中一门课是要求自制一款游戏
两个月时间限制。我在这作业中负责底层架构建立和模组化功能
游戏制作:
当初想法是,既然是来学习程式的,那就不用现有游戏引擎
而是用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小时,但是过程很值得:)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 137.222.114.244
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/GameDesign/M.1498425108.A.F8A.html
※ 编辑: cjamhe01385 (137.222.114.244), 06/26/2017 05:12:09
※ 编辑: cjamhe01385 (137.222.114.244), 06/26/2017 05:13:26
1F:推 fishball990: 有点猛 推一个 06/26 20:41
※ 编辑: cjamhe01385 (137.222.114.240), 06/27/2017 01:03:20
2F:推 jugu: 06/27 01:13
3F:推 Jr0000: 太强了@@果然还是要被逼才会进度快 06/27 01:29
4F:推 cjcat2266: entity manager可从list改用BST或hashtable(name当key) 06/27 03:38
5F:→ cjcat2266: hashtable优点是entity lookup费时O(1),缺点是有洞 06/27 03:39
6F:→ cjcat2266: iterate会浪费时间,BST没这问题,但存取费时O(log n) 06/27 03:40
7F:→ cjcat2266: 要依照游戏需求做抉择,我会选BST,如果lookup造成效能 06/27 03:41
8F:→ cjcat2266: 瓶颈,那就要重新审视有没有必要这麽多entity了 06/27 03:41
9F:→ cjcat2266: ^ 针对你的代处理事项提出的一点小建议 :) 06/27 03:42
10F:→ cjcat2266: 待 06/27 03:43
11F:→ cjamhe01385: 天啊cj大,你是我默默关注的偶像,太开心了 06/27 03:47
12F:→ cjamhe01385: 谢谢建议,我是有改用hashtable,但我会改BST试试 06/27 03:56
13F:推 j1551082: 其实只要知道大概的东西就能做,但是实际上看着企划再 06/28 15:59
14F:→ j1551082: 思考游戏内容.. 引擎只是一种工具而已呢 06/28 15:59
15F:推 milk518abc: 推 06/29 00:39
16F:推 RINPE: 太强了!最近也从app转写程式 有点想去进修 07/01 09:13