Final Post and game link

Posted 23/12/2022

After receiving multiple rounds of feedback on our prototype, we changed many major features of the game, such as changing camera movement to be more static and cause less nausea when moving the background as well as adding features which enforce locked controls to avoid confusion in the early levels. I tasked our UI artist with creating a tutorial graphic reminiscent of a Wii Sports safety message, whereby semi-transparent images are animated on top of the screen to illustrate how to use the game's controls. The result was satisfying, and I created animations for the images so that they can illustrate the tutorial in unscaled time, using animation events to close the overlay and return the timescale back to normal once the animation had played out for a reasonable mount of time.

To wrap up the project I created another series of models and textures, as well as new particle and feedback effects to enhance the feel of the game with clear visual feedback caused by player actions, and sourced sounds to accompany each of the game's major actions.

You can find the game HERE on the Google Playstore to play on an Android device.

Overall, this was an enjoyable project to work on, and I am pleased with the amount of things I was able to learn which will feed into my personal project.
My key takeaways from this project are firstly on just how much detail a GDD should be written in prior to beginning development on a prototype so that all people working can create something better following a style, as well as the importance of appropriately allocating tasks for all team members to be occupied, as I felt that the workload could have been distributed more comfortably.

Here are some of the assets I created during this final sprint:

image
Crate revision

To begin, I revised the placeholder model we had been using for the trapped fish containers, and created copies of each component of the model to create a particle system for when the player breaks the crate. In addition I created a plank object to obstruct areas, which is split along the middle so that when the player boosts into it the barrier can be broken into two rigidbodies that float off. Another particle effect I created was for the mine explosion, which uses one camera-facing card as well as one horizontal card for the ripple effect.

gif gif
Mine Explosion particle effect

image
Plank Barrier
image
Dome coral optimization

Our Digital Media member produced three high-poly coral objects which I used to create normal maps for optimized low-poly proxies, and then baked stylized lighting onto using Substance Painter. Instead of texturing these corals with a colour, I instead only created baked lighting and subtle shading, so that a script could randomise the colour of the object on runtime.

image
Baked lighting low-poly corals
image
To experiment with a low strain shader we could use on mobile, I created a vertex displacement shader for a pair of seaweed meshes, which are displaced using a noise map that scrolls across the UVs to create a wind/water current-esque effect. This is then multiplied with a top-to-bottom gradient to set the mask at the bottom of the mesh to black, which keeps the root of the seaweed fixed in place.
image
Vertex displacement shader
image

To create another hazard that can cause a detriment to the player I created an eel model inspired by the "Maw-ray eels" from Super Mario 64, which charge at the player upon entering their proximity. This character lives inside a burrow, which can easily be used to conceal the body of the eel, as its neck stretches out deceivingly far to bite its prey. I used animation events to trigger the enabling of a hitbox, which performs a behaviour the first time a player enters its trigger. This allows for the attack state to be easily reset, as well as allowing for other behaviours such as consuming any fish followers that enter the mouth of the eel for the duration of its attack.

Lastly, I created some additional decorative assets which could be used to decorate the scene without interacting with the player

image
Anemone
image
Additional decorative rock assets

First Prototype & New Graphical elements

Posted 9/11/2022

For the first playable prototype (see end of post) our team focused on implementing all the critical features from our game design document. I created some essential elements for the appearance in the levels, namely finishing the manta ray model with appropriate textures to make the depth more readable, creating a polished rock asset to test the aesthetic, a placeholder for the fish, improved the placeholder model for the naval mine and a procedurally created dune texture for the background of the game.

image
Manta ray texture

For the manta ray texture I couldn't use anything procedural, so I used reference to hand-paint the detail. While it might not hold up very close to the camera, it shouldn't be an issue with the size that the model has on a phone screen. To give the model more depth without creating a high-poly model I added some shadows and highlights to fake depth, and better convey the shape of the torso.

image
Rock asset

image
Wireframe

In the first lesson of Modelling and Animation our teacher quickly went through the pipeline of creating a stylised rock asset using high-poly baking to create a low poly model with light baked into the texture using ZBrush and Substance Painter, so I decided to give it a go to practice ZBrush as I already knew the process for creating the textures. In the initial prototype demo we used a Cylinder as a terrain obstacle, so I blocked out a shape inside Blender which would roughly fit the volume of the cylinder placeholder, exported to ZBrush and sculpted in some edge-wear and additional details, before reimporting it into Blender and creating a decimated low-poly version to bake the detail onto. I then exported both, named accordingly, into Substance painter and baked the normals of the high-poly mesh into the low-poly, using the curvature map to lighten the edges of the rock, and added some blurred green areas to some of the Y-aligned faces to emulate moss growing on the rock. Additionally I used a black gradient to give the model more depth, as we have opted to use entirely baked lighting to increase performance in our game.

image
Fish placeholder model

As we are still deciding on the details of how to create more variety in the fish, I created a placeholder model for the prototype as an improvement over the primitive capsules we used previously. At runtime the colour of the fish is randomised on the prefab object, so I made a white texture with darker details for the fins to better accomodate this type of look.

image
Naval mine (left: new model, right: previous placeholder)

image
Naval mine texture with overlayed UVs

To improve on the placeholder object for the naval mine I had previously thrown together quickly, I used more reference to determine the appropriate look. While the new model uses twice the amount of polygons, it is visually an immense improvement. Similarly to the rock asset I used the curvature to create light edges and noise maps to add in some roughness to the colours on the base sphere. I laid out the UVs for the Hertz horns into 4 sets going down vertically so I could properly use a gradient texture to make the underside darker, and used a single overlapped UV area for the chain.

image
Sand shader graph

image
Dune shader baked texture

Finally, for the look of the background I wanted to create a stylised texture which would not be apparent as a repeating texture, so I followed this tutorial by Ned Makes Games on creating a sand dune shader, but only used the parts for creating the base colours, as we currently have no need for surface normals without lighting in our scene. To optimise for a mobile platform as we can't afford to be calculating the shader texture every frame on low-end devices, I used a script from ronja's tutorials to bake my shader graph output into a 1x1 aspect ratio texture to be used on the floor plane.


Further animations and first GDD

Posted 25/10/2022

Having officially decided to use 3D models instead of sprite animation, I created more animations for the game in line with our animation state blockout. As a core mechanic to our game, the player can hold 2 fingers on the display to slow down the character, before launching them into a boost state which allows them to destroy objects they collide with. While the core silhoette of the character may not be apparent due to unlit shading, the end of the wings will use trail renderers during high movement speed, and add more depth to the perspective of the game.

Additionally, we began our Game Design Document to create a better outline of features we will include in the game to keep the scope realistic and manageable withing the timeframe available.

Due to level design purposes the micro-story of the game is now as follows: An underwater tremor of unknown source disrupts the wildife in the Great Barrier Reef, causing panic and evacuations of the fish population, however, many young fish go missing and the player character: May, the manta-ray volunteers to find and rescue them.
Our level select screen will be a long, scrolling horizontal graphic showing the general surroundings in each area as the player progresses, becoming more poluted with each level, and human contraptions and machines being visible. In the background of the final area, an oil rig will be visible in the background, revealed as the cause of the tremors during an oil spill. The final level may include some kind of time pressure element, as the crude oil spreads out over and under the water.

image
Blockout of necessary animations


Creating the player character

Posted 12/10/2022

As we are still figuring out the direction we want to take for our game in terms of graphics, I went ahead and created a mockup of the player model using Blender to explore the concept and practice some more animation.

Firstly I created a rough sculpt as a reference for the volume of the final model, and then retopologized the sculpt into a simple model reaching just under 1000 tris.
I rigged the model to a simple armature and created a seamless animation example I have embedded below.

I am still debating whether we should pursue simple flat colours with cel shading or if we could maybe afford to use handpainted textures, as we would have to do more research on performance vs storage costs. Flat colours will lessen the load on myself and our artist to create coherent assets, so it seems to be the best option considering the short time we have to complete our prototype.

image
Sculpt for volume reference
image
Model retopology and rigging

Mobile Game Project Concept

Posted 07/10/2022
image
Image Credit: BBC Wildlife

Our concept for the Mobile Game Project started out as a desire to create an art-focused project inspired by Hohokum, a game where the player controls a snake-like creature that leaves behind a long trail, and has no real incentives other than exploring a world with simple unshaded graphics.

Next, we decided on a gameplay feature, which would be picking up some sort of collectable that would attach to the player's avatar somehow, such as extending the length of the trail or adding a new colour, and brainstormed the idea to have a Pikmin-like mechanic where the player collects creatures that follow their avatar. This behaviour appeared similar to the symbiotic relationship that the Manta ray has with some smaller fish, which cling to it for protection or eat off parasites.
Our team liked this idea so much we chose it as the theme of our game.

To accomodate for a game which would use several levels and add some kind of narrative to the game we are thinking of having the Manta ray start out as a newborn, learning how to swim just as the player is being introduced to the game mechanics, and grow in size and speed throughout the duration of the game. Manta rays are filter feeders which prey mainly on zooplankton, so we can either choose to have the feeding mechanic be passive as the player swims around the level, or perhaps have little clouds of plankton which the player swims over to feed on and grow.
The levels would involve collecting a certain amount of fish followers to complete an objective, and the player could gain max speed proportional to the amount of followers.

My Personal proposal for the game's story:
The game starts out looking over a beach, we see a little boy with a snorkel who sinks his head into the water to discover a vibrant coral reef. The surrounding area has been closed off artificially as a tourist attraction, and all the creatures inside are trapped.
(Perspective sinks down into the water into the game camera) We are introduced to a little manta ray pup which is all alone in the reef, and the player learns the movement mechanics of the game.
Each level has some kind of barrier that the player surpasses by either growing in size, collecting enough fish, or gathering enough speed. As the player grows in size so does their maximum capacity for fish followers, as such the pace of the game becomes faster with each level.
The manta ray is intimidated by the fish which are initially bigger than itself, but ends up surrounded by followers that collectively work towards escaping from their cage. By the end of the game the manta ray is strong enough to break through the final barrier, and the game ends with the ray flying out of the water in its newfound freedom.