call me crazy but i think artists could help each other instead of competing they would make better work
@dankwraith not art the other day I saw someone argue on lobste.rs that "competition" between the hundreds of build systems nobody cares about is good
@dankwraith people got goblin brain constantly thinking everything needs to be a competition
@kel a lot of game frameworks support SIMD math now but the vast majority of games are still architected with object inheritance structures, which i have come to view as a profound mistake
@dankwraith oh I don't just mean autovectorization techniques but wide vectorization. Which essentially requires a project to not be object oriented but written with strange SOA data structures
@kel hell yeah
@dankwraith in Amethyst engine we're currently entertaining this idea with our upcoming Legion data layer, where the storage underneath can not only ensure linear memory access of common groups of components but also at the same time aligns memory structures for structured vectorization via a member's crate named "ultraviolet"
@kel oh shit are you working on amethyst? i messed around with it a bit but im too bad at rust to be able to use it comfortably right now
@dankwraith yeah im a member of the org. imo the engine is a bit of a mess design wise but this big shift in ECS and asset systems will give us a nice space to draft out something that's more clean, with plenty of escape hatches for specific optimization cases
@dankwraith you know what they say about engineering problems... you gotta take two steps backward so you can take one step forward and then later hopefully take more steps forward possibly
@kel good luck, i think rust is the future of game languages and we need more free game frameworks out there in general. i implemented a new variant of ECS in C# and its working very well in production but i still have to do some awkward things to deal with GC
@dankwraith there's also quite a bit of unsafe in Rust ECS since the lifetimes obviously can't be encoded statically and we don't always want to be doing runtime checks.
My big pointer is watch out with your memory linearity in ECS. There are plenty of footguns that *look* nice but actually perform far worse.
@kel c# is managed so the bigger issue is making sure i never throw away heap allocated structures or i get massive hitches on GC
@dankwraith do you get to use cool C#7 stuff like Span<T>/Memory<T> and their read only parts? You could probably use that to do parallel chunking over single component types while enforcing aliasing rules
@dankwraith I used to do C# for pay but I've never taken time to use it for video games lol :P
@kel that might be a valid approach actually
@dankwraith I imagine iterating on Memory<T> would be about as fast as you get single threaded
monads.online is one server in the network