撰写了文章 更新于 2019-10-12 09:42:48
LD45个人游记
LD链接:https://ldjam.com/events/ludum-dare/45/type-with-nothing
即使很丑,但好歹也是自己一个一个放的控件(
记录偏流水账,废话偏多,但希望能给和我之前一样想参加却又因为没有任何经验犹豫不决的朋友们一个参考。
开始前
自身知识储备:编程方便,熟悉算法竞赛(即熟悉算法和数据结构)和cpp,0 工程编程经验,0 unity使用经验,也不会C#,完全不会画画,不会做音效。
本身上半年就想参加,结果各种原因咕了,下半年这场倒是没有准备,开始国庆第三天开始有点闲刷网站就刷到了,想了想有两天准备时间大概够 unity 从入门到入土了,下了都快一年了还没用过,于是立了个 flag 就决定参加了。
两天内,十分摸鱼的看了个2D游戏官方教程,稍微熟悉下了 unity 的 UI,然后了解了一下Asset store,就跑去打 Tetris99了。
题目
Start with noting
莫名的契合我的状态,第一次决定去做一个稍微完整的游戏,第一次用unity,第一次参加Jam,还真是start with nothing。
毕竟第一次,我给自己的目标就是完成一个东西,而不去考虑游戏性啊这些,题材本想选自己最近玩的比较多的Idle Game,甚至在准备期间还去store里找了个免费的demo来看。最后本着一定要做一个brain storm的心态思考了下其他的玩法,最后还真想到了一个更加俗气的——直接从题目本身入手。
既然是start with nothing,那我就从nothing开始,从nothing开始到什么呢,那就到其他20个字母吧,把这个增量的过程作为游戏的玩法。当时脑袋里第一蹦出来的就是一个拼单词游戏,就想到了一个最简单的规则:每次用已有字母和一个没有的字母拼出一个合法单词后,获得那个没有的字母。估算了一下游戏时间大概就是拼20个单词,即使做的不好玩,但是打开的人也会至少通关一下吧。
评估可行性
基本上就从这两个点子中选一个,我决定评估一下我能不能真正做出来,毕竟这次的第一目标是完成,而不是做一个好玩的游戏。
Idle Game:想做个纯UI数值爆炸的,但是要去搞个高精计算,短时间内设计出一个玩法有意思的Idle Game有成功率问题。
打字游戏:最大的问题就是如何check一个单词是否合法。
打字游戏的问题比较评估,我便去搜索可用的词典API,未果。找个字典自己来,但是又不想去搞解析那一套标准的词源的东西,最后在csdn找到了一个所谓10W词的txt,并且只有中文释义和单词本身,稍作处理便能用了。
最后考虑了一下,便决定做一个打字游戏了。
Day1
上午想好题目后开干,先脑海设计了了一下UI,大致就是一个框用来输入,下面一个键盘显示哪些键可以用,再来个文本框显示分数组成最基本的核心玩法部分。
大概到中午实现了最基本的demo,键盘部分没做,用一个文本框显示代替。情况良好,基本确定一切顺利的话最后能完成。(迷之自信)
下午开始着手实现字典部分,把txt处理了一下(不会脚本语言所以用的cpp处理),处理出来的文件大概有1M,当时想着直接把这玩意扔进脚本里就OK了,结果导致文件太大了,最后被逼无奈去学json。
本来想着10W的list搜索会不会卡,需不需要我自己撸个字典树解决查询问题,结果竟然不卡,超出我的预期。
由于下午很摸鱼的睡了个午觉,晚上才完全解决了这个问题,稍微计划了一下第二天的工作搜了下素材打游戏睡觉。
Day2
上午睡了个懒觉(喂,你这个jam的画风怎么不太对),大概九点多开工。
准备做键盘部分,想实现键盘抬起和按下部分,找素材,最后找不到。
放低要求,找张合适的键盘按键的png,发现找不到单个的。
我总记得牛关有人推荐过免费素材网站,但我当时搜了下没搜到,下次看到我一定收藏。
再放低要求,找合适的按键,自己搞,最后在unity的商店找到了一个免费的计算器素材的按键,纹底素材感觉勉强合适,就用了。
(然后就是愚蠢的制作26个字母的环节)
中午还没过完就基本搞定,然后想找一个符合自己想法的背景。
整体想法是游戏风格偏暗,按键声偏机械,最好能有点朋克的感觉。(我不会说这和我找的button素材是白色有关)
很努力的找,发现免费的图片网站基本都是拍风景的,真的漂亮,但不太适合,最后实在受不了就找了张稍微干净点的。添加上背景后,开始处理音效,基本经过同样惨痛的情况后,找到了能用的音效,然后开始着手分数设计部分。
大概午饭前,厚着脸皮让英语比我好的室友帮我测试一下,结果室友还蛮喜欢的,甚至还在我吃完外卖后主动要求开了一把,说“用来背单词看起来还行”,后来和室友讨论了一下后续的设计之类。
下午觉得游戏基本完工,睡了个午觉和室友开开心心打了几个小时游戏。
然后把新手教程问题处理了一下,简单的思索了一下规则。
晚上根据反馈想要加点模式,譬如:只能用几个字母的单词,连续输入等差数列长度的单词有combo加分之类。最后敲定是放弃了分数,选择了关卡设计,每关加一些限制条件。最终设计了五关。
我自认为在原本框架下加点这种小规则很容易实现,结果发现由于代码的机构问题,需要重构,否则新关卡的Scene会有大部分东西需要手动重弄,原来的不具有复用性。然后因为我又是代码不写注释的(留下了ACM的泪水),又不熟悉一些机制,遇到了很多七七八八的问题,最后大概从晚上七点搞到了凌晨才重构完。
凌晨和一个外地jam的同学聊了聊,发现都在重构代码,真是惨。
大概到两点把五个关卡做完,倒头就睡。
Day3
早上九点多起来开始测试。
发现巨坑就是导出app后,本地按Enter后没反应,最后调了调找出是词典部分没能正确运行,自己也不咋懂,开始以为是词典库太大了,测试半天发现不是。搞七搞八最后把问题锁定在json没有正常打开上面(然而后来发现我要是能知道用导出develop版的app能光速知道这个问题),网上有搜来搜去发现问题是,调用json的方法是用地址,但是生成的不同版本的地址和编辑器时不一样(我在网上搜unity调用json方法时文件地址全是这么搞的),最后解决。
下午进行了一些游戏体验的微调,比如给每个关卡起了个名字以更符合一些个人想法,第一关叫Start with nothing,最后一关叫End with nothing。没啥问题最后就上传了。
然后我上传又遇到一堆问题(本质问题是自己傻)
itch.io 游戏不知道要上传啥,到底是选unity还是html,试了下html,各种问题包又传不上去。搞来搞去传上去后,不知到为什么那个链接我退出账号登录后又打不开(发现是没publish)。最后LD网站我又没找到哪里编辑自己的游戏状态(最后发现是在game界面点右下角的笔)。
虽然问题不是很大,但真的真的在最后的时候来这种问题很烦,特别是我晚上还买了电影票的情况下。
总结
1. 其实是完全不需要unity的,用其他一些估计能简单不少,但是本着学习unity的精神还是硬着头皮用了。下次要是solo一定用一些相对简单的,比如pico-8,想更专注于游戏设计方面,而不是coding方面。
2. 代码要记得写注释(其实每次我开始都这么对自己说,写嗨了就忘了)
3. 大概也不会solo参加LD了,玩别人游戏的时候看到一堆windows包有点招架不住。
4. 下次目标定高一点,这次因为自我要求低时间又不是很紧迫,大部分时间在摸鱼和发呆。
5. 总的来说还是蛮开心的,期待下次。
目录