撰写了文章 发布于 2021-07-03 23:42:49
【开发日志】《鬼山之下》前 100 个小时的制作思路分享(二)v0.0.1 ~ v0.0.20 版本的思路 和 怎么走到这一步的
大家好,我是凉鞋,在上一期,笔者说了一下打算如何做、以及为什么要做《鬼山之下》?
笔者打算每 100 个小时为单位,做一次总结、规划、经验分享。
然后前期以技术自给自足,素材全靠找为主,中期自学像素画和音乐音效,后期全部素材重置或者部分合作。
而做《鬼山之下》的原因就是自己喜欢加上想要给国内游戏行业添加一个靠自己做游戏为生的案例。
OK,从此篇开始,笔者开始顺着开发的顺序介绍当时的制作思路。
首先看一下 v0.0.1 ~ v0.0.5 的版本记录:

看得出来没做出来什么事情,就做了一个简单的首页。
一开始考虑到用手柄玩游戏的话可能体验会更好一些,这是因为本人是开发者,工作的时候用键盘比较多,所以玩游戏的时候如果用键盘有一种在工作的感觉,哈哈哈。
分析玩游戏手柄之后,就开始调整了一下分辨率,分辨率经过调研决定用 1024 x 768,用这个分辨率是因为笔者要做元像素风格的游戏,1024 x 768 够用了。
v0.0.3 版本做了一个首页,只有一些按钮,如下。

v0.0.4 版本决定先花钱把 Steam 的账号买下(一个游戏的上传权限),当时的想法是,钱都花了,不去消费的话说不过去。也就是说花钱是为了让自己更有动力去做这个游戏。当时的情况是,笔者在武汉帮一家公司带项目,每天忙得很,再加上笔者还有个培训班级需要运营,所以时间基本都是占满了。但是当时实在是很想做游戏,所以就花点钱进去,这样自己就能够重视这个游戏的开发(现在自己觉得这个思路挺奇葩的,但是事实证明挺有效的,毕竟金牛座是很抠的,逃)。
v0.0.5 开始打 WebGL 版本,看下 WebGL 跑起来怎么样,结果遇到了个问题,这个问题是 OSX 除了 11 版本,当时用的 Unity 的版本没来得及适配,后来翻 Unity 的补丁版本的更新日志,升级了之后就修复了。
这里简单说一下,为什么要一开始就打 WebGL 版本。原因和上一篇讲的一样,就是一开始就引入玩家视角,而用 WebGL 版本的话只要扔个链接就可以快速让亲朋好友同事帮忙测试给反馈。而这样做也让笔者得到了很多鼓励和动力,鼓励就是亲朋好友给的,动力就是一些游戏的缺陷还有一些建议,这些都让我更有动力去改善游戏。
v0.0.1 ~ v0.0.5 这里有一个比较重要的事情,就是申请 Steam 开发者权限,这里笔者参照了一篇文章,如下:
- 将你的游戏发布到steam吧(一): 成为steam个人开发者,地址:https://zhuanlan.zhihu.com/p/144456728
这一篇就够了,保姆级教程,强烈推荐。
接下来再看下下边的 5 个版本,如下:

版本记录中的 凉鞋的朋友 是笔者 18 年的时候为了做视频课程做的一款游戏,里边用到了一个插件叫做 Corgi Engine 2D,用这个插件可以很快搭建一个 横版 2D 平台游戏的原型,而且里边功能很全很强大,而 凉鞋的朋友 这个游戏当时在开发的时候笔者对 Corgi Engine 2D 做了一些定制和重构,所以就直接把整个 凉鞋的朋友 这款游戏导入进来了,但是后来没啥用》
v0.0.7 版本 笔者把 版本记录嵌入到了游戏里,也就是截图部分的内容。
v0.0.8 版本 把凉鞋的笔记整个游戏的入口整合到了首页。
OK,介绍这些其实都没啥卵用 哈哈哈。
接下来笔者就直接说一些比较重要的点吧。
首先笔者一开始用的一个插件是 Delight,
Delight 的特点是可以用 xml 写 UGUI 界面,然后再 xml 里可以定义变量、按钮点击事件等,然后再编译的时候会触发 Unity 直接生成代码,重点是免费的,而且作者还在更新。
插件地址:https://assetstore.unity.com/packages/tools/gui/delight-150494
而笔者使用 Delight 的原因是,笔者有前端的开发经验,知道前端用来写界面是很快的,而 Delight 的前端的开发模式加上代码生成可以让界面快速实现。
但是 Delight 由于是依赖代码生成的,所以当项目的代码变得特别多的时候,Delight 的优势反而会变成劣势。
不过,笔者当时只是打算在前期用 Delight,用来快速写完界面让游戏变成一个闭环(上一篇讲的),然后写一些界面的时候不想去考虑样式之类的,功能有且看着还可以就行,所以笔者一开始就用了比较保险的黑色背景加上白色文字这样的 UI 界面。
总之到了现在(200 个小时的投入时间),笔者已经完全把 Delight 剥离出去了,使用了不依赖代码生成且收费的 XMLLayout。
Delight 的战略目的已经达到了,Delight 很适合快速搭建原型的前期,更适合程序员出身的独立游戏开发者,可以用代码或者文本控制样式。
贴下代码大家感受下。
界面代码:
<MainView xmlns="Delight" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="Delight ../Delight.xsd">
<Label Text="凉鞋的游戏" TextAlignment="Center" FontSize="80" AutoSize="WidthAndHeight" Position="0,50"/>
<Group Orientation="Vertical" Spacing="10" Position="0,-100">
<Button Text="农场游戏" Width="200" FontSize="20" Click="OnFarmGameClick()"/>
<Button Text="银河恶魔城游戏" Width="200" FontSize="20" Click="OnMetroidVaniagameClick()"/>
</Group>
</MainView>
界面效果

逻辑代码:
#region Using Statements
using UnityEngine.SceneManagement;
#endregion
namespace Delight
{
public partial class MainView
{
public void OnFarmGameClick()
{
SceneManager.LoadScene("MENU");
}
public void OnMetroidVaniagameClick()
{
SceneManager.LoadScene("Demo");
}
}
}
总之 Delight 插件有很智能的代码生成机制,笔者前期靠这个节省不少时间。
OK,Delight 这个插件就说到这里,以后笔者可能会开个相关的免费教程。
当时由于笔者时间很紧,所以打算做一个有游戏元素的 TodoList App 嵌入在《鬼山之下》项目里,这样可以让笔者更有动力去做这个项目,就愿意多挤出一些时间在这个游戏上(可以看得出时间真的很紧),于是就开始尝试写一个简单的 TodoList,这就是 v0.0.10 版本为啥会写 添加 Todo 和 添加金币 这两项了。
v0.0.6 ~ v0.0.10 版本没啥内容了。
再往下看几个版本。

没啥可说的,遇到一个 WebGL 不支持中文的问题,后来替换掉了默认字体就好了。
再往下看几个版本。

首先在 v0.0.17 导入了 Steamwork,之前一直在查 Unity 怎么接 Steam ,后来有了点门道。
在 v0.0.20 笔者找到了一个比 Corgi Engine 更轻量级的 MetroidVania Controller 插件,插件地址如下:
这个插件画风是这样的:

动图:
插件的特点是很轻量级,而且银河战士恶魔城的操控部分的功能都有,比如二段跳、普攻、远攻、攀墙、敌人 AI 这些,重点是免费。笔者毫不犹豫就把它导入到《鬼山之下》项目里,打算以它为基础进行迭代,直到现在《鬼山之下》还有这个插件的影子,比如跑步的声音和割草时的落叶动画用得都是这个插件自带的。
关于类银河恶魔城的插件笔者除了 MetroidVania Controller 还研究了 CorgiEngine 和 PlatformerPro2D 这两个插件,CorgiEngine 功能很强大也很多,代码质量也不错,所以笔者就作为参考方案在项目里放着了,PlatformerPro 这个插件现在已经在 AssetStore 上下架了,不过其中的功能比 CorgiEngine 更强大,笔者在里边发现了 小地图系统,所以也把 PlatformerPro 也放在项目里当做参考方案了。
OK,v0.0.16 ~ v0.0.20 说完了。
剩下的下一篇继续说。
接下做个简单总结。
- 尽早成闭环
- 面向玩家
- Delight 插件
- MetroidVania Controller 插件
- CorgEngine、Platformer 插件
然后再随便聊聊别的,聊聊怎么走到这一步的吧。
其实独自做一款游戏的成就感还是挺强的,而笔者为了做独立游戏其实做了很长远的准备的,笔者在刚毕业半年的时候辞职过一次,在家接外包做游戏差不多 3 个月的时间,而这 3 个月的时间真的挺煎熬的,怕被同龄人落下,怕做了这个外包没单子,再加上自律性不高生活作息不规律,后来到第 3 个月的时候实在受不了了,而当时的外包客户打算再给我一个大的单子,笔者自己考量了一下之后,就找了一家公司做了 3 年开发。
而当时的考量结论是,笔者还没有做好准备过这样的生活,一是因为技术能力,虽然东西都能做出来但是心理上还是很恐慌觉得自己垃圾,二是因为自律性不高,生活作息不规律,总是凌晨 3 ~ 4 点睡觉甚至是第二天 7 ~ 8 点。所以当时找工作的时候就很清楚了想要什么,找工作也就比较顺利,笔者只要求公司几年内不倒就行,这样笔者就有几年的时间去克服自己的缺点,然后一待就是 3 年。
在公司的日子还可以,笔者做了一个开发框架,开源了叫 QFramework,做这个原因很简单,一是为了快点提升自己能力,让自己的工作效率高一点,这样业余时间可以多些时间做一些独立游戏相关的事情还能照顾爱好啥的(笔者当时也比较喜欢跳舞),二是为了提高自己的开发效率,然自己的工作效率高一点。。。。好吧都是一个目的,第三个目的笔者是想未来做独立游戏的时候一个能自己 hold 住的框架可以让游戏的开发事半功倍,出于这些目的笔者就做了 QFramework,到现在维护了有 6 年了,已经是 2k Start 的开源项目了。
而笔者因为 QFramework 在工作上也比较顺利,公司内的项目基本都使用了笔者开发的框架,而且 3 年中有 1 年的时间的工作内容就是只有迭代框架做技术支持相关的内容,工作体验也不错。后来晋升做了开发经理和主程,然后带项目。
最开始为了推广 QFramework 笔者还写了一个专栏《Unity 游戏框架搭建》,这个专栏的内容就是介绍下 QFramework 的一些内置工具,后来慢慢能写的内容也越来越多,就做成收费的版本,再后来就因为这个专栏被 siki 赏识,工作辞掉就去 siki 学院做了 全职网课讲师了。而这个时候距离自己第一次自由职业已经 3 年过去了,笔者早就在自制力和技术能力上今非昔比了。所以这次自由职业一直持续到现在,差不多 3 年多了。
说回在公司的那段经历,笔者参加了几次 GameJam,GameJam 还是挺有意思的,第一次参加的时候临时凑了个团队,做出来的游戏可想而知肯定很差,不过团队的策划还是挺大方地请我们吃了一个饭的。后来再去参加就慢慢摸到门道了,成绩也越来越稳定,甚至有一次拿到了 网易的游品位的第一名。
而通过 GameJam 摸索出来的制作流程,笔者发现在迭代 QFramework、写专栏、制作网课上也都适用。再后来就发现公司使用的制作流程问题是很大的,但是自己能量小,虽然最后混到了开发经理、主程,但是在整个公司还是比较小的职位了,后来就收到 siki 的邀请就离职了,再后来自己开了小班,然后和 siki 也一直保持合作,一直到现在,偶尔也会有一些刚成立的团队需要我去帮带项目,也有一些外包啥的,总之就这样走到了现在。
而这些每一步都是为了做独立游戏,做框架是为了做独立游戏的时候要用框架,写教程做课程这些算作内容创作,而游戏本身笔者理解的也是内容创作所以两者是很多地方是相同的。然后框架是一个技术产品,需要面向用户,也要做运营和维护,也需要产品能力,这些和做游戏也是相同的。然后做网课讲师这样的职业,其实是自由职业者,而自由职业者的时间比较灵活,这更有助于笔者学习做独立游戏相关的内容,再加上工作的时候参加的 GameJam 等等,总之一切其实都是为了做独立游戏。
这里有个小故事可以讲一下,埃隆马斯克的目标是最终要造出来火箭,但是埃隆马斯克先发布了特斯拉,做特斯拉让锂电池技术更加成熟,而且也回笼了资金,而造火箭也需要锂电池技术和资金,通过特斯拉造火箭的成功率变得更高了,最终也造成了火箭。这是一个所谓的曲线救国的故事。
而笔者当时听了这个故事也很受鼓舞,于是就先做 QFramework、然后做专栏、收费课程、网课讲师、参加 GameJam 再后来学习游戏设计、游戏美术,这些都是为了最终提高独立游戏的做成的概率,所以笔者在开始做《鬼山之下》之前就已经做了很多的准备了。
接下里重点说说制作流程吧,其实笔者现在做《鬼山之下》 的制作流程就是用的 GameJam 一套流程。
首先游戏的开发(任何产品的开发)是要有一个节奏的,不能一直持续高强度开发,也不能一直懒散开发,这两者都不好,前者让身体吃不消健康、情绪出问题,后者可能爽了一时,但是长期还是很影响士气的。
所以要有一个节奏,而笔者后来帮别人带项目的时候,整个团队的初期节奏是以周为单位的,比如一周做一个版本,但是发现一周一个版本在早期压力还是大,所以就以 2 ~ 3 天一个版本,每个版本和策划定下来了就要做到,而且定的内容必须是资源给到的,缺一个都不做的那种(由于是笔者帮带项目,所以很强势),然后开发完了准备简单测试,发布版本,内部收集反馈这样,一开始可能 1 天就开发完了一个版本的内容,到后来慢慢步入正轨,基本上是 1 ~ 2 周定一个版本,而团队也一开始就能看到版本一点点变好,团队也一直能保持一个士气。
而这个开发节奏,笔者在《鬼山之下》用的是以 100 个小时为单位的。这是因为笔者一开始是挤时间做游戏的,所以不能以时间周期为单位而是以投入的时间为单位,这样会比较灵活一些。而独立开发者在早期很有可能推广还有运营这些事情是都要自己做的,还有游戏设计还有美术,这些每一项工作意味着一次身份切换,而如果每天切换一次身份那么基本上就做不了啥事情了,所以打算 100 个小时为节点做一次身份切换,100 个小时内用于游戏的推进,这期间可以做研发相关的事情,100 个小时到了,会休息几天喘口气,然后做做推广、更新下宣传图、和玩家多多交流之类的,而此系列的文章就是在第 200 个小时节点结束的时候写的,当然 100 个小时内其实游戏也会发迭代很多版本的。
由于是独立游戏,所以很大可能催你更新的只有玩家,当然更大的可能就是谁都不会催你(游戏没人买),所以投入 100 个小时可能要 1 周,也可能是 1 个月,甚至半年,这样是比较灵活且自由的,我反正是很希望有玩家催我更新,现在还没做到,哈哈哈。
OK,说完了制作流程的节奏,接着说一个很重要的一个点,就是每个阶段都有不同的目标,做游戏的时候不能一下子就盯着最终目标,甚至有的游戏一开始也是没有目标的,都是慢慢探索的,但是每个阶段都要有阶段的目标,而且这个目标最好是能够达成的。
笔者参加 GameJam 的时候甚至在公司的时候发现,很多团队都是策划写个策划案包含了全部系统但是并未验证、然后美术出个素材、程序员开发然后就完事了,然后最后做出来的游戏根本玩不了。这在公司是很常见的事情,这也是为啥大部分公司创新力不足的原因,因为根本不知道游戏是怎么从零研发出来的。这个在公司倒是还好,能耗得起的公司栽几个跟头就知道咋搞了,要是在 GameJam 也还搞这一套根本就是找死,GameJam 就只有 48 小时,这时候团队有个策划说我策划案写好了,有哪些系统怎么样怎么样的,基本就是只有被怼的份,这也是为啥很多 GameJam 团队不喜欢找策划的原因,一般线下去参加 GameJam 的时候被落下的没人组的基本也都是策划,甚至有的公司不招策划,比如凉屋游戏,因为很多策划是没法对自己的设计负责的。
而造成这样的原因,笔者认为只有一点,就是不懂游戏制作流程,或者说“知道游戏制作流程,但是那是书本上的,国内行情不一样”,那这些策划就只能做出来“符合国内行情”的游戏了,换句话说,是知道游戏怎么做好,但是感觉必要。这就是很典型的没做到知行合一。
知行合一是什么?笔者认为很简单,有的人知道早起早睡身体好,但是做不到,因为没通过没吃过这方面的亏,这就是知道但是没意识到。有的人知道早起早睡好,但是做到了,因为以前迟到被罚或者约会谈崩或者健康出现问题、或者家教等,这就是知道且意识到了并且做到了,这就是知行合一,很多打 LOL 的童鞋所说的意识就是这个意思。
而笔者认为在游戏开发方面的知行合一,就是看到书本上的方法之后自己尝试下验证下,得到经验,体会到好处,成为自己的方法论或者习惯,这就是知行合一,而大部分人看到书本上的方法试都不试直接就是说不适合国情找借口,这种人笔者见到要么就大口破骂要么避而远之,因为很大可能后边也不会有啥作为的。而和傻子在一起久了容易同化成傻子,而能力强的人却可以为所欲为,可以过更自由的生活。
笔者所接触过的常见的游戏设计书籍,比如《游戏设计梦工厂》《游戏设计的艺术》《通关》等等,没有一本在书上说要上来就给出整体方案的,都是告诉你要做原型验证、原型测试、提早引入玩家做测试、从 ugly baby 孵化等等。
OK,说回正题,说道每个阶段都要有不同的目标,是告诉大家,游戏不是只有一个阶段的,最粗糙的分法也可以分成前期、中期、后期,还有什么 prototyping、demo、pre production、production、alpha、beta、release 等等总之很多,拿简单的距离,前期、中期、后期,看这三个阶段有经验的童鞋大致就能分出来每个阶段要做什么不要做什么吧,比如前期可能不用正式的美术素材和音乐音效,中期尽量不能改核心要量产,中后期要打磨和优化表现之类的。而就算是 GameJam 48 小时内也会分一下这些阶段,每个阶段的目标不同。
举个例子,笔者在《鬼山之下》很早期的版本就开始邀请玩家来玩了,很多同行在反馈的时候都说美术不行啥的,笔者不能伤了和气就一般会回复会改好的。而此时如果是一个没有目标的开发者收到同样的反馈,可能很快就着手去让美术更好了,而像笔者一样知道目前游戏处于什么阶段该做哪些事情,该关注玩家的哪些建议的时候,就会很淡定,不会影响原先的开发计划,当然建议还是都会记录下来的,只不过会留到时机成熟的时候去修复。
OK,说完了不同阶段有不同的目标。
这一篇就说到这里吧,说得比较多了,但是有些还不是很细,以后找时间详细展开下。
简单总结下:
- 开发要有节奏,可以适应身份变化。
- 不同阶段要要有不同目标,要坚定。
感觉有帮助可以支持下笔者的游戏。
《鬼山之下》游戏地址:https://store.steampowered.com/app/1517160/
- 抢先体验价 6 元
- 支持 Mac、Win
- 全流程键盘、手柄控制器支持
- 主流手柄支持