我不是一名职业游戏开发者,这是一个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努力拦截并恢复
主问题
-
我是否为第一个项目而过度工程化?几年前我做过一个更小的游戏,但它并没有什么变化。
-
状态效果
- 显示触发器 vs 事件驱动系统? -
技能
- 最好的方法是:
+支持 HP/SP 流失机制?
+多阶段缓冲 (buff – > 攻击)?
+ 多击(Multi-hit)? -
规模
- 多统计升级/分离伤害是否必要? -
架构
- 定义和状态模式是否适用于所有系统? -
物品
- “消耗品 = 技能” 是否是一个好的设计? -
实体
- 什么样的不同意味着结构层面上的玩家和敌我? -
战争
- 如何处理:
+ 因发动机速率不均匀的时间间隔而引起的时间间隔问题?
感谢您的关注。
评论 (0)