Name: Aidan Dowling Student Number: C20394933
Name: Aleksey Makarevich Student Number: C20402732
Name: Matthew Tweedy Student Number: C20381946
Name: Finn Maguire Student Number: C20492576
Class Group: TU856/4
Feature | Image |
---|---|
Main Menu | |
Realistic Shark-like Behaviour | |
Boid Infometer | |
Hypno Toad | |
Sheep Rapture | |
Sheep Heaven | |
Sheep Head Trippy |
Action | KeyBind |
---|---|
Walk Forward | W |
Walk Left | A |
Walk Right | D |
Walk Backward | S |
Jump | (Space) |
Spawn New Sheep | ] |
Kill Targeted Sheep | X |
Kill All Sheep | G |
Set / Clear Sheep Target | Right Mouse Button |
Quit | Q |
Heavily modified version of the "minature-rotary-phone" repo, demoing behaviours of Sheep, and Shark (a well known common enemy), aswell as exploring the themes of Sheep and their revernce of god.
Class/asset | Source |
---|---|
Boid.gd | Self written (inspired by class Boid code) - Aidan Dowling |
Sheep.gd | Self written - Aidan Dowling |
Shark.gd | Self written - Matthew Tweedy |
DayNightCycle.gd | Self written - Finn Maguire |
EnvController.gd | Self written - Finn Maguire |
WaterCollision.gd | Self written - Finn Maguire and Aidan Dowling |
BoidController.gd | Self written - Aidan Dowling |
BoidDetector.gd | Self written - Aidan Dowling |
BoidInfometer.gd | Self written - Aidan Dowling |
BoidSoundPlayer.gd | Self written - Aidan Dowling |
GodCloud.gd | Self written - Aleksey Makarevich |
GodHead.gd | Self written - Aleksey Makarevich |
MainMenu.gd | Self written - Aidan Dowling |
Escape.gd | Implemented from algorithm described in this paper - Aidan Dowling |
Cohesion.gd | Implemented from algorithm described in this paper - Aidan Dowling |
Alignment.gd | Implemented from algorithm described in this paper - Aidan Dowling |
Separation.gd | Implemented from algorithm described in this paper - Aidan Dowling |
SharkConstrain.gd | Self written -Matthew Tweedy |
Grazer.gd | Self written -Aidan Dowling |
grass.gd | Self written -Aidan Dowling |
SpatialHashing.gd | Implemented from this 2009 blog post - Aidan Dowling |
spawn_zone.gd | Self written - Aidan Dowling |
hypno_toad.gd | Self written - Finn Maguire |
explosion_particles.gd | Self made - Aleksey Makarevich |
Asset | Source |
---|---|
heat.gdshader | Self written - Finn Maguire |
water.gdshader | Self written - Finn Maguire |
waterfall.gdshader | Self written - Finn Maguire |
env_control | Self written - Finn Maguire |
Sheep.gltf/blend | Self made - Aleksey Makarevich |
Terrain.gltf/blend | Self made - Aleksey Makarevich |
Cloud1.gltf/blend | Self made - Aleksey Makarevich |
Cloud2.gltf/blend | Self made - Aleksey Makarevich |
GodCloud.gltf/blend | Self made - Aleksey Makarevich |
HypnoToad.gltf/blend | Self made - Aleksey Makarevich |
Jar.gltf/blend | Self made - Aleksey Makarevich |
Tree.gltf/blend | Self made - Aleksey Makarevich |
explosion_particles.tscn | Self made - Aleksey Makarevich |
Shark.gltf/blend | Self made - Matthew Tweedy |
psy.gdshader | Self written - Finn Maguire |
Blood_splatter.tscn | Implemented from this video - Matthew Tweedy |
blood.tres | Implemented from this video |
blood_spot.tres | Implemented from this video - Matthew Tweedy |
Asset | Source |
---|---|
sheep_music.mp3 | Self written original piece of music (recorded performed and mixed by Aidan Dowling) |
sheep song.mp3 | Cover of the Halo Theme Song (recorded, performed and mixed by Aidan Dowling - additional vocal samples from Matthew Tweedy) |
explosion_01.mp3 | Self created and recorded sound effect - Aidan Dowling |
sheep-baa-GOD.mp3 | Self created by Matthew Tweedy |
sheep.mp3 | Self created by Matthew Tweedy |
angel_sound_effect.mp3 | Classic audio from here |
sheep-baaX.mp3 | All credits to freesound.org |
We drove out to the Dublin mountains and took photos of wild life. These can be found here. We noticed that the sheep were elusive and hard to capture images of - this inspired by the "Escape" behaviour.
I did general project management / team leading and lead programming on this project. I abstracted the interactions of the boid classes to a parent class, reimplementing how those classes interact with eachother and the boid controller. I rewrote the boid controller to utilize dictionaries to manage different types of boids existing at the same time. This reduces unnecessary checks over boids which are irrelavant. I also reimplemented bucket based spatial hashing, which allows for more efficient boid neighbour detection. I added a sound system to the behaviours, which then determine if a sound is played by the sheep, with cooldowns and sounds from larger forces being chosen. I created the BoidInfometer which displays information about the boid you are looking at, such as its name, health, hunger and the current behaviours affecting it. I also wrote an original soundtrack for the game and recorded a cover for the main menu. The original sound track was heavily inspired by ambient electronic musicians (such as C418, Aphex Twin), and was recorded within Ableton.
I am most proud of two things - the capable abstractions of boid's which allows dynamic interactions and the sound design and the audio system - music smoothly fades and loops, and sheeps have a dynamic sound effects depending on the behaviour exhibited.
I learned a lot about writing code within Godot and its unique paradigms. I learned how to do audio in Godot and mixing audio for games. I learned a huge amount about boid behaviours and the process of implementing those things in a collaborative environment.
I did the bulk of the model creation for the project. This was done due to me having the most modeling experience out of the group. This included creating the low-poly models, texturing them, rigging them and animating them. After this was done i worked on implementing the moving godsheep. This gave a way for the sheep to reproduce and to be blessed if the shepard was well behaved.
I am most proud of two things - the look and feel of the enviroment and the un-natural feeling of the moving godsheep
I broadened by knowledge in using blender as i had never done animation before, learning about keyframing and how to output these animations into godot.
I did most of the in-game environment. Some environmental features were implemented through the EnvironmentController scene which included features such as day/night cycle and custom weather effects. I also created the water effects for the project which involved creating a custom shader with some help from a reference which can be seen below. This was used to apply a retro low poly visual to the river and the body of water surrounding the island.
The things I was most proud of were the 2 additional shaders I created, one for the heat distortion during hot weather and a psychedelic experience for when the player comes in contact with the Hypno Toad. The kaleidoscope effect was done by segmenting the current image, mirroring them and applying a rotation effect to the segments. The colours also continuously shift based on a noise tecture and hue shifting of colours which gives the effect of spatial distortion.
I learned a lot about shaders and how they work in general with uv coordinate wrapping and manipulation with vertices and fragments.
I handled model creation and behaviour for the sharks in the project. This involved creating a low-poly model of a Blue Shark in Blender, native to Ireland and a sheep's natural enemy. I modified the Constrain boid behaviour into SharkConstrain specifically for the sharks, containing them within the water and created separate spawn zones for them to ensure the sheep were effectively harassed by the threat of danger. I also implemented a blood splatter effect making use of multiple particle systems within Godot's visual shader system, following a reference video, to add realistic depictions of when sheep get too close to a hungry shark. I recorded clips of my voice to be used for sheep sounds and in-game music.
I am most proud of learning how to use and create models in Blender, along with learning more about particle systems and how they can be implemented within shaders in Godot.
I have gained knowledge in Blender - inlcuding model creation, rigging, and weight painting - and Godot in two aspects that can be transferred and applied to future projects.
NOTE: Addons are not included in the repo and must be installed manually to run.
Evanescence (Cover by @gemmaljohnston on tiktok) - Bring Me To Life
Halo Theme Song Notes - William Joseph & Lindsey Stirling
Sheep Baa Sound effects - freesound.org
Blood Particles - https://youtu.be/KEcyDD8QtGA?si=PFcKC3R6qJ1toGWa Water Shader - https://godotshaders.com/shader/low-poly-water/