We may earn an affiliate commission when you visit our partners.
Romi Fauzi

Course updated to be compatible with Unity 2019.4.

Ready to take your game development skills to the next level? Join us in this exciting course where we will teach you how to create a fully functional Shoot Em Up game (think Skyforce or Raiden) from scratch using Unity.

Whether you're an experienced Unity developer looking to expand your skill set or a newcomer to the world of game development, this course is for you. We'll guide you through the entire process of creating a game, starting with object oriented programming and delving deep into Unity's C# API.

Read more

Course updated to be compatible with Unity 2019.4.

Ready to take your game development skills to the next level? Join us in this exciting course where we will teach you how to create a fully functional Shoot Em Up game (think Skyforce or Raiden) from scratch using Unity.

Whether you're an experienced Unity developer looking to expand your skill set or a newcomer to the world of game development, this course is for you. We'll guide you through the entire process of creating a game, starting with object oriented programming and delving deep into Unity's C# API.

But we won't just stop there. We'll provide you with all the assets you need to bring your game to life, including 3D models and audio. And you'll have the freedom to use these assets in your own games as well.

Throughout the course, we'll also introduce you to advanced concepts such as Component Based Design, Movement, Shooting Patterns, Curved Movement with Nodes, Scene Transitions, Saving and Loading, Unity's Scriptable Objects, Coins & Human Rescue, and Medal Achievements – all the features you need to create a game that stands out from the rest.

With our guidance, you'll gain a deeper understanding of Unity's API and how to leverage it to create games that are engaging, fun, and challenging. So why wait? Sign up now and get ready to unleash your creativity and build the game of your dreams.

Note: Basic knowledge of Unity's C# API is recommended.

Who is the target audience?

  • Game developers who want to expand their skill set and learn how to create a fully functional Shoot Em Up game using Unity.

  • Programmers who want to improve their knowledge of Unity's C# API and learn how to leverage it to create games.

  • Designers who want to learn how to bring their game ideas to life using Unity's powerful game engine and tools.

  • Hobbyists and enthusiasts who are interested in game development and want to learn how to create their own Shoot Em Up games.

  • Students who are studying game development or computer science and want to gain practical experience in game development using Unity.

What they say about this course:

Jamie Lowe - "Course is mainly for more intermediate/advanced developers but even if you attempt this as a beginner then you will still learn some valuable stuff, reason for my 5 star rating is for the fact Romi is always on hand to help with any problem and most other courses I have taken on Udemy I find it sometimes have to wait a long time for help and that's not good when needing to solve issues, Romi still updates this course to fix any bugs that arise and that is exactly what students need so you are not left with a broken project at the end of the course, I will still be hanging around making adjustments to my project, thank you"

Lance Spence - "I learned a lot from this course and learned new things that I have not seen covered in other Unity courses such as implementing a pooling system, using platform directives and making use of the Gizmos to visualize objects moving along a path. the instructor is knowledgeable and very responsive to students questions. This is one of the primary reasons he has earned a 5 star rating from me. I highly recommend this course if you've ever wanted to learn how to create an awesome SHMUP."

Enroll now

What's inside

Syllabus

Basic Component Based Scripting & Setup Layers for Camera culling.
Introduction

In this video, I'm going to explain how we are going go with the scirpting concept, and the benefits using a separate component for each action or function.

Read more
Unity Project Setup
Coding and Setup Player, Enemy, Health and Most of the Core Game play

Notes: if someone having issues with the movement, please try changing line 40, from:

Vector3 movement = Vector3.Lerp(transform.position, screenToWorld, speed * Time.fixedDeltaTime);

into:

Vector3 movement = Vector3.Lerp(myRb.position, screenToWorld, speed * Time.fixedDeltaTime);

Temporary Pooling Setup
Scriptable Objects for Weapon Setup
Bullet Prefabs Setup
Shooting Script Setup
Health System pt. 1
Health System pt. 2 (Hit Effects)
Death System
Spawn Objects & Health Bar
Nodes Based Movement Setup
Nodes Based Movement Editor Scripting

There is a slight mistake in the video, apparently we need to change the line 85, from:

realLoopNode = (curvedNodes.Count * (loopToNode / (nodes.Count));

to:

realLoopNode = (int)(curvedNodes.Count * (loopToNode / (float)nodes.Count));

and the reason is, loopToNode/nodes.Count return 0, since both is in integer, and integer can't store float, so we need to make sure to cast one of the value to a float value, so it will resulting in float value, then we can multiply it with our curveNodes.count, so we get an approximate position in curved nodes, and then at the end we need to cast it back to integer, that's why I put (int) in front of the calculation. Hope this helps, so sorry for the confusion.

Nodes Based Movement - World to Local Position
Nodes Based Movement - Rotate Objects
Enemy Waves
Rotating Turret
Missile Turret
Auto Move
Designing Boss
Boss Movement
Human Rescue Setup
Pooling System Continued
Level Design Part 1
Level Design Part 2
Enemy Activator
Coin Setup
Camera Movement
Boss to Level Integration
Enemy Waves Integration
Laser Power Up
Mega Bomb
Shield Power Up
Player Missile
This section will focus on Menu Screne & Data Management.
Level Manager
Stats & Upgrades pt. 1
Stats & Upgrades pt. 2
Stats & Upgrades pt. 3
Upgrade Item Continued
Dialog System
Save System
Scene Loader Progress
Level Menu pt.1
Level Menu pt.2
UI Transitions
Finishing Up UI
This section will focus final adjustment, such as touch control, power up menu, and final builds setup
Audio Setup
Touch Control
Power Up Menu
Applying Stats
Scoring System
Weapon Upgrade Menu
Level Unlocking
Final Builds
Additional Lecture: Node Move Optimization
In this section, we are going to fix any bugs found from the student, so if you encountered a bug, please send me a message, I'll try to reproduce it, and record a video on how to fix it.

In this video, we are going to address a couple of bugs, such as:

  • StatsManager.cs add check when adding value to the LevelCompleted dictionary.

  • Level should not be unlocked if the player dies.

Save this course

Save Create Stunning Vertical Shoot 'Em Up for Mobile with Unity 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 Create Stunning Vertical Shoot 'Em Up for Mobile with Unity with these activities:
Review C# Scripting Fundamentals
Reinforce your understanding of C# scripting fundamentals to better grasp the course's coding examples and adapt them to your own game.
Browse courses on C# Scripting
Show steps
  • Review basic C# syntax and data structures.
  • Practice writing simple scripts in Unity.
  • Familiarize yourself with Unity's C# API.
Review 'Unity in Action, Third Edition'
Use this book as a reference to deepen your understanding of Unity's features and best practices.
Show steps
  • Read chapters related to scripting and game mechanics.
  • Experiment with the code examples provided in the book.
  • Apply the concepts learned to your shoot 'em up game.
Review 'Game Programming Patterns'
Study common game programming patterns to improve your code structure and design for the shoot 'em up game.
Show steps
  • Read chapters related to component-based design.
  • Study patterns for object pooling and state management.
  • Apply these patterns to your game's architecture.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Experiment with Different Shooting Patterns
Practice implementing various shooting patterns beyond those covered in the course to enhance your understanding of game mechanics.
Show steps
  • Research different shooting patterns used in shoot 'em up games.
  • Implement at least three new shooting patterns in your game.
  • Adjust parameters to fine-tune the gameplay experience.
Create a Devlog Series
Document your game development journey through a devlog series to solidify your understanding and share your progress with others.
Show steps
  • Record short videos showcasing your progress each week.
  • Explain the challenges you faced and how you overcame them.
  • Share your devlog on social media or a personal blog.
Optimize Game Performance for Mobile
Optimize your game for mobile devices to ensure smooth performance and a positive user experience.
Show steps
  • Profile your game's performance on a mobile device.
  • Identify areas where optimization is needed.
  • Implement techniques such as object pooling and texture compression.
  • Test your game on different mobile devices.
Contribute to a Unity Open Source Project
Contribute to an open-source Unity project to gain experience working in a collaborative environment and improve your coding skills.
Show steps
  • Find an open-source Unity project on GitHub or GitLab.
  • Identify a bug or feature you can contribute to.
  • Submit a pull request with your changes.
  • Respond to feedback from the project maintainers.

Career center

Learners who complete Create Stunning Vertical Shoot 'Em Up for Mobile with Unity will develop knowledge and skills that may be useful to these careers:
Mobile Game Developer
A mobile game developer focuses on creating games specifically for mobile platforms. This course helps build the skills necessary for this role, as it teaches you how to create a stunning vertical shoot 'em up game for mobile using Unity. The course covers the entire process of game development, from object oriented programming and Unity's C# API to advanced concepts like Component Based Design, Movement, Shooting Patterns, and Scene Transitions. If you want to be a mobile game developer, this course is perfect, as it provides hands-on experience in creating a fully functional game optimized for mobile devices. The course includes topics such as Saving and Loading, Unity's Scriptable Objects, Coins & Human Rescue, and Medal Achievements.
Game Developer
A game developer is responsible for designing and coding video games. This course helps build a foundation for this career, especially for those interested in mobile games. The course focuses on creating a vertical shoot 'em up game using Unity, covering object oriented programming, Unity's C# API, and advanced concepts such as Component Based Design, Movement, Shooting Patterns, and Saving and Loading. Aspiring game developers will find this course beneficial as it provides practical experience in building a complete game from scratch, and it introduces them to all the features they need to create an engaging and challenging game. This course emphasizes advanced concepts such as Scene Transitions, Scriptable Objects, Coins & Human Rescue, and Medal Achievements. Taking this course is one of the best ways to become a game developer.
Gameplay Programmer
A gameplay programmer specializes in implementing the game's mechanics, player controls, and artificial intelligence. This course directly contributes to the skills required for a gameplay programmer. It teaches you how to create a vertical shoot 'em up game using Unity, covering essential aspects such as Movement, Shooting Patterns, and Enemy AI. Prospective gameplay programmers may find this course particularly valuable as it provides hands-on experience in creating a complete game from scratch. The course also introduces you to advanced concepts like Component Based Design, Scene Transitions, and Unity's Scriptable Objects. A gameplay programmer will benefit from this course, because it provides a practical understanding of how to implement gameplay mechanics in Unity.
Unity Developer
A Unity developer specializes in creating interactive experiences and games using the Unity game engine. This course is directly relevant to the work a Unity developer does. It teaches you how to create a fully functional shoot 'em up game from scratch, delving deep into Unity's C# API. Aspiring Unity developers will find the course useful as it covers various aspects of game development, from object-oriented programming to advanced concepts like Component Based Design, Movement, and Shooting Patterns. Furthermore, the course provides assets that can be used in your own games. By completing this course, you gain practical experience and a deeper understanding of Unity's API, allowing you to build engaging and challenging games. A Unity developer should take this course.
C Programmer
A C# programmer specializes in using the C# programming language to develop software applications. This course is directly relevant to the work a C# programmer does, especially if they are interested in game development using Unity. The course delves deep into Unity's C# API, providing you with practical experience in using C# to create a fully functional shoot 'em up game. Aspiring C# programmers may find this course particularly beneficial as it covers various aspects of game development, from object-oriented programming to advanced concepts like Component Based Design, Saving and Loading, and Scriptable Objects. The course can help a C# programmer strengthen their skills and apply them in a real-world game development scenario. Any C# programmer can take this course to advance their career.
Indie Game Developer
An indie game developer typically works independently or in a small team to create and publish their own games. This course is well suited for those pursuing a career as an indie game developer. It guides you through the entire process of creating a fully functional shoot 'em up game using Unity, from object oriented programming to advanced concepts such as Component Based Design, Saving and Loading, and Scene Transitions. As an indie game developer, you need to be versatile and capable of handling all aspects of game development. The course provides you with the necessary skills and assets to bring your game ideas to life. Learning to use Unity's Scriptable Objects and creating engaging Shooting Patterns is essential for an indie game developer. Take this course to create your own games as an indie game developer.
Game Designer
Becoming a game designer involves conceptualizing and designing the gameplay, rules, and mechanics of a video game. This course may be useful for aspiring game designers, especially those interested in mobile game development. Although the course focuses on the technical aspects of creating a shoot 'em up game using Unity, it also provides insights into game design principles. A game designer might appreciate how the course covers advanced concepts such as Movement, Shooting Patterns, Scene Transitions, and Coins & Human Rescue, all of which are essential elements in game design. Understanding the technical limitations and possibilities of the Unity engine, as taught in this course, helps a game designer create more realistic and engaging game designs. Scriptable objects are also essential for a game designer to know.
Software Engineer
A software engineer designs, develops, and tests software applications. This course may be valuable for software engineers interested in expanding their skills into game development. Although the course focuses on creating a specific type of game using Unity, it introduces you to fundamental programming concepts and best practices. A software engineer would appreciate the emphasis on object-oriented programming, component-based design, and the use of Unity's C# API. The course may helps build a foundation in game development, which can be applied to other software engineering projects. The focus on Scene Transitions, Saving and Loading, and Scriptable Objects can be useful in various software development contexts. Software engineers should take this course to move into game development.
Software Developer
A software developer is very similar to a software engineer. Software developers design, develop, and test software applications. This course may be valuable for software developers interested in expanding their skills into game development. Although the course focuses on creating a specific type of game using Unity, it introduces you to fundamental programming concepts and best practices. A software developer would appreciate the emphasis on object-oriented programming, component-based design, and the use of Unity's C# API. The course may build a foundation in game development, which can be applied to other software development projects. The focus on Scene Transitions, Saving and Loading, and Scriptable Objects can be useful in various software development contexts. Software developers should take this course to move into game development.
Technical Artist
A technical artist bridges the gap between artists and programmers, creating tools and workflows to improve the art creation process. This course may be useful for a technical artist, especially those working with Unity. While the course primarily focuses on programming and game mechanics, it also provides insights into how art assets are integrated into the Unity engine. A technical artist may find the sections on Scene Transitions, Movement, Shooting Patterns, and Unity's Scriptable Objects helpful in understanding how to optimize art assets for performance. Taking this course may help a technical artist better collaborate with programmers and artists to create visually stunning and technically sound games. Technical artists may want to take this course.
Artificial Intelligence Programmer
An artificial intelligence programmer develops and implements AI algorithms for various applications, including games. This course may be useful for an AI programmer interested in learning how AI is used in game development. While the course focuses on creating a shoot 'em up game, it also touches upon basic AI concepts such as enemy movement patterns and shooting behaviors. An AI programmer may find the sections on Movement, Shooting Patterns, and Enemy AI helpful in understanding how to implement AI in a game context. The course provides a practical example of how AI can be used to create challenging and engaging gameplay. The course does not deeply cover AI. An AI programmer should take this course if interested in the basics.
Tools Programmer
A tools programmer creates software and scripts that help other developers and artists work more efficiently. This course may be relevant for a tools programmer, particularly if they are working in a game development environment using Unity. While the course focuses on creating a specific game, it also introduces you to Unity's C# API and scripting capabilities. A tools programmer may find the sections on Scriptable Objects and Editor Scripting particularly useful. The course may help a tools programmer understand the needs of game developers and create tools that streamline their workflow. This course is less focused on improving workflow and more on getting the game out there. A tools programmer should consider taking this course.
Virtual Reality Developer
A virtual reality developer creates immersive experiences for virtual reality platforms. This course may be helpful for a virtual reality developer, especially if they are using Unity as their development platform. While the course focuses on creating a 2D shoot 'em up game, it may provide a foundation in Unity's C# API and game development principles. Advanced concepts such as Component Based Design, Movement, and Scene Transitions may be applicable to virtual reality development. A virtual reality developer might use what they learn here to create more engaging and interactive virtual reality experiences in Unity. It is rare that a virtual reality developer would create a 2D game.
Augmented Reality Developer
An augmented reality developer creates interactive experiences that overlay digital content onto the real world. This course may be useful for an augmented reality developer, particularly if they are using Unity as their development platform. While the course focuses on creating a 2D shoot 'em up game, it may provide a foundation in Unity's C# API and game development principles. Advanced concepts such as Component Based Design, Movement, and Scene Transitions may be applicable to augmented reality development. An augmented reality developer can leverage the knowledge gained from this course to create more engaging and interactive augmented reality experiences in Unity. An augmented reality developer should consider whether learning how to create a game will help them.
Backend Developer
A backend developer specializes in creating and maintaining the server-side logic and databases that support software applications. This course may be useful for backend developers who are interested in learning about game development and how backend systems integrate with game clients. The course touches upon concepts such as Saving and Loading, which often involve interacting with backend databases. A backend developer may find the course helpful in understanding the data storage and retrieval requirements of a game. Although the course focuses on the client-side development of a game, it may provide insights into the overall architecture and the role of the backend. A backend developer should only take this course if interested in the basics of game development.

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 Create Stunning Vertical Shoot 'Em Up for Mobile with Unity.
Provides a comprehensive guide to Unity development. It covers a wide range of topics, from basic concepts to advanced techniques. It useful reference for understanding Unity's API and best practices. It is particularly helpful for understanding the fundamentals of Unity and C# scripting, which are essential for this course.
Provides a catalog of common design patterns used in game development. It offers solutions to recurring problems in game design and architecture. Understanding these patterns will help you write cleaner, more maintainable code for your shoot 'em up game. It is particularly useful for understanding component-based design, which key concept in the course.

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