答:2步,第一步,想想要做一个什么游戏,第二步,把游戏做出来。
如果做一款游戏真的这么简单就好啦,面对“游戏开发”这四个大字,很多人都会望而却步吧,要么不会画画,要么不会音乐,要么不会编程,要么不会写作,困难要多少有多少,而手里能打的牌,可能就那么一张,有两项技能的人都能算得上翘楚了。
但是实际上,从玩家变成游戏开发者,在拥有意愿的基础上,所缺少的,恐怕仅仅是一个契机。而2023年北京核聚变的BOOOM会场上,有一款游戏就给了我这个契机。
这是一款非常简单的控制小球弹跳的游戏(在机核也能搜到),开发者说,他在制作参加BOOOM的主要参赛作品之外,利用闲暇时间,制作了这款游戏,但就是这样一款随手之作,我却玩的乐此不疲。
就在这期间,我突然察觉,今年的最后一次BOOOM活动,已经悄然拉开序幕……天时地利人和,要做了吗?现在?在这里?!
在这份激情的推动之下,我报名参加了本次的BOOOM活动。
报名后到开题之前的这段时间,心情是忐忑兴奋的。大概这就是第一次参加活动的那种兴奋劲儿,让我实在是按捺不住。打开B站,开始大看特看各种国内独立游戏开发者的视频,并借此来对国内的独立游戏开发环境进行一个初步的评估。
有时候,看到一些高手,真的是自惭形秽啊,一个个的技术牛逼,审美能力也高,说话还好听。让我不得不怀疑自己,真的有资格加入到这个行列中去吗?
但另外一些时候,会看到一些UP主展示的内容相对没有那么高端复杂的,但是声音与话语之间散发出来的那份对于制作游戏的热情,却分毫不输于我心目中的顶级开发者大牛。其实我内心之中都明白,哪有什么资格不资格,只要想做,愿意做,做了出来,那就是游戏开发者。
加入了BOOOM的开发者群之后,看到了大家热烈在讨论本次活动的样子。其中有些是打过好几次BOOOM,甚至是一直在参与国内外各种GameJam的老手,还有一些是像我一样第一次参加类似活动的新人,大家发表意见,交换意见,抛出话题,热烈讨论。
组队环节在这个时期就已经开始了,成员们会在机组的 🙋🏻♂️BOOOM招募伙伴 以及 🤝🏻BOOOM自荐合作 发帖组队,机核的工作人员们也会定期在群里搬运这些招募组队帖,偶尔我也会在别的GameJam群里看到BOOOM的组队招募信息,甚至直接收到了组队邀请。 不过我已经决定了,虽然是首次参赛,我这次要SOLO。
我认为,作为一个游戏开发者向别人介绍自己,最好的自我介绍就是一款自己开发的游戏(个人观点)。同时也是对自己的一个考验和测试。我到底有没有真的那么喜欢开发游戏呢?我对游戏的喜欢是仅限于玩,还是更愿意去做?凭我现在的能力,到底能走多远?
当然,敢这么做的自信心,也是来源于,我本身就是游戏行业从业者的一个优势条件。从毕业之后,就一头扎进国内的游戏行业,虽然还没有10年经验,但是也干了7、8年的游戏开发编程工作了,换句话说就是干了7、8年仍然碌碌无为……咳咳,总之我具备了能够作完一款电子游戏,最基本的一个条件,程序员。
不是说程序员在团队中的地位有多么重要(心里话是,程序员就是团队基石!),但是如果团队中有一个足够靠谱的程序,那么这个游戏能够顺利完成的概率,将会极大的提升。
预先制作这个策略,也是一些早早就组好的团队们可能会选择的方案之一。先提前决定好游戏的类型,比如平台跳跃,卡牌,RPG,AVG,FPS等等,决定好之后,先由程序去大体上做好一个系统架构,具体的模块细节,等到开题之后再详细定制,这样也能节省很多时间。
实际上,在我从业期间,游戏开发这项工作也是一直如此,在不同项目阶段,大家能做的事情会受到彼此之间的进度影响,程序的工作需要在策划的策划案决定之后才能开始,关卡的制作则需要在程序做好了关卡编辑器或者建立起游戏的基本逻辑后才能编辑测试,音乐需要确定曲目数量,长度和基调,美术需要一份详细的需求列表。如果这些工作安排的不够合理,会出现大量的时间浪费,这是对项目负责人,或者说是制作人的一个考验:如何合理安排工作,保证团队成员工作效率最大化,顺利完成游戏制作。
这个问题,越大的团队越复杂,反过来,对我这种SOLO选手则十分简单明了,因为人多意味着交流沟通成本的提升,而单人则只需要安排好自己的时间即可,不需要担心拖累别人,也不会被别人耽误而焦躁。当然,代价就是所有的事情都要自己做。
本次游戏开发主题 《天使的骰子》/《恶魔的骰子》,以不公平的随机为主题来进行开发。
这个题目给出了一个具体的物体,骰子,也给了一个抽象的概念,不公平。
抽象的东西总是难以想象的,先从具体的东西来吧,从骰子开始去发散的话能想到什么呢?
打住打住……这么头脑风暴下去,要从宇宙大爆炸飘到世界的尽头去了,回头审视一下这些点子,我非常中意的是那个,双人100面骰子,撞击之后根据伤害判定来改变骰子面数的点子。但是这就意味着……我要做100个骰子……啊哈哈……PASS……
但是撞击伤判这个核心机制似乎是没什么问题的,那就把改变面数,变成扣血,让骰子互相碰撞来进行交锋,骰子的点数表着随机,但是因为玩家是可以控制骰子的,不同于扔下去就听天由命的掷骰,我可以一直对骰子本身进行操控,这不正是不公正的随机吗?如果想要拓展,还可以设计不同的骰子作为不同的战士,拥有各种特殊能力……这样,一个骰子撞击格斗游戏的雏形就在我的脑海中诞生了……
既然骰子已经投下,那就预想一下,大概需要做的工作吧:
按照优先级先后顺序,大概列下来,中间也想过各种有的没的,什么世界观背景设定啊,故事大纲啊,CG演出啊,特效啊,技能啊什么的……但是在工作量评估之下,我还是选择了非常保守的规模,尽可能减少非必要的成分,以完成游戏为第一优先目标决定了以上工作内容,那么接下来就是实施环节了。
建模什么的我是从没做过的,最早的时候我想的是,骰子就是一个方块六个面,每个面上有不同的点数吧,那我就画出来六个面的贴图,直接贴到Unity的默认模型Cube上不就行了?Sai 2,启动!
额……似乎跟想象中的不太一样啊……我甚至都产生了某些奇特的幻视……
这时候就得活用自己的聪明才智……去BOOOM群里求助!最终在大家的嘲笑之下,做出了最好的选择,Blender下载!
热门软件,教程就是多,打开B站,搜索“三分钟 Blender 骰子”,回车!
30分钟之后,一颗新鲜的骰子就出炉啦!对比之前的的骰子,真的是高下立判……
换一个颜色就是一个新战士(偷懒太爽啦),建模工作,完成!
接下来的一大段工作内容,都是相对比较枯燥的编码工作。简单划分一下模块,处理数据的:DataManager,处理游戏逻辑的:GameMain,处理UI显示变化的:GameUI,玩家1的控制:Player0Control,玩家2的控制:Player1Control。但是同样的操作要写两份非常麻烦,所以多一个玩家基类:PlayerControl。
玩家控制:Unity早期有一个非常经典的Demo,名子叫《Roll a Ball》,里面有一个非常简单的WSAD控制小球移动的代码。在此基础之上,只要在Unity的InputManager里面,修改一下按键映射,就能实现我所需要的本地双玩家控制移动功能。
当然仅仅是一个移动还是不够的,玩家类里还需要血量,点数,移动速度,伤害处理,状态管理等等各种属性和方法,这样才能完善功能的实现。
伤害判定:在做这个部分的时候,就要讲一讲我之前没有提到的伤害公式,即:伤害=点数*速度,这是我非常满意的一个点子。因为如果我仅仅是依靠点数来进行伤判,那么可以预见的最优策略则是:开场摆出六点,然后等别人来撞。
这可完全不是我想要看到的情况,所以我把伤害数值与速度直接相关,静止不动的话,速度为0,那么不管你的点数有多么大,给对手造成的伤害永远是0。想要造成伤害,就必须要动起来,而具有物理特性的骰子一旦动起来,则必定会开始滚动,那么点数就会不断变化,无法控制,速度与点数之间的取舍就是这场博弈的核心问题。
其实对应的策略变更也很直接,即:保持移动或者闪避,避免在低速状态下被撞击,以及抓住对手的刹车转弯等减速瞬间,用最大速度撞上去争取更高的上伤害,这就是我想要的效果,也是格斗游戏中的经典立回思路。
AI控制:这部分是我在完成基本的游戏逻辑之后开始考虑的。因为之前参加过BOOOM的试玩,所以我明白对战游戏,如果没有对手是多么的尴尬。AI控制这个功能,是势在必行的。
初步实现的时候,我花了一个晚上去详细调试,加了很多逻辑判断,效果都不太好。要么骰子会飞出场外,要么在地表抽搐,要么呆着一动不动,攻击意图和求生意图总是没办法很好得协调,跟大家讨论交流,有说机器学习的,有说全随机的……一晚上就搭进去了,进展为0。哎……这也是常有的事啦。
最后还是用了一个感觉上很low的做法:在安全阈值的限制下,做一个不稳定系统,同时给AI输入做一个CD限制,避免过分频繁的操作导致抽搐。
最终效果也是非常令人满意,让人误以为是非常高端的AI技术,其实底层逻辑就是在不会轻易自爆限制下的一顿乱滚XD。
UI优化:配合伤害公式,为了更直观的展示玩家的点数和速度,我做了点数显示和速度条来辅助玩家掌握自身状态。
同时,给双方都添加AI控制选项,此举也相当于直接增加了一个全新的玩法,也就是斗蛐蛐。这是最简单的享受,对于已经做好了AI操控的状态下,这也没有任何难度和工作量。
在这之后,UI基本就是最终版的样子了,本来我还想优化一下速度条的表现,做成倒三角的那种类似于赛车或飞机等发动机出力的图表样式,但是碍于能力不足,没能实现。
这里我真的很想吐槽本届游戏游玩中的好多游戏,全都没有返回按钮!界面UI交互的基本逻辑,进入退出,打开关闭啊!你不能让玩家想回到标题就得重开游戏吧!天惹~
音乐制作:说起来也有些惭愧,实际上国庆期间……我在家里基本上是完全没有动工的……因为要带老婆孩子回老家团聚,而且我并没有笔记本(台式机神教),于是我灵机一动!我SteamDeck里面不是装了一个Windows吗?直接用Unity的Plastic SCM版本管理系统迁移到Deck里面,不就可以在家里开发了吗?
项目确实迁移到Deck上了,虽然有报错,而且至今都没有解决,Plastic SCM这工具我也没搞太明白怎么用,结果就是操作并不能同步……最终也没在Deck上干点什么正事(游戏机,那就得玩游戏)……
结果就是9月29到10月5号这7天基本都没干什么编码工作,心里实在有点虚,于是打算在手机上搓一个BGM战斗旋律出来。跟群友咨询比较合适的软件后,最终选用了库乐队,鼓机,搞出来了一段感觉上像是战斗音乐的东西。
不过这个BGM在录音时精度很难控制,还是得需要一个精确的音频剪辑软件,简单了解了一下相关软件后,我选择了GoldWave。再次剪辑处理之后,BGM才终于能够投入实用。
完善增强:鉴于我的游戏本身设计就很简单,工作量也是精心删减,只保留了最重要的部分,所以在10月7号晚上,我就完成了预想中的工作内容,甚至还有余力添加了碰撞时的慢动作效果。打包上传,宣告着我的首次BOOOM活动参加成功!
这时候已经有一些速度很快的团队早已提交了作品,在转悠了一圈之后,我最终还是发出了很菜的声音……
剩下时间还有4天,还有愚地!还有愚地!从正拳开始练起罢!能做多少做多少! 呀嘞呀嘞,终于有一点GameJam的感觉了!
这4天,我最终完成了入场动画,强化骰子621,隐藏BOSS九号球这三部分,实际上从我开始做UI优化的速度条的时候,我脑子里就在不断想象着,要致敬一波装甲核心。所以这三个东西基本全都是为了这个目的肝出来的。
特别是隐藏最终BOSS九球,最后提交截至时间之前我还在测试它,为了致敬原作的最终战,还搞了要连赢三次的离谱设定,最终在最后一秒提交了一个新增了不少功能与bug的残念版本。
理论上这次BOOOM活动里,我身为开发者所做的事情就到此落下帷幕。不过比赛之外还有不少事情可以继续做下去。
现在想来,骰子撞击的这个点子来源,可能是我小时候自己在娱乐匮乏的时候自己想出来的一个玩法:砸砖头。小孩子的想象力都是非常丰富的,我把不同颜色的石头,不同种类的石头,岩石,水泥块,红砖,黑心砖,鹅卵石,甚至是土块都想象成各种战士,把石头砸来砸去,当作是战士们在战斗,缺块损角就是受伤,裂成两半就是死亡。
小时候,我在树林边的沙坑里砸石头。长大后,我在电脑世界里砸赛博骰子。人生,很奇妙吧。
一开始其实不用想太多太复杂,一旦做起来,想法只会源源不断地冒出来,还得多亏了我的能力有限,避免我走太远搞到难以收场。就比如写游戏简介的时候,我脑子里回想起了《刃牙》地下竞技场篇的开场白,地上最强骰子争夺战!所以我也在做的时候把灯光调成了点光源,来模拟一个擂台的感觉。
关于隐藏关,我还做了一点点小心思,就是游戏封面图上的骰子,其实是强化骰子621,而简介里的图片则是普通骰子,就有一种做了,但是隐藏关要藏着点,但是但是我费了这么大劲做的东西,万一没人发现怎么办,最后还是蚌不住直接告诉大家怎么进隐藏关了QAQ。其实这里有一个我个人非常惭愧的事情,那就是隐藏关的BGM,真的就是直接拿了九球战的游戏原声……这应该是违规的吧,但是我实在是做不出能还原出那种感觉的音乐,时间上也来不及了,心里就给自己开脱,反正是隐藏关,大家进不进得去还两说呢,就这样吧。如果之后有机会,还是参照原BGM,自己想办法搓一个印象曲来致敬才吧……如果因为这个失去资格,我也没什么可辩解的。
虽然比赛已经结束了,但是游戏距离下一个理想形态还有很多工作要做,没来得及的bug修正,难度调整,之前想做也没能完整做出来的Trans-AM系统,所幸的是,到了今天,这些东西基本都处理完毕了,也收到了不少反馈,对我起到了极大的鼓舞作用。
其实在之前的一段时间,我都在困惑一件事情,要不要把这个项目继续完善下去,这个玩法得到验证了吗?有价值深挖吗?如何决定项目是否具有发展前景呢?这些问题对我而言有些过于复杂了……BOOOM群里的大家似乎已经是进入了宴会的结束阶段,有的人在享受不同的作品,有的人已经开始准备下一场GameJam活动了。明确表示想要继续做下去的似乎占很少的一部分。
我跟同事聊,他说,我只是缺少下一个项目,只要有了新的目标就会忘记这一个。第一次的体验总是特别的,也许我只是没能分清这份冲动是来自第一次的兴奋,还是对这个游戏想要继续开发的兴致。也许还需要一些时间来沉淀一下吧……
评论区
共 2 条评论热门最新