1. 数据结构调整
原本的职业经验是使用的map和数组实现,导致会出现为空警告,以及需要进行相关判断。后来深入学习了一下typescript,采用了枚举、Record和自定义链表来实现。
把原本的生命形态和职业彻底分离。种族包含【人、鬼、神、仙、妖、怪、精、魔】,职业暂时先规划了【修真者、鬼修】两条路线,后续再进行完善。
把功法等级、能量属性之类的内容全部枚举化。
2. 引入UUID
为NPC和物品引入唯一id属性,后续便于管理。
3. 引入规则引擎
引入json-rule-engine,偶发性事件的计算和推动将由规则引擎驱动,将随机属性加入到fact中。
偶发性事件的数据结构类似于:
[ { "id": 1, "origin": true, "cat": "路边偶遇", "desc": "路边偶遇一个乞丐,蓬头垢面,瘦骨嶙峋,颤抖着向你伸出手……", "options": [ 2 ] }, { "id": 2, "origin": false, "cat": "路边偶遇", "desc": "置之不理", "rules": [ { "conditions": { "all": [ { "fact": "random", "operator": "greaterThanInclusive", "value": 10 } ] }, "event": { "type": "死亡", "params": { "add": { "path": "gg", "value": 1 }, "message": "由于你的冷漠,他死了。" } } } ] } ]
4. 游戏开始和结束
除原有的主界面外,设置初始化和游戏结束界面,用来随机生成玩家身份、属性等内容。后续可用来生成地图、NPC等内容。
vuex 对 typescript 的支持烂的要死,爬了半天坑最后把 store 的实现从 vuex 换成了 pinia。
将玩家、时间、环境数据放入到store中统一管理。
5. 交互区组件
实现交互区组件,主要负责事件、选项的展示与交互。
偶发事件会随着世间轮的推动随机出现。
编写操作工具类,用来在事件结算时对玩家属性进行修改。
以上是最近一个月的主要内容。接下来会有个重要功能模块的实现,地图。
暂无关于此日志的评论。