群里的朋友们都很喜欢跑团,从学生时代开始就一贯如此,包括COC、DND都有所涉猎。 但现如今大家也分散了,不是逢年过节也无法线下聚到一起,因此更多情况下是线上语音跑团。
COC: Call of Cthulhu 克苏鲁的呼唤
DND: Dungeons and Dragons 龙与地下城
线上跑团相比线下有些明显的限制,例如无法方便地用纸笔绘图等直观传达信息,也无法利用一些小模型道具 来增强沉浸感,甚至失去了大家一起看着掷骰子的快乐,只能在语音里纯说话交流。
正因如此,这么多年来也是一直有个开发跑团辅助工具的执念,也就是开发用来辅助线上跑团的软件工具。
历史回顾
其实我也并非一直只空有想法而从未实践。过去几年我已经尝试过制作跑团辅助工具,也迭代过几版, 但最终结果都不尽人意。
历史上几个主要版本的及其问题:
版本 | 平台 | 相关技术 | 说明 |
---|---|---|---|
最初の版本 | Windows | C# .NET Framework Windows Forms | 包含最初的角色卡生成器(硬编码规则)和一些守秘人用的辅助工具(例如骰子、数值检定等)。 但当时很多Windows系统还没有预装.NET Framework,要让朋友们都能够使用有一定难度。 |
联机功能更新 | Windows | C# .NET Framework Windows Forms socket 阿里云ECS | 添加了基于C/S架构的联机界面(TCP连接),因为当时对网络方面理解有限,房间内有6名玩家时操作延迟高达2分钟👍 并且随时随地抛出未处理的异常👍 |
第一次重构 | Web | C# ASP.NET Web Forms html5 javascript css 阿里云ECS | 放弃Windows Forms本地应用,改为Web应用。重置了角色卡生成器,且联机体验大幅提升,并且实现了一个多端同步的画板。 然而,Web Forms的模式使得流量消耗巨大,加之本身功能也还不够强大,因此也未投入实际使用。 |
第二次重构 | Unity | C# Unity3D | 在Unity里实现了一个功能非常丰富的事件记录框,可以显示玩家聊天、游戏事件(如骰子结果、选项、通知等),并且有动画效果。但是……就到此为止了😅 这个项目当时还做了挺详细的设计,但对当时的我来说属实是眼高手低,最终不了了之。 |
由 繁 入 简 | Web | html5 css javascript | 这个版本仅仅是 再次重置了角色卡生成器,玩家可以手动将生成的角色代码复制给守秘人使用。在当时是应急之用,除此之外什么也没有。 |
以上所有版本均是我在学生时期开发的,从大一的第一个版本到研究生时期的最后一个版本, 留下了很多美好的回忆。
很不幸,这些项目的结果都是失败的。因为我本科和研究生均是金融相关专业,编程只是我的兴趣爱好, 完全依靠自学,这些历史项目在开发过程中都遇到了对当时的我来说难以攻克的技术难题。
但同时又很幸运,这些项目使我的技术水平快速提升。我现在的工作就是研发工程师,破除了所学专业 的限制,最终做上了自己一直感兴趣一直想做的事。
重新起航
工作两年,从同事以及公司项目上吸取到了更多经验,技术水平进一步提升,是时候,重新起航了!
目标
这次重启跑团辅助工具的开发,计划实现以下几个目标:
- 跨平台(不依赖于Windows)
- 联机功能完备(实现真正可用的联机功能)
- 用户友好(成熟、合理的用户界面)
- 完全重构(不依赖于任何以前的代码)
- 高通用性与可拓展性(不仅针对COC规则进行设计)
- 功能完善(不依赖其他通讯工具也能获得完整游戏体验)
- 尽可能使用开源库
- 尽可能节约成本
技术架构
- 平台:Web
- 前端框架:React、umi.js
- 前端组件与样式库:antd、bootstrap
- 后端框架:ASP.NET 7、Dapper
- 数据库:MySql、Redis
- 外部服务:声网Agora(用于语音通话)
- 云服务:
这里列出的技术架构为结合前期调研得出的初步计划,众所周知计划赶不上变化,故实际项目开发中若使用了与此处不同的方案,则以较新的开发日志为准。
开工
我计划先从前端开始开发。
这个项目预计前端的复杂程度会大于后端,很多功能逻辑都是集中在前端实现,特别是用户界面的展现部分。 相比之下,后端服务器负责的内容逻辑反而比较简单。 需要访问后端服务的地方先利用mock模拟响应,待前端成形之后再做实际开发。
下一篇开发日志记录一下前端的开发进度~ 🎈