Code Monkey home page Code Monkey logo

learn-openra's Introduction

learn-openra

The learning openra repository

openra-rs

This project aims to rewrite openra in Rust lang.

Subsystems and Task Claiming

Pls refer: Task Claiming

learn-openra's People

Contributors

apeng2012 avatar birdinforest avatar castlejing avatar cbxgyh avatar char-name avatar dawnmagnet avatar eanam avatar fanghaocrs avatar fanghaosama avatar imxood avatar joeyscat avatar learnwy avatar ljason77 avatar miketang84 avatar minghuaw avatar nintha avatar saberuster avatar shidephen avatar wzy165875 avatar xxxxzb avatar yuaxan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

learn-openra's Issues

对于项目方向的一些想法

大家好,我对于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

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.