Amethyst Ergonomics & Common Questions Discussion

(doomy) #1


On Discord, we’ve been discussing a few potential quality-of-life improvements for the Amethyst Engine. It’d be great to document them here so we have a nice overview of what things you are all getting stuck with.

Before I go further, please be mindful that people volunteer many hours of their time to make Amethyst possible. Every decision has its drawbacks, so please be courteous and understanding with any comments you may have.

My findings

I’ve been learning too much for the past several weeks, and I documented the questions I’ve asked here. While not necessarily all Engine pain points, they might help identify areas where documentation could use some extra resources.

Additionally, I have two suggestions based on issues I’ve had thus far.

1. Prefabs / Assets can be difficult to understand and boilerplate-heavy.

Over the past couple days, I’ve been looking to learn more about both rendy, and prefabs. Prefabs seem to be somewhat difficult from what I’ve seen on the help channels, and with no prior understanding of how they work, it is understandable to be confused.

In my humble opinion, working out the ergonomics of asset handling would greatly improve developer experience. It took me quite some time to figure out a good method from documentation (and stealing a lot of code from Evoli). My conclusion upon getting my prefabs working was that most of the code was actually boilerplate. All I really cared about was my prefab data types, e.g.:

struct MyPrefabData {
    my_component: Option<MyComponent>,
    transform: Option<Transform>, 

While I learned a lot from implementing my own load states and the like, I think a generic prefab processor built-in (if possible) could be a great time and frustration saver. @kabergstrom has mentioned our next assets system (atlier) would be able to increase the QOL for prefabs, but that project was on the backburner for now. Hopefully once I learn more I will be able to contribute! If there is any update on how we can help move this closer to the future, let me know.

2. Render Graphs

Essentially this entire one is mentioned here. From a beginner’s perspective, C&Ping that much code in a beginner tutorial is daunting. It would be great to have some default graphs - perhaps one for 2D sprites, and one for PBR? I think this one would be pretty easy (aka I can steal existing code) and I might take a crack at it if it is an agreeable decision.

1 Like