Server-CT / ManiHunt

simple manhunt for friends.
MIT License
11 stars 2 forks source link

[OTHER] Refactor the project #16

Open iceBear67 opened 3 years ago

iceBear67 commented 3 years ago

ManiHunt 在早期开始开发的时候,由于时间紧促,设计上其实有许多问题..
例如:

我们需要尽快改良这些问题,以便后续的Additions等功能的开发。
这份 issue 将用于收集问题以供开发

iceBear67 commented 3 years ago
  1. Game 游戏对象,是主要需要修改的地方

    • 为了支持 Multiverse-Core ,game应该作为多例存在,即世界不应该被写死,可能需要引入大厅世界。
    • 从其他事件处理器中解耦合,例如PlayerJoin,PlayerChat,Radar.
  2. Setting 将SimpleConfig内部序列化实现换成SnakeYaml

iceBear67 commented 3 years ago

Game

Game是ManiHunt的核心部分,和许多地方耦合。
于是我们重新设计一下Game:

  1. Game 是一个抽象的概念,他代表了一局游戏
  2. 一局游戏应该具有以下属性:
    • 游戏里有?
    • 游戏的范围是哪里?
    • 这个游戏的状态是怎么样的?
    • 这个游戏应该要能被启动和停止
    • 一局游戏需要储存游戏的各项统计
    • 这个游戏的Runner是谁
    • 指南针是否启用

与此同时,游戏应该传入一个 Region 作为游戏范围。

Region

Region 的语义是区域
区域可以提供多种实现,例如:

iceBear67 commented 3 years ago

游戏机制:Runner

拓宽范围。Runner或许可以不止一个。
Runner应默认在不同的地方被空投,且当所有 Runner 死亡后游戏才判断结束。

iceBear67 commented 3 years ago

9a8636ce83e0b4bb6acb2e82737e1bd6c0291942
根据具体情况对GameRegion等做了调整