A short summary from all the previous patreon posts: I worked on a huge 3d game in rust SHAR. The technology behind "shar" was cool, but was closed source and was tightly coupled with the game.
After "shar" I started to work on a game using existing rust engines, but was quite disappointed - I was way more productive with shar's engine. So I decided to build my new game with my own engine, but do it open source and usable for others from day 1.
So far I built a couple of crates, which are going to be a foundation for the engine:
miniquad is a context creation and rendering backend.
good-web-game - practical application to test miniquad.
macroquad/hale - both are experimental polygons for engine design ideas.
With this post I want to clarify the intentions and plans behind each of project.
I am more than happy with miniquad's achievements. However a lot of minor fixes need to be done and a lot of platforms need to be supported.
Plans for miniquad - evolve and grow, without any dramatic design changes.
- Make windows version pure rust
- OpenGL android build
- OpenGL ios build
- Metal backend for both ios and macos
good-web-game is not part of the future engine, but the practical and ready to use library to increase miniquad adoption and get real feedback for miniquad's cross-platform features.
"good-web-game" is more or less stable ggez substitution. According ggez's plans WebGL1 (ios safari) is not planned, as well as mobiles. Plus ggez's tech stack is way heavier than gwg's - this means gwg will always be more cross-platform and portable - and will have its userbase.
Plans for "good-web-game
- keep gwg compatible with upstream ggez's changes
- backport features from ggez by users requests
"macroquad" is also not a part of the future engine. Its other practical application of "miniquad".
Right now "macroquad" is in the least usable and stable state - too much experiments on API going on, even the engine idea changes daily.
macroquad going to be completely different things. First: simplified rendering api for any miniquad-based project. See it like sokol-gl (opengl 1 implementation on top of sokol-gfx), but with different API.
And small 2d game engine built on top of this rendering API.
This is how macroquad user code looks right now. It will be exactly the same, but "draw_whatever" will be implemented using separate crate.
plans for "macroquad":
- split crates
- use helper crate in miniquad's demos
- advertise macroquad as a super simple rust engine for small games
"hale" is a name for halley-inspired engine prototype used in the showcase game.
All the experimental branches from macroquad and all the ideas from "hale" are going to be merged into the new 2d engine.
And everything above is made for this engine.
plans for "hale"
- merge async experiments from macroquad with ecs from hale
- participate in a lot of gamejams and iterate on api design
- build the game from previous posts on top of that new engine
I believe that the engine should be pressure-tested with real games, not only small demos. Plans for games in 2020:
- Release 3ds platformer.
That game already use macroquad for PC debug builds, but the core is in C - unfortunately, its impossible to build rust with all nintendos sdk on 3ds. Releasing games for 3ds is super challenging - on both technical and paperwork side, but still working on it and hope to finish it before the last eshop day!
- Support all other games built with miniquad by other people. There are at least 3 super cool projects using miniquad right now, and this is super exciting!
- Participate in as many gamejams as possible. To both showcase and light-pressure test the engine and see how helpful for jam games the engine is.
- When the engine will be ready - migrate my own game!