PistonDevelopers / piston

A modular game engine written in Rust
https://www.piston.rs
MIT License
4.62k stars 234 forks source link

Can we actually make piston into a game engine? #1278

Closed Raj2032 closed 1 year ago

Raj2032 commented 5 years ago

At the moment piston is just a bunch of libraries, and it doesn't offer GUI game editor, like Godot and Unity.

Can we in the near future implement a full GUI game engine?

bvssvni commented 5 years ago

There is a project for this already: https://github.com/pistondevelopers/turbine

The problem is that the GUI isn't the game engine. You need an architecture first. At the moment Turbine is searching for the right architecture for the editor, which is done by researching homotopy maps for reactive programming (homotopy maps are functions of type R^N -> T. At the rendering side, it is clear that frame graphs are the right direction. Perhaps we'll reuse parts from the Amethyst project, like Rendy, instead of building our own. These libraries are tested in other projects before starting to build the GUI. Testing libraries in other projects is very common in the Piston project.

Piston uses a modular architecture, which means that the GUI might consist of libraries to build GUI designed for specific projects. People use whatever works for them. For example, I use Dyon as scripting language and find that I don't need GUI that much.

I've tried Godot, but I found that a lot of tasks were just things you could do with scripting.

Turbine is mostly a research project to do stuff that you can't do easily through scripting. The way I see it, there is no point in trying to copy other game engines, since it's very hard to catch up in features and they are very accessible.

If you are interested in a game engine in Rust that isn't as much research focused as Turbine, then I recommend checking out Amethyst.

The alternative is to figure out what kind of game you want to make, and then choose the set of libraries/tools that serves that purpose. This is probably more efficient that trying to build a GUI for a game engine without knowing what you want to make.

bvssvni commented 1 year ago

The only project from Turbine that I use now is https://crates.io/crates/turbine_scene3d

There is also another alternative now, Fyrox, which has a built-in editor: https://crates.io/crates/fyrox

Bevy is a game engine that supports plugins: https://crates.io/crates/bevy

I'm gonna close this, since my goal for Piston is a small but stable modular engine that I can experiment with. There is nothing that prevents people from building a full GUI game engine on top of Piston, but this is such a time consuming project that I find it better to do mathematical research instead. There are also several new GUI libraries that pops up for Rust now, which supports custom backends (e.g. use Piston underneath). Overall I think that GUI support in Rust will continue to improve and that the major work that will pay off in the long run is in independent libraries (renderers etc.).

If you take a look at recent downloads at crates.io, the more popular game engines are:

However, if you look at independent libraries, the recent downloads are much higher:

It is kind of obvious from these numbers that game engines are not as important as developing independent libraries. The design philosophy of Piston has always been to support development of modular libraries, not to promote a game engine (since we don't make money from that). The majority of the payoff, seen from the perspective of developers, comes from the ecosystem with libraries that can be used in any project.

Closing.