So for this week, my goals were to implement enemies and different ammunition types or firing styles to put it more accurately. Spawning in enemies was quite a lot of fun and surprisingly easier then I expected. Much in the same way you implement a weapons rate of fire, so too to spawn an enemy. I managed to get each enemy spawning with its own characteristics at random spots within the game space. Sometimes however, the enemies spawn very far from the player and without audio feedback the player will have no way of knowing they’ve spawned at all. If I find the time I would like to create the code that will still spawn the enemies at random spots but within visual distance from the player.
Once I implemented the spawn manager, I then ran into the problem of basic enemy movement. I pondered this problem for a few minutes and realised to keep it simple, this is my first game ever, no need for anything fancy just yet. So the simplest enemy movement I could think of was to simply have the enemy look at the player, then move at ‘Vector3.up’. In my head as long as the enemy rotated towards the player the translate direction should always be ‘up’. Suddenly a pang of fear entered my body. The word ‘Rotation’ had left me in the fetal position last time I tried to figure it out. Would I be defeated again?? I surfed Google and Youtube with apprehension terrified that I would once again waste hours searching for a solution. Fortunately, one of my fellow classmates took pity on me and saved me. I successfully implemented enemy movement, but I’m still confused about rotations, no matter how hard I look at rotations I just can’t figure it out. Hopefully its just something that comes with time.
Upon completing enemy movement, I then set to work on different firing styles. In Geometry Wars it appears the different firing styles are based upon score. I realised quickly that with my poorly optimized enemy AI, chances are the player will never be able to get to numerous score checkpoints. So this left me with two ideas, either A: have the player switch weapon types with number keys or B: have pick-ups. After analysing ‘A’ I realised that it is simply beyond my abilities at the moment as I would have to address re-loading and loading mechanics. So I went with ‘B’ knowing that pick-ups would use the ‘Rate of Fire’ logic I have already implemented. So immediately I was able to implement a faster firing higher velocity ammunition type that also had a cooldown, which I was pretty impressed to figure out on my own. Now onto the ‘Bomb’. Frustratingly I couldn’t implement this in the way I wanted to. Although I did get the bomb working, the feedback mechanisms for it were non-existent. I couldn’t figure out how to adjust the score appropriately with the bomb nor could I address visual feedback when the bomb shockwave expanded from the player. Frustrating.
Well, that was it for this week. While I did manage to implement everything I wanted to in this week, there was a lot of polish that I simply don’t have to ability to implement just yet. I’m realising now that its the little details that bring you down, and its unfortunately these little details that tend to make a game’s feedback systems great. So for next week my goals are to implement a basic score and death system, address as much of the visual and audio feedback mechanisms as I can possibly figure out, and hopefully get a scoreboard working. Although I’m not confident with a scoreboard as I’m sure it involves arrays, which is a weak point for me.