Filur is a happy casual platformer game where you jump and float across enemies and different terrain to find items to cure your sick friend.
Filur was also nominated for Game of the Year, Best Art and Best Design at Swedish Game Awards 2019.
I was mainly responsible for rendering of the tiles, sound, the data required to save all tiles importing the maps and enemies.
Rendering of the tiles:
As we would not zoom in or out I wanted to make sure we didn't save a sprite for each tile we had in our levels as that would be a very large number of tiles and would not only make loading slow but it would take up more space and as sprites had to be put on the heap it would slow down gameplay as well.
The way I did this was to simply have an array with as many sprites as it would fit on the screen at one given time plus one extra row and column and move those sprites when the player moves, when one would go off screen it would just move those sprites to the end of the screen on the other side and check what UV's it would have. This way the number of level tile sprites on the screen would always be consistent which meant we did not have to worry about lagspikes even if the level size would differ. This implementation took a while to get right and I should probably have done a more simple version first which would have saved all sprites along with all data required to play the game if I had to redo it, this ultimately led to people being unable to work optimally for a few days. In the end I am happy
Importing maps and enemies
The importing of maps and enemies were pretty simple and was done with json,
however to speed up the loading and decrease the size we had to load from disk I represented each tile with a number which represented the UV coordinates on our tilesheet. That ID would then be matched with the tile properties in another file as even if the walls had different images the were all walls with the same properties, so I used a flyweight pattern and connected the tiles with the properties using way less data than if we had saved all the information in all tiles.