Capstone Game
For the capstone game design class, my team was challenged with creating a complete video game over the course of two quarters. Our game is a top-down 2D local multiplayer competitive game where each player plays as a death match combatant who is dropped into an arena with the other players. Each player is accompanied by 2 fairies which have the ability to harness energy from elements around the level and use that to attack other players. These fairies can be commanded to attack individually or be combined together to create more powerful combo attacks. Here are some screenshots of our final product
As Lead Programmer on the team, I was responsible for and completed the following:
Art
Level tilemap images for grass, dirt, water, and walls
Water tilemap animation
All UI buttons and UI button visual/sound effects
All tutorial text labels and gifs
All UI Xbox button press animations
Main menu game title
Loading screen open and close animations
Design
Actively participated in the design of element combinations, element interactions, UI, and base mechanics
Production
Planned and organized game design meetings
Created and maintained documentation for game interaction models
Created and maintained meeting notes and programmer todo lists through drive documents and Trello
Determined programming needs on a weekly basis, divided work, and distributed amongst the programming team
Programming
General
Playtesting, bug fixing, and QA
Integrating and rewriting code from other programmers
Scripts
Controllers
Controller.cs: Mapped controller input to Unity and build platform.
Implemented input retrieval.ControllerInputs.cs: Defined data structure to store controller input values.
Implemented controller Unity input refresh.ControllerManager.cs: Defined data structure to store controller references.
Implemented player ControllerInputs retrieval.
Elements
ElementInfo.cs: Defines ChamberInteractions, CombinationRequirements, CollisionPair, ElementCollisions, ElementData, and ElementInfo data structures.
Implements data structures used in deserialization of JSON element information.ElementObject.cs: Defined data structures for storage and manipulation of element game object projectile information.
Implements collision logic and rigidbody velocity calculationsResource.cs: Defined data structures for resource game objects.
Implements resource availability management.
Fairies
Fairies.cs: Class used to store and manipulate a player’s fairy info.
Implements InventoryInfo class, which is a data structure for a fairy’s inventory, and Fairy class, which implements fairy state management and player shooting.FairyController.cs: Class used to handle player input for fairies, change the appearance of the fairies, and fairy sucking collision detection.
Implemented fairy particle system updates and position updates.ProjectileSpawner.cs: Class used to handle projectile, fluid, and laser spawning for each player.
TutorialFairies(scrapped): FairyController analog meant for use in the now scrapped interactive tutorial.
Fluids
ElementParticle.cs: Class used to initialize and control fluid particle system particles.
ElementParticleSystem.cs: Class used to initialize and control fluid particle systems.
TutorialElementSystem.cs(scrapped): ElementParticleSystem analog meant for tutorial.
TutorialParticle.cs(scrapped): ElementParticle analog meant for tutorial.
Level
LevelGenerator.cs: Procedurally generates the level map, refreshes and sets tilemap, initially spawns players, spawns resources.
LevelManagerInit.cs: Used to initialize the level manager from the player select or win screen.
Managers
CameraManager.cs: Manages all of the cameras in the level scene.
Implemented camera initialization, camera ratio setup, and camera position update.ElementManager.cs: Manages all elements in the game.
Main resource for accessing base information about elements.FluidManager.cs: Loads and stores references to fluid elements.
LevelManager.cs: This is the main process of the game level.
Stores all references to other necessary in game managers.
Sends controller inputs to player and checks for end conditions of the game.ParticleManager.cs: Loads and stores references to game particles.
ResourceManager.cs: Loads and stores references to game resources.
SoundManager.cs: Loads and stores references to game sounds.
Implements some sound control functions.SpriteManager.cs: Declares SpriteInfo and TileInfo structs used in tilemap calculations.
Declared TileMap class for custom tilemap stitching algorithm.
Loads and stores references to all game sprites.
Implements custom TileMap image stitching algorithm. NOTE: The algorithm works and is correct, but the code itself is repetitive spaghetti and needs to be improved.UIManager.cs: Handles all controller input and traversal through UI menus as well as interact with UI buttons and menus.
Models
ChamberInteractionModel.cs: Class handles all element combination calculations.
ElementCollisionModel.cs: Class handles all element/element collision calculations.
PlayerCollisionModel.cs: Class handles all element/player collision calculations.
Player
PlayerAffector.cs: Handles all player rigidbody effects like knockback, pushback, burn, and slow.
PlayerController.cs: Handles all player animations and maps player inputs to player actions.
PlayerInfo.cs: Stores up-to-date information about the player through the duration of the game.
Handles element collisions.TutorialPlayerController.cs(scrapped): PlayerController analog for tutorial.
UI
EnemyArrows.cs: Controls position and opacity of arrows that indicate enemy positions for each player.
GenerateLevelBackground.cs: Generates a background level for the main menu.
Gif.cs: Enables gifs to be played in tutorial menu.
InitWinnerPed.cs: Initializes the win screen from the level scene.
LoadingScreen.cs: Animates loading screen when loading between scenes.
Menu.cs: Class used to represent and interact with UI menus.
MenuButton.cs: Class used to represent and interact with UI buttons. Interfaces from UIElement.
MenuSlider.cs(scrapped): Class used to represent and interact with UI sliders.
Interfaces from UIElement.PlayerSelect.cs: Handles player select UI stages for each player.
PlayerSelectHandler.cs: Handles input for player select and loading to level scene.
TutorialMenu.cs: Handles tutorial menu stages and input.
UIElement.cs: Interface used by MenuButton and MenuSlider in order to create a list with both of those objects in a Menu.
UI_ButtonPress.cs: Script to animate UI Xbox button presses.
Wells (scrapped)
Well.cs: Implemented health wells gameobject logic.