Magigunner 90 Day Challenge: Days 4–7
The goal of this challenge is to make a game and try to release it (or have it going through the release process) within 90 days of starting the project. The game I’m working on is titled Magigunner (for now). Below you can read about days 4–7. You can expect new updates every 3–6 days until the challenge is complete!
90 Day Challenge
Start Date: Tuesday, March 19, 2019
End Date: June 17, 2019
**All fx and art are from the Unity Asset Store with slight edits to fit the environment and VR optimization.
Finals were finally over and I was feeling near dead so I spent most of the day planning the direction for the new dungeon features of the game. While planning I did a lot of Unity Asset Store window shopping and made a gigantic list of assets I want to try to squeeze into the game (art, music, fx, UI, etc). After listing out and favoriting these assets I was feeling a little too inspired to go to sleep so before bed, I set up a starting room which will serve as the main menu for the game.
Code Overview (Day 4)
Didn’t do any coding today
After taking a day off from active development I was feeling a bit rejunevated (plus all of the finals stress was gone). I ended up spending a lot of time on the project. I was able to add new particle fx and begin testing different types of shot variants (elemental shots, chain shots, etc). During this, I figured out how to attach spells to the shots to add even more juice and depth. I finished the day by creating a stationary base enemy that looks at the player and fires projectiles.
Code Overview (Day 5)
The majority of coding today was spent on expanding the spells system and adding the stationary enemy. For the spell system, I definitely plan to add a series of dictionaries (or use some form of JSON) to make it so that guns can look up the different effects of the spells they’re casting, but for now, I am directly connecting spells through the guns and prefabs. I essentially create a PlayerVRWeapon class which is attached to the gun and has variables for Bullet, Grip, etc. Right now I’m using only the Bullet prefab variable. The bullet prefab is a projectile particle fx that detects collisions with the enemy. There is a SpellSpawner component available which can spawn a spell if the bullet hits an enemy or the floor. I also created a ChainMod for bullets which can chain projectiles (right now it doesn’t work good enough to be in the game).
For the stationary enemy, I created a simple behavior tree which repeats forever (or until the enemy is killed). The enemy looks for the player and if the enemy can see the player it waits for x seconds then fires a projectile, waits for x seconds and continues to look for the player. This simple enemy behavior actually made the game start feeling interactive. The player now has to dodge enemy projectiles while trying to shoot the enemies.
On Day 6 I woke up from a dream where the stationary enemies were on the wall (no joke, it could be because I’ve been going to sleep to GDC talks). I immediately went to Unity and created a variation of the stationary turret enemies for use on the walls. The enemies added another dimension to gameplay as now the player has to look up and down to stay more aware of projectiles. After creating the wall stationary enemies I went on and fixed issues I’d been having in Visual Studio (project needed to reload every 5 minutes) and Git (couldn’t push to repo). Each of those issues took some time, but I was able to resolve them and continue working on the rooms for the dungeon.
After adding more art to the rooms, I began creating a state machine for the rooms. At some point, I decided that the dungeon “floor” (level) I was working on would be the tutorial. Thus the rooms would have to play in a certain order to teach the player the rules of the world (which most likely means a state machine for the tutorial level as a whole).
While thinking more on the tutorial aspects of the level I decided the player would need the ability to pick up and drop weapons so that they could grab new ones. Once the player could pick up and drop weapons I added a fire pistol as a new weapon the player could acquire.
Coding Overview Day 6
**Decided on a new format for coding overviews
— Added state machine to rooms to control enemy and barrier spawning
— Created variation of stationary enemies for use on walls
— Player can pick up and drop weapons
— New Weapon: Fire Pistol — shoots fire projectiles that perform a powerful small range AoE
Around the start of Day 7, I was beginning to feel minor burnout (working 10+ hours straight for two days will cause that), but I used that feeling to slow down again and look through the Asset Store. I knew all of my enemies couldn’t be stationary, and I wanted to get a decent looking asset for the boss fight in the tutorial dungeon. I found a Fantasy Rhino asset which used some emission on the body which I loved. I added it to the game and got completely stuck.
I realized I actually have never coded boss fight AI before, however, after doing some googling I found some core answers (speaking overly general and broad, bosses have states/behaviors based on information pertaining to the player, if player is far attack = charge, if player is close attack = hit, after charge rest for 7 seconds, after hit rest for 1 second, etc).
Once I had the boss moving around and slightly animated I went back to creating more guns. I imported a new particle fx package and created a Shield gun and a Lightning gun.
Coding Overview Day 7
— Added tutorial boss with basic AI
— Created Shield gun
— Created Lightning
— Updated Player Weapon Pick up/Drop
— Updated Bullet Spell Spawning
As a whole, I’m a little disappointed that I wasn’t able to complete a solid player loop within the first week. I’m pretty happy with the overall progress over the last few days. The project is definitely starting to feel more like a game now that the player can die and return to a starting area. I’ve also managed to cut back on development time by creating different weapons instead of focusing on the customizable spells early. My primary focus right now is to finish and refine the opening sequence of the player starting the game, being teleported to the tutorial dungeon, beating a room of enemies, getting new weapons, defeating the boss, and being teleported to the starting area. After that, I’ll be able to test core assumptions of the game and if correct I can move onto creating the first procedural level of the dungeon. Sadly in the upcoming days, I’m going to become really busy so we’ll see how much time I’ll be able to put in before my next update.
Goals Going forward
— Add slots to player for holding guns
— Add ammo and cooldowns to guns
— Refine boss AI
— Add animations to boss
— Create “treasure room” for tutorial sequence
— Finish tutorial sequence by Day 14 at the latest
— Main menu area created
— Updated particle fx
— Updated art style
— Player has health and can see damage based on the amount of blood
— Player death leads to player respawning in the main menu area
— Player can now drop and pick up new weapons
— New Weapon: Fire AoE Simpistol
— New Weapon: Lightning AoE Simpistol
— New Weapon: Shield Simpistol
— Enemies are now stationary
— Enemies fire smoky projectiles
— Rooms now detect and trap player on entry
— Rooms spawn enemies
— Rooms deactivate barrier when enemies are killed
— Tutorial Boss Added