This course is the second chapter of a series of training on Unity, focusing on team work between designers, artists and programmers.
Every chapter in this series touches on a specific subject of the game industry. This course follows on the previous chapter, touching on the model-view-controller design pattern and covers everything you need to know about software architecture with Unity.
In this chapter, we're going to start of the end of the previous chapter in which we started to build the data structure and base architecture of a Guitar Hero, or Tap Tap Revenge like game.
As suggested in Agile practices, we're going to start with a simple requirement, which will allow us to think the architecture of the project. We're going to add a Debug Helper component, so that designers, artists and QA can easily test features. We're going to split Inputs from the Controller to make it easier later to support multiple platforms. And we're also going to add depth to our TrackView so that it can be easily enhanced in the future.
We're going to review, and put in practice the Object Oriented Programming fundamentals (Abstraction, Encapsulation, Inheritance and Polymorphism), and take advantage of Abstract Generic Classes and C# Events.
We're also going to apply the SOLID design principles :
We'll touch on evaluation and compare Eager evaluation and Lazy Evaluation, outlining their benefits in the context of video game development.
Last but not least, we'll add custom profiling code to our classes and use the Profiler to compare the footprint of different designs.
At the end of the course, programmers will have all the necessary knowledge and skills to design a game architecture to empower other programmers as well as artists and designers in the team.
A description of current project design and architecture.
A quick overview of the SOLID design principles.
Creating a Debug Helper tool component to help other programmers, designers and artists understand the game flow and major events.
Binding the Debug Helper component to the GamePlay Controller with loose coupling.
A short explanation of Eager and Lazy evaluations, and when to choose one or the other.
Adding support for more events, in respect to SOLID principles.
An overview of the difference between Push and Pull design. Reversing code flow using C# events.
Binding the TrackView just like the Debug Helper, and removing all previous references to the TrackView from the GamePlay Controller.
Using Abstract classes to keep all common properties and capabilities of classes under a common class.
Using Generic classes to implement type free code.
Overview of the Animator type TrackView, and setting it up in the Editor, using animations and Animator State Machines.
*DO NOT FOLLOW ALONG THE VIDEO*. The video is short enough to be viewed a few times. Watch it once, takes notes, watch it again, then do it yourself, and watch it again if you missed something.
Using Generics with multiple types.
Using SendMessage() as a generic method caller.
Using an Abstract class to implement specific event handlers on an object.
Using Interfaces to implement several event handlers on an object.
How do you know you comply to SOLID Design and Object Oriented Programming principles ?
Using Unity's built-in Profiler to benchmark scripts performances.
Profiler sampling limitations.
Implementing a custom profiling sampler.
Using a profiler custom sampler recorder data to display performances on screen.
Using conditional stripping to remove profiling code from final builds.
This video touches on accessibility to collections, like arrays, Lists and Dictionaries.
This video touches on splitting a class declaration across several files, using the ‘partial’ keyword.
Coach and Consultant - Design & Development, Business, Training
[ English ]
With a strong technical expertise and a taste for design, I've had the opportunity to lead teams of creative people through development of innovative projects.
I'm passionate about learning and training, I started giving training early and have been involved in training certification programs. When you work in this industry, sharing your knowledge is not only a duty, it's the opportunity to learn even more.
I'm a self-taught developer myself. I work with Unity since 2011, and was very lucky to meet with mentors who taught me a great deal about OOP. That's a lot to learn about when your background is not in engineering, though, I figured that if I could do it, anyone can.
[ Français ]
Je suis passionné par l’apprentissage et l’enseignement. J’ai donné mes premières formations très tôt et me suis impliqué dans les programmes de certifications de grands éditeurs. Quand on travaille dans cette industrie, partager ses connaissances est plus qu’un devoir, c’est aussi le meilleur moyen d’apprendre d’avantage.
Je suis développeur autodidacte. Je travaille avec Unity depuis 2011 et j’ai eu la chance de rencontrer d’excellents mentors qui m’ont beaucoup appris sur la programmation objet.
C’est beaucoup de choses à apprendre lorsque vous n’avez pas un parcours d’ingénieur. Cependant, si j’y suis parvenu, n’importe qui peut en faire autant.