Opal游戏开发日志

引言

写这篇日志的目的是为了记录我对Opal游戏的思考过程和发展历程。以下内容可能会随着时间的推移而改变。

Opal游戏背景

Opal是我的一个游戏项目,最近一个月来我一直在开发中。由于Bungie宣布Destiny 2已经达到生命的尽头,我决定利用这个机会来开发一个新的游戏。我的目标不是要与Destiny竞争,而是要创建一个精神上的续集,捕捉到Destiny的发现、令人满意的枪战和丰厚的装备之旅的感觉,同时也要建立自己的身份。

Opal游戏设计

Opal是一个RPG风格的科幻射击游戏,主要设计为单人游戏,支持本地和P2P多人协作。与Destiny不同,Opal不会有持久的共享世界服务器或云主机的宇宙。这个设计决策是为了避免维护和平衡的负担,以及避免玩家因错过的内容而感到焦虑。

为什么不使用Unreal、Unity或Godot?

我选择使用Rust和Bevy而不是使用Unreal、Unity或Godot的原因是因为我想完全控制游戏的架构。另外,我也是一个强烈的支持自由和开源软件的人,所以我不喜欢使用有着封闭性和专有许可的引擎。

数据驱动设计、AoS和SoA

数据驱动设计是一种组织数据的方式,它根据数据的消费方式而不是人类的思考方式来组织数据。这种设计方式可以提高性能和可伸缩性。AoS和SoA是两种数据组织方式,AoS是结构数组,而SoA是数组结构。SoA是一种更好的方式,因为它可以让CPU更高效地访问数据。

Entity Component System(ECS)

ECS是一种软件设计模式,它将实体、组件和系统分离。实体是唯一标识符,组件是实体的数据,系统是行为。这种设计方式可以让软件更灵活和可伸缩。

选择Bevy和Rust

我选择使用Bevy和Rust的原因是因为它们自然地鼓励了我想要的软件设计方式。Bevy是一个基于数据驱动设计的引擎,它使用ECS来组织数据和行为。Rust是一种编程语言,它使用所有权模型来组织代码和资源。

未来展望

现在我已经解决了最大的架构决策,我可以开始关注游戏的开发了。接下来的几个月里,我将会专注于开发游戏的核心功能和系统。同时,我也将会继续记录我的思考过程和开发历程。

总结

Opal游戏的开发是一个有挑战性的过程,但也是一个有趣的过程。通过写这个日志,我希望可以记录下我的思考过程和开发历程,希望能够为其他开发者提供一些参考和经验。