top of page
milesmichell30

Calamity Witch: Implementation Notes

Updated: Nov 11, 2020

Here are some implementation notes from the different development stages of the academic game project Calamity Witch. I wrote these notes over the span of the team project's lifespan, from early to mid-2020. I will put an asterisk next to the implementations I directly implemented.


Early Development/Design Phase

- Set up initial Monogame Project

- Set up a finite state machine using enums and switch statements

* - Put in a placeholder title screen


Minimum Viable Project Phase

* - External Tool: Mono game reads the text file and creates collidable objects (class yet to be implemented), based on the external tool’s created document

* - Map scrolling which simulates player's movement implemented (use wasd to scroll the map in respective directions, indirectly moves the player)

* - Player Projectile firing is completely implemented (click a space on the map to have a projectile fire from the player in the direction of the mouse click, moves until the recent projectile is offscreen)

* - Spell switching: while in-game use keys fgh to switch between spell types (f for fire, g for water, h for earth), UI indication on the top screen indicates which spell the player is using

* - Player Class nearly completed which includes: Class fields and properties, firing projectiles, switching between spells, GUI indication of active spell

- GUI: Main menu has a clickable button which will change the game's state based on which button clicked

* - Projectile Class nearly completed which includes: class fields and properties, method for projectile moving based on a firing direction

- Placeholder StateChanges implemented, with directions to switch between states

* - Abstract Character Class implemented and completed

- General refactoring of many classes to accomplish some of the following above


Polishing Phase

* - External Tool: Mono game reads a text file named map.txt located in the monogame solution, creates collidable objects, and places the collidable object on the map, all based on the contents of the external tool

* - Collidable object, enemies, and projectiles scroll based on player movement like the background map

* - In addition to scrolling with the map, enemies move directly towards the player while they are alive

* - Enemy Firing: While an enemy is alive it fires a projecting in a straight path directly towards where the player was when it was fired

* - Clumsiness Mechanic implemented: There is a random chance for the players projectile to not fire because our witch is clumsy ;)

* - Players and enemies take damage from projectiles. Enemies enrage, take more damage, or take default damage based on that type of enemy and the spell it was hit by

* - Enemy class and its methods: Implemented and completed, which include its constructor, taking damage, dying, and firing projectiles, and enraging

* - Enemy Enraging: when an enemy is hit by a certain spell it enrages, which means its projectiles are faster, the enemy shoots more often, and the enemies appearance changes

- Enemy Manager and its methods: which include spawning random enemies types on the screen at random locations (max 10 at a time), all of those enemies taking damage when necessary, all enemies firing projectiles and moving towards the player

* - Necessary objects/fields are reset anytime the player starts a new game

- Options menu was changed to the instructions menu and now gives a summary of the objectives and controls of the game

* - High scores are saved upon the player's death in that round and are ranked in the high score menu

* - GUI : Current health of the player and their current scored is displayed on the in-game screen, and the death screen displays the score achieved that round

* - General bug fixes and refactoring especially for the Character and Player class

* - Know error: upon entering the game the player shoots a projectile to the upper left corner


2 views0 comments

Recent Posts

See All

Calamity Witch: Early Design

Here is some early design documentation I created for the academic team project. The details I wrote were based on team discussions and...

Comments


bottom of page