The learning openra repository
This project aims to rewrite openra in Rust lang.
Pls refer: Task Claiming
The learning openra repository
License: MIT License
The learning openra repository
This project aims to rewrite openra in Rust lang.
Pls refer: Task Claiming
有关openra现有的架构在这里讨论。
根据20210411的例会来看,OpenRA的game tick和render是可以不一样的,目前bevy还不支持 bevyengine/bevy#1806 (comment) 。我们可能需要讨论一下这个部分应该怎么做。
openra-rs架构的设计在这里讨论。
大家好,我对于Rust语言以及基于Rust的游戏开发很感兴趣。所以当我知道这个项目的时候就开始关注。
个人认为,作为一个依托于社区的大型开源项目,在启动阶段最好有一个大致的方向规划,而且项目的规划与方向最好是基于社区的讨论,这样有助于吸引更多的贡献者。我对于OpenRA-rs的项目方向上有一些简单的想法,希望与各位讨论。
因为项目缘起于OpenRA,那么首先大致分析一下OpenRA作为一个开源项目的价值:
从推进项目发展的角度考虑,需要尽量发展这个项目的独特价值,进而增强它的生命力。为此,需要回答几个问题:
为了方便展示与OpenRA的比较,我尝试使用imoji表示OpenRA vs OpenRA-rs的优势与劣势。
因为OpenRA基于.net和SDL,所以它具有在移动端运行的潜力。但是因为性能问题,目前在Web端的前景不是特别好。在这两个方面,另外一个游戏开源重制项目Classic UO(一个开源重制Ultima Online游戏的项目,基于.net和MonoGame)曾经有过尝试。基于Unity3D,Classic UO可以很方便的移植在移动平台 —— Mobile UO,但是Web平台的移植限于性能问题,目前还不可行。
Bevy的图形模块基于wgpu-rs,天然具有跨Web端,以及移动端的能力。(wgpu-rs在Web端的应用处于试验阶段,但是在路线图中。)如果不考虑在移动平台的操作问题,那么OpenRA-rs相较于OpenRA应该可以实现全面地跨平台。
短期内没有优势,他们可以选择更成熟的OpenRA。
游戏架构方面,OpenRA基于SDL,是传统的面向对象架构,而OpenRA-rs基于Bevy的ECS架构。渲染方面是OpenGL vs wgpu。对于这个体量的2D游戏来说,理论上OpenRA-rs不会具有显著的性能优势。
关于ECS vs 传统架构的性能优势评估,可以参考Godot的一篇博客:https://godotengine.org/article/why-isnt-godot-ecs-based-game-engine
- 3D / 2D RTS Engine in Rust。为其它游戏开发者提供一个基于Rust开发RTS的框架。
- 尝试重制其它RTS游戏。例如RA2。个人也建议考虑几款国产游戏,例如《傲视三国》。
这里有一些新的功能可以考虑,但是开发难度会大大增加。例如,因为OpenRA-rs是基于Bevy引擎(或许其它支持2D&3D的引擎),那么在后续开发中同时支持3D&2D的难度相较于OpenRA会稍微小一些(当然复杂度还是相比于仅支持2D/3D要高很多)。目前OpenRA中增加RA2以及其它2.5D/3D游戏的支持会比较困难。
其实我自己当年也没有认真玩儿过《傲视三国》,只是在考虑这个问题的时候去查看了一下各个国产的RTS游戏,发现它挺值得尝试:
以上是我的一些想法,如果有错请指出。希望能起到抛砖引玉的作用。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.