SUSTeam: Ultimate Gaming Platform

SUSTeam: Ultimate Gaming Platform

💡 原文中文,约3000字,阅读约需8分钟。
📝

内容提要

作者回顾大三时用Kotlin和TypeScript开发的游戏平台SUSTeam,包含网页端、客户端、管理平台和开发者SDK。后端采用Kotlin与Vert.X,前端使用Vue加Electron。文章分享了技术选型、单元测试、文件上传下载、好友在线状态和即时通信等经验,并强调团队协作高效。

🔎

延伸解读

技术选型:Kotlin 与 Vert.X 的契合点

作者选择 Kotlin 和 Vert.X 并非盲目跟风。Kotlin 的伴生对象、扩展函数和闭包等特性简化了代码,而 Vert.X 的 Event Loop 与 Kotlin 协程的 suspend 结合,提升了异步性能。后期临时加入即时通信需求时,Vert.X 对 STOMP 协议的良好实现和测试 mock 能力,为团队节省了时间。这提示我们,技术选型应关注语言与框架的协同效应。

TypeScript 在 Vue 项目中的现实挑战

团队选用 Vue 并搭配 TypeScript,希望获得类型安全和类组件写法,但不少开源库对 TypeScript 支持不佳,导致大量时间耗费在兼容性修复上。作者坦言这一选择让团队狼狈。这反映出,在生态尚不完善时,引入 TypeScript 需权衡开发效率与类型收益,尤其对于经验不足的团队。

在线状态与即时通信的实现取舍

好友在线状态变动频繁,团队用全局 HashMap 存储而非关系型数据库,并指出 Redis 是更优解。判断离线采用最后在线时间阈值,而非仅依赖主动离线,以应对客户端闪退。即时通信选用 STOMP 协议,但因前端时间不足而遗憾放弃。这些取舍说明,在有限时间内,需优先保障核心功能,并预留优化空间。

团队协作与工程实践的价值

项目成功离不开高效协作:使用 Notion 管理进度、Slack 集成 Git 推送、互相代码审计。这些实践在初期磨合中作用显著,避免了互相甩锅。作者强调团队合作高效,这提醒我们,学生项目中良好的工程习惯和沟通机制,往往比单纯的技术选型更能决定成败。

❓

Q&A

SUSTeam游戏平台是什么?它包含哪些部分?

SUSTeam是作者大三时用Kotlin和TypeScript开发的游戏平台。它包含面向用户的网页前端(用于浏览与购买)和客户端(增加本地游戏库、下载和更新功能),以及面向开发者的管理平台和接入平台服务的SDK。

SUSTeam的后端技术栈是什么?为什么选择Kotlin和Vert.X?

后端使用Kotlin语言和Vert.X框架。选择Kotlin是因为其现代特性(如单例、扩展函数、闭包)提高开发效率;选择Vert.X是因为其Event Loop与Kotlin的suspend结合良好,且对STOMP协议有良好实现,便于后期添加即时通信。

SUSTeam前端用了哪些技术?开发中遇到了什么挑战?

前端使用TypeScript、Vue和Electron。挑战包括:Vue的模板语法导致控制流分散,组件拆分不便;TypeScript虽然严谨,但许多开源库支持不好,大量时间用于修复兼容性问题。

SUSTeam如何处理文件上传下载和权限管理?

文件上传下载通过Vert.X的StaticHandler处理,自动转储为带GUID的无扩展名文件,再由自定义Handler转移到存储目录并记录日志。权限管理(如是否购买游戏、DLC等)通过暴露接口供其他业务调用,鉴权本身非常复杂。

SUSTeam如何实现在线状态和即时通信?

在线状态使用全局HashMap存储(而非关系型数据库),通过心跳包机制更新最后在线时间来判断是否在线。即时通信选用STOMP协议,后端已实现,但前端因时间不足未能适配,功能遗憾放弃。

SUSTeam团队协作有哪些值得借鉴的经验?

团队使用Notion进度版管理任务和追踪进度,用Slack进行交流并与Git深度结合,还互相进行代码审计。团队合作高效,没有互相甩锅的情况。

🏷️

标签

➡️

继续阅读