Agile & Multi-Platform Game Dev. with Unity - Tier 2
4.8 (11 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
273 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Agile & Multi-Platform Game Dev. with Unity - Tier 2 to your Wishlist.

Add to Wishlist

Agile & Multi-Platform Game Dev. with Unity - Tier 2

Mastering software architecture, performance optimisation and advanced Unity and C# features.
4.8 (11 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
273 students enrolled
Created by Fred Moreau
Last updated 9/2017
Current price: $10 Original price: $130 Discount: 92% off
5 hours left at this price!
30-Day Money-Back Guarantee
  • 7.5 hours on-demand video
  • 4 Supplemental Resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Use Unity Profiler to analyse performances and memory footprint.
  • Optimise performances with Object Pooling technique.
  • Use the Sprite Packer and optimise 2D rendering performances.
  • Use Object Oriented Programming Abstraction to architecture a multi-platform object controller.
  • Use Animator State Machines to drive conditional sprites animations.
  • Use Animator Blend Trees to blend animations based on input parameters.
  • Use Animation Curves to customise the controller behaviour.
  • Implement a switchable weapons mechanism.
  • Use Animator Layer weight to raise the ship shields.
View Curriculum
  • Install Unity 5.x
  • (Optional) Install Xcode and/or Android SDK
  • (Optional) Follow the Agile Unity Developer Course - Tier 1

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.

Who is the target audience?
  • Artists and/or Designers willing to learn programming
  • Game Programmers willing to learn Unity
  • Non Game Programmers willing to learn game development
Students Who Viewed This Course Also Viewed
Curriculum For This Course
22 Lectures
Tier 2 Introduction - Agile values and practices.
1 Lecture 09:21

This video gives an overview ot Agile values and ground principles, from its origin, and touching on the necessity to plan for optimisation.

Preview 09:21
Chapter 8 : Object Pooling, Sprite Packing and Explosions
4 Lectures 01:34:10
Object Pooling - part 1

Object Pooling - part 2

Frame Debugger & Sprite Packing


Test your knowledge of performance best practices.

Unity Performances Optimisations
2 questions
Chapter 9 : Ship Controller
9 Lectures 03:07:33

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.

Preview 42:10

Exposing animation courbes accessible from the editor, to ditribute the x component between steering and thrust x, based on the ship speed (Y).

Value Mapping

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.

Animator Controller

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.

Physics 2D

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

Touch Controls

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.

Multiple Weapons

Adding a Reset method to the ship for when we need to respawn it.


Test your knowledge of Object Oriented Programming and Design Patterns.

Unity Architecture
2 questions
Chapter 10 : Beauty Pass
8 Lectures 02:42:00

Adding a new component that allows the camera to follow the space ship through the field of asteroids.

Following the space ship.

Updating the Spawner component so that it can spawn several references, one after another or randomly.

Spawning random Items.

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.

Nesting Games Areas

Resetting the game states when the game is restarted, instead of reloading the level.
Saving and restoring objects' transforms.

Restarting the game

Disabling the controls when the game is on pause or over.

Disabling the controls

Using "nested" coroutines and animator parameters to :
  • disable/enable renderers, colliders and controls
  • spawn explosion objects
  • reset and respawn the ship
  • change the ship appearance while it's respawning
Respawning the ship

Using AnimatorStateMachineBehaviour to pass the Ship Sprite Renderer animation down children objects when in Respawn state.

Respawn State Behaviour

Using a Custom Shader and AnimatorStateMachineBehaviour to animate the Ship Sprite Renderer Respawn state.

Animation Free Respawn State Behaviour & Shader
About the Instructor
Fred Moreau
4.5 Average rating
158 Reviews
949 Students
8 Courses
Game Developer, Unity Instructor, Agile Coach

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.