We may earn an affiliate commission when you visit our partners.
GameDev.tv Team and Rick Davidson

Learn how to include three essential game mechanics, Shops, Special Abilities and Traits, in your games.

This highly acclaimed series was over 200% funded on Kickstarter, and is designed for intermediate users of Unity. We recommend you take at least the first half of our Complete Unity Developer 2D or 3D, or equivalent, as a prerequisite.

Read more

Learn how to include three essential game mechanics, Shops, Special Abilities and Traits, in your games.

This highly acclaimed series was over 200% funded on Kickstarter, and is designed for intermediate users of Unity. We recommend you take at least the first half of our Complete Unity Developer 2D or 3D, or equivalent, as a prerequisite.

You can use the code we create in the course in any game or project you build. We’ll be using an RPG as an example. You don't need to have completed the previous parts of the RPG Series (the RPG Core Combat, Inventory Systems and Dialogue & Quests courses) but it will give you an advantage if you already have.

The course is project-based as we believe this is the best way to learn Unity and C#. You will not just be learning dry programming concepts, but applying them immediately to a real RPG as you go.

We’ll provide the RPG project created so far in the series so that you can practice integrating to an existing complex project. Every element of the project we touch will be fully explained and no knowledge of the project will be required.

In the course we will be building the following from scratch:

  • Shop and Traits UI

  • Integration between Traits and a modifier system

  • Main menus

  • Barter system giving discounts to player with high charisma

  • Buying and selling

  • Filtering shop items by type

  • Flexible and composable special abilities

  • Cooldown timers

  • Mana and money

In the process of the course we will cover advanced topics such as: C# Delegates, Interfaces, Lambdas, Strategy and Composite Patterns.

You will get full lifetime access for a single one-off fee. The creators are qualified and experienced coders and avid gamers, so are able to explain complex concepts clearly, as well as entertain along the way.

You will have access to a course forum where you can discuss topics on a course-wide basis, or down to the individual video. Get plugged into our communities of amazing developers on Facebook (nearly 20k), in our own TA-curated Community (17k views/day), and our student chat group (10k live at any one time).

The course is still in production with new videos dropping on a weekly basis, making now a great time to get involved and help shape its future.

Shops and Abilities are core to many game genres. So why not join us and get started improving your game development right now?

Enroll now

What's inside

Learning objectives

  • Build a shop system fit for any game genre
  • Build a highly flexible rpg ability system
  • Advanced programming concepts such as composite and strategy patterns
  • Create a rpg trait system to distribute points to str, dex, int, etc.
  • Design a dynamic main menu
  • Load and save to multiple slots
  • Create a full game moment to showcase your game

Syllabus

Shops

In this video (objectives)…

  1. Sam takes us over the architecture of this RPG and how it is split between courses in the series.

Read more

In this video (objectives)…

  1. Rick explains which version of Unity will be used in this course and why this decision is important.

In this video (objectives)…

  1. Sam shows us the finished shops prototype and outlines the journey to get us there.

In this video (objectives)…

  1. Sam shows us how to speed up UI development with a reusable library of UI components.

In this video (objectives)…

  1. Sam finishes what he started and finishes making his Component Library

In this video (objectives)…

  1. Sam shows us how to build the outline of a shop UI using our reusable components.

In this video (objectives)…

  1. Sam shows us how to make a header row prefab.

In this video (objectives)…

  1. Sam shows us how to create our rows based on the headers and how to keep everything in alignment.

In this video (objectives)…

  1. Sam shows us the main classes that will provide the data for the shop UI.

In this video (objectives)…

  1. Sam shows us how to use the Shopper component to display UI when a shop is opened.

In this video (objectives)…

  1. Sam shows us how to close shops and we hook up the got names for each shop keeper.

In this video (objectives)…

  1. Sam shows us revises how to dynamically build a UI list.

In this video (objectives)…

  1. Sam shows us how to link the ShopItem class to our RowUI prefab.

In this video (objectives)…

  1. Sam show us how to expose the stock configuration in the editor so that a designer can use it.

In this video (objectives)…

  1. Sam shows us how to create a widget to add and remove to our transaction.

In this video (objectives)…

  1. Sam show us how to store the quantities of items in our transactions and to use Actions to update the UI.

In this video (objectives)…

  1. Sam shows us how to transfer items from the shopping basket to the players inventory.

In this video (objectives)…

  1. Sam shows us how to calculate the total price of a transaction.

In this video (objectives)…

  1. Sam shows us how to create a simple component to act as the players money.

In this video (objectives)…

  1. Sam shows us how to create a UI to display the balance in the player's purse.

In this video (objectives)…

  1. Sam shows us how to track stock in dictionary to limit purchases.

In this video (objectives)…

  1. Sam shows us how to disable the buy button when a transaction isn't possible.

In this video (objectives)…

  1. Sam lays the ground work for checking the inventory space for a transaction

In this video (objectives)…

  1. Sam modifies the Inventory script to support checking for stacked items and free slots.

In this video (objectives)…

  1. Sam shows us how to switch between buying and selling mode and calculate different prices on this basis.

In this video (objectives)…

  1. Sam shows us how to calculate the availability in the inventory when selling.

In this video (objectives)…

  1. Sam shows us how to confirm a transaction when selling.

In this video (objectives)…

  1. Sam shows us how to bind the filter buttons to Shop.SelectFilter via a new FilterButtonUI component.

In this video (objectives)…

  1. Sam shows us how to display the currently active filter by setting Button.interactable = false.

In this video (objectives)…

  1. Sam modifies the InventoryItem and GetFilteredItems to show a filtered list in the shop.

In this video (objectives)…

  1. Sam shows us how to unlock items in a Shop stock based on the player's level and experience.

In this video (objectives)…

  1. Sam shows us how to refactor GetAllItems() to work with cumulative discounts by level.

In this video (objectives)…

  1. Sam takes us through more refactoring from storing the stock as state to storing the stock sold.

In this video (objectives)…

  1. Sam implements ISaveable on the Purse and Shop components.

In this video (objectives)…

  1. Sam shows us around the Ability system and it's power and flexibility.

In this video (objectives)…

  1. Sam shows us how to connect the PlayerController to the Action Bar to launch Special Abilities.

In this video (objectives)…

  1. Sam explains the architecture we will use for our composable ability system.

In this video (objectives)…

  1. Sam shows us how to create an abstract base class Scriptable Object and how to inherit from that to create our first Targeting Strategy.

In this video (objectives)…

  1. Sam shows us how to run a coroutine from a Scriptable Object to implement delayed targeting.

In this video (objectives)…

  1. Sam shows us how to use Raycasts and Sphere Casts to get a list of targets within an area of effect radius.

In this video (objectives)…

  1. Sam shows us how to make a summoning circle prefab and spawn it at the correct location.

In this video (objectives)…

  1. Sam shows us how to apply the strategy pattern again to create filter for our targeted Game Objects.

In this video (objectives)…

  1. Sam shows us how to apply the Strategy pattern again, this time to create configurable effects for our Abilities.

In this video (objectives)…

  1. Sam shows us how we can make our method signatures simpler by grouping parameters into a single class.

In this video (objectives)…

  1. Sam show us how to create a new Effect Strategy to launch particle effects.

In this video (objectives)…

  1. Sam show us how to use Dictionaries to store cooldown timers for Scriptable Objects.

In this video (objectives)…

  1. Sam show us how to use and image type "filled" to overlay a cooldown timer on our action bar.

In this video (objectives)…

  1. Sam shows us how to create a component to track mana and display it.

In this video (objectives)…

  1. Sam show us how to regenerate mana over time.

In this video (objectives)…

  1. Sam show us how to integrate the Mana system with the progression system to level up

In this video (objectives)…

  1. Sam shows us how to build effects to trigger animations and rotate towards our target.

In this video (objectives)…

  1. Sam shows us how to apply the composite pattern to creating very flexible effects.

In this video (objectives)…

  1. Sam show us how to cancel abilities on death and have abilities cancel other actions.

In this video (objectives)…

  1. Sam challenges us to save our mana.

In this video (objectives)…

  1. Sam shows us how to implement a self targeting strategy so that we can heal ourselves!

In this video (objectives)…

  1. Sam shows us how to spawn projectiles from an Effect.

In this video (objectives)…

  1. Sam shows us how to setup directional targeting for our projectiles.

In this video (objectives)…

  1. Sam polishes of the fire spray ability and shows us how we could extend the Ability system.

In this video (objectives)…

  1. Sam shows us the traits system we will build in this section.

In this video (objectives)…

  1. Sam shows us how to mock up the UI for our traits window.

In this video (objectives)…

  1. Sam implements a row UI script to make our traits UI interactable.

In this video (objectives)…

  1. Sam shows us how to connect our UI to a Trait Store component on the player so we can have a quota of points to allocate.

In this video (objectives)…

  1. Sam implements a staging area for points before confirming an allocation.

In this video (objectives)…

  1. Sam shows us how to allocate more trait points when we level up.

In this video (objectives)…

  1. Sam shows us how to link the trait system with other gameplay via the modifer system.

In this video (objectives)…

  1. Sam implements a barter system using modifiers, traits and stats.

In this video (objectives)…

  1. Sam recaps the section and challenges us to extend our traits system.

In this video (objectives)…

  1. Sam shows us the prototype for the main menu section including the new death respawn and penalty.

In this video (objectives)…

  1. Sam shows us how to set the scene with a moving main menu backdrop.

In this video (objectives)…

  1. Sam shows us how to import a font to create a main menu title. We also assemble our main menu mock UI.

In this video (objectives)…

  1. Sam shows us how to tweak the save system to load the last level from the main menu.

In this video (objectives)…

  1. Sam shows us how to switch between UI screens and configure this entirely in the editor.

In this video (objectives)…

  1. Sam shows us how to use PlayerPrefs to store the last save game name and we use InputFields to select a name.

In this video (objectives)…

  1. Sam builds a Load Game UI to list all our saved games.

In this video (objectives)…

  1. Sam shows us how to list all the save files on the file system.

In this video (objectives)…

  1. Sam shows us how to use Time.timeScale to pause a game while a menu is displayed.

In this video (objectives)…

  1. Sam hooks up the save and quit functionality in both our menus.

In this video (objectives)…

  1. Sam shows us how to respawn the player character when they die.

In this video (objectives)…

  1. Sam shows us how to reset and Animator and refactor our health component to achieve resurrection.

In this video (objectives)…

  1. Sam shows us various bugs in the respawn system and we fix them all. We also reset enemies so that we have a safe space to respawn to.

In this video (objectives)…

  1. Sam fixes some bugs and shows us how we could extend our project.

In this video (objectives)…

  1. Sam and Rick discuss designing a gameplay moment to pull together the features we have implemented in our RPG.

In this video (objectives)…

  1. Sam shows us how to clear out our level and sketch a basic enemy placement.

In this video (objectives)…

  1. Sam show us how to implement auto attacking and sped up gameplay so we can quickly test our combat.

In this video (objectives)…

  1. Sam shows us the maths behind armour and how to make it scale as the game progresses.

In this video (objectives)…

  1. Sam shows us how to play test and tweak our combat encounters and values.

In this video (objectives)…

  1. Sam shows us how to think about pricing items based on their impact on our health.

In this video (objectives)…

  1. Sam shows us how to allow money to be picked up or given as a reward to a quest.

In this video (objectives)…

  1. Sam shows us how to set the monetary value of drops so that we can replenish our health from fights.

In this video (objectives)…

  1. Sam reuses the condition system from dialogues and quest to put limits on equipping certain items.

In this video (objectives)…

  1. Sam shows us how to tweak a heavy enemy to get a really tough and challenging fight.

In this video (objectives)…

  1. Sam shows us how to scale experience points for ranged enemies and tweak to get level up at the right time in the game.

In this video (objectives)…

  1. Sam shows us how he adds dialogue that responds to the players equipment and traits.

In this video (objectives)…

  1. Sam shows us how to implement conditions on quest objectives to finish off our moment.

In this video (objectives)…

  1. Sam tells us how to continue our own RPG journey.

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Explores advanced C# concepts like Delegates, Interfaces, and Lambdas, which are essential for building complex game systems
Requires prior experience with Unity and C#, suggesting learners should complete introductory courses before enrolling
Focuses on building practical game mechanics like shops, abilities, and traits, which are highly relevant to RPG development
Uses a project-based approach, allowing learners to apply programming concepts directly to a real RPG project
Covers design patterns like Strategy and Composite, which are useful for creating flexible and maintainable game code
Builds upon an existing RPG project, so learners can practice integrating new features into a complex codebase

Save this course

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

Reviews summary

Intermediate c# unity rpg mechanics

According to learners, this course is a highly valuable and essential addition to the RPG series, focusing on implementing core mechanics like shops, abilities, and traits in Unity using C#. Students particularly praise the instructors for their clear explanations and the practical, project-based approach. Many appreciate the deep dive into advanced C# concepts and design patterns like Strategy and Composite, finding them well-explained and applied effectively. The course successfully integrates these complex systems into the existing RPG framework. While it builds upon previous courses, many feel it stands well on its own if you have intermediate Unity/C# skills. The community support is also highlighted as a positive aspect.
Integrates with previous courses' project.
"It's great that this course uses the project from the previous RPG courses, showing real-world integration."
"While it builds on the previous courses, I found it understandable with just intermediate Unity knowledge."
"Having the previous RPG courses helps, but the instructors explain how things fit together even if you haven't taken them."
Requires prior Unity/C# experience.
"Definitely requires the recommended intermediate level of Unity and C# knowledge."
"Students should have a solid understanding of programming fundamentals before taking this course."
"This is not a beginner course; come prepared with existing Unity skills."
Focus on clean, well-structured code.
"The course emphasizes writing clean, maintainable, and scalable code."
"I learned how to structure my code better using patterns for complex game systems."
"Sam does an excellent job showing how to organize classes and components effectively."
Covers useful advanced C# techniques.
"I learned a lot about interfaces, delegates, and the strategy pattern."
"The course introduced me to powerful design patterns like Composite and Strategy, which are highly applicable."
"Understanding how to use Scriptable Objects with coroutines was a game changer for my ability system design."
Instructors explain complex topics well.
"Sam is absolutely excellent at explaining complex code, concepts and patterns."
"Rick and Sam do a great job of explaining all concepts clearly and effectively."
"The teachers are very good at what they do, and break things down easily."
Teaches core shop, ability, trait systems.
"The shop, ability, and trait systems are crucial for many RPGs and are built robustly here."
"I now have a solid foundation for implementing flexible abilities and dynamic shops in my own games."
"This course gave me the tools to create deep character customization and interaction through traits and shops."
Practical application through building features.
"The project based learning approach works well and really helps apply the principles you learn."
"Working on the same project as the other RPG courses is beneficial and shows how to integrate complex systems."
"I appreciate learning these concepts hands-on by adding features to the existing RPG project."

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 RPG Shops & Abilities: Intermediate C# Game Coding with these activities:
Review C# Delegates, Lambdas, and Actions
Solidify your understanding of C# delegates, lambdas, and actions, which are used extensively in the course for UI updates and event handling.
Browse courses on Delegates
Show steps
  • Read documentation on delegates, lambdas, and actions.
  • Write small code snippets using each concept.
  • Experiment with different use cases.
Review 'C# 8.0 and .NET Core 3.0 – Modern Cross-Platform Development'
Improve your C# knowledge with a comprehensive guide to the language and .NET Core.
Show steps
  • Read the chapters on C# language features.
  • Practice writing C# code snippets.
  • Explore the .NET Core framework.
Implement Basic Shop UI
Practice building a basic shop UI in Unity to reinforce the concepts of UI components, layout, and data binding.
Show steps
  • Create a new Unity project.
  • Design a simple shop UI layout.
  • Implement data binding to display item information.
  • Add basic buy/sell functionality.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Review 'Game Programming Patterns'
Deepen your understanding of design patterns used in the course, particularly Strategy and Composite patterns.
Show steps
  • Read the chapters on Strategy and Composite patterns.
  • Identify examples of these patterns in the course code.
  • Consider how these patterns could be applied to other game mechanics.
Design and Implement a Special Ability
Create a new special ability for the RPG game, focusing on composability and the strategy pattern.
Show steps
  • Design the ability's targeting strategy.
  • Implement the ability's effects.
  • Integrate the ability into the action bar.
  • Test and refine the ability's functionality.
Write a Blog Post on Shop Implementation
Solidify your understanding of the shop system by writing a blog post explaining the key components and their interactions.
Show steps
  • Outline the key aspects of the shop system.
  • Explain the purpose of each component.
  • Describe the data flow between components.
  • Include code snippets and diagrams.
Contribute to a Unity Open Source Project
Apply your knowledge by contributing to an open-source Unity project, focusing on areas related to shops, abilities, or UI.
Show steps
  • Find a suitable open-source Unity project.
  • Identify a bug or feature to work on.
  • Implement the fix or feature.
  • Submit a pull request.

Career center

Learners who complete RPG Shops & Abilities: Intermediate C# Game Coding will develop knowledge and skills that may be useful to these careers:
Game Programmer
A game programmer brings video game concepts to life through code. This role involves designing, writing, and debugging code for various game mechanics, artificial intelligence, and user interfaces. This course helps aspiring game programmers learn how to implement essential game mechanics such as shops, special abilities, and character traits using C# in Unity. Specifically, the course content on building shop systems, ability systems, and trait systems directly translates to practical skills used daily by a Game Programmer. The advanced programming concepts covered, like strategy and composite patterns, are also invaluable for creating robust and scalable game systems. Anyone looking to become a game programmer should consider this course, especially if their focus is on role playing games.
Gameplay Programmer
A gameplay programmer is responsible for implementing the interactive elements of a video game. This includes character controls, combat systems, artificial intelligence, and user interfaces. If you wish to be a gameplay programmer, this course is a strong starting point for learning how to implement essential game mechanics in Unity using C#. The entire course centers around building interactive RPG elements--shops, abilities, traits--providing one with a practical foundation in gameplay programming. A key part of the course is learning how to integrate these systems into a larger project, a necessary skill for a Gameplay Programmer.
Unity Developer
A Unity Developer specializes in creating interactive experiences and games using the Unity engine. Their work includes scripting game logic, designing user interfaces, and optimizing performance. This course is highly relevant for anyone who is a Unity Developer, as it focuses on building core RPG mechanics within Unity using C#. The course emphasizes practical, project-based learning, allowing one to immediately apply concepts to create shop systems, ability systems, and dynamic main menus. The course also covers integrating these features into existing projects, which is a common task for Unity Developers working on larger games. The material on interfaces, lambda expressions, and composite patterns also helps one become a more competent Unity Developer.
Indie Game Developer
An independent game developer works autonomously or within a small team to create and publish their own games. This career path requires a broad skillset, including programming, design, and art. For an indie game developer, this course could be transformative, by providing practical skills in implementing core RPG mechanics using C# and Unity. The course's project based approach is ideal for quickly building and prototyping game ideas. An indie game developer will find the course helpful in creating shop systems, ability systems, and trait systems, which are essential for many game genres. The course can also help indie game developers in UI and main menu design.
Technical Designer
A technical designer bridges the gap between design and programming in game development. They use scripting and visual tools to implement gameplay features, level designs, and interactive elements. If you want to be a technical designer, this course provides a practical understanding of implementing game mechanics within Unity using C#. The focus on building shop systems, ability systems, and trait systems is highly relevant to the responsibilities of a technical designer. The course also covers UI design and integration, which are important skills for a Technical Designer who will need to communicate with both artists and programmers.
Software Engineer
A software engineer designs, develops, and tests software applications. While this role is broad, the skills learned in this course transfer well, especially for those interested in game development or interactive software. This course helps a software engineer improve their C# skills through practical application in Unity. The software design patterns covered, such as strategy and composite patterns, are applicable to many software engineering contexts. Also, the experience of building and integrating complex systems, such as shop and ability systems, is valuable for any Software Engineer.
Mobile Game Developer
A mobile game developer creates games specifically for mobile platforms, such as iOS and Android. This career involves optimizing game performance for mobile devices and implementing touch-based controls. The skills learned in this course may be useful to a Mobile Game Developer, as it focuses on building game mechanics in Unity, which is a popular engine for mobile game development. A Mobile Game Developer can use the knowledge gained from this course to implement shop systems, ability systems, and trait systems in their mobile games. The course's emphasis on UI design and integration is also valuable for creating user friendly mobile game interfaces.
Tools Programmer
A tools programmer creates software that game developers use to streamline their workflows. This typically involves building custom editors, automated build pipelines, and debugging tools. This course may be useful to a Tools Programmer, as it teaches intermediate C# game coding in Unity, providing them with the necessary skills to build and customize tools within the Unity environment. The shop and traits UI built during the course will be a good learning resource for any who wish to pursue a career as a Tools Programmer. Additionally, the course covers advanced topics like C# delegates, interfaces, and lambda expressions.
Simulation Developer
A simulation developer creates software that simulates real-world scenarios for training, research, or entertainment purposes. This role often requires strong programming skills and a deep understanding of physics and mathematics. This course can help a simulation developer level up their skills in C# and Unity. This will open new avenues for implementing interactive elements and user interfaces in simulations. Also, the course's coverage of advanced programming concepts, such as strategy and composite patterns, is valuable for building complex and modular simulation systems.
XR Developer
An XR Developer creates immersive experiences for virtual reality (VR), augmented reality (AR), and mixed reality (MR) platforms. The XR Developer needs to integrate motion tracking, spatial audio, and interactive elements. This course can help an XR Developer grow their skills in C# and Unity, which are widely used in XR development. The knowledge gained from this course can be applied to building interactive elements, such as shop systems and ability systems, within XR experiences. The skills developed in UI design and integration are relevant to creating intuitive user interfaces for VR and AR applications.
UI/UX Designer
A UI/UX designer focuses on creating user interfaces and user experiences that are intuitive, engaging, and effective. While mainly focusing on the programming side of game mechanics, this course may still be useful for a UI/UX designer in the gaming industry. The course involves building and designing user interfaces for shop systems, ability systems, and character traits. This will give the UI/UX designer insight into the technical challenges and considerations involved in implementing game interfaces. The course will also help the UI/UX Designer learn about how players interact with game mechanics and user interfaces.
Embedded Systems Programmer
An embedded systems programmer develops software for specialized computer systems, such as those found in medical devices, automobiles, and industrial equipment. Although seemingly unrelated to game development, the C# skills learned in this course are transferable to embedded systems programming, as C# is sometimes used in embedded systems. This course can help the systems programmer improve their C# skills and learn about software design patterns. The course's emphasis on project based learning is also valuable for gaining practical experience in software development.
Web Developer
A web developer is responsible for building and maintaining websites and web applications. This involves front end development (user interface) and back end development (server side logic). This course may be useful to a web developer looking to expand their skillset into game development or interactive web applications. The course provides a foundation in C# and Unity, which can be used to create interactive web based games or simulations. If you are a web developer, you can use the skills learned in this course to integrate game mechanics, like shop systems and ability systems, into web applications.
Data Scientist
A data scientist analyzes large datasets to extract insights and inform decision making. While seemingly unrelated, the programming skills learned in this course may benefit a data scientist interested in game analytics or data visualization. The course provides a foundation in C#, which can be used to process and analyze game data. The data scientist can also leverage their game programming skills developed in this course to visualize data in interactive and engaging ways.
Database Administrator
A database administrator manages and maintains databases, ensuring data integrity, security, and availability. Although seemingly unrelated to game development, the general programming concepts learned in this course could be transferable. The course covers C#, which a database administrator might use for scripting or automation tasks related to database management. This course can help the database administrator improve their programming skills and learn about software design patterns.

Featured in The Course Notes

This course is mentioned in our blog, The Course Notes. Read one article that features RPG Shops & Abilities: Intermediate C# Game Coding:

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 RPG Shops & Abilities: Intermediate C# Game Coding.
Provides a comprehensive overview of common design patterns used in game development. It covers patterns like Strategy and Composite, which are directly relevant to the course's ability system. Reading this book will help you understand the underlying principles behind the code and how to apply these patterns in your own projects. It valuable resource for understanding the design choices made in the course.
Provides a comprehensive guide to C# and .NET Core, covering the language features and framework functionalities used in the course. It is particularly helpful for understanding the underlying C# concepts and how they are applied in Unity. This book useful reference for understanding the C# language features used in the course, especially if you are new to C# or want to deepen your understanding.

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