hhacker:
每一个游戏玩家心中, 都有一个自己做一款游戏的梦, 费劲千辛万苦后, 我成功制作了一款独立游戏并在 2025 年 1 月 1 日上架了 Steam.
本文既是对这个过程的一种纪念, 也是对游戏制作这个话题留下一些自己的思考和总结, 如果能让后来者少踩几个坑, 就更好了.
我将按时间线索将整个游戏制作和发行过程展现出来, 文章较长, 感谢你的耐心阅读.
源起 2019
我是一个 80 后, 在 90 年代伴随着电子游戏成长起来的一代人, 在读书的时候曾经有一段时间沉迷游戏, 玩三国志和文明系列玩到深夜.
我父亲实在看不下去了, 对我说了一句话: "玩游戏厉害算什么, 有本事自己做一个啊", 当时还小, 也没有能力制作一款游戏, 可能是年少时的那种不服气吧, 这句话我就一直记在了心里.
后来参加工作了, 和大多数社畜一样, 每天累得跟狗一样, 回家就只想躺着休息, 连打开电脑玩一把游戏的兴趣都没有了.
2018 年下半年, Steam 上的独立游戏中国式家长火热, 我正好也玩到了这款游戏, 并向我的朋友推荐了它.
然后在 2019 年春天, 我晚上加班加得心烦意乱, 工作堆积如山, 一眼瞥见了加班了一小会儿就想溜的胡大胖同学, 我说: "你陪我加班吧, 我做完这点事情, 我们就玩暗月来袭", 然后胡大胖同意了.
暗月来袭是当时很火的一款 DOTA2 地图, 我们之前从来没有通关过, 就在那个晚上, 我们打到了历史最佳记录-倒数第二关.
然后在黎明到来前, 胡大胖说:
"加班其实是有一定概率猝死的"
我说:
"要不我们做一款游戏吧, 就叫**中国式加班**"
胡大胖表示同意, 然后我们一起构思了这么一个特别的游戏, 当时胡大胖还并不知道, 他将是这个加班游戏的主角原型.
所以在 2019 年五月, 我初始化了这个游戏项目的 Git 仓库.
萌新的进击
虽然对制作游戏一无所知, 但是我知道很多游戏引擎, 比如 rpgmaker,cocos2d,unity,虚幻 3, 当时实在没有心思再投入时间学习这些引擎.
所以我就在想, 能不能用我现有的技术栈来做这个游戏?
我就决定先用前端(Vue)+Electron 先做一个 DEMO 出来.
然后 DEMO 很快就出来了, 它大概长这个样子:
点击新建游戏后出现几个对话, 就这么简单.
懵懂间, 我意识到了自己需要制作一个游戏脚本引擎系统,不过作为一个 DEMO ,我还没有把脚本引擎添加进来。
一切似乎都很顺利, 然后我开始盘算我还需要什么东西才能完成这个游戏, 很明显, 我需要 2D 美术资源用来表达人物立绘和场景, 需要有音效和背景音乐.
我决定先从最简单的音效和背景音乐开始, 音效在网上免费可商用的很多, 背景音乐我选择直接从 audiojungle 购买, 总共花了 800 人民币左右.
然后是美术资源, 我从淘宝上找了一个画手来绘图, 当时想得很好, 一边制作游戏, 一边按照规划输出美术资源.
我当时是以 200 一张的价格向画手定制的, 我们很快敲定并输出了基础的 UI 图.
在输出场景和人物图时, 我和画手都付出了相当大的代价.
当时我们输出一张图需要以下几个流程:
-
我文字描述想要的场景/人物特色, 尽可能地详细, 并配上例图
-
画师制作线稿
-
我和画师敲定线稿, 如果和我的想法有偏差, 会对线稿进行调整
-
画师细化线稿并上色
-
画师根据我的反馈, 对成品进行优化和调整
刚开始还不觉得, 但是后来我发现, 这样出一张图的实在是太大大大大大大啦!
当时我们做了一些这样的图:
![贴图]( https://hhacker.com/wp-content/uploads/2025/01/小型公司 1.png)
然后我意识到这样一个问题, 我根本没有足够的资源去得到这些我想要的美术素材, 所以在付出了 8700 元之后, 我选择了将这个项目封存, 不再继续.
不管是时间成本还是金钱成本, 都不是当时的我能够承受得了的.
黎明的曙光
就这样又过了几年, 我时不时还想起这个游戏项目来, 带着深深地遗憾, 因为我从来不是一个喜欢烂尾的人, 但是人到中年, 也学会了接受很多的客观现实.
转机出现在 2022 年, stable diffusion 横空出世, 同年 12 月, chatgpt 正式上线, 我很快意识到, 也许我现在有机会完成中国式加班了.
在研究了 sd 很久之后, 我确信这个东西生成的图片即便存在这样或那样的瑕疵, 但却是我唯一能够低成本获得 2D 美术资源的方法.
于是我决定重启中国式加班项目.
重启的第一件事, 我决定制作一个路线图表格, 这是这个表格在游戏最终完成后的样子:
我决心按照这个表格严格执行,立马开始了游戏玩法设定的工作。
在设计玩法时,我考虑到了自己的精力有限,所以把整个游戏的玩法设定得特别简单,心里想着玩法的短板可以用丰富的剧情去补充,游戏类型确定为SLG 模拟经营。
其实对于独立游戏而言,剧情代表着巨大的工作量,不过对于当时的我而言,并没有这种认知。
我用自学不到一个星期的 Adobe XD 尝试制作了这样一个原型,以下是抽取的几张原型图片:
这个原型很粗糙,它的最大的价值就是把我脑海里这个游戏的样子用图片的形式展现出来,并且我知道后续原型里这些设定不会有特别大的改动了。
时代不同了, 大人
我还需要彻底解决美术素材的问题,所以我特意购买了一台电脑,因为预算有限,显卡是用的 4060Ti 。
然后我开始尝试使用 sd 进行 AI 出图,在这个过程中,我遇到的最大的问题是,如何保持人物/场景风格的一致性,想了很多办法,最终采用的是在 prompt 前置风格描述的方式。
最开始的时候,我是把出图 prompt 用中文描述出来,再用 DeepL 翻译为英文,最后在 sd 里炼丹出图。
但是这种方式有个弊端,对 prompt 的要求非常高,写 prompt 也不是一件容易的事,然后我想了个办法,让 Chatgpt 去帮我写 sd 的 prompt ,Claude 出来之后我就把 Chatgpt 换成了 Claude 。
AI 写的 prompt 非常详细,sd 也能更好的理解 prompt ,但是仍有一个问题,就是无法生成同一场景或人物的细微变化,比如一个人在不更换服装和发型的情况下,要出一张不同动作的图,这就很难,即便我用了 ControlNet 去约束,新出来的图,在服装或发型上,总有些细微的差别,无法做到一致性。
所以我干脆放弃了人物立绘的动作多样化,直接一个人物一张图用到大结局,这样就简单多了。
解决了美术素材的问题,我开始从 0 研发一个简单的游戏引擎,说是引擎,但其实最核心的部分只有一个,就是游戏事件脚本引擎,因为整个游戏都是以事件驱动的。
很快我就构建好了事件脚本系统, 我把事件脚本分为两部分, 一部分是事件条件, 一部分是事件内容, 我把它们都写入一个 Sqlite 数据库中, Sqlite 的数据库其实就是一个文件, 也比较简单且易于管理.
事件条件主要就是人物的一些属性和时间/前置任务等等, 单独使用了一张表保存.
事件内容要稍微复杂一些, 我基于 Markdown 设计了它的基础语法, 最终看起来是这样的:
1. 对话
新垣结衣: 今天我带着**里美酱**一起来的噢.
2. 场景切换
<帝企鹅大楼 3301>
<过场场景>$ /* 隐藏 UI */
<游戏结束>+ /* 直接切换 */
<> /*空场景, 延迟事件执行 1s*/
3. 定义分支
# 相信陌生人
陌生人:你好,我是陌生人.
4. 选项跳转分支
1. 要相信他吗?@相信陌生人
2. 不相信他!@不相信陌生人
3. (角色属性.幸运 > 80) ? 我想赌一把 @相信陌生人
5. 场景加载/取消 NPC
* NPC1
* NPC2
~ NPC3
6. 跳转分支
(角色属性.上级满意度 < 20) ? @条件跳转某分支
(角色属性.名字 == "新垣结衣") ? @条件跳转某分支
(系统属性.随机数 < 0.7) ? @随机跳转某分支 /* 70%概率*/ @直接跳转某分支 7. 画外音 > 平等地剥削劳动力,是资本的首要的人权。
8. 提示
[**里美酱**对你的好感度提升了]+
[你受到了暴击伤害]-
9. 属性修改
(系统属性.某角色 = 解锁)
(角色属性.精神上限 = $ + 100)
(角色属性.底层螺丝钉 = 已激活 @3 天)
(角色属性.休息日 23 点 = 睡觉*) /* 带*号为锁定卡牌 */
10. 播放音乐
{平静 1.mp3}
然后我再根据事件脚本的语法去实现整个游戏引擎, 当时为了学点新东西, 放弃了第一个 DEMO 时使用的 Vue, 转而使用了 React.
其实我对 React 一无所知, 但是好在有 Github copilot 的帮助, 很快就上手了
整个游戏引擎前后耗时约 6 个月, 然后我用这个引擎又做了一个 DEMO 版本, 以测试事件脚本引擎能否正确运行.
结果很幸运, 它真的可以运行起来.
真正的阻力
然后我兴高采烈地开始写游戏大纲, 包括游戏背景大纲和游玩角色大纲, 当时计划的游玩角色总共有四个, 分别是胡图巴(倔强的韭菜),肖望荣(中年悲歌),孙西里(小目标),赵浩(拖延症患者的梦), 第三个角色赵浩其实就是以我自己为原型设计的.
大纲写好以后我开始按照原定计划为每一个角色剧本写配套的小说, 第一个角色胡图巴的配套小说写了几万字后, 我突然感觉, 这东西写不完了.
人这种生物一旦在付出努力未能实时获得反馈时, 就会变得极其懒惰.
我也是这样, 我就在步子迈大了小说完不成了和我再抽点时间写写之间反复徘徊.
最终进度非常缓慢.
后来有一天我实在忍不了了, 我就想, 这个小说真的是有必要的吗?
我是在做游戏, 又不是在写小说.
所以我干脆把整个小说系统在游戏里给去掉了, 去掉之后浑身舒坦, 游戏研发进度飞速发展.
完成和完美
经过了一段时间剧情脚本编写之后, 我又开始偷懒了, 因为我感觉自己的的确确没有享受做游戏这种事.
做游戏和玩游戏完全不一样, 做游戏不止很困难, 并且你获取不到玩游戏的那种快乐, 也就是在游戏交付测试之前, 你基本得不到什么正向的反馈.
然后我在做加班游戏的时候开始摸鱼.
这一摸又是很久, 久到我自己都受不了了, 我打开手机写下了这样几段话:
中国式加班从去年到今年已经两年了还没完成,需要进行反思和总结,找到加快开发进度的方法。
## 原因
1. 惰性
人总是趋向于做容易的事,容易取得成就感的事,所以把空闲时间大量花在了看视频玩游戏上
2. 难以进入心流
开发过程中无法全神贯注,并且不享受游戏开发的过程,创作和和玩游戏的感觉完全不一样,无法受到实时激励
3. 没有紧迫感,没有计划
整个事情没有时间节点的压力,现在时间比较充足,也没有经济上的压力,就无法高效地推进任务
## 解决方法
1. 加长那些简单获取多巴胺的事项的路径
比如删除游戏,限制抖音等 app 的使用时间,解放碎片时间,使得专注时间更长
2. 设定截止日期和任务计划
每天回顾这个计划并坚定按照计划的时间和工作量去推进,尽可能的分解大的任务为小的任务
3. 让创作的过程变得更有趣
让创作游戏脚本的过程更简单并且更有趣,甚至像玩游戏一样去做游戏,或者边做边玩
4. 将做游戏这个事放入重要且紧急的象限里
放弃对部分品质和细节的追求,尤其是场景图和人物图等资源的生成,把做游戏这件事设定为目前最重要且需要快速完成的事,放弃对销售量的预期,只专心到“完成它”这一件事上,哪怕因为过于粗糙导致最终玩家评价不好,至少这件事我“完成了”,也许有瑕疵,也许压根就不好玩,但是“完成了”对我而言就很有意义
5. 使用合作的力量,引入其他人参与,以更多的空间力量去执行任务
6. 把路线图表格保持打开状态,随时提醒自己,根据进度更新路线图,预计好工期
这样游戏的研发进度再一次飞速推进, 到了接近胡图巴的游戏大纲中最后一段主线剧情时, 我又陷入了畏难情绪中.
我一想到就算这个做完了, 还有 3 个游戏角色要做, 我就浑身难受, 觉得根本完不成了.
然后我找胡大胖吐槽, 说做游戏好难啊, 胡大胖说, 那你就做简单一点啊, 先做出来再说.
我想了想, 要怎么才能加快整体的进度呢? 要不直接减少可游玩的角色吧.
然后我就把除了胡图巴之外的其他三个角色都给删掉了.
这下进度条狂奔, 直接到了 90%.
然后我开始赶工, 只以完全主线剧情为唯一目标, 原本计划了很多的分支剧情, 不想做就不做了吧.
就这样游戏主体很快就完成了.
AI 音乐
给游戏设置背景音乐的时候, 我一开始仍然是使用的几年前购买的音乐素材包, 后来一想, 时代已经变了, 为什么不用 AI 来生成游戏的背景音乐呢?
说干就干, 我注册并购买了 Suno 的会员, 花费 10$, 然后生成了乐器伴奏的纯音乐作为游戏的背景音乐.
后来我想, 要不要在游戏的主菜单界面放一首人声的主题曲呢?
我觉得这个主意很棒,并且很简单, 成本又低, 因为 Suno 刚好也支持生成人声的歌曲, 于是我开始写歌词.
一开始的时候想让 claude 帮我写一首押韵的歌词, 但是 AI 生成的歌词达不到我预期的效果.
于是我决定自己写一首歌, 歌名就叫《天命打工人》, 最终完成的歌词如下:
verse 1:
清早闹钟又响起
地铁里面深呼吸
打卡上班很着急
工作已在等着你
chorus:
九九六, 九九六
熬夜加班伤身体
零零七, 零零七
摸鱼才是硬道理
九九六, 九九六
咖啡续命撑到底
零零七, 零零七
我要变成万人敌
verse 2:
这个需求很简单
怎么实现我不管
老板画饼要吃饱
生活娱乐全扔掉
chorus:
九九六, 九九六
熬夜加班伤身体
零零七, 零零七
摸鱼才是硬道理
九九六, 九九六
咖啡续命撑到底
零零七, 零零七
我要变成万人敌
bridge:
打工人, 打工魂
打工人打开一张门
打工实在太费神
打工人要做人上人
verse 3:
凌晨四点的夜光
照亮回家的方向
忘了加班的烦恼
生活多一点希望
ending:
九九六, 九九六
熬夜加班伤身体
零零七, 零零七
摸鱼才是硬道理
九九六, 九九六
咖啡续命撑到底
零零七, 零零七
我要变成万人敌
当我用 Suno 生成歌曲时, 意外出现了, Suno 生成的中文人声歌曲总是有部分吐词不清楚, 而且有一些词会怪异地使用粤语的发音(推测 Suno 使用了很多粤语歌曲进行训练), 不管我怎么调整都没有用, 我甚至用带声调的拼音作为歌词放 Suno 里生成, 也还是不行.
然后我想, 外国的月亮也不圆, 我们国内有没有同类的 AI 音乐网站呢?
欸, 还真让我找到了, 就是国内的海绵音乐(字节系), 我用同样的歌词贴进海绵音乐了, 不到 5 分钟我就得到了发音清楚的摇滚音乐, 虽然海绵音乐生成的音乐没有 Suno 那么音色饱满且充满细节, 但是胜在发音清楚, 让人有听下去的欲望.
如果想听一听的, 可以打开这个抖音链接试听:
https://v.douyin.com/iyMKtt8p/
多国语言翻译
最后要做的是多国语言翻译, 因为一开始我就使用了 i18n 库, 所以这部分工作主要就是翻译 i18n 字符串.
我为游戏提供了几种语言, 简体中文, 繁体中文, 英语, 日语.
我尝试使用 claude 去翻译 json 字符串, 经过一系列尝试后, 使用以下 prompt 获得了很好的效果:
以下是一些游戏的 i18n 对话文本, 将其 value 翻译为英文, 请不要修改 key, 翻译后的内容需要全年龄段适用, 请一次性翻译完成, 请务必一次性翻译完成, 文本中的**标记或其它可以转义的标记请对其进行保留, 输出内容为 json, 用 inline code 的方式输出
但是手动调用 claude 去翻译的工作量实在是太大了, 我就想能不能调 claude 的 api 呢? 结果卡在了付费这一步, 没有合适的外卡进行支付, 我的国内 visa 卡并不能支付 claude 的费用.
经过一番搜索, 我找到了 rapi 的 claude api 服务, 其实这个服务的提供者也只是转发了 claude 的 api 服务(不知道这样是不是违反 claude api 的 tos 的), 好处是 rapi 的支付渠道很好, 可以接受国内的 visa 卡付款.
搞定了 api, 我直接在 copilot 的帮助下写了一个 python 脚本去批量地使用我研究出的 prompt 对 i18n 文本进行翻译.
这个脚本在翻译完后还会自动检查是否有漏掉没有翻译的 i18n key.
然后翻译工作就简简单单完成了, 前后没有超过半天.
安卓移植
这个时候我其实就已经想发布内测版本, 把游戏发给我的朋友们玩了.
但是当我表达出这个意图时, 他们纷纷表示, 坐在电脑前玩游戏太奢侈了, 有没有手机版?
好吧, 虽然不打算发行移动版本, 但还是移植一个安卓版本吧.
然后我学习了Cordova的使用, 并打出了一个 apk 包.
放手机上运行, 直接白屏, 想想也对, 移植工作可不只是打包 apk 这么简单.
我需要把原来所有涉及到文件读取的地方, 改造成调用安卓 API.
因此我重新设计了 Files 库, 区分对待 PC 和安卓, 游戏中所有涉及到文件的地方统统使用这个 Files 库.
折腾了两天之后, 游戏终于可以在手机里运行了.
朋友圈内测
我兴高采烈地发了一条关于游戏内测的朋友圈:
第一时间就发给了胡大胖, 结果胡大胖说, 运行白屏.
我当时的表情是: ????????????
我的第一反应是: 在我的机器上好好的啊
一问才知道, 他的手机是安卓 11, 所以肯定是一些兼容方面的问题, 安卓 11 的 webview 没有后面的安卓版本高.
我又花了两天通过调试安卓 11 的虚拟机解决了这个兼容问题.
胡大胖对游戏开始了非常严谨地测试, 一直到最后我点下游戏发行的前一刻, 他还在废寝忘食地测试游戏, 一遍一遍地玩已经玩过很多遍地剧情, 在此再次对胡大胖表示感谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢!
在游戏的测试中, 不断发现有新的 bug, 但是改 bug 并不让我感到痛苦, 所以整个过程都很顺利.
Steamworks 注册
在测试游戏的过程中, 我想起要去注册 Steamworks 去发行游戏了(其实这一步应该更早的进行), 赶忙注册了一个 Steamworks 账号.
注册账号的过程中, 支付了 100$用于购买发行坑位, 按照 Steam 的说法, 当游戏销售额达到 1000$时, 这 100$会还给我.
然后是填写美国的税务表, 就按身份证上的信息填写就可以了.
填写完, 很快 steamworks 会提示需要上传补充信息, 其实就是身份证的正反面和手持身份证的正面照, 照做就可以了, 我一开始没有仔细看英文的提示, 没有上传手持身份证的正面照, 税务表被打回来了一次, 最后提供了手持身份证正面照就成功了.
这个税务表的审核如果顺利的话 2-3 个工作日即可完成.
注册好 steamworks 后我做的第一件事, 就是给游戏定价.
因为我也没有打算能够回本, 当然也不奢望销量会爆, 所以我想要不就把价格设置得低一点吧, 回本是不可能回本了, 那就国区卖 9.9 人民币, 美区卖 1.99$.
其实我还可以定得更低一些, 但又觉得那未免也太不尊重自己了, 就算了.
(如果有实在囊中羞涩又想玩这个游戏的朋友, 可以通过商店页面的联系方式找到我, 我可以免费送你 CD-KEY.)
Steam 商品页准备
接着我开始准备 Steam 的商品页, 按照 Steamworks 里的表单一项项填写就可以了, 虽然这个商店管理后台诡异且充满了屎山的味道, 但还是勉强可以使用.
唯一要注意的是上传商店图片素材时它是根据图片尺寸来自动填充到对应的表单位置的, 所以图片的尺寸一定要符合它的要求.
我电脑上没有 ps,我是直接到 Photopea 网站上调整的素材大小.
然后我用剪映制作了一个极其粗糙的宣传片, 因为我觉得商店页面有个游玩视频感官上会更好一些.
这里因为我游戏提供了繁体/英语/日语, 游戏商店我也进行了繁体/英语/日语的本地化设置, 主要是游戏描述的文本.
全部设置好后提交商店审核, 然后因为一些小细节, 审核被打回来了一次, 修改后, 重新提交审核就通过了.
审核通过后, 商店就可以在 Steam 里搜索并被玩家看到了, 这个时候 Steam 会赠送一些曝光, 游戏愿望单每天都有增加.
这里前后花了一个星期的时间, 这里我犯了一个错误, 商店审核后没有立刻点击商店发布, 导致游戏发行时间延后了, 因为游戏正式发行时间必须在商店页面发布两周以后.
接着是游戏主体的审核, 这里其实并不需要提供游戏的最终版本, 而是只需要一个接近最终版本的游戏版本的就行了, 所以即便有 bug, 也可以提交上去供 Steam 审核.
第一次审核时 Steam 又找了一个商店页面的问题打回来了, 并且说最好是支持一下 steam overlay, 就是进入游戏后按 shift+tab 出来的那个东西.
我想这应该不难吧, 把商店的问题改好后, 就找了 steamworks.js 库去适配 steam 的 api, 结果出来的效果不行, 一按 shift+tab 界面就卡死了.
后来在网上一篇文章里找到了原因, 是因为 electron 渲染的网页是不会实时刷新的, 这和普通的游戏不一样, 按下 shift+tab 后 steam overlay 虽然有出来, 但是就消不掉了, 我在那篇文章里也找到了对应的 workaround:
function initSteamOverLay() {
function fakeGameloopForSteam() {
const canvas = document.getElementById(
"fake-refresh-steam"
)
const styler = canvas
styler.style.width = `100vw`
styler.style.height = `100vh`
const ctx = canvas.getContext("2d")
ctx.clearRect(0, 0, 1, 1)
// Not sure if this could work if fully transparent or if setting CSS opacity to 0, I haven't tried yet
ctx.fillStyle = "rgba(0, 0, 0, 0)"
ctx.fillRect(0, 0, 1, 1)
requestAnimationFrame(fakeGameloopForSteam)
}
const canvas = document.createElement("canvas")
canvas.id = "fake-refresh-steam"
canvas.width = 1
canvas.height = 1
const styler = canvas
styler.style.position = "fixed"
styler.style.top = "0px"
styler.style.bottom = "0px"
styler.style.pointerEvents = "none"
styler.style.zIndex = "30000"
document.body.appendChild(canvas)
fakeGameloopForSteam();
}
然后我又提交了一次 steam 游戏审核, 这次审核通过了.
在这个过程中, 我得到的教训是, 其实可以更早一些注册 steamworks 并发布商店页面, 因为商店和游戏审核至少要用掉 2 周,而商店发布后又需要等 2 周才能点发行, 所以提前 2 个月甚至 3 个月去做发行相关的事情是比较合理的, 这样就不会出现游戏做完了却无法点击发行的尴尬场景.
这样就可以了吗
游戏做到这一步, 我感觉已经差不多了, 但是在等待 steam 审核的时候, 我又写下了这样一段话:
从一个玩家的视角,如何去判断一个游戏是否好玩?
我觉得最重要的是有没有在游戏中体会到乐趣。
游戏玩家其实是一个特别容易讨好的人群,他会因为游戏中一些精巧的设计捧腹大笑,也会在看到一些新奇的很小的东西时感到开心。
并且游戏玩家富有同理心,他们对游戏的代入感特别强,你在游戏里讨好他,他心里清清楚楚并且很享受。
作为设计者,我们的游戏是对真实世界的拙劣的模仿和放大,在其中设定一些真实世界不常见甚至是完全不可能的事情。
我们在设计游戏的时候,需要迎合受众的寻求,增加相应的机制去满足玩家的心理需求,这些机制可以是以下几种形式:
1. 独一无二的特殊事件,通常以游戏主线或分支剧情的形式展开
2. 基于随机性过程和结果重复的循环事件,就像是钓鱼一样,你永远不知道今天自己会钓上来什么
3. 与真实世界形成反差的任何游戏设定,现实中越难得到的,在游戏中越容易得到,所以连欢乐豆都会有人喜欢攒
4. 与真实世界可以形成对照和代入的罕见事件,游玩过程中玩家并不具体期待某一件事情,但是永远在期待好的事情
5. 玩家需要轻微的挫折,人性都是如此,太容易得到的就不会珍惜,因此玩家在某个方面违反了设计者设定的机制时,便会在游戏中受到数值或其它方面上的惩罚
我又根据这些思考, 对游戏的部分剧情进行了补全, 尤其是恋爱事件, 因为我发现胡大胖特别痴迷于和美女们搞好关系.
这样, 等待发行的这段时间就也充分利用起来了.
最后的测试与直播
随着可发行日期越来越近, 在胡大胖还在疯狂测试的同时, 我决定录制一个游戏的游玩视频, 到时候进行 steam 循环直播, 因为我看了 steamwork 的文档, steam 是允许录播的, 前提是你在页面里有表明是录播(Replay).
在第一次录制这个游玩视频的时候, 中后期我自己又发现了一个不可原谅的 bug, 就是游戏中就职的公司可能会在发薪日不发工资给玩家!
所以只好又匆忙修复这个 bug, 然后我发现, 修复的这个 bug 解决了一些游戏中潜在的一些隐性问题.
这是一件很值得开心的事, 现在就发现 bug, 比玩家玩的时候发现 bug 要好, 作为一款低成本的剧情向独立游戏, 我知道玩家并不会给我第二次机会, 如果因为 bug 导致主线剧情无法正常游玩, 玩家虽然不至于退款, 但也不会再有兴趣打开游戏了.
然后我第二次开始录制游戏的游玩视频, 这次非常顺利, 录制完后我把游戏实机视频用 OBS 软件推流到 steam 直播, 并且循环播放, 很快我的 steam 商店页面就能看到我在直播了.
Steam 发行上线
2025 年 1 月 1 日零点, 我终于点下了游戏的发行按钮, 一切都画上了句号, 也许不圆满, 但我实现了一个梦想, 付出了很多, 但是在最后这一刻, 我深深地感到了自豪.
游戏首发第一天就收获了一条好评, 果然爱玩游戏的都是好人!
最后的最后
原本发行后, 如果没有 bug 需要修复, 做一个独立游戏这件事就应该画上句号了, 但我觉得应该把自己这些经历写出来, 给后来者一个参考, 也是给自己一个反思的机会.
于是见缝插针写了本文, 其中肯定有疏漏或错误的地方, 欢迎各位大侠指正.
最后, 祝大家都能做自己喜欢做的事!