Play game
U-0071's itch.io pageResults
Criteria | Rank | Score* | Raw Score |
Overall | #1 | 4.250 | 4.250 |
Theme | #1 | 4.083 | 4.083 |
Aesthetics | #1 | 4.250 | 4.250 |
Gameplay | #2 | 4.167 | 4.167 |
Usage of DOTS | #2 | 4.500 | 4.500 |
Ranked from 12 ratings. Score is adjusted from raw score by the median number of ratings per game in the jam.
Usage of DOTS/ECS in this project
Room-based Partitioning
One of the goal of this project was to experiment with a room-based partition system.
The world is composed of rooms linked to each others.
At game start, we scan all room entities and store their index and associated cache in a partition singleton.
At the beginning of eache frame, dynamic entities check if they changed room depending on their position and store an add, remove or update event in a NativeParallelMultiHashMap (the key is the room entity), sending their entity index and cache.
Rooms read the hash map in parallel and update their buffer storing the room elements.
In gameplay systems and jobs, it allows to query all entities of a specified room and access their cache data by only querying the target room buffer (stored in the PartitionComponent of entities).
Baked flowfield
The other main experiment was to create a "baked" flowfield, ie a flowfield that will not be updated during game time and referencing for each world cell which direction to take to a particular type of intereset (food, work, etc).
But it was not particularly taking advantage of DOTS (other than being easily queried in parallel) on top of being limited for dynamic gameplay.
The next step would be to use such a flowfield for unfrequently updated paths while using a more dynamic pathfinding method to complete it.
Deterministic Gameplay
[SPOILERS] The game uses DOTS determinism as a game mechanic.
The goal of the game is to get a series of door codes (red, blue, yellow) and use them sequentially to get out.
All codes are re-rolled every Cycle (5min) in a deterministic way.
The player is given a LVL1 (basic) code every cycle, but can peek when someone else enters a code.
On death, we go back to cycle one and the simulation restarts, but all codes discovered will be valid for their given cycles.
Source Code Repo
https://github.com/Yoan-dev/U-0071
Percentage of original art created for this project
99% ! (all but the font)
Leave a comment
Log in with itch.io to leave a comment.
Comments
What a neat little game. Nice work.
Thank you !
Nicely done. There is really a lot to explore. Great work!
Thank you !
First life I fell into the trash compactor. Second life a bunch of people got stuck trying to eat, slowly dying. Third life I managed to get almost all the codes, but blue I only knew 890_ for, and had to try every single combination with only 30 seconds left on the cycle. I was trying them from 1->9 and correctly guessed 8909 as the cycle ended. Second cycle in the third life I managed to get all codes with 30 seconds left on the clock. Not sure if there’s anything to do after I dissolve?
Ended up not really using the determinism at all lol. Would be nice if codes I had typed correctly got stored on the right side of the screen tbh. Very cool use of dots!
I sadly noticed only post-submission that the whole facility was starving pretty fast. Economy might need some balance tweaks.
Close call on your blue door. :D
Dissolve is the end (it switches you in free camera).
The code UI was planned "at some point". Having incomplete ones would help for sure.
Thank you !
Wow that's a really cool game and the number of actions you can do is very impressive! I did get a game crash when I got in a shoving match with a bunch of the NPC's in front of the door but otherwise it was flawless experience. Definitely a novel use of DOTS's deterministic design, just amazing. Great job!!
Thank you ! The game will crash if someone is out of the rooms so this might explains it. I am glad you liked it.
Wow, you did all of this in 10 days? Very impressed by the diversity of actions that characters and the player can perform and the potential for shenanigans.
Thank you ! To be fair I think I squeezed three weeks of work hours into this tenday (I'm exhausted). There were so many things I wanted to try.
Really cool concept. I especially enjoyed pushing others into the trash compactor to save myself time! 😅
You did not behave ! :O