Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

对于项目方向的一些想法 #12

Open
birdinforest opened this issue Mar 10, 2021 · 3 comments
Open

对于项目方向的一些想法 #12

birdinforest opened this issue Mar 10, 2021 · 3 comments

Comments

@birdinforest
Copy link
Contributor

birdinforest commented Mar 10, 2021

大家好,我对于Rust语言以及基于Rust的游戏开发很感兴趣。所以当我知道这个项目的时候就开始关注。

个人认为,作为一个依托于社区的大型开源项目,在启动阶段最好有一个大致的方向规划,而且项目的规划与方向最好是基于社区的讨论,这样有助于吸引更多的贡献者。我对于OpenRA-rs的项目方向上有一些简单的想法,希望与各位讨论。

OpenRA的项目的方向以及价值

因为项目缘起于OpenRA,那么首先大致分析一下OpenRA作为一个开源项目的价值:

  • 目标:2D RTS Engine,帮助其它开发者开发自己的RTS游戏。
  • 基于CC系列游戏原作,但不是简单的克隆,而是融入现代RTS设计的进化。
  • 提供更好的Mod能力。
  • 提供更便捷的网络对战环境。
  • 因为RA已经是免费软件,所以OpenRA项目可以设置第三方游戏资源文件托管,方便广大的玩家群体下载游戏资源。

OpenRA-rs的项目方向思考

从推进项目发展的角度考虑,需要尽量发展这个项目的独特价值,进而增强它的生命力。为此,需要回答几个问题:

  • OpenRA已经很成熟,为什么需要一个基于Rust的版本?
    • 技术上的价值?
    • 对于游戏开发社区的价值?
    • 对于游戏玩家的价值?
  • 开发者贡献代码的动力在哪里?
  • 有没有可能挖掘更多的价值?例如未来有那些发展潜力。

个人对于以上问题的思考

为了方便展示与OpenRA的比较,我尝试使用imoji表示OpenRA vs OpenRA-rs的优势与劣势。

OpenRA已经很成熟,为什么需要一个基于Rust的版本?

在Web端以及手机端运行的潜力👍

因为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应该可以实现全面地跨平台。

国内大量的CC&RA玩家👎

短期内没有优势,他们可以选择更成熟的OpenRA。

Rust的性能优势🤔

游戏架构方面,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

游戏开发的灵活性或者mod制作的便捷🤔

  • 脚本系统🤔:OpenRA使用Lua进行游戏逻辑开发。Mod的制作机制不清楚,好像也是通过YAML和lua结合?目前没有看到Bevy在这方面更具优势。而且Bevy的开发者已经明确表示Bevy引擎本身不会直接支持第三方脚本语言。当然OpenRA-rs项目自己的脚本系统。
  • 编辑器👍:Bevy的编辑器在开发路线图中。这也许可以为Mod制作带来便捷。

开发者贡献代码的动力在哪里?

  • 对于RA的感情 🤔。习惯使用C#的开发者可以去为OpenRA贡献代码。更喜欢Rust的开发者可以为OpenRA-rs贡献代码。
  • 用户的推动🤔。如果用户数量不够多,那么贡献者热情可能会很快丧失。
  • 基于Rust游戏开发的热情👍
  • 社区的关注👍。在项目稳定迭代之后,在Rust社区和Rust游戏开发社区应该会获得比较大的关注。

更多的价值?👍

- 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游戏,发现它挺值得尝试:

  • 其本身在当年是一个设计很前卫的RTS游戏。👍
  • 当年PC国产游戏行业中难得的精品,同时在海外曾经引起过反响。👍
  • 具有很大的优化增强空间。可以为Mod制作者提供很丰富的舞台。👍👍
  • 三国游戏玩家广泛,但是RTS类型很少。国外玩家也有可能感兴趣。例如《全战-三国》👍👍
  • 但是目前网络上没有太多的资源解析文档。数据分析和资源解包是个很有难度的问题。👎
  • 社区开发者玩儿过这款游戏的估计不多?或者对这款游戏感兴趣的不多。👎👎

其它可以参考的开源重制项目

  • OpenPAL3: 基于Rust自制游戏引擎,渲染基于Vualkan。目前基本是哪位开发者自己一个人做。
  • OpenAge以及其中列出的Open系列。
  • OpenDiablo2

以上是我的一些想法,如果有错请指出。希望能起到抛砖引玉的作用。

@miketang84
Copy link
Member

非常棒的想法和仔细的评估,很有价值。

@apeng2012
Copy link
Contributor

我认为这个项目的目的就是学习rust语言,另一方面是实践几个爱好者如何合作完成一个项目。
建议把目标设的低一点。比如能打开地图,建造建筑,生产单位, 移动地图已有的一个单位,攻击地图中的目标,就可以了。
脚本、mod、联网对战、电脑AI都不考虑。
真正参与的人应该也不会太多,大家都很忙,建议每个月花一点时间研究一下,然后例会能说10来分钟你所做的事情就ok

@miketang84
Copy link
Member

我认为这个项目的目的就是学习rust语言,另一方面是实践几个爱好者如何合作完成一个项目。
建议把目标设的低一点。比如能打开地图,建造建筑,生产单位, 移动地图已有的一个单位,攻击地图中的目标,就可以了。
脚本、mod、联网对战、电脑AI都不考虑。
真正参与的人应该也不会太多,大家都很忙,建议每个月花一点时间研究一下,然后例会能说10来分钟你所做的事情就ok

对的,这是你的目标,每个人都可以定自己的目标。很多人对ra是有情怀的,他们会有自己更高的目标。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants