Week one has passed in my 8 week intensive, and today marks day 21 of my 100 day challenge. Last week was certainly not an easy week and was filled with tons of new concepts and of course challenges to overcome. The first of many challenges was to create a NavMesh for the enemies to move on, and then to create logic for how that movement would work. Such logic as how fast should the enemy move, and when they are spawned should they spawn right after each other or should there be a delay based on type of enemy? After that I had to determine what type of class structure I would be using, and if the class was a manager class or not. For example I currently have a class just to say what the Mechs are called, and a few specs about each of them. This class also inherits from the Item Class which is a class that every Game object will inherit. As the week progressed and the tasks started to add up I spent most of day 3 researching and learning.
This was very helpful because on day 3 in particular I decided to tackle several new concepts, Singletons, MonoSingletons, and Pooling. A Singleton in a nutshell is a way to define a script such as a SpawnManager script as “This is the only one of these” and it makes it so much easier to communicate with that script. A MonoSingleton is a way to define this same concept and then use it much like you would with script inheritance. Where instead of inheriting :Monobehaviour, you would instead inherit : MonoSingleton. This would include Monobehaviour and the defined traits of a Singleton. Once again just a nicer and cleaner way of script communication. I have read that it is possible to over use this function and I can see how someone might want to make everything into a Singleton, but at the same time I guess you have to ask yourself is it really necessary?
Another Challenge for this week and first for me was to learan how to use GitHub, and GitBash. GitHub is called a repository where you can store your entire project, scripts, assets, and all the important files that make it work. The advantage to this is that you have a digital copy of whatever it is you are working on, but also it allows you to collaborate with others. For coding this is especially handy, as I can invite someone like my team lead to have access to my GitHub and they can in turn be able to see all the code I have written without calling me up and doing a screen share. If they wanted they could even adjust the code and then send it back to me for further work. You can imagine how useful that would be when working with people all over the world. Pictured above are the notes I have learned and use to succesfully navigate GitBash. Now unlike GitHub, GitBash does not store information but is merely the communication between the repository and my computer. We use GitBash to access our computers files and folders and then send the information we want to the repository and we can also pull information from the repository to our computer. I have not had any issues with this process yet “Knock on wood” but I have heard horror stories of people loosing entire projects by improper use of these tools.
One of the other majors challenges I dove head first into this week was Object Pooling. This is a concept where you create and re-use the same number of GameObjects, instead of Instantiating them every time you need one. For instance in my game I created a list of 10 enemies and when I need one I simply just activate it, and when I need it to die or its destroyed, I deactivate it. This way our game is less demanding on the system and we are able to continuously use the same game objects, with the effect of it looking like new ones are being made.
Here is a little video of the first wave from the pool. For the video I sped up the enemies a little bit and had them activate very close together. In real time though there will be more space between them in order to give the player a fighting chance. Finally at the end of the week we had our team meeting where I learned all about Scriptable Objects, and optimization. For the rest of today I plan on prepping for the week with some of the C# survival guide and getting up to speed on LINQ(Language-Integrated-Query) which is an optimized form of communication, and of course getting into Delegates and Events. This is a section that has been highly recommended by several individuals within the coding community and I cant wait to dive in. As always Mahalo for reading and all of the support. I am loving this journey and it has been exciting to share it with you all.