Rust/Amethyst 3D Design Philosophy


I was thinking of attempting a somewhat complex 3D project. It would seem there are few/no 3D Amethyst examples and the 2D examples seem a bit disjunct. I am new to the ECS development paradigm and the Rust language. If (God willing) I am able to complete a test design probably some would attempt to use it as a template. So, is there a desired project layout, code organization and/or workflow that would be most beneficial to the standards that Amethyst is wishing to adhere so not to add to the confusion. If my health improves I was thinking of blogging the development process. Depending on technology growth I would like the final client to also run on a browser Wasm stack/VM.

(Kel) #2

I believe @erlend_sh recommend checking out our 3D Showcase game “Evoli” for understanding larger project structure, but I’d also recommend @jojolepro’s “Hoppin World”, which touches quite a few different parts of Amethyst, and generally speaking I really like the way Joel manages vendored forks of crates where they are needed (and you may find they are needed). Generally, there is no agreed upon structure since the API’s of Amethyst are constantly evolving and many API surfaces are especially young. Perhaps if some parts of the engine begin to settle, and the showcase games grow along with those settled bits, we could then consider providing a “best practices” for this.

Also, welcome to the forum!


Thank you for your, considered, kind response! I have had some very difficult weeks lately as I am working with troubled people and they may have the most volatile interfaces of all. So unstable, hopefully improving interfaces I can appreciate. Though some feel strongly defined “best practices” in projects such as Ruby on Rails are restrictive I feel within the vagaries of an internet community they provide a vertex for unity, focus, discipline, education, and growth. Like documentation, there never seems to be enough time but after the dust settles we relearn how imperative it is and how advantageous it would have been.