SLASHIMI

Introduction

SLASHIMI is a Death’s Door-inspired Adventure Role-Playing game developed by a team of students from The Game Assembly Malmö and Östra Grevies Folkhögskola.

A lot of systems in this project were moved over from our previous game. Since a lot of the building blocks were the same it meant we had quite a lot of time to work on the feathers specific to this game, most notably the 3D aspects.

Contributions

Grid System

For this project we were required to work with a grid system. It was to inform where objects were, what could be walked on, and the height of the floor. The grid itself was a simple unordered map using an int64 storing a x and y coordinate to retrieve pointers to the tiles.

I designed our engine based on composition. Everything that was to be registered to a tile had its own container variable in the tile. To make this not awful I made a special transform class that handled the registering and unregistering of the object if moved using overloaded functions to know what list to write to. Things that only needed to read from the tiles were not required to be registered with it. Best example being our hurt colliders that only retrieved the relevant tiles as needed.

Collisions were managed by first doing an intersection test with the grid followed by a proper collision check with the relevant objects found in the intersecting tiles.

Tile struct configuration (breakables were doors and levers placed on the same tile, hence not shown in this image)

Sprite Implementation

Since a lot of features in this project came from our previous one there was a lot of repurposing of our work to be done. Thankfully I could reuse a lot of the original raping I did with our sprites. It was a huge help when working with the particles, slash effect and aim indicator making the development time next to nothing.

Reflection

The decision to use composition instead of other designs like inheriting or a component system was a fun experience. It was clear that it would result in massive scalability issues in the long run. But thanks to the short duration of the project, it never really became a problem.

Being mostly focused on engine I had a completely different type of cooperation where I worked more closely with our other programmers. In the project before this we worked more autonomously. The code that you wrote was first and foremost used by oneself, and if others were to utilize it, they needed to find where it had been implementation. Most notable cooperation was with the programmer tasked with AI and requirements about being able to create validation checks for walkability and line of sight.