Ludum Dare 51 Every 10 Seconds Compo 记录
首先游戏在这 https://ldjam.com/events/ludum-dare/51/10-sec-ends
久违的老活新整参加LD48小时Compo,四舍五入算第三次参加。
想想之前参加LD43 Sacrifices must be made和LD42 Running out of space也是好几年前的事了,前几次的参加经验不说是入木三分吧,至少也可以说是聊胜于无,所以估计这轮也很难能做完,上了。
瞅了一眼选题在Paradise和Every10Seconds之间摇摆,所以索性不管了,做好了做点什么然后硬往题目上凑的摆烂准备。
第0天(9.30)下午上完课开始下定决心老活新整,从之前做过的各种零碎里面找点有意思的东西,然后一边完善系统一边等题目出来开始寻思整点啥活。找来找去找到了做本科毕设的时候做的一个空间点源重力场的小星球,就决定是这个了。
结果第一天10.1早上跑去天安门看了升旗和做体检,看了眼题目,下午回来又补了个觉才开始正式做。
花了一点时间给小星球加了一个第三人称的操作主体和摄像机控制器,变成了一个奇怪的小球在大球上各种滚和蹦的很奇怪的东西。
10.1大概傍晚开始有了第一个雏形,一颗球形(废话)的小星球,星球表面物体的随机生成,简单的跟随式UI布局,一个第三人称的操作主体,越肩(如果有肩膀的话)视角的摄像头。
至于怎么和主题Every 10 Seconds扯上联系,当时是没什么头绪的。一边修各种物理bug和性能问题,一边寻思各种可能性,然后就到晚上了。
晚上和友人开黑塔科夫的时候从群友老鸽的扯皮里整到了点子
玩家扮演小行星,往小星球上砸下去,每十秒一轮星球的居民会组织反击和拦截,玩家总共有十次小行星。 小星球的居民的反击方式包括两种,减损生命值和撞击得分(完整度)的爆炸导弹,以及干扰运动的推进导弹。 小星球的居民里也有一些类似三体降临派的人支持你毁灭这颗星球,所以也会有人发射回复生命值的修复导弹。 三种导弹每十秒由随机位置固定大小的发射台发射一轮,三种导弹的比例是5:3:2(爆炸:推进:回复) 小星球上的建筑是随机生成的,每种建筑根据种类会有不同颜色的材质(虽然都是方块),根据建筑大小和种类会生成这种建筑被毁坏后的加权得分,建筑的总加权得分每次生成在一个固定的范围内(100000±500)。 独特建筑的位置是随机的,但数量和大小固定,每次毁灭独特建筑之后会有短暂的独特buff。 控制中心被摧毁会使全球发射的频率从10秒一次降低到30秒一次。 纪念碑被摧毁会导致修复导弹的发射概率+20%,其他两种各-10%。 发电站被摧毁会导致推进导弹生成概率变为10%。 议事厅被摧毁会导致爆炸导弹生成概率变为10%。 导弹工厂被摧毁会导致每个发射台每个发射周期有50%的概率不能发射导弹。 发射台不可摧毁。 小行星撞击星球会产生爆炸,整度和撞击时相对速度会决定爆炸范围和爆炸伤害,离撞击点越远伤害越低,伤害高于建筑大小(XYZ缩放值总合的10倍)就会摧毁建筑。 最终根据玩家砸到小行星上的完整度,完内的建筑数量和加权,计算这颗小行星的得分。
这颗小行星如果完整度被减到0,或者被推到某个范围外(3.5倍于星球直径)就算这颗小行星失败。 同时,玩家扮演的破坏者小行星有一个特殊的技能是可以以10倍的运行速度运行十秒,或者将外界其他物体的运行速度减慢至十分之一。
在这个指导思想之下,简单的画了一下导弹和建筑的草图,然后在引擎里摆了一下星球表面的随机生成机制,但是没怎么想明白怎么实现那个技能,姑且搁置准备根据开发实际情况再填充进游戏的框架中去。
10.2的午夜用blender简单的搓了三种导弹和几个建筑,也许需要做一点城市和发射井的模型,然后改进一下随机生成机制,成功的在星球表面以预设的密度,在随机的位置生成一些一定范围内随机大小的方块建筑,或者任何形式的其他预制建筑。

简而言之是三种导弹
预制的建筑准备设计纪念碑、指挥中心、体育场、发电站、导弹工厂、议事厅等等,以LowPoly的风格呈现。
然后四点多睡着了,再醒过来的时候已经是10.2的中午。简单收拾了一下,估计了一下剩下的开发时间,砍掉了修复起来很费劲,而且玩家自己也可以靠运动加速逃逸小星球所以变得很尴尬的推进导弹;以及一些没什么意思或者过于费时间去做的建筑(只留下了纪念碑和发射场)。
继续完善到下午,发现我校十一只放两天,而且第二天一大早要上课,导师也在夺命五连call摇人发周报和实验进度,于是又砍掉了修复导弹和减慢时间流动的技能,变成了一个玩家开着脆弱的外星探测器清理敌方星球的游戏。
玩家扮演一名探测器的操作员,去清理一颗星球的表面建筑,以为之后的入侵做好准备。 玩家的探测器有一定的生命值,每次撞击星球表面的建筑或者被拦截导弹攻击会导致完整度降低。 完整度低于0则探测器被摧毁,按R进行下一个探测器的发射,如果玩家选择一直摧毁则会有10发探测器,探测器起名为S.E.C.O.N.D以强行切题。 导弹的伤害由撞击时的相对速度决定,相对速度越高伤害越高。 摧毁建筑的得分由建筑大小决定,建筑越小则分数越高,计算方式是1000/(x*y*z),对100取整得到。 发射台每十秒进行一轮反击,全球的发射台位置是随机的,但数量一致为4个。 降低玩家的发射高度和跳跃的可能性,如果玩家决定要起飞并加速到逃逸速度进入逃逸轨道,则触发隐藏结局。 如果想重开游戏按T。
经过大幅度的删减之后,游戏的设计大概变成了这样。
处理完周报之后继续开发,然后一直干到了第二天10.3的凌晨五点半,测试系统,处理一些引擎里和计算上的bug,美化了一下场景并且搓了几个粒子,再优化了一下星球表面建筑生成的机制,打包,交上去了。
结果五点半交完发现没做封面而且游戏有R键不能正常重开游戏的bug,紧急用Blender搓了一张封面图,修复了一下bug,总算在截止时间的六点前全部交完,可喜可贺。
然后去上课了。
总结来说,因为中间摸鱼和一些发现第二天不放假的变故,使得开发时间因为主观和客观原因变得非常紧张,以至于不得不大幅的删减了预期的设计,值得检讨。
此外,在设计中对于物理机制的依赖使得做数值平衡是一个很难办的事情,所以最后不得不设计了隐藏结局来限制玩家不能飞的太高以获得一个极大的速度来撞穿星球。
此外这次的游戏完全没做音效和音乐,粒子和材质效果也因为只是拿旧有素材进行简单的拼接调整,并不切合游戏,光照也很难看,需要多花些精力进行调整。
总计开发时间算上第0天的准备,不算建模美工大概在30个小时左右,建模和美工花了大概一个小时多一些,还有很长的时间在摸鱼和推倒重来。即使是临时起意跑来参加也不应当犯这么低级的错误,更应当在第0天的时候就提前做好基本的设计和开发计划。
并且对调整shader的优先度看重过头了,把大量的时间花在了没什么提升的bloom效果上,只是因为我觉得Blender里的屏幕辉光效果很不错。
总之还不错吧,下次寒假继续,以上。