Jelly Go重构计划与进展
引言
近期我和我对象都喜欢上了一款策略游戏名字叫做Jelly Go,在国内知名游戏平台4399上被翻译为果冻军团(属实是做到了信达雅),一开始是对象推荐我玩的一款策略游戏。一开始我也没太注意这款游戏,因为我心想着我小时候玩的游戏没有上千也有上百吧,但是,策略游戏对我的吸引力还是相当权威的,不过当我随着游戏指引入门以后逐渐发现事情好像不是我本以为的游戏模式,对手AI非常有策略,也很有操作水平(实在是很难想象这个游戏是十几年前的游戏)。
原因
说到为什么要重构Jelly Go,一个直接的原因是这个游戏是Adobe Flash技术完成的作品,当然我并不觉得Flash有什么低人一等的感觉,反倒来说,我认为Flash是一种天然对游戏具有亲和力的设计工具,例如,当年的洛克王国、造梦西游、火柴人系列...Flash带给我太多的欢乐。但是,另一个可以被算作根本原因的是,现在的浏览器技术对Adobe Flash Player插件并不友好,因为Flash Player插件的安全性容易导致内存泄露或被黑客利用,因此在印象中,自2020年开始各大浏览器厂商都组件默认不启用Flash Player插件了,再加上对象说因为想在平板上面玩跨设备玩这个SWF游戏,当时我脑子里第一想到了ruffle
插件,这是一款由Rust写的一款用于播放SWF的浏览器插件,自Adobe插件被正式禁用之后,这个插件就出现了(再加上当时笔者对Rust语言比较感兴趣,因为它号称是内存安全的语言,但是其复杂的泛型和生命周期标注以及自引用结构让笔者不得不决定先放弃),因此我当即就在GitHub上面搜了是否存在关于Android的应用实现。欸嘿,还真有一个official edition,于是就下下来给我对象发过去了。但是,存在一个问题,非常影响游戏体验,就是ruffle
貌似并不支持外接鼠标,虽然触控体验也还可以,但是不支持外接鼠标就直接pass掉它了。后来,我又想了办法,想起小时候很多flash游戏事实上可以借助AIRSDK技术为swf游戏文件做一个transplant,于是,就顺理成章的将这个游戏成功移植到Android了,各种设备也能完美支持。按道理来说,这件事就应该这么终止了,但是,作为一个热爱游戏与对象的技术人,此时应该做一点什么,于是一个游戏重构计划在我心里已经缓缓升起了。
技术选型
客户端:Godot 4.4.1
服务端:Golang 1.24.2
理由:
- Godot 支持多平台发布,包括 Android、iOS、Windows、macOS 和 Web 等,对于安卓端的开发需求,Godot 提供了直接的导出支持,能够轻松生成 APK 文件。它内置的 Android 导出工具链简化了开发流程,减少了额外配置的工作量。
- Godot 使用 GDScript 作为主要脚本语言,语法类似于 Python,简单易学,适合快速开发。
- Godot 提供了强大的网络模块,支持多种网络通信模式(如 TCP、UDP 和 WebSocket),对于实现塔防对战游戏中的多人在线功能非常有用。
- Golang 的 Goroutine 和 Channel 机制使其在处理高并发请求时表现出色,塔防对战游戏可能需要同时处理多个玩家的操作和实时同步数据,Golang 的高性能并发模型非常适合这种场景(虽然最终可能只有俩个角色www)。
- Golang 的标准库提供了丰富的网络编程支持(如 HTTP、WebSocket 和 TCP/UDP),可以轻松实现游戏服务端的通信逻辑。
- Golang 的运行时占用资源较少,适合部署在云服务器或低成本的 VPS 上。这对于小型游戏项目来说非常重要,因为它可以降低运营成本。
未完待续...