The story idea was generated by all members of our team. Rough sketches were generated, and then final drawings were done by a member of our team. We used the FreeType text library to integrate our story scenes. The total number of scenes or 9 (4 with images and text, 5 with just text)
The game levels were generated by members of our team, and excessively tested to ensure that each game was playable. We had peers play test our game to ensure each level was playable and enjoyable, but also had componenets of difficulty. This included balancing number of enemies, number of ingredients, game timer and obstacle placement.
We created assets and integrated them into the game. All of our assets are interactable, they are either the player/enemy component or the ingredient component.
Player is the light source Uses normal maps to calculate light intensity based on direction Different normal maps per block allows for different lighting conditions for different levels. Enemies and ingredients are only visible if within a certain radius of the player or of any fire blocks No lighting effects are visible if limited visibility is disabled
Camera keeps player in center of screen (majority of the time) Camera does not go past map boundaries Results in player not in center of screen when player is close to map boundary
Implemented background music for main screen, tutorial, playing screen and story screen. Implemented sound effects for entity interactions including player-enemy collisions and player-ingredient collisions. Sound effects for player death and level pass
We used generative AI for inspiration of our enemy sprite visuals. Rather than generating designs, we provided descriptions of gameplay mechanics and thematic scenery, then asked for creative ideas. For example, we described an enemy’s capabilities along with the theme of our game being chilli peppers, burning, fire, smoke etc., and were inspired to draw our own enemy sprites. The assets generated using generative AI are the meals in each recipe card (Salad, Pasta, Fruit Salad, Steak, Sundae, Cake). However, each recipe card was put together by members of our team.
Additionally, the following assets were all generated by members of our team:
The following textures were sourced from open-source libraries or publicly available resources. The background texture sprites were from: -RottingPixels, -Uma Alma (Dungeon Kingdom Essentials), -FOX (Cave Tileset), -Kenney Urban Pack (City floor texture), -Polar_34 (City block texture) -O_LOBSTER (Garden level textures) The fire sprites were from: devkidd
State interpolation was implemented in two areas: player movement and the powerup fragment shader.
vec2 positions when the player presses a direction key, and interpolating between them using a standard lerp function defined in common.hpp.IDLE, where input is processed and lerp endpoints are set up.TRANSITION_TO_CELL, where which performs the lerp based on the elapsed time.DEAD, where input is no longer processed and the game over delay is in processOUT_OF_TIME, where input is no longer processed and the game over delay is in processWIN, where input is no longer processed and the game win delay is in processTRANSITION_TO_CELL to IDLE regardless of player input, to set up the new endpoints.IDLE state if the movement key was not released, to get rid of the discontinuity that would occur otherwise.mix function to blend between two colours based on a weight value between [0, 1], with a cosine-based t-value for ease-in/out transitions.a(1-t) + bt which represents a linear interpolation where the function smoothly converts between value a and b as time t goes from [0,1]vertColor.yzx and vertColor.xyz while time t oscillates between [0, 1].ParticleSpawner component that can be attached to any entity.
particle_system module.
ParticleSpawner components will be rendered using the same InstanceRequest. (a particle entity is located in the header file of the particle_system module)InstanceItems which contains the all the positions, scales, and angles of the particles.render_system module.
InstanceItem into a InstanceVertex which is then passed to the GPU for rendering.ParticleSpawner component is used in the world_system module to create a smoke particle system for any fire once it is extinguished.
SmokeBlock component and attaches it to a new entity with a duration.ParticleSpawner component is then attached to the entity to create the smoke particles.ParticleSpawner component is then removed after the duration has passed.ai_system.cpp file.