aidan959 / GE2-Assignment

Game Engines assignment
1 stars 0 forks source link

Sheep Terrarium

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

Video:

YouTube

Screenshots

Feature Image
Main Menu Image of the mainmenu
Realistic Shark-like Behaviour Image of what I would describe as hyper-realistic shark- like behaviour
Boid Infometer Image of the Boid Infometer
Hypno Toad The HypnoToad
Sheep Rapture The Rapture
Sheep Heaven Sheep heaven with explosions
Sheep Head Trippy Hypno Toad giving crazy visuals

Instructions

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

How it works

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.

List of classes/assets

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

List Models / Shader Resources

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

List of Music / Audio Resources

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.

Aidan Dowling (C20394933)

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.

Aleksey (C20402732)

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.

Finn (C20492576)

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.

Matthew (C20381946)

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.

Addons Used

NOTE: Addons are not included in the repo and must be installed manually to run.

DebugDraw3D

Sound Sources

Evanescence (Cover by @gemmaljohnston on tiktok) - Bring Me To Life

Halo Theme Song Notes - William Joseph & Lindsey Stirling

Sheep Baa Sound effects - freesound.org

References

Blood Particles - https://youtu.be/KEcyDD8QtGA?si=PFcKC3R6qJ1toGWa Water Shader - https://godotshaders.com/shader/low-poly-water/