我不是一名职业游戏开发者,这是一个Python的业余项目,我希望在开始编码前获得系统设计的反馈。

我正在构建一个ASCII样式的、基于时间单位(TU)的回合制角色扮演游戏,它被时间单位(TU)驱动,而不是严格的回合制。这个系统的灵感来源于Elden Ring、SanctuaryRPG、Moonring和Shattered Pixel Dungeon。

准备接受大量文本。我总结并组织了这些信息,尽可能简单化。

统计系统

核心统计

  • 力量 - > 影响物理伤害类型(打击、砍击、穿刺)
  • 敏捷 - > 影响行动速度、准确度、避免、暴击概率
  • 体质 - > 影响最大生命值、生命值回复、物理防御(打击、砍击、穿刺)和状态抵挡(溢血、毒素、眩晕等)
  • 耐力 - > 影响最大魔力值、魔力恢复、携带重量和抵抗力(火、冰、轰电等)

结构

  • 统计量
  • 基础
  • 增长(通过升级或特定物品)

统计块(StatBlock)

  • 拆分为以下:
  • 核心
  • 派生
  • 伤害(打击、砍击、穿刺、火、冰、轰电)
  • 防御(同为伤害)
  • 抵抗力(溢血、毒素、腐蚀、灼热、等)
  • 修饰因子
  • 最初都存储为未经修饰的值以保持一致。

修饰因子

  • 以“源:{$stat_name:[flat,percent]}”形式存储

用于跟踪修饰因子的来源。
在统计计算时应用修饰因子。

计算

  • 每个统计量都有一个公式(存储单独)
  • 统计块:
  • 计算最终值
  • 将结果存储在缓存中以避免重复计算

问题

  • 这种分开(核心派生)是否过于复杂了?
  • 修饰因子结构是否对扩展有-scalabilidade?

状态效果

使用定义+状态示例

负面效果

  • 溢血 - > 小伤害、长期、叠加
  • 燃烧 - > 大伤害、短期、叠加(?)
  • 毒素 - > 中伤害、中期、叠加(?)
  • 腐蚀 - > 小伤害、长期、随时间增加、不叠加
  • 昏迷/眩晕 - > 减少准确度
  • 移除/瘸腿 - > 大幅减少行动速度和避免
  • 冻结 - > 小幅减少速度和避免、叠加
  • 休克 - > 中期、约15%行动动作取消率、叠加

状态效果定义(静态)

  • 名称
  • 描述
  • 类型(正面,中立,负面)
  • 标签(点子、操控、负面效果等)- > 供AI使用
  • 最大叠加次数
  • 堆叠倍数
  • 最大持续时间
  • 持续时间倍数(持续时间越长越强烈)(噢,它不是一个好的变量名称)
  • 时间间隔
  • 固定伤害/百分比
  • 统计修饰:“{$stat_name:[平台,百分比]}”
  • 击败动作概率
  • 交互规则:
  • 燃烧 ↔ 冻结取消
  • 湿透燃烧增加休克概率

状态状态(实时)

  • 定义引用。
  • 当前叠加次数。
    已过的持续时间(用于倍率)
    下次触发时间。

问题:触发器钩

  • 例子:
      * 溢血 -> 出现时间大伤害+之后小DoT
      - A) 显示的触发器(每个将存储伤害、倍数和统计修饰:
  • 对于发生
  • 对于每个时间间隔
  • 对于动作
  • 之前执行

- B) 通用事件系统(触发式属性)

kỹ năng

同样使用定义+状态示例。

技能存在

  • 消耗品(激发技能)
  • 装备(授予技能)
  • 实体(本身或武器)

技能定义

  • 名称
  • 描述
  • 标签(供AI使用)

  •   * 自身
      * 一名敌人
      * 所有敌人
      * 固定伤害/百分比
      * 类型/范围/倍率
  • 统计升级(可以是任何东西:力量、最大生命值、准确率、火元素伤害、防御、等):
      * “{$stat_name:系数}”
  • 状态效果表
  • 准确度
  • 成本:
      * 生命值(平台+百分比)
      * 魔力值(平台+百分比)
  • 行动时间(TU成本)
  • 最大冷却时间。

技能状态

  • 定义引用。
    *当前冷却时间。

问题

  • 如何实现生命值/魔力值耗尽机制?
  • 如何支持技能影响自身和目标:
      * 例子: ”拆毁“
      + buff自身(防御)时准备
      + 然后造成伤害
  • 如何应对 Multi-hit?

设计问题

  • 我们应该允许:
      * 多统计升级?
      * 分离伤害类型?

尽管基于统计建构的设置已经从中涌现出来(例如,对伤害而言、对速度而言) )

项目

项目

  • 名称
  • 描述
    *值
  • 样本特征

库存想法

  • 以“{item:数量}”形式存储
  • 堆叠:消耗品/材料
  • 不堆叠:装备

消耗品

  • AI标签
    *包含技能(技能已经把损害、效果等包装在里了)

装备

  • 统计修饰
    *技能(添加到实体中)
  • 装备插槽:
    左手
    右手
    双手
    头部
    躯干
    履带设备
    配件/首饰
    重量

问题

  • 使用技能来实现消耗品是一种好的抽象吗?
  • 装备是否应该:
      * 使用多统计升级?
      * 与 CON/END(非伤害统计)相结合?
  • 我们如何应对手脚?
    -主体

包含:主体

  • 名称
  • 描述(可选)
  • 水平、经验
    统计块(StatBlock)
    库存
    技能
    状态效果
    等待(布尔型)
    下一次动作时间(TU)

派生类

  • 玩家类
  • 敌我类

问题

  • 什么样的不同意义地区分玩家和敌我实体层面上的?

战争系统

流程(流程)

  • 全局时间计数器
  • 每个动作将 TU 加到:实体.下一次动作时间
  • 运算时间表最低
  • 玩家不会意识到 TU 流, 只会看到正在执行的动作

例子

  • 基础动作100TU
  • 速度调整成本:
      * 120速度:约80TU
      * 80速度:约125TU

速度较快的实体随着时间的推移会更频繁地行动。

机制

  • 选择:
      * 杀伐vs速度vs防御
      * 抵抗类型
      * 设备重量之间的权衡
  • 资源管理:
      * 生命值
      * 魔力值
      * TU

等待

+ 增加小 TU 延迟
  + 恢复魔力值
  + 临时增加避免

玩家决策

+ 优化组合
  + 选择:
  * 攻击vs等待
  * 动作和吃攻击vs努力拦截并恢复

主问题

  1. 我是否为第一个项目而过度工程化?几年前我做过一个更小的游戏,但它并没有什么变化。

  2. 状态效果
      - 显示触发器 vs 事件驱动系统?

  3. 技能
      - 最好的方法是:
      +支持 HP/SP 流失机制?
      +多阶段缓冲 (buff – > 攻击)?
      + 多击(Multi-hit)?

  4. 规模
      - 多统计升级/分离伤害是否必要?

  5. 架构
      - 定义和状态模式是否适用于所有系统?

  6. 物品
      - “消耗品 = 技能” 是否是一个好的设计?

  7. 实体
      - 什么样的不同意味着结构层面上的玩家和敌我?

  8. 战争
      - 如何处理:
      + 因发动机速率不均匀的时间间隔而引起的时间间隔问题?


感谢您的关注。