Week 3: Arch(conjecture), Perforation, and Gms
1. In your words, what is software architecture, and how do you think about it in relation to making a game in Unity?
Software architecture is about good design and specifically its relationship with the code that comprises the software. I think for me in Unity, there's I always have two conceptions of a game's architecture running through my head: The ideal game architecture and the realized architecture. Often times, I will simply write code that is barely functional, yet I will try to optimize it in ways that due to my lack of knowledge of Unity, are providing marginal improvement whilst maintaining the inflexibility of code in every iteration.
2. What is your primary goal when prototyping, and how does that conflict with "best practices" for software architecture?
While prototyping, ideally I just wanna have simple, functional code that is flexible or simple enough to read that I can later rewrite or modify. The "best practices" for software architecture is mainly focused on code flexibility, and in making prototypes it is often my last priority, apart from when I am collaborating with others.
3. What is decoupling, and why is it essential to software architecture?
Decoupling is about making your code readable and flexible enough to be understood on its own, and how that specific piece of code might fit into the larger systems of the software. Decoupling is essential to software architecture because implicit to the process of decoupling is flexibility, readability and reliability.
4. Present an example of your own code and explain how you could apply one of the concepts found in the chapter (decoupling, flexibility, simplicity, abstraction, etc.)
In this image I attempting to use the UnityEngine.Video loopPointReached eventHandler to handle the booting up of an ingame computer. I could perhaps apply decoupling and simplicity this code, making the different UI portions, RenderTexture material and computer controls into distinct MonoBehaviours, which would make my code readable and flexible.