Newer
Older
DungeonShooting / DungeonShooting_Document / 开发日志.md
@小李xl 小李xl on 11 May 2023 7 KB 更新日志

2023-05-10

本轮主要优化视觉上的效果, 并且完善模板房间创建的功能, 主要工作内容有:

  • 添加房间门的美术资源, 但是该资源依旧是一个临时资源
  • 修改房间内南方向的墙壁碰撞大小, 碰撞器大小减半, 添加透视效果, 同样也修改了生成导航网格的代码
  • 修改ActivityMark创建单位的流程, 并且引入了ActivityExpression表达式, 用于创建单位并初始化属性, 也可以在表达式中指定多个id并让ActivityMark从中随机挑选创建单位. 添加单位创建特效, 修复ActivityMark在初始房间存在的bug
  • 添加敌人标记EnemyMark, 用于在指定位置创建敌方单位, 并且支持配置手中的武器
  • 添加敌人死亡特效, 敌人死亡后分裂成数个碎片并且向四周散开
  • 物理模拟增强, 现在物体运动撞到墙壁会模拟现实轨迹反弹, 并且在玩家或敌人运行时抛出的物体也会继承一部分运动速度
  • 武器袋更新, 现在可以设置任意容量的大小, 并且武器袋的卡槽能装下的武器不再受武器类型限制, 放到背后的武器由Role.OnPutBackMount()函数来设置角度和位置
  • 协程添加新特性, 支持返回并等待TaskSignalAwaiter

2023-04-08

本轮工作重点在于编写文档以及完善模板房间配置, 最近这段时间本职工作比较忙, 所以开发进度相比上一轮稍微放缓, 主要工作内容如有:

  • 编写项目帮助文档, 为给后续开发人员更好的理解项目架构以及功能代码, 位置在DungeonShooting_Document/项目帮助文档.md, 该文档为初期开发文档, 后续会因项目架构调整或新增内容而修改
  • 修复DungeonRoomTemplate在编辑器中draw函数绘制层级过低和ctrl+s有时不触发保存bug
  • 调整模板房间文件夹结构, 以前全放在tileMaps文件夹下, 现在在tileMaps下会有个分组文件夹, 用于放置同一层的地牢房间, 再到组文件夹下分了Battle,Inlet,Outlet,Boss,Reward,Shop,Event这几个文件夹, 用于分类房间类型, 并加入房间权重, 权重越大, 越容易随机到该房间
  • ActivityMark添加生成物体高度和垂直速度配置, 支持在一个矩形区域内随机位置生成物体, 并优化ActivityMark性能, 现在不是开始游戏就进入场景树, 而是玩家进入当前房间并开始执行标记时再放入场景树中
  • 添加用于调试用的功能: 在GameApplication.DesignatedRoom中指定地牢生成的房间, 这样地牢就只会在这个指定的随机池中抽取房间, 方便调试房间
  • 添加Ai使用武器属性变化: AiBulletSpeedScale, Ai使用该武器发射的子弹速度缩放比; AiAmmoConsumptionProbability, Ai使用该武器消耗弹药的概率

2023-03-19

本周主要完成Godot编辑器插件扩展, 目的为了更加方便为游戏添加内容, 主要工作内容如有:

  • 将原来编辑器中的automation面板移到Godot编辑器2D/Script这一栏, 并重命名为Tools
  • Tools面板中添加创建UI的功能, 输入UI名称点击创建就能自动创建一个空的UI场景和相配套UI代码, 编辑器监听用户对于UI的改动, 一旦有变化, 就会自动重新生成UI基础代码, 这样做的好处是一旦有节点重命名或者移动位置, 用到这个节点的代码就会编译报错. 每个UI都分好了文件夹, 所有和当前UI有关的代码都应该被放到同一个UI文件夹下
  • UI节点添加打开子UI的api, 允许嵌套打开UI
  • Tools面板中添加创建地牢预制房间的功能, 现在不需要自己在节点管理器中添加DungeonRoomTemplate了, 并且节点管理器已经移除DungeonRoomTemplate
  • 优化RoomConfig.json, 现在不是所有数据都存在这个配置里了, 这里面值放一些基础数据和房间详细配置的路径, 需要房间详细信息再进行动态加载
  • Uibase添加协程支持, 功能和ActivityObject中的协程一样
  • 重写ActivityObject中的投抛系统, 加入ActivityObject加入海拔高度字段, 并且自动计算精灵和阴影位置, 当海拔高度大于0时会自动做自由落体, 想向上抛物的话也只需要设置垂直方向的速度就行, 现在的Throw()函数仅仅只是对于设置海拔高度和垂直速度的一个封装

2023-03-13

为了尽早能够完成核心功能, 对外展示demo, 三月上旬开发提速, 主要的工作内容有:

  • 找到一个会触发关闭游戏卡死的 bug, 问题出在TileMap.GetCellTileData()函数上, 调用该函数在关闭游戏释放资源时会导致读取到已经被释放的内存, 但是卡死的问题还是有极小概率发生, 目前情况未知
  • 发现并修复bug: 之前版本在自定义房间连接时, 如果生成带有拐角的通道, 通道生成的位置不是按最近位置生成, 这就导致生成的拐角通道特别长, 而且浪费空间, 现已修复
  • 完成房间的定义, 并为房间划分好区域, 当玩家进入一个新的房间时开始关门并刷怪, 消灭房间内所有敌人时开门
  • 重整ActivityObject子类实例化流程, 现在通过在ActivityObject子类上加[RegisterActivity(id, prefabPath)]标记来注册物体, 并调用ActivityObject.Create(id)来创建实例
  • 在预制房间中添加自定义物体生成标记(ActivityMark), 通过标记可以指定生成的对象, 位置, 所在波数和延时生成时间, 也可以继承ActivityMark来扩展物体生成操作, 例如子类EnemyMark, 标记生成敌人, 并且可以指定初始武器与弹药量
  • Ui核心框架已经搭建完成, 并划分好UI的层级, 现已通过UiManager管理Ui, 目前UiManager还有部分功能尚未完成
  • 完成Ui类代码自动生成的功能, 现在可以根据Ui对象生成相应的图层调用代码, 更加方便编写Ui, 但是目前还没有接到编辑器中, 需要写代码手动调用接口
  • 修复相机运动和抖动时存在的问题

2023-02-28

经过数十天开发, 已经完成自定义房间功能, 支持配置连接门生成区域, 而不是像之前一样整个矩形外框都能生成门, 并且还做了在编辑器中可视化编辑连接们生成区域的功能, 所有的自定义房间放在resource/map/tileMaps, 路径下, 使用automation面板下的打包地牢配置即可将所有房间的配置信息整合到RoomConfig.json文件内, 方便代码获取房间数据, 在编辑器中添加DungeonRoomTemplate节点, 用于创建模板房间.


2023-02-15

第一篇开发日志, 后面会更加频繁更新日志
用了大半年事件完成完成项目基础架构搭建, 已经包含的功能有:

  • 所有物体的父物体为ActivityObject, 可以在编辑器中找到节点ActivityObjectTemplate来快速创建物体模板
  • 玩家, 敌人的基础移动, 拾起/扔掉武器, 武器袋存放武器, 切换武器, 手持武器开火, 换弹,
  • 武器类别有近战/远程武器, 武器由属性类控制
  • ai行为逻辑, 包括自动寻路, 发现玩家后追踪玩家, 通知其它ai玩家位置, 射程足够时朝玩家射击, 在玩家周围徘徊, 没有武器/弹药时寻找可用的武器
  • 随机生成地牢, 地牢房间与房间由过道连接, 一个房间至少连接一个其它房间
  • 游戏中UI, 包括血条, 玩家手持武器, 武器弹药, 换弹进度, 拾起武器提示
  • 音效管理, 播放背景音乐和音效