We may earn an affiliate commission when you visit our partners.
Wilmer Lin

Note: although the lectures were recorded with an older version of Unity, the final project runs well on Unity 2019

Unity 3D  has quickly become one of today's fastest growing game development tools. Learn more about this fascinating game engine in our project-based class, where we build a Tetris-style puzzle game from scratch. If you have some basic knowledge of C# and Unity, take your skills to a new level by exploring this short course in remaking a classic arcade game.

Read more

Note: although the lectures were recorded with an older version of Unity, the final project runs well on Unity 2019

Unity 3D  has quickly become one of today's fastest growing game development tools. Learn more about this fascinating game engine in our project-based class, where we build a Tetris-style puzzle game from scratch. If you have some basic knowledge of C# and Unity, take your skills to a new level by exploring this short course in remaking a classic arcade game.

If you have completed a few basic tutorials on Unity and have some basic knowledge of C# (variables, loops, data structures, etc.),this class is for you. We take a project-based approach, where we follow one game from start to finish.

We will:

  • start with a blank Unity project and flesh out a fully working game.

  • learn some fundamental techniques for creating your own puzzle game

  • follow several C# scripts line-by-line and learn how to organize our scripts logically and cleanly

  • port our application to iOS and Android.   See your glorious game run on a mobile device.

What is covered:

  1. Setup our project settings and environment

  2. Breaking down the gameplay mechanics

  3. Creating a Board class to store our data

  4. Laying out user interface items

  5. Creating our game piece Shape class

  6. Setting up our master GameController class to handle logic

  7. Apply Time to our game logic

  8. Script to handle player input

  9. Add sound effects to game events

  10. Apply particle effects to add some punch to our graphics

  11. Making a score manager to track player progress and high scores

  12. Enhance our game with extra features to make it a polished experience

Join the democratization of game development. Level up your Unity 3D skills and build your Tetris-style game today.

Enroll now

What's inside

Syllabus

Introduction to the game that we are building... and some history from 1984!

Unity has quickly become one of today's fastest growing game development tools.  Learn more about this fascinating game engine in our project-based class, where we build a Tetris-style puzzle game from scratch! 

If you have some basic knowledge of C# and Unity, take your skills to a new level by exploring this short course in remaking a classic arcade game.

Prerequisites:  Before you begin this course you should have:

  • Mac or PC capable of running Unity

  • Unity 5 or above (Personal edition)

  • Basic knowledge of Unity's interface

  • Some basic working knowledge with C# language

  • Optional: Photoshop or any image-editor to customize art assets

Note: the final project has been tested with Unity 2019.1 and works great!


What is the target audience?

  • Beginner to intermediate developers who want to continue exploring Unity 3D

  • Game artists who want to improve their coding skills in C#

If you have completed a few basic tutorials on Unity and have some basic knowledge of C# (variables, loops, data structures, etc.), this class is for you!  We take a project-based approach, where we follow one game from start to finish.

We will:

  • start with a blank Unity project and flesh out a fully working game.

  • learn some fundamental techniques for creating your own puzzle game

  • follow several C# scripts line-by-line and learn how to organize our scripts logically and cleanly

What is covered:

  1. Setup our project settings and environment

  2. Breaking down the gameplay mechanics

  3. Creating a Board class to store our data

  4. Laying out user interface items

  5. Creating our game piece Shape class

  6. Setting up our master GameController class to handle logic

  7. Apply Time to our game logic

  8. Script to handle player input

  9. Add sound effects to game events

  10. Apply particle effects to add some punch to our graphics

  11. Making a score manager to track player progress and high scores

  12. Enhance our game with extra features to make it a polished experience


Join the democratization of game development!  Level up your Unity 3D skills and build your Tetris-style game today!

Read more

Before you take this Course, you need:

  • Mac or PC capable of running Unity 5
  • Unity 5 (Free Version)
  • Basic knowledge of Unity's interface
  • Basic working knowledge with C# language
  • Optional: Photoshop or any image-editor to customize art assets

Each lecture of this course will build on the last. So you should be able to follow straight through these lessons if you are going quickly in about a day or a weekend.

Periodically there will be "save points," where you can download an entire project in case you lose your way or you want to pick up from a particular point and start in the middle.

Look for the Lectures marked Save Point so you download the project from the Downloadable Resources tab.

Flashbacks from 1984 to present day!

An overview of our project structure. Download the TetrisCloneStart.zip file if you want a project with the folders already created!

This slide shows our sample project organization structure.

Download the TetrisCloneStart.zip file if you want a project with the folders already created!

Here we will introduce the core classes of our game:

  • Board
  • Shape
  • Spawner
  • GameController

Here we set up our Board class, which will draw an empty grid and store our shapes... eventually.

Create an empty grid square in Photoshop or use the one from the Downloadable Resources tab.

We will need to setup some camera settings to see our game board.

We create a prefab from our empty square sprite, so it can be replicated to form a grid.

Let's create a method to draw the empty grid.

Here we cover a few ground rules for how our methods and variables are named for this project.

Finally we get our empty grid drawn on screen!

Let's create a two-dimensional array to store our landed Shapes.

Our game board and Board class is complete.

Let's start exploring Unity's User Interface system. If you already have experience with the UI system and don't want to go through the section, skip to Save Point III and resume the course in the next section.

Exploring our first Canvas object in Render Mode: Overlay.

Here we will start layout out our user interface.

We use Layout Groups to space the icons in our lower panels automatically!

We add a border to our game board using a nine-slice sprite.

We add a Canvas in Render Mode: World space to add a background.

This Save Point includes our roughed out but non-functional interface along with our rudimentary Board class.

Make sure you are in Pivot mode when setting up the Shape Prefabs in the next lecture.

We lay out our seven Shape prefabs that will be our main game pieces.

This Save Point has our Board, Shape, GameController and Spawner classes created, but has no game mechanics implemented yet.

Move and Rotate our Shape

Here we being to explore Unity's Time class, which will help us create events that happen at an interval.

We add some methods to the Board class to check for boundaries.

Here we store any Shapes that land in our Board's grid array.

Here we will explore the Input class and the Input Manager, where we will setup our "virtual axes" for MoveRight, MoveLeft, MoveDown and Rotate.

We'll briefly examine the Input.GetKey and Input.GetKeyDown methods and refactor our code to use a PlayerInput method in our GameController class

Here we finish setting up all four inputs: MoveRight, MoveLeft, MoveDown and Rotate. We should be able to manipulate our active shape once we are finished!

We add the ability to clear rows when they are complete!

Let's check for our Game Over condition!

Our first iteration of the game is complete!

We setup our SoundManager class, which will help us playback sound effects and music.

We setup an AudioSource for our BackgroundMusic audio and configure the SoundManager to control music playback.

Let's add some sound effects.

We add some sounds when we move our Shapes.

Let's add some sounds when we clear a row.

We add some vocal effects for different events in our game.

We've added some basic background music and sound effects to our game!

We create a class that lets us toggle between two alternate icons.

We add the toggle that allows us to switch our default rotation direction.

We create a Pause button to pause to the game.

We create a Screen Fader to help transition our game to its starting and end states.

Here we finish our Screen Fader and learn how Coroutines work.

We have added some UI enhancements to our project!

The ScoreManager class will help the game keep score of player progress.

Let's add some UI to show off our score!

We finish the Lines and Level indicator in the lower left of the user interface!

Our game can now keep score!

We add a helper "ghost" to preview where our Shape will land. Definitely a great gameplay feature!

We modify the Spawner class to give us a three-Shape preview of things to come.

We finish the Shape queue!

We add a small button to hold a Shape for layaway!

We finish the Hold button.

We have finished our Ghost, Shape Queue and Hold button features!

We learn to jazz up our game with some particle effects!

Let's make a simple glowing square effect that we can re-use through our game.

We add the vertical streak effects to accompany our Glowing Square effect.

No glowing square is complete without sparkles!

The Particle Player class allows you playback multiple ParticleSystems at runtime.

Let's modify our Glowing Square effect to show off an effect when a whole row clears!

Let's make the Row Glow effect work for more than one row at a time!

We modify the Glowing Square effect to trigger an effect whenever a Shape lands on the board.

We swap out our Rounded Block sprite to give our game a little more style. We also add lots of ParticleSystem goodies to help make our background come alive!

Let's add some more ParticleSystem goodies and trigger them with events in our scripts!

Let's build our game as a Standalone application!

Let's convert our PC and Mac Standalone project to use either iOS or Android!

We connect our Android device and prepare it to receive our Unity game!

Here we setup the device for Developer Options and edit Unity's Preferences to point to our SDKs.

In this lesson, we will set up our Developer account, download Xcode and then prepare our iOS device for building!

We Build and Run for Android! Finally!

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Takes a project-based approach, guiding learners through the creation of a Tetris-style game from a blank Unity project to a fully functional application, which is great for portfolio building
Covers the fundamentals of puzzle game creation in Unity, including setting up project environments, creating game mechanics, and implementing user interfaces, which are transferable skills
Explores C# scripting within the Unity environment, offering line-by-line explanations of scripts and guidance on organizing code logically, which is helpful for improving coding skills
Includes instructions for porting the game to iOS and Android, allowing learners to see their creation running on mobile devices, which is useful for mobile game development
Requires Unity 5 or above, but the final project runs well on Unity 2019, which may mean that some of the course content is slightly outdated
Assumes basic knowledge of C# and Unity, so learners without this foundation may need to acquire it before starting, which may pose a barrier to entry

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Build a tetris game in unity/c#

According to learners, this course offers a largely positive project-based experience for building a Tetris-style game using Unity and C#. Students frequently praise the step-by-step instructions and the satisfaction of completing a fully functional game. While the lectures were recorded with an older Unity version, reviewers generally confirm that the final project works well on newer versions like Unity 2019, though some minor adjustments might be needed. The course is considered a good next step after basic tutorials and is particularly beneficial for those wanting to apply foundational C# and Unity knowledge to a practical project. Some learners found the pace occasionally fast or felt that certain prerequisites were assumed, but overall, the course is seen as a valuable way to gain hands-on game development experience.
Not for absolute beginners to Unity/C#.
"Definitely requires the basic C# and Unity knowledge mentioned in the prerequisites."
"If you haven't done any basic Unity tutorials, you might struggle with some concepts early on."
"Assumes you know how variables, loops, and basic Unity interface work."
"This course is a great second step, not the first step into Unity."
Course uses older Unity, but project updates work.
"While the course uses an older version of Unity, the final project files for 2019 worked perfectly."
"Had some minor issues with Unity 2020 syntax, but was able to adapt with a little research."
"The lectures were recorded in an older Unity, but the core concepts are still applicable."
"It would be great if the course was updated for the latest Unity, but it's still functional as is."
Bonus sections add polish to the game.
"The ghost shape and shape queue features were excellent additions that polished the game."
"Enjoyed adding sound effects and particle systems to make the game more engaging."
"Bonus features like the hold function and scoring manager made the project feel complete."
"Adding polish through sound and visuals was a great learning experience."
Helpful introduction to building for mobile.
"The section on building for iOS and Android was a valuable addition."
"Great to see the game running on my phone!"
"Mobile build steps were clear and easy to follow."
"Learned the basics of preparing a Unity project for mobile deployment."
Learn essential game development techniques.
"Covered essential aspects like movement, rotation, input, and scoring."
"Learned fundamental techniques for building puzzle games that I can apply elsewhere."
"The sections on board management and shape handling were particularly useful."
"It provided a solid foundation in core gameplay logic implementation."
The course provides clear, easy-to-follow steps.
"The instructor breaks down complex tasks into manageable, easy-to-follow steps."
"Each lecture built nicely on the last, making it simple to follow along."
"The explanations were clear and precise, allowing me to replicate the code and concepts easily."
"I appreciated the logical progression through building the game components."
Students appreciate building a complete game.
"I really liked the project-based approach. It feels great to have a finished game at the end."
"Building the Tetris clone step-by-step was an excellent way to learn."
"The focus on creating a complete project from scratch was very motivating and practical."
"I found the hands-on nature of building a specific game the most effective learning method."

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 Make a Tetris-style Puzzler in Unity with these activities:
Review C# Fundamentals
Strengthen your C# foundation to better understand the scripting in Unity.
Show steps
  • Review variables, loops, and data structures.
  • Practice writing simple C# scripts.
  • Complete online C# tutorials.
Review Unity Interface
Familiarize yourself with the Unity interface to navigate the project efficiently.
Show steps
  • Explore the Unity editor layout.
  • Practice creating and manipulating game objects.
  • Learn about the different panels and windows.
Simple Block Game Prototype
Build a basic block game to reinforce the concepts learned in the course.
Show steps
  • Create a simple grid-based environment.
  • Implement basic block movement and collision.
  • Add scoring and game over conditions.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Document Game Development Process
Document your game development process to solidify your understanding and share your knowledge.
Show steps
  • Record your screen while developing the game.
  • Annotate the video with explanations of your code.
  • Share your video on a platform like YouTube.
Unity in Action, Third Edition
Reference this book to gain a deeper understanding of Unity concepts and techniques.
Show steps
  • Read chapters related to game mechanics and scripting.
  • Experiment with the code examples provided in the book.
Game Programming Patterns
Study game programming patterns to improve code structure and maintainability.
Show steps
  • Read chapters related to game design patterns.
  • Apply the patterns to your Tetris-style game.
Enhance Game with New Features
Expand the game with new features to showcase your skills and creativity.
Show steps
  • Implement a new game mode or power-up.
  • Add more complex scoring mechanics.
  • Design and integrate new visual effects.

Career center

Learners who complete Make a Tetris-style Puzzler in Unity will develop knowledge and skills that may be useful to these careers:
Hobbyist Game Developer
Many people enjoy game dev as a hobby, and this course delivers that experience by creating a Tetris-style puzzler in Unity. In the lectures, you will learn about Unity's game engine while building a game from scratch. If you have some basic knowledge of C# and Unity, this course may help improve your skills as you explore a remake of a classic arcade game. You may learn fundamental skills to add to your hobbyist resume.
Unity Developer
As a Unity developer, you specialize in using the Unity engine to create games and interactive experiences. This course directly aligns with this path by guiding you through the development of a Tetris-style puzzle game within Unity. You will learn how to set up a Unity project, implement gameplay mechanics using C#, design user interfaces, and add features like sound effects and particle effects. By porting the application to iOS and Android, you can also gain experience with mobile game development. This course may be useful if you want to specialize in Unity.
Game Developer
A game developer brings video game concepts to life through coding, design, and testing. This course, focused on creating a Tetris-style puzzler in Unity, helps build a foundation in game development. You can gain experience with Unity's game engine, C# scripting for game logic, and techniques for organizing scripts, all of which are essential for a game developer. Furthermore, the practical approach of developing a game from start to finish, including user interface layout, sound effects, and particle effects, gives exposure to aspects of game development. If you want to become a game developer, this course may give you hands-on experience.
Indie Game Developer
An indie game developer typically works independently or in a small team to create and publish their own games. This course offers a practical project that can serve as a portfolio piece or the foundation for a larger project. You will gain experience in all aspects of game development, from coding and design to user interface creation and deployment. The ability to port the game to iOS and Android can expand your reach as an indie developer. If you are seeking to become an Indie Game Developer, this course can help you make your own games.
Gameplay Programmer
Gameplay programmers specialize in implementing the core mechanics and interactive elements of a video game. This course helps get you started by providing hands-on experience with implementing gameplay mechanics in Unity using C#. You'll learn how to handle player input, implement game rules, manage game state, and create special effects. The course's focus on building a Tetris-style game, including features like shape spawning, movement, and collision detection, gives you practical experience. This course may be useful for those looking to be Gameplay Programmers.
Mobile Game Developer
Mobile game developers focus on creating games specifically for smartphones and tablets. This course helps provide a strong foundation by guiding learners through the process of building a Tetris-style game and deploying it to both iOS and Android platforms. You will gain familiarity with adapting game mechanics for mobile devices, handling touch inputs, and optimizing performance for mobile hardware. This course may be useful if you're interested in mobile game development.
C Programmer
C# programmers write code using the C# language, often in the context of game development or other software applications. While this course focuses on building a game, it offers hands-on experience with C# scripting within the Unity environment. You will learn how to implement game logic, handle user input, and manage game data using C#. The course's emphasis on following C# scripts line-by-line and organizing them logically can improve your coding skills. If you are looking to work as a C# Programmer, this course can provide applied experience.
Game Designer
Game designers conceptualize and design the gameplay, rules, and mechanics of video games. While this course focuses on the technical implementation of a game, it exposes you to key design considerations involved in creating a puzzle game. You will learn how to break down gameplay mechanics, design user interfaces, and implement features like score tracking and special effects. By building a complete game from start to finish, you can gain a practical understanding of the game design process. This course may be helpful for those who want to work as a Game Designer.
Software Developer
Software developers are involved in the coding, design, and testing of software. In this course, you'll develop a Tetris-style game in Unity, helping build your skills in these areas. You'll write C# scripts, design a user interface, implement game logic, add sound effects, and test the game's functionality. Successfully completing this project can help give you a portfolio piece to showcase your skills. This course may be helpful for becoming a Software Developer.
Application Developer
Application developers create software applications for various platforms, including desktop, web, and mobile. This course can help learn the fundamentals of application development by building a functional Tetris-style game. You will gain experience with user interface design, event handling, and mobile deployment. The course's hands-on approach to building a complete application from start to finish is a useful experience. If you want to become an Application Developer, this course may be for you.
Software Engineer
Software engineers design, develop, and test software applications. While this course focuses on game development, it can help build fundamental programming skills applicable to software engineering. You will gain experience with C# programming, object-oriented design, and problem-solving, all of which are valuable in software development. The course's emphasis on organizing code logically and cleanly can improve your coding practices. This course may be useful for aspiring Software Engineeers.
Technical Artist
Technical artists bridge the gap between art and programming in game development. This course helps build skills in both areas by guiding you through the process of creating a visually appealing and functional game. You will learn how to implement particle effects, design user interfaces, configure animations, and optimize game performance. The course's project-based approach offers solid footing if you want to be a Technical Artist.
Simulation Developer
Simulation developers create virtual environments for training, research, or entertainment purposes. The skills gained in this course may be useful for creating interactive simulations, especially those involving physics or spatial reasoning. By learning how to implement game logic and control objects in a virtual environment, you can apply these skills to create simulations for various purposes. This course may be helpful for those who want to become Simulation Developers.
Augmented Reality Developer
Augmented reality developers create applications that overlay digital content onto the real world. The skills gained in this course, particularly those related to Unity and mobile deployment, can be relevant to AR development. The knowledge of Unity is important for creating AR experiences, and the experience of deploying to mobile platforms is essential. This may be useful for developers who want to pivot to Augmented Reality Developer roles.
Virtual Reality Developer
Virtual reality developers create immersive experiences for virtual reality headsets. Again, the skills gained in this course, particularly those related to Unity, apply to virtual reality. This is helpful for creating VR experiences and the knowledge of Unity is important for this position. The experience gained here may be transferable to Virtual Reality Developer roles.

Reading list

We've selected two 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 Make a Tetris-style Puzzler in Unity.
Provides a comprehensive guide to Unity development, covering a wide range of topics from basic concepts to advanced techniques. It valuable resource for both beginners and experienced developers looking to deepen their understanding of Unity. The book is commonly used as a textbook at academic institutions and by industry professionals. It adds more depth and breadth to the existing course by providing detailed explanations and practical examples.
Explores common design patterns used in game development, providing solutions to recurring problems. It is particularly useful for understanding how to structure and organize code in a game project. While not specific to Unity, the principles discussed are applicable to any game engine. This book is more valuable as additional reading than it is as a current reference, providing a broader understanding of game development principles.

Share

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

Similar courses

Similar courses are unavailable at this time. Please try again later.
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 - 2025 OpenCourser