We may earn an affiliate commission when you visit our partners.
Course image
GameDev.tv Team

Do you ever wonder why your code has so many bugs or find yourself perplexed by code you wrote months ago?

Read more

Do you ever wonder why your code has so many bugs or find yourself perplexed by code you wrote months ago?

Maybe you've heard of Programming Patterns but don't understand when to use them, or you want to know how to actually implement these Patterns in Unity?

In this course you'll take your coding to the next level.

From fundamental programming best practices including how to write clean, maintainable code to what problems to solve with Programming Patterns, how to write common Patterns in Unity and how Programming Patterns implement best practices.

By the end of the course you'll know how to:

  • Spot bad practices.

  • Refactor bad code into better code.

  • Unpack common Patterns to see why they work.

  • Apply Programming Patterns to game specific examples.

If you're an intermediate Unity programmer wanting to make bigger games, without drowning in complex code, then this is the course for you.

To take the course you'll need a strong understanding of basic C# programming (classes, methods, ifs, loops) and some familiarity with more advanced concepts (inheritance, interfaces, events).

All students have access to the Q&A forums where our Instructors, Teaching Assistants and Community are ready to help answer your questions and cheer on your success.

Enroll now

What's inside

Learning objectives

  • Fundamental programming best practices
  • How to write clean, maintainable code
  • What problems to solve with programming patterns
  • How to write common patterns in unity
  • How programming patterns implement best practices

Syllabus

Introduction

In this video (objectives)…

  1. Sam gives an overview of the course and what we can expect to cover.

Read more

In this video (objectives)…

  1. Sam explains the risk of Golden Hammer syndrome and how to use Design Patterns properly.

In this video (objectives)…

  1. We introduce the ways that you can get help, support and contribute to the community.

In this video (objectives)…

  1. Sam explains a famous quote by Phil Karlton and why these two problems are so fundamental to computer science.

In this video (objectives)…

  1. Sam explains the dangers of global state and how to avoid spaghetti code with Loose Coupling and High Cohesion.

In this video (objectives)…

  1. Sam shows us why Composition is more flexible and powerful than Inheritance and why we should try to use it more.

In this video (objectives)…

  1. Sam explains this law, when to apply it and why it leads to better code.

Studying Patterns

In this video (objectives)…

  1. Sam show us the Observer Pattern and when it is a good idea to use it.

In this video (objectives)…

  1. Sam shows us how UnityEvents are one way to achieve the Observer Pattern in Unity.

In this video (objectives)…

  1. Sam shows us how to use Actions and events in C# to implement the Observer Pattern.

In this video (objectives)…

  1. Sam shows us why the Singleton Pattern violates many of our best coding practices. But how to implement it anyway.

In this video (objectives)…

  1. Sam shows us an alternative to the Singleton that we can use in Unity to persist objects between scenes.

In this video (objectives)…

  1. Sam explains an FSM and how to implement it in C#. We see how it can apply to many game situations.

In this video (objectives)…

  1. Sam shows us how to improve the FSM pattern by making it more object oriented and more human readable with the State pattern.

In this video (objectives)…

  1. Sam show why we need Object Pools and how to implement them with Unity's IObjectPool.

In this video (objectives)…

  1. Sam shows us how the Strategy Pattern works and how we implement it in code using an Ability System as an example.

In this video (objectives)…

  1. Sam shows us how to use the Decorator Pattern to add functionality to our Strategy Pattern classes.

In this video (objectives)…

  1. Sam shows us how to take the decorator one step further with trees of nested abilities. Creating a really powerful lego system.

In this video (objectives)…

  1. Sam takes us through the Model-View-Whatever family of patterns and why they are useful to make our UI and game logic more separate.

In this video (objectives)…

  1. Sam show us how to implement Model-View-Presenter in Unity to separate our game logic from UI.

Wrapping Up

In this video (objectives)…

  1. Sam shares his favourite resources for improving your coding.

In this video (objectives)…

  1. Sam explains Robert C. Martin's SOLID principles and how they relate to some of the patterns we've seen and our Coding Commandments.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Provides fundamental best practices associated with clean, maintainable code
Develops various programming patterns, which are highly relevant to game development
Taught by GameDev.tv Team, who are recognized for their work in game development
Requires learners to come in with a strong understanding of Unity and basic C# programming
Doesn't provide learners with direct guidance for choosing when to use which programming pattern

Save this course

Save Programming Design Patterns For Unity: Write Better Code to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Programming Design Patterns For Unity: Write Better Code with these activities:
Organize your course materials
Keeping your course materials organized will make it easier to find what you need when you need it.
Show steps
  • Create a folder for your course materials.
  • Download all of the course materials and save them in the folder.
  • Create subfolders for each topic covered in the course.
  • Move the course materials into the appropriate subfolders.
Review basic programming concepts
Reviewing basic programming concepts will help you refresh your memory and make it easier to learn new material in this course.
Browse courses on Programming Concepts
Show steps
  • Go over your notes from previous programming courses.
  • Read articles and tutorials on basic programming concepts.
  • Take practice quizzes and coding challenges.
Read 'Design Patterns: Elements of Reusable Object-Oriented Software'
This book is a classic in the field of software design and provides a comprehensive overview of Programming Patterns.
View Design Patterns on Amazon
Show steps
  • Purchase a copy of the book.
  • Read the book.
  • Apply the concepts from the book to your own programming projects.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Walkthrough of common Programming Patterns
By following step-by-step tutorials, you can learn how to implement common Programming Patterns in Unity.
Show steps
  • Find a tutorial on a specific Programming Pattern that you're interested in.
  • Follow the tutorial step-by-step.
  • Try to implement the Pattern yourself in a small project.
Join a study group or online forum
Discussing the material with other students can help you understand it better and identify areas where you need more practice.
Show steps
  • Find a study group or online forum that is focused on the same topic as this course.
  • Participate in the discussions and ask questions.
  • Help other students with their questions.
Practice writing clean, maintainable code
Writing code daily will help you improve your understanding of best practices and make your code easier to read and maintain.
Show steps
  • Set aside some time each day to practice writing code.
  • Choose a small project to work on, such as a simple game or a utility.
  • Focus on writing clean, maintainable code, even if it takes longer.
  • Get feedback from other programmers on your code.
Create a personal project using Unity
Working on a personal project will give you the opportunity to apply what you're learning in this course to a real-world scenario.
Show steps
  • Choose a project idea that you're passionate about.
  • Plan the project and create a design document.
  • Implement the project using Unity.
  • Test the project and get feedback from other programmers.
  • Publish the project.
Build a game using Programming Patterns
Building a game using Programming Patterns will give you hands-on experience with how they work and how to apply them in a real-world scenario.
Show steps
  • Choose a game idea that you're passionate about.
  • Design the game mechanics and how you will use Programming Patterns to implement them.
  • Implement the game mechanics using Programming Patterns.
  • Test the game and get feedback from other programmers.
  • Publish the game.

Career center

Learners who complete Programming Design Patterns For Unity: Write Better Code will develop knowledge and skills that may be useful to these careers:
Technical Designer
Technical Designers are responsible for bridging the gap between game design and programming by implementing gameplay mechanics using code. The skills you learn in Programming Design Patterns For Unity: Write Better Code will be invaluable in this role, as you will be able to write clean, maintainable code that is easy to understand and modify. You will also learn how to apply programming patterns to game specific examples, which will help you develop more efficient and effective code.
Gameplay Programmer
Gameplay Programmers create the core gameplay mechanics and systems for video games by implementing programming elements learned in Programming Design Patterns For Unity: Write Better Code. By taking this course, you will learn how to write clean, maintainable code, which is essential for creating complex and engaging gameplay systems. You will also learn how to apply programming patterns to game specific examples, which will help you develop more efficient and effective code.
Game Developer
Game Developers are responsible for designing, developing, and maintaining video games. The skills you learn in Programming Design Patterns For Unity: Write Better Code will be invaluable in this role, as you will be able to write clean, maintainable code that is easy to understand and modify. You will also learn how to apply programming patterns to game specific examples, which will help you develop more efficient and effective code.
Level Designer
Level Designers are responsible for creating the environments and levels in which games take place. By taking Programming Design Patterns For Unity: Write Better Code, you will learn how to write clean, maintainable code that is easy to understand and modify. This will be essential for creating complex and engaging levels that are both fun and challenging for players.
Software Engineer
Software Engineers are responsible for designing, developing, and maintaining software systems. The skills you learn in Programming Design Patterns For Unity: Write Better Code will be invaluable in this role, as you will be able to write clean, maintainable code that is easy to understand and modify. You will also learn how to apply programming patterns to game specific examples, which will help you develop more efficient and effective code.
Web Developer
Web Developers are responsible for designing, developing, and maintaining websites. The skills you learn in Programming Design Patterns For Unity: Write Better Code may be useful in this role, as you will learn how to write clean, maintainable code that is easy to understand and modify. However, this course is more focused on game development, so you may need to supplement your learning with additional resources.
Project Manager
Project Managers are responsible for planning, executing, and closing projects. The skills you learn in Programming Design Patterns For Unity: Write Better Code may be useful in this role, as you will learn how to write clean, maintainable code that is easy to understand and modify. However, this course is more focused on game development, so you may need to supplement your learning with additional resources.
Technical Writer
Technical Writers are responsible for creating documentation for software and hardware products. The skills you learn in Programming Design Patterns For Unity: Write Better Code may be useful in this role, as you will learn how to write clear, concise, and accurate documentation. However, this course is more focused on game development, so you may need to supplement your learning with additional resources.
User Experience Designer
User Experience Designers are responsible for designing the user interface and user experience for software and hardware products. The skills you learn in Programming Design Patterns For Unity: Write Better Code may be useful in this role, as you will learn how to write clean, maintainable code that is easy to understand and modify. However, this course is more focused on game development, so you may need to supplement your learning with additional resources.
Quality Assurance Analyst
Quality Assurance Analysts are responsible for testing software and hardware products to ensure that they meet quality standards. The skills you learn in Programming Design Patterns For Unity: Write Better Code may be useful in this role, as you will learn how to write clean, maintainable code that is easy to understand and modify. However, this course is more focused on game development, so you may need to supplement your learning with additional resources.
Product Manager
Product Managers are responsible for managing the development and launch of new products. The skills you learn in Programming Design Patterns For Unity: Write Better Code may be useful in this role, as you will learn how to write clean, maintainable code that is easy to understand and modify. However, this course is more focused on game development, so you may need to supplement your learning with additional resources.
Data Scientist
Data Scientists are responsible for collecting, analyzing, and interpreting data. The skills you learn in Programming Design Patterns For Unity: Write Better Code may be useful in this role, as you will learn how to write clean, maintainable code that is easy to understand and modify. However, this course is more focused on game development, so you may need to supplement your learning with additional resources.
Machine Learning Engineer
Machine Learning Engineers are responsible for developing and maintaining machine learning models. The skills you learn in Programming Design Patterns For Unity: Write Better Code may be useful in this role, as you will learn how to write clean, maintainable code that is easy to understand and modify. However, this course is more focused on game development, so you may need to supplement your learning with additional resources.
Business Analyst
Business Analysts are responsible for analyzing business processes and identifying opportunities for improvement. The skills you learn in Programming Design Patterns For Unity: Write Better Code may be useful in this role, as you will learn how to write clean, maintainable code that is easy to understand and modify. However, this course is more focused on game development, so you may need to supplement your learning with additional resources.
Data Analyst
Data Analysts are responsible for collecting, cleaning, and analyzing data. The skills you learn in Programming Design Patterns For Unity: Write Better Code may be useful in this role, as you will learn how to write clean, maintainable code that is easy to understand and modify. However, this course is more focused on game development, so you may need to supplement your learning with additional resources.

Reading list

We've selected 12 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Programming Design Patterns For Unity: Write Better Code.
This classic book must-read for anyone interested in design patterns. It provides a comprehensive overview of the 23 most important design patterns, and it is written in a clear and concise style.
Classic guide to effective Java programming. It provides a set of principles and best practices for writing Java code that is correct, efficient, and maintainable.
Must-read for anyone who wants to design and build software that is clean and maintainable. It provides a set of principles and best practices for designing software that is easy to read, understand, and modify.
Must-read for anyone who wants to write clean and maintainable code. It provides a set of principles and best practices for writing code that is easy to read, understand, and modify.
Comprehensive guide to software architecture. It provides a clear and concise overview of the software architecture principles, patterns, and practices, and it is full of helpful examples and exercises.
Great introduction to Java for beginners. It uses a unique and engaging approach to explain the concepts behind Java, and it is full of helpful examples and exercises.
Comprehensive guide to Java concurrency. It provides a clear and concise overview of the Java concurrency API, and it is full of helpful examples and exercises.
Great introduction to design patterns for beginners. It uses a unique and engaging approach to explain the concepts behind design patterns, and it is full of helpful examples and exercises.
Comprehensive guide to agile software development. It provides a clear and concise overview of the agile principles, patterns, and practices, and it is full of helpful examples and exercises.
Classic guide to domain-driven design. It provides a step-by-step approach to designing software that is based on the real-world domain.
Classic guide to software testing. It provides a comprehensive overview of the testing process, and it is full of helpful tips and techniques.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Programming Design Patterns For Unity: Write Better Code.
Intermediate Object-Oriented Programming for Unity Games
Most relevant
Data Structures and Design Patterns for Game Developers
Most relevant
Make Your First 2D Game with Unity & C# - Beginner Course
Most relevant
Introduction to C# Programming and Unity
Most relevant
Making Your First Game in Game Maker Studio 2
Most relevant
Unity & 100+ Asset Store Kits - The Complete Game...
Most relevant
Clean Code
Most relevant
C# Class Development
Most relevant
More C# Programming and Unity
Most relevant
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser