In this series of videos, you'll learn how to develop a video game project using Unity 5, with Agile development practices in mind.
In Tier 1, we touched on Unity’s programming fundamentals to quickly deliver a prototype.
Tier 1 Complete Project is included so that you can jump right in!
In this second Tier will touch on Performances, Debugging, Design Patterns and other enhancements required to turn the prototype into a release.
This training is for anyone who wants to learn object oriented programming for video games. It has introduction chapters that people familiar with Unity can skip. All the programming basics are covered, and we touch on all major features of Unity. The training focuses on programming, and uses a 2D game project to keep things simple and stay away from fancy graphics features that already are well documented. Whether you know programming or not, whether you're new to Unity or already have some experience, this training will give you the good practices and help you organise yourself in the chaos of a video game project.
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 Object Oriented Programming. 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. I started to put this training course together a while back for a Master Class held with Unity, and decided to take it way beyond that, as I realised many developers were self-taught programmers, ex artist or designer, looking for that true programming knowledge.
I wanted to emphasise on Agile practices, while this is not an Agile training in itself, because of the huge demand for Agile programmers. Agile Development really is a mindset that you cannot push. From a programmer’s perspective, it’s mostly about letting go of your desire for completeness and architecture awesomeness, and willing to deliver playable software as early as possible. The responsibility given to programmers brings a lot of stress, with which comes the need to foresee, plan and control development. Then any change in the plan becomes a trouble. Team confidence is key to Agile Development, and confidence comes with knowledge. The more you know, the more you trust yourself, and the less you doubt. The less you fear change, the less complex and overthought you need to make your code, and the sooner you deliver a prototype. This training aims at empowering programmers with enough knowledge to be confident in their capability to react to design changes and always deliver the most business value in the time they’re given. Now, Agile Development isn’t just about prototyping, and we’ll also touch on Performances, Scalability and Reusability of the code, which is also key to maintain a project.
I really wanted this training to go beyond the usual academic training course. It does have a good share of theory, but everything is put into practice. Its course is well planned and offers a smooth learning curve, while its delivery is more like a live coding session in which I share what comes to my mind as to why I do things along with tips and tricks.
Test your knowledge of performance best practices.
Detailed overview of a design pattern using one of the key concepts of object oriented programming : abstraction.
Defining an IControllable interface to set the behaviours or controllable objects.
Creating a base class, said abstract, from which other classes will inherit.
Implement an interface in a class.
Exposing animation courbes accessible from the editor, to ditribute the x component between steering and thrust x, based on the ship speed (Y).
Using an Animator Controller, we're going to :
- create a State Machine to animate the space ship to match its direction
- create a Blend Tree to animate the thruster based on its speed.
Inheriting from the ShipControllerBase class to add physics 2D support.
Setting a class to "virtual" so that it can be overriden.
Override a method to implement some specific code.
Reimplementing touch controls with a new class from ControlsBase.
Adding damping support when the touch is release to smooth the transitions.
Automatic toggle of componants based on target build platform
Merging firing controls in the new architecture.
Adding the Firing property to the IControllable interface.
Keeping on using the abstraction pattern, we're going to add the ability to raise a shield, to protect and stabilise the ship, using Physics and Animator.
Adding a list of weapons and a weapon switching method.
Adding new weapon type items to collect new weapons.
Adding a new automatic property to the weapons to customise their shooting behaviour.
Adding a new cycle property to the weapons to let them shoot all missiles at once.
Adding a Reset method to the ship for when we need to respawn it.
Test your knowledge of Object Oriented Programming and Design Patterns.
Adding a new component that allows the camera to follow the space ship through the field of asteroids.
Updating the Spawner component so that it can spawn several references, one after another or randomly.
Updating the Game Area to take advantage of Unity UI transform features.
Gathering all areas and sort them by size so that the main area is always the bigger from the scene.
Adding an Item sub areas to always spawn items ahead of the ship.
Resetting the game states when the game is restarted, instead of reloading the level.
Saving and restoring objects' transforms.
Disabling the controls when the game is on pause or over.
Using AnimatorStateMachineBehaviour to pass the Ship Sprite Renderer animation down children objects when in Respawn state.
Using a Custom Shader and AnimatorStateMachineBehaviour to animate the Ship Sprite Renderer Respawn state.
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.