A Familiar Tale
Pitch!
Keep your courage as you explore a mushroom infested forest, full of puzzles and help your grandma in need
Gallery
Trailer
Main Contributions:
Wrote a custom ECS system
Made a node graph system
Editor tools and features
Improved prefab/level loading
Worked on rendering features
Worked on trying to fix our broken PBR
The Custom ECS System
During the previous project the engine used Entt as a ECS system, though we ran into a lot of problems with it as we wanted to work in a less data oriented way as we felt it would speed of development if we could work in a way we we're more familiar with from engines like Unity. So I set out to write a custom ECS both, because we needed a new solution and because I wanted to try my hand at it.
The main pain-points from Entt I wanted to address with this implementation was:
Meta-programming. I'm a big fan of meta programming and though Entt allows you to do some stuff with templates, it's not really got any support for doing things like getting arbitrary component types at runtime.
Pointer safety. I wanted to be able take a pointer to a component and be sure in that the component hasn't moved in memory when you try and look at the pointer later on. Moving components around, though more efficient for iteration causes a great deal of unneeded problems we could avoid.
So, my idea then was to build a more or less standard ECS registry but with the option to interact with the component groups by not only template but also by a component hash or name. I'll also add a means of iterating over all the component hashes present in any one registry. This solves issue 1 but to solve the second issue I'll have to be a little clever about how I handle the component memory and effectively build my own allocator if it's to be efficient. However, I didn't have enough time to implement my de-facto solution for the second problem before the project concluded... So for now i just allocate components on the heap(with surprisingly alright iteration performance actually) and fill a sparse-dense set with pointers to the components on heap. I have however already implemented most of my actual solution for this in a standalone testbed. If you're interested in how I plan to solve that part you can continue read about it here.
Team
Artists
Josefine Rosenlind
Amanda Westergren
Viktor Gustafsson
Louise Wyke
Programmers
Jakob Nilsson
Linus Bensryd
Aron Jönsson
Gunnar Frennesson
Melvin Ringheim
Oliwer Alldén
Animators
Aron Tinz
Elliot Raud
Level Designers
Alexander Thambert
Julia Nyberg
Viktor Lundblad Åfors