下载 App

开发日志06:再谈数据库与时间轴

2025/10/30124 浏览综合
TapTap
幸运观众
登录后查看开奖结果
by单曲循环“The Moment”的寒刃
1030 9:45-13:44
游戏包体前几天就已经打包上传了,但最后一篇开发日志迟迟没有写出来,主要是因为昨天才刚刚结束了最后两门考试,而且是在发烧+月经的情况下,身体几乎是透支的状态,今天才觉得有点缓过来,虽然鼻子还是塞塞的,但是为了揭秘游戏中对于“你确定这不是一个BUG吗?”的主题的解题方式,现在就是动笔写日志的时刻。
看过日志2的朋友们应该知道,我在前期写程序的时候,对数据进行了一次重构,当时的问题是我武断地把程序的分区做成了分区域的,也就是卡牌区,地图区,交易区,卡槽区,企图通过物理区域的隔离使得程序之间不相互耦结。然而结果是比较失败的,因为某些地方需要两次调用同一个数据,把程序物理分开以后,就需要有两个不同的数据库存同样的数据,并且还需要同步,这显然不经济。
TapTap

随后我的优化方案是重新绘制一个简单的uml图,把应该合并到一起的数据都合并在一起,把程序严格分成了数据库层和操作层,并添加胶水代码。但是这样也有问题,在短期比赛中,这样意味着每次数据库添加数据都需要反复测试,同时,大量的预制体也会让整个项目变得很笨重,对于需要追求评审期下载量的游戏来说,过大的安装包非常容易劝退玩家。
TapTap

(图片摘自和队友们非即时通讯的文档)
因此我意识到对于短期的项目来说,跑通更加重要,梳理游戏的时序性,写出闭环的反馈循环更加重要,低代码意味着不需要在编译器里面反复调整直到没有报错才能附加到unity上,于是我使用了“时间轴”的方法,在大型的项目中,一般来说需要同时依赖数据库为游戏提供可扩展性,又要用时间轴来确定不同内容结算的时序性,但是至于小型项目,能线性地展示核心玩法就可以,甚至也存在着文游(指传统依靠选项而没有内部小游戏的)这种完全依赖时间轴但体量依旧很大的游戏。
TapTap

(图源我自己的笔记本)
也是在这个过程中,我决定彻底放弃一开始的“杀虫剂”肉鸽玩法,因为这样的时间轴会拉得非常长,不利于梳理和开发,更别提后期的测试。
时间轴意味着不需要使用专门的回合管理器就能把卡牌抽取的部分和商店结算的部分做好,但是地图部分如果想要长期维护,每次都需要新的时间轴(因为后续的关卡里不只有两个boss,更不只有一个能放路块的地方)
这时候距离开大会已经就剩三四个小时了,开完大会就是长达三天的考试,我真的没有时间做这么繁重的任务了,尤其是此时相当于已经进行了两轮重构,而计算的逻辑反而越改越多了。
数据库还是时间轴?这其实也可以不是一个选择题。
游戏的bug最开始的出现,来自于《太空侵略者》,彼时游戏首次使用cpu来提高存取时间,此前游戏通常使用TTL回路,cpu的应用让游戏的可能性大大地增加,同时也出现了由于cpu传送数据时出现的异常与游戏程序bug共同作用下的“bug”。如今的cpu性能大大增强,许多bug出现在显卡的层面,比如我和朋友玩双影奇境时,她看到的佐伊米欧并不是大美女,而是红着眼的低面数模型,还有一些bug发生在程序互相占用资源造成的死锁,有时这会导致游戏卡死,还有一些bug来自于判定条件出现矛盾,这种恶性bug会导致玩家刷道具,影响游戏内部经济体系的平衡。
这些都是游戏运行起来以后产生的bug,然而程序员是有办法让bug产生于运行之前的,比如为了短暂实现某些功能对程序做出的妥协式开发。(请帮我找一下那个鸽子依靠脖子飞的gif),像这样的bug,如果对于游戏没有太严重的影响,就可以被称之为“特性”,但在很多情况里,游戏的bug经常意味着游戏流程跑不通,比如无法重玩,无法刷新摆放道具,这些问题在我过去的开发里也都或多或少地出现过。
另一种表达是,数据库与时间轴在实践中常常组合使用,但也经常起冲突,就实际而言,代偿性使用另一者也并非不能构建游戏,但长期来看用错工具容易造成额外的开发成本。正因为对数据库的结构性神话与时间轴的实时性神话的错误理解,游戏中的bug才产生。
这个表达很好的概括了bug根本性的产生原因,但对于代偿性使用某一工具的说法令我产生了质疑,在本次开发中,数据库的重构和时间轴的不断修改都增加了开发成本,而将两种方案结合更加会几何倍数地增加开发成本,对于小型轻量的游戏本身是更加灾难化的。
那么是否有可能同时摈弃数据库与时间轴开发一款游戏?当然有可能,但这并不是说让我们倒退回TTL时代,而是在如今这个人人都可以用自己电脑上的cpu和成熟的游戏引擎开发游戏的时代里,使用我们自己的方式。
在我的研究“二手玩家”中有这样一个现象描述,玩家放弃对于游戏本身的探索和思考,转而转向参照有明确点击顺序的攻略,在游戏中进行机械式的互动,这种现象使得游戏设计中的反馈循环并非他们所追求的,而是在追求通过社交媒体推荐的内容进行操作所得到的确定性体验。比如二游中的“跟打表格”,游戏本身设定的游戏平衡机制,比如数值和克制关系,并非玩家与游戏产生互动的结构,只有屏幕内的ui与分屏(或是另外一个设备)的表格之间的相互对照与点击构成了最基本的反馈循环,玩家也会从中获得成就并学到东西,只是这种东西是“二手”的。
从另外一个角度来说,我们可以给出玩家攻略,让其点击就完成对游戏的操作,而非真正提供运算结构。如果没有实际的运算结构,仍能够提供游戏的体验,就意味着我们事实上并不需要数据库,也不需要时间轴,仍能够构建一个游戏。当然这个游戏一定会是有bug的,因为它甚至没有真正的逻辑运算,但因为本次作品的题目就是bug,这种构建bug的方式,我认为是极其精巧和锐利的,于是说干就干。
我最终只依赖四个脚本就写完了整个游戏,这四个脚本分别控制了物体的旋转,游戏的重玩,物体的显隐以及场景的切换。
TapTap

我一开始就要求美术使用更低分辨率的素材,一是太高的分辨率放进屏幕也未必能展现出细节,二是对性能进行优化,最终使得游戏的整体包体大小只有29.4m,这是我历史以来开发游戏的包体大小之最(当然是最小的)。
然而就算如此,按照攻略的操作也可以完成四种不同的结局,并且如果你们发现了游戏实现的实际逻辑,也可以打出更多不同的隐藏情况,当然这些隐藏情况也都是通过bug实现的。
到此为止,游戏开发的部分结束,这些代码几乎都是我开大会的时候在座椅上写完的,我要求我的朋友帮我给会议内容拍照,而我则把手机完全关掉,进行沉浸式的创作,这段回忆无比的美好。我还记得在座位上手舞足蹈地说着“写完了写完了”的时候,心里的那一份悸动,比任何恋爱或是某一场比赛的胜利,都要好,那种感觉太好了。
TapTap

后面这一部分我想夸夸我们的美术小伙伴们,他们都是大一的学生,刚刚结束军训就愿意跟我一起做游戏,我是读过大一的,我知道在如今这个“大学高中化”的时代里,大一的学生拥有最多的公共课,最多的会,最多的水课,以及最少的时间,而同时他们又要面对高中生活到大学生活的巨变,就算不参加任何额外的课外活动,就已经令人应接不暇。更何况需要从0开始制作一款游戏,学习怎么验证纸面原型,怎么进行规范命名,和新认识的朋友合作,想办法适应彼此的画风,还有工作节奏。但是二位真的完成得非常棒,明明看作品集的时候还能一眼就分出来谁的作品是谁的,但是提交美术资源的时候真的浑然一体,除非特意去查交付表格,否则真的看不出来是谁画的!
下午和朋友们在地下美食城围成一个圆桌,首次试玩和讲解我们的游戏的时候,朋友们在展示结束后都发出了“嗯~”的赞许,然后一直点头,说一些“独立风格很强”“硬核玩家应该会很喜欢里游戏的设计,就像那个需要描述游戏是什么的硬核桌面游戏一样”,我觉得自己就像是世界上最好的厨师,看到了顾客品尝食物的笑容,有假面骑士加布里那种“零食给人带来了幸福”的感觉。然后他们开始讨论为什么瓢虫代表了bug的意象,复古的画风和沉默的音效是否是一种“冷凝视”等等。
总之游戏开发到现在我没有那种“不舍”的情感,因为相比比赛刚开始那个忐忑不安的我,我更喜欢现在这个解决了问题,带领了团队,而且还通过跟朋友们分享自己的产出获得欣赏认同与幸福的自己。希望未来我能够继续前进,不断地兑现自己的天赋,然后遇到更多更多的朋友,走出一条自己的路。
就先说到这里吧!本期依旧抽取一位幸运观众,加上之前我抽的两位幸运观众,将获得专属“bug”卡牌一张(电子版)。
同时也欢迎大家多多下载游戏,多多评价,我将在评论区选出“最佳评价”,年末送上我的亲签杂志一份!
猜你想搜
beurguest 数据库与时间轴
开发日志02:我确定这是一群bug(自我检讨)截图
开发日志02:我确定这是一群bug(自我检讨)
#聚光灯gamejam开发者日志 by 修bug修得有点破防的寒师 这是一个写代码破防的抱怨+用ai写代码和在unity写代码的一些注意事项+我要开始承认开发过程中作为领导者我还是有做得不好的地方+改进计划 我不行了吧,后半夜不报错的代码早上一起来再编译一次就全都红了,到底什么环节出了问题??? 还好,大部分只需要把ai给的示例删掉或者在前面加using指令就能解决,还有的是因为缺少数据,还有
官方
2 赞
1 回复
开发日志03:玩法介绍截图
开发日志03:玩法介绍
#聚光灯gamejam开发者日志 by有点投降了(实则没投)的游戏大王寒寒寒寒寒刃 (很多寒是因为北京太冷了这几天 关于玩法,一开始我对于玩法只有一个模糊的构思,由于一开始主题把bug三个字打得很大,就像一只虫子跳到了我的脸上一样,我脑海里想到的就是一个以瓢虫为主角去修复bug的游戏,因为ladybugdebug听起来甚至还有那么一点点的押韵 不过当时还有一些地方我没有想清楚,比如一开始我们
官方
27 赞
52 回复
开发日志01:平均年龄18.7岁的团队如何合作截图
开发日志01:平均年龄18.7岁的团队如何合作
by有点忐忑的游戏大王寒小刃同学 第一次作为制作人全程包揽运营和开发,虽然读完了一书柜的游戏相关著作,参与了大大小小线上线下好多次比赛,也问了很多业内的前辈,但是还是会不停的问自己,如果没做好怎么办,如果重复了之前比赛出现的错误怎么办,如果让合作者失望了怎么办,但是真的实际做起来的时候,这些担心都烟消云散了。 我们用了大概三小时熟悉起来并且吃了顿饭,又用了另外一天的三小时进行游戏原型的玩法验证。
官方
1 赞
开发日志02:关于专注投入与开放的故事截图
开发日志02:关于专注投入与开放的故事
书接上回 专注:团队要一次专注于完成少量的事情。 (我们每次会面解决的问题都是很小的,比如第一次,主要任务其实就是认识一下,尽管也针对性地给没有比赛经验的队友大概讲了一下游戏开发团队的结构和关系,但是没有给他们很难的挑战,比如仔细讲讲为什么有些玩法在21天的开发里不是很合适之类的,但是第二次开发,因为要验证原型,我希望对他们进行的培训是”把平时玩游戏作为玩家的直觉转化成开发的描述“,就要引入关于程
官方
1 赞
聚光灯上海站作品原型测试截图
聚光灯上海站作品原型测试
“坐一次地铁,要过几道关?” 《轮椅登地铁》是一款让你亲身体验轮椅出行的严肃游戏。30 秒车门倒计时、四项缺一不可的无障碍条件、两格宽的轮椅与拥挤的人群——当你终于扣上固定带听到车门关闭的那一刻,你会重新理解"无障碍"三个字的重量。来测
3 赞
我是怎么想到轮椅登地铁的,以及一些小技巧截图
我是怎么想到轮椅登地铁的,以及一些小技巧
#聚光灯游戏开发心得接力 首先还是介绍一下轮椅登地铁这个游戏 这是一个文字游戏风格的解谜游戏,你要扮演轮椅使用者,顺利穿过乱停乱放的电动车群,进入地铁站台,找到助行踏板,先下后上提示,等候在屏蔽门前,最后顺利登上地铁固定轮椅。 这就是我第一轮对话和ai说的,前后大概也就用了十分钟ai就理解了我的意图,只是操作和剧情的细节需要一定的调整,还有就是后面的地图编辑功能(这个一定要自己去玩去体验,非常搞
3 赞
开发日志01:平均年龄18.7岁的团队如何合作截图
开发日志01:平均年龄18.7岁的团队如何合作
by有点忐忑的游戏大王寒小刃同学 #聚光灯gamejam开发者日志 第一次作为制作人全程包揽运营和开发,虽然读完了一书柜的游戏相关著作,参与了大大小小线上线下好多次比赛,也问了很多业内的前辈,但是还是会不停的问自己,如果没做好怎么办,如果重复了之前比赛出现的错误怎么办,如果让合作者失望了怎么办,但是真的实际做起来的时候,这些担心都烟消云散了。 我们用了大概三小时熟悉起来并且吃了顿饭,又用了另外
官方
21 赞
38 回复