470 - Sprint 1

 This sprint was a successful first step, but I feel like we were limited by two distinct things.

 One is that we didn't necessarily have a prepared backlog. This lead to us being assigned a minimum of work to do, and it took a while to get some wider context on the things we had to do. Second, a significant amount of our group got sick and it kind of limited the things we could really do. There was a huge pause on the programming side especially as I was left to focus mostly on enemy spawners. This was kind of a bummer, but I made some progress on it and I was proud of my coding.

I've had a lot of trouble in the past with decoupling my code. It's just too easy for me to take shortcuts and create an architectural mess that just doesn't work out at all longer term. This time, I really took the time to learn from my mistakes and I worked to create an event-based system for spawning. That way, things can be tested without necessarily having everything in scene, and I double checked to make sure that everything could work and find what little necessary components they need before starting.

 



The AI avoiding an obstacle to reach an objective. Riveting!

 As it is right now, the AI navigation system is disappointingly simple. Everything that could be done to create nuance for now can already be done by the navmesh. I thought I'd have an interesting challenge, at least, when it comes to navigating through temporary obstacles and traps, but it turns out you can actually rebake the navmesh as needed.  We'll see what we require for a state-based AI later, though.

 


Spawner going from waiting, to spawning enemies every 'round', and showing some randomness by spawning a bowman on top of the regular footmen. 

 The spawner system, I think, ended up being pretty well thought out. There's a scriptable object to describe initial values, exposed options for setting the spawn rate and enemy count, and everything works off of events so there isn't any real drama or concerns over different scripts having mutual dependencies. 

 The spawners go inactive, then wait for a certain amount of time. Once that time is up, they reactivate, and then start spawning. Once the amount of enemies for the wave has been spawned, they once again deactivate. What I like about this system is that I've given myself ultimately enough space in order to extend it as much as is needed for the scope of this project. I can adjust the round timers, create a second count in order to keep track of enemy deaths, and use the scriptable objects to either create a list that allows for bespoke waves of enemies, or interpolates between two different sets of wave data to create some escalating difficulty.

 


 Code snippet for randomness based on Unix Time. Neat!

 

An inactive spawner, after producing a certain amount of enemies. It'll go back to orange once the intermission stage has passed.

 One thing I also enjoyed finding out about was how to properly employ randomness in this sprint. Initially, I had only thought to use a set seed, but then found myself frustrated when I couldn't adequately test my project to make sure it worked. This was surprising to no one but myself, but as it turns out, when you use the same seed over and over again, you get the same results. Instead, I figured out a way to just use a seed that depends on an integer provided by Unix Time within the C# System library. This isn't entirely random, but it's good enough for the scope of this project. I want to make sure enemy spawns are random, I'm not trying to create a hard-to-crack password or anything. This results in a system where any random generation in regards to the spawners is easy to test, reliable, and it can be applied to /any/ random generation. As the designer wishes for the spawners to be randomly selected on round start by next sprint, this will be convenient.

 Overall, I was happy with this sprint and I'm optimistic about this group. I feel like we have it in us to do a lot of good work. I'm excited to see where we're going with this game, and even if I feel as if the scope of the game as it is may be too much for us, I'm eager to take on the challenge anyways. 

Comments

Popular posts from this blog

470 Sprint 2

470 Sprint 5