《名为怪物的游戏》ver1.0.0(后半部分)

7月计划

本月将完成第一章的剧情并且在 8 月 1 日发布测试版。

更新记录

7月1日

  • 战斗状态窗口更新角色数据
  • 战斗状态的 HP/SP 条
  • 血条/攻击条/SP 条重置

血条重置
设计血条的时候没计划好,一部分是 UI(角色状态),一部分是精灵(敌人血条)。
然后现在要把这两个整合在一起,就重写了基本方法,兼容两种的存在。
都是因为没计划好的锅,一顿折腾血条系统竟然重写了三遍……

记录一个小问题
定义血条的父类 SpriteBar,子类攻击条 SpriteAttackBar 继承 SpriteBar
在角色类中需要创建攻击条,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
protected SpriteBar atkBar;

private void CreateAtkBar()
{
GameObject atkBarObj = GameManager.InstantiatePrefab("Prefabs/UI/SpriteAttackBar", transform);
atkBarObj.transform.localPosition = new Vector3(-0.33f, 1.2f);

atkBar = atkBarObj.GetComponent<SpriteAttackBar>();

float initValue = GetInitAttackBar();
float maxValue = 100;

atkBar.Init(initValue, 0, maxValue);
atkBar.SetCharacter(this);
}

SetCharacter 方法是在 SpriteAttackBar 类中定义的,但是这里却死活调不出来。
刚开始还以为是文件没保存成功或者 IDE 编译失败了……
尝试了各种方法之后恍然大悟,原来变量定义的类型是 SpriteBar(也就是父类),因此在获取对象的组件时:

1
atkBar = atkBarObj.GetComponent<SpriteAttackBar>();

这里其实就是类的「多态」,变量 atkBar 是父类 SpriteBar 类型,自然无法调用子类特有方法。
只要修改一下定义的变量类型就解决了:

1
protected SpriteAttackBar atkBar;

本来想偷懒少打几行代码,结果犯了低级错误……真不应该。

7月2日

目标选择面板

临时做了一个简单的选择面板。
目标选择面板

普通攻击

选择普通攻击可以对单个敌人造成伤害。
普通攻击实际上包含了几个动作的组合:
① 选择敌人,② 计算伤害,③ 弹出伤害数字和攻击动画,④ 行动结束。
普通攻击
虽然功能已经完成了,但是这里有一些需要改进的地方。

  • 伤害数字需要增加一个“动态”效果
  • 两次行动需要间隔一定的时间,而不是一个角色行动结束之后立即轮到下一个角色操作
  • 目标选择的时候,没有明确提示当前选择的是哪个对象(只有名字而已)

伤害字体动画

首先解决第一个问题,纯静态的伤害字体没有打击感。
为伤害字体增加一个简易的动态效果,看起来好点了:
伤害字体动画

行动间隔

不论是玩家行动还是敌人行动,都需要有一定的间隔时间。
当角色行动结束时,增加 1s 的等待时间:
两次行动增加 1s 的间隔时间

TODO:间隔时间以后可以在菜单中进行设置,分为“高速”与“正常”,方便喜欢快节奏的玩家。

选中高亮

为了让玩家知道自己选择的目标是哪个,需要加上高亮的效果。
这里就先用透明度的变化作为标志,选中效果如下:

目标被选中时的高亮效果

击退效果

当目标受到普通攻击伤害的时候,为了表现出“打击感”,要让目标向后挪动一小步。
除此之外还要让目标显示受伤动作动画,但是现在没有相应的素材,就简单的实现击退效果:

受伤击退效果

今天的工作大概就是这样了,战斗系统的雏形基本完成。
明天再弄下敌人的 AI,战斗系统就完成了,比起计划还提前了一天!

明天和后天还可以顺便把战斗结算 UI 也做完,以及进入战斗时的过场动画处理。
总体来说,制作十分顺利,下周就可以开始制作菜单相关的 UI 了。

战斗系统的优化方案

我们目前只有两个人,Cee 又要上班,没办法做出全动态的战斗系统。
然后进在 Steam 上面闲逛,发现了一款值得参考的游戏,可以实现纯静态图也能实现很强的打击感。

以目前我们的时间和能力来说,全战斗系统的压力太大了。
因此本作的战斗将使用全静态图,如此一来需求的素材也少了,Cee 的压力得以减轻。

如下所示:

战斗系统的参考

可以用不同的动作和画面效果来弥补静态战斗的不足。

参考的游戏来源:Phantom Rose - Steam 页面

7月3日

敌人行动

敌人会随机挑选一名玩家控制的角色进行攻击。
这样就可以与玩家“有来有回”了:
敌人的行动

目标死亡

当 HP 被削减至 0 的时候,目标就会进入「濒死状态」。
这个时候就直接让目标淡出消失:
目标死亡效果

胜利 UI

当全部的敌人都死亡时,弹出战斗胜利的 UI。
战斗胜利UI

战败 UI

当玩家控制的角色全部濒死,则弹出战败的 UI。
战斗失败UI

胜败判定

添加逻辑判定以及战斗实测:
战斗胜利

敌人数据库

每个敌人都有 HP、攻击力、防御力等属性。
为了实现可视化,我直接使用 unity 自带的一个数据类型:Scriptable
可视化的敌人数据

目前敌人的数据库只有敌人的基本属性,等后续的系统逐渐完善,还可以增加掉落物、战斗逻辑等等。
如果用 RPG Maker 系列来比喻的话,就是敌人的数据库设置:
RPG Maker 的敌人数据库

角色数据库

同理,玩家控制的角色也有各种属性,也需要建立这么一个数据库。
还有道具数据库、装备数据库……凡是在游戏中有基本属性的,都需要建立一个数据库。

存档 UI

战斗系统已经完成了,能够提前一天也是意料之外的事情。
所以趁这个机会我把 Cee 之前已经设计好的存档 UI 也完成了。

存档界面

现在的状态超级好!!!
维持这个状态,本月完成完整版的第一章毫无压力!

要保证健康的状态就得按时睡眠不熬夜,明早起来继续完成读档系统。

7月4日

  • 存档界面获取本地存档列表
  • 将数据写入本地存档(存档功能)
  • 将本地存档加载到游戏(读档功能)
  • 确认框
  • 提示框
  • 主菜单优化

7月5日

昨天晚上眼睛有点痛,躺在床上休息,结果就这么睡着了……
今天眼睛还是感觉很干涩,所以打算只做一些简单的工作。

早上把存档系统整合到主菜单里,结果发现弹窗的时候会有问题,计划明天把菜单系统重构一遍。
昨天 Cee 完成了主菜单装备界面的 UI,但是时间比较晚就没来得及完成。

今天的工作就只是把装备菜单的 UI 搭起来,等明天菜单系统重构之后在完成装备系统的实际功能。
今天主要还是休息为主……应该是近期用眼过度了,估计今晚睡一觉明天就能好了。

7月6日

眼睛好了一点,今天继续干活。
昨天被一个滚动视图的问题卡住了,结果没把装备界面的 UI 做完。
今天早上找了一些相关的资料,顺利解决了。
之前 Cee 反馈说在公司的电脑看不见博客的图片,所以后面发的图片会改用新的图床。

角色界面UI
装备属性

新的图床据说是多路分发的,应该不会再出现访问不了的情况了。

除了完成界面的 UI 之外,今天开始要制作角色系统和装备系统,因此剩下的工作都是设计数据格式之类的,就没什么好发的了。本周会完成这两大系统,然后下周开始制作第一章剧情的内容,本月计划有 20 天来制作剧情相关的流程,从时间长度来看,如果能保持良好的状态,做完整章的剧情应该不难。

第一版的 UI 都是极简风格的,目的是为了加快制作的速度,等全部完成之后我们会回头优化这些地方,我们之前就是因为一开始就想做出完美的效果结果花了太多时间,以至于一直没能做出来,这次也是吸取了经验,对于不影响游戏流程的地方全部采用最简单的形式。

为了赶进度,系统和 UI 可以简陋一点,但剧情不会马虎。
只要保持这种「极简风格」的 UI,Cee 那边的压力会减少很多。
在保证完成主线剧情的情况下,我们就会开始回头优化这些简陋的地方。

保证游戏能按时完成,这是我们目前最优先考虑的事情。

7月7日

祸不单行,眼睛好点了,结果又感冒了……
闷热的天气实在是难受啊!!!

趁早上状态还好的时候,搭建了新的菜单系统的基础。
新的菜单系统要兼容各种不同的菜单,比如选项有很多种类型:横排的、竖排的以及网格的。
而且还要保证多个菜单之间可以正常联动,估计得到明天才能完成了,现在状态不是很好,继续躺床上了……

7月8日

满血复活,继续开工!!!
今天测试了新版菜单的基本功能,然后把主菜单和存档菜单改成了新版菜单系统并且整合在一起。

7月9日

遇到一个小问题,在弹出确认框并且点下确定的时候,如果再次弹出新窗口,原本的栈结构就会出现问题。

玩家打开存档进行保存的时候,如果在一个原本有存档的位置进行保存,就会弹出覆盖提示的确认窗口,然后玩家点击确定会再弹出一个保存成功的弹窗。发现在弹出保存成功的时候,按下方向键上级菜单(存档界面)仍然可以进行操作。
确认框没有正确屏蔽上级菜单的按键

这里其实是为了省事把弹窗、确认框都统一成了「菜单」的一部分,但是弹窗和确认框跟菜单有区别:
普通的多级菜单
弹窗与普通多级菜单的区别

为了赶进度这个小问题就先不处理,人为避免在确认框后还弹出提示框即可。
修改后的存档提示

接着要把之前所有的窗口系统都改成新版的菜单。(工作量有点大)

7月10日

昨天没全部改完,今天继续昨天的进度。

  • 战斗中操作面板
  • 战斗中目标选择面板
  • 战斗中技能选择面板
  • 场景中事件选择面板

至此,旧版的菜单已经全部改成新版菜单系统了。
还发现了场景淡入时可以打开菜单的 BUG。
这里是因为我把事件的淡入和场景的淡入搞混了,结果测试了半天……
要构建一个完整的游戏系统工程量很大,以前写的代码不一定都还能记得住,只有遇到的时候才能想起来了。

菜单整改完毕之后就开始制作角色界面了,角色界面比较复杂,包括:队伍系统、角色系统、装备系统。
而这些系统又包括:角色数据、装备数据、队伍数据。
先完成数据结构的设计,接着再一一实现各个系统。

  • 角色数据
  • 装备数据
  • 存档中的队伍数据

然后是角色界面,这个界面属于菜单,但是不同在于有竖直和水平两种操作。
水平方向的按键可以切换角色,竖直方向按键控制选中的装备。

角色界面的两个不同区域使用不同按键控制

7月11日

今天陪父母去打疫苗,顺便自己也打了。原本以为会有点疼,结果一点感觉都没有。回到家之后还是有一点不良反应的,打了疫苗的左手感觉使不出力气,原来没什么感觉但到了下午就开始有点疼了。头也有点晕乎乎的,浑身乏力还有一点恶心的反应,应该是身体跟疫苗不太适应,或者是宅家里太久没锻炼的缘故。

因为状态不是很好,所以就先做一些能完成的简单工作,例如录入本地语言的文本。
本地文本

为了方便管理全局的变量,再写个单独的类保存常量,以此建立映射关系。
全局常量

都是一些体力活,除此之外,还完成了一些小细节部分。例如图片的动态调节大小,如果 Cee 提供的素材大小不一致的话,可以用一个类似“中间件”的结构把图片调整为合适的大小。

前几天才说自己状态很好,结果这几天要么是生病了,要么是打完疫苗有不良反应,难道是因为前几天激昂的状态大反弹了?!今天还是好好休养一下把状态调节好了,避免影响下周的工作。虽然躺在床上休息,但是也可以考虑剧情该如何修改,下周开始就要正式制作剧情部分了。

7月12日

20天的倒计时开始,本周正式制作剧情部分。
预计 8 月 1 日发布第一章的测试版。

完成了角色菜单切换角色以及计算人物属性,并且重新讨论了场景素材的规格。

7月13日

确定场景素材规格,将由 Cee 最终决定。

角色菜单里还剩下装备系统没做完,今天也完成了。
明天开始重新绘制第一章第一幕的场景,正式进入剧情制作。

7月14日~7月16日

第一章第一部分剧情改动,以及录入剧情文本,场景制作。
标题画面的制作。

7月17日~7月25日

第一章逃亡篇剧情完成。

文章作者: 火烧兔子
文章链接: http://huotuyouxi.com/2021/07/01/monster-game-version-100-1/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 火兔游戏工作室