In the past 24h there’s been two very similar discussions about the arguably steep learning curve of Amethyst:
“I wanna learn Rust by making games. Is Amethyst right for me?”
From what I can tell, the answer right now should be an honest “no, use ggez”. Feel free to tell me that’s an unfair assessment.
It just seems to me like if you’re new to both Rust and ECS then it’s gonna be tough to learn both at the same time.
Regardless of my assessment, figuring out where the bar is set right now for development with Amethyst is very important. The better we can communicate who it is and is not for, the fewer disappointed users you’ll have.
By @maruru: (emphasis mine)
What exactly is the point here? What do you want to discuss? How to make Amethyst more appealing for a broader audience? How to improve communication/documentation?
imho, when making a simple game, Amethyst delivers a lot of things which are simple to use… once you wrap your head around all the concepts. Amethyst is not like SFML or similar, which many people creating small games might be used to. It delivers very scalable architecture for games. And it is not C. It is Rust, and Rust adds many hurdles. Things which might be faulty, but still work in smaller applications are not possible in Rust, which might add to frustration. As such I never even considered Amethyst to be made for small games. If you want to create a Space Invaders clone, there are better solutions. And let’s be honest here, none of them is native. Platform independence and system languages are a pain, when WebGL delivers on all modern browsers on all platforms and can be integrated into native apps if necessary (Electron, Cordova, etc.)
So, since you say that Amethyst does not appeal to creators of simple games, then yes, I never thought it should in the first place. Catering to everyone is impossible after all. If you want to appeal to game devs for very small and simple games, then you’d have to abstract a lot of things away and focus on a very different set of features.
As such, I think you should draw a clear line and decide on the audience for Amethyst. Which is not to say that Amethyst cannot cater to small games… just not as Amethyst itself.
Imho, if you want to appeal to game devs with simpler needs, a wrapper library may be created, which does the hard parts and implements the necessary niceties for simplicity, so that simple-game devs just call very simple functions in order to get up and running. Your typical example then should be <10loc to get a window open and render a triangle.