DEV Community 中文 关注 "Unity、Godot 还是我自己的引擎?为何我的卡牌游戏采用纯 TypeScript" 发布时间:false 标签:gamedev, reactnative, typescript, showdev 作者决定通过构建自定义引擎而非使用 Unity 或 Godot 等现成游戏引擎来开发卡牌游戏应用 Decks。选择这一方案的目标是在单一平台上托管大量卡牌游戏,其实现方式是将游戏定义为 JSON 文档,并由中央引擎进行解析。在 Godot 中实现的原型被证明过于臃肿且运行缓慢,作者发现卡牌游戏的渲染本质上十分简单,并不需要复杂的 3D 引擎。项目的核心——游戏规则——必须具备易于测试且独立于渲染系统的特性。所选技术栈包括纯 TypeScript 编写的 game-core 包、设计令牌(design tokens),以及使用 Expo、React Native 和 React Native Skia 构建的移动应用。其关键优势在于 game-core 零依赖,使其既能在 Node.js 中运行,也能在移动设备上运行,从而支持通过种子(seeds)进行广泛的测试和可复现的 bug 修复。规则被定义为数据,这不仅提供了灵活性,还支持提示功能和 AI 机器人等特性,而无需依赖 eval。在整个项目中统一使用 TypeScript,简化了开发与测试流程。由 React Native 处理的原生 UI 元素提供了无障碍支持和响应式体验,而卡牌桌则通过 Skia 进行渲染。卡牌面被动态生成,有助于减小应用体积。然而,构建自定义引擎也伴随着显著成本,包括承担命中测试(hit testing)、帧率优化以及管理原生依赖的责任。规则语言的通用性也可能导致数据定义冗长。尽管面临诸多挑战,特别是在处理触摸手势和性能方面,作者最终认为自定义引擎方法因其灵活性和可扩展性而极具回报。未来的计划包括添加双人游戏以及更多纸牌接龙变体。 Unity, Godot, or my own engine? Why my card games are plain TypeScript" published: false tags: gamedev, reactnative, typescript, showdev dev.to DEV Community 中文 RSS thenote.app
eval。在整个项目中统一使用 TypeScript,简化了开发与测试流程。由 React Native 处理的原生 UI 元素提供了无障碍支持和响应式体验,而卡牌桌则通过 Skia 进行渲染。卡牌面被动态生成,有助于减小应用体积。然而,构建自定义引擎也伴随着显著成本,包括承担命中测试(hit testing)、帧率优化以及管理原生依赖的责任。规则语言的通用性也可能导致数据定义冗长。尽管面临诸多挑战,特别是在处理触摸手势和性能方面,作者最终认为自定义引擎方法因其灵活性和可扩展性而极具回报。未来的计划包括添加双人游戏以及更多纸牌接龙变体。