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

Learn how to include an inventory system for any of your projects that require items to be picked up, dropped, moved and equipped.

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.

This course is the second in our RPG series, you don't need to have completed the first part of the RPG Series (the RPG Core Combat course) but it will give you an advantage if you already have.

Read more

Learn how to include an inventory system for any of your projects that require items to be picked up, dropped, moved and equipped.

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.

This course is the second in our RPG series, you don't need to have completed the first part of the RPG Series (the RPG Core Combat course) but it will give you an advantage if you already have.

By enrolling in this course you will have access to the completed Inventory system as an asset pack which you can import into your existing project. We will also take you step-by-step through the process of using, modifying, improving and understanding the code that drives the asset pack.

Please note, this course follows a different format. Rather than building the inventory system from scratch, line-by-line, we will provide you with our code and then explain how the code works so that you understand it fully. This is an approach that works well for folks who are already competent with Unity and C# and wanting to "get to the answer" more quickly.

Although this course is part of our RPG series, you can use the inventory system for any of your projects that require items to be picked up, dropped, moved and equipped.

In this course we will cover the following systems:

  • The click-to-pickup and the runover-to-pickup systems

  • The dropping system

  • The tooltip overlay system

  • The stackable item system

  • The equipping system

  • The saving and loading system

The course covers many advanced programming principles and goes into great depth to discuss good code architecture practices. We cover Interfaces, Virtual Methods, the debugging tool and many more things that aren't covered in our beginner courses.

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). Check out our reviews to see how people love this feature.

Building an RPG is an amazing way to level-up your game development skills, so why not join us and get started improving your game development right now?

Enroll now

What's inside

Learning objectives

  • Implement and lay out your inventory ui (user interface) so that the panels, buttons, slots and icons make sense.
  • Use useful ui components like the scroll view asset and the grid layout group to more easily structure your inventory ui.
  • Use the drag-and-drop system so that players can pick up inventory items and move them to other slots, or drop them into the world.
  • Use a pickup system with scriptable objects providing the data for specific inventory items.
  • Use and modify the equipping system so that players can equip weapons and armor from their inventory.
  • Interface between what the player sees in their inventory and what your backend system knows should be stored in the inventory.
  • Use and modify a tooltip system that gives the player information about their inventory items.
  • Make items stackable so that if a player has more than one of an item it only takes up one inventory slot and displays how many items have been stacked.
  • Refactor your code so that when a new feature is added, it propagates to all areas of your project without breaking your game.
  • Build a user interface mockup in unity before your functionality is in place.
  • Show more
  • Show less

Syllabus

Intro & Setup

In this video (objectives)…

  • Introducing the course and how it will be taught.

  • We are providing you the entire project as an asset pack and will integrate the inventory into our RPG Core Combat project.

  • This is an intermediate course so you should be comfortable with Unity and C#.

After watching (learning outcomes)…

You'll be clear on how we are teaching this course and what it covers.

Read more

In this video (objectives)…

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

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)…

· Overview of the finished project, with the inventory system integrated with our RPG Core Combat.

After watching (learning outcomes)…

Clear on where we will end up by the end of the course.

In this video (objectives)…

  • How to follow along with this course.

  • Brief outline of the systems we'll be covering.

After watching (learning outcomes)…

Understand the way we'll be delivering this course.

In this video (objectives)…

  • How to get the github repo for our project and use that to follow along.

  • How to get the asset packs for this project and use those to follow along.

After watching (learning outcomes)…

How to get access to our code and how to follow along with the course

In this video (objectives)…

  • What scripts and systems are we bringing starting with.

After watching (learning outcomes)…

Understanding the non-inventory aspects of our project

In this video (objectives)…

  • Outline the license agreements for the students of this course

  • Shout out to Synty Studios and Clayman Studio for providing assets for this course.

  • License agreement for the GameDev.tv asset pack / code.

After watching (learning outcomes)…

Understand the asset pack license agreements for this course.

In this video (objectives)…

After watching (learning outcomes)…

In this video (objectives)…

  • Adding new UI elements into our inventory layout.

  • Experiment with slicing images to ensure the scaling happens without stretching.

After watching (learning outcomes)…

Understand how to slice UI elements so that scaling doesn't result in stretching.

In this video (objectives)…

  • Adding and using scroll view assets to display items.

  • Understanding the scroll bar within scroll view.

After watching (learning outcomes)…

Understanding how to layout the scroll view asset for your inventory.

In this video (objectives)…

  • How to add and alter the grid layout group.Understanding the scroll bar within scroll view.

After watching (learning outcomes)…

Understand how we use the grid layout group to dynamically display our UI items.

In this video (objectives)…

  • Bring in the new commit from our project

  • Work through the drag & drop scripts to understand how it all connects.

After watching (learning outcomes)…

Understand how the drag & drop system works.

In this video (objectives)…

  • What are interfaces and why would we use them

  • Compare an approach where we do and don't use interfaces

After watching (learning outcomes)…

Overview of what interfaces are and how to use them

In this video (objectives)…

  • Digging further into our drag & drop scripts to understand how to use and modify the code

After watching (learning outcomes)…

Deeper understanding of the drag & drop system

In this video (objectives)…

  • Use print statements to understand where the drag & drop scripts are interacting and what is calling what

After watching (learning outcomes)…

Deeper understanding of our drag & drop code

In this video (objectives)…

  • Understand the role of the inventory script.

  • Alter the number of inventory slots available for the player

After watching (learning outcomes)…

Capable of altering the number of inventory slots.

In this video (objectives)…

  • How to create a new scriptable object for our inventory.

  • Understand how the resources folder allows using resources at runtime.

After watching (learning outcomes)…

Comfortable adding new inventory items as scriptable objects.

In this video (objectives)…

  • Review and understand the Inventory.cs script.

  • Explore the methods which are driving our inventory script.

After watching (learning outcomes)…

Understand how the inventory.cs script drives our inventory.

In this video (objectives)…

  • Understand the changes to return type in InventorySlotUI.cs.

  • Explore how InventorySlotUI.cs is interfacing with other scripts.

After watching (learning outcomes)…

Understand how InventorySlotUI.cs has been updated and the implications.

In this video (objectives)…

  • Set up and start using the debugger tool in Visual Studio Code.

  • How to read the pieces of information that the debugger tool provides us.

After watching (learning outcomes)…

Be capable of using the debugger tool to find issues and understand our code.

In this video (objectives)…

  • Discussion of why we have two inventory directories and how this makes things easier for your future projects.

After watching (learning outcomes)…

Understand the two inventory directories.

In this video (objectives)…

  • Looking at where the Item Id is used.

  • Using the item ID to display the new scriptable object inventory item we created a few videos ago.

After watching (learning outcomes)…

Able to use Item IDs powerfully in your inventory system.

In this video (objectives)…

  • Explanation of redraw and how it works.

  • How Redraw() relates to events.

  • UI as a slave to the data store.

After watching (learning outcomes)…

Understand how Redraw() works and why it is set up the way it is.

In this video (objectives)…

  • Using our START HERE commit, examine the key components of the saving system.

  • Understand how unique IDs are used to store and identify entities.

  • Examine how entities are loaded.

After watching (learning outcomes)…

Understand how the saving and loading system works.

In this video (objectives)…

  • Focus on how the inventory system can save its state.

  • Explain in your own words how the saving system does what it does.

After watching (learning outcomes)…

Understand how the saving system works with the inventory system.

In this video (objectives)…

  • Using the Pickup.cs script.

  • Using the PickupSpawner.cs script.

  • Relationship between Pickup Spawner, Inventory Item and Pickup item.

After watching (learning outcomes)…

Understand how to use the Pickup system.

In this video (objectives)…

  • Get hold of an instance of inventory item and call SpawnPickup().

  • Spawn a new pickup in the world.

After watching (learning outcomes)…

Use SpawnPickup() method to spawn a new pickup in the world.

In this video (objectives)…

  • Thorough examination of the logic in the Pickup Spawner class.

  • Identify where spawned items are placed in the hierarchy.

After watching (learning outcomes)…

Understand the pickup spawner.

In this video (objectives)…

  • Modify our pickup script to make run-over functionality.

  • Understand the pickup script well enough to be able to use the clickable and run-over functionality together.

After watching (learning outcomes)…

Deep understanding of the pickup script and how to modify it to make a run-over script.

In this video (objectives)…

  • Review the code for the drop architecture, including InventoryDropTarget.cs.

  • Identify in the code where we are saying where the item will drop.

After watching (learning outcomes)…

Review the drop code to understand how it is architected.

In this video (objectives)…

  • Code review for ItemDropper.cs.

  • Understand the drop items list and how inventory itesm are tracked.

  • Using a virtual protected method.

  • How the drop system communicates with the save system.

After watching (learning outcomes)…

Understand ItemDropper.cs and how it works.

In this video (objectives)…

Dig in to InventoryDropTarget.cs script to understand it.

After watching (learning outcomes)…

Understand how we're dropping items which have been dragged.

In this video (objectives)…

  • Protected compared to private and public for methods.

  • Virtual as it relates to what can change the details of the method.

After watching (learning outcomes)…

Overview to understand virtual methods.

In this video (objectives)…

  • Overview of the prefabs used to generate tooltips.

  • Where the title and description are pulled from.

After watching (learning outcomes)…

In this video (objectives)…

  • Review of content size fitter and how it makes dynamic sizing.

  • Vertical layout group.

  • Spawning a tooltip in the middle of the screen.

After watching (learning outcomes)…

Understanding how the tooltips prefab works its magic.

In this video (objectives)…

  • What do we need to know about the tooltips.

  • Looking at how the tooltip system knows if there is an item or not in a slot.

After watching (learning outcomes)…

Understanding ItemTooltipSpawner.cs

In this video (objectives)…

  • What is going to change in our code as we add the ability to stack items.

  • How do we fix what gets broken in Inventory.cs.

After watching (learning outcomes)…

Overview of how our items need to change in order to be stackable.

In this video (objectives)…

  • Store number of items in the Inventory class.

  • Propagate necessary changes from there.

After watching (learning outcomes)…

Map out a large refactor using compiler errors.

In this video (objectives)…

  • Increment a slots number when Adding.

  • Decrement when Removing.

  • Add number to pickups.

After watching (learning outcomes)…

In this video (objectives)…

  • Augment the drop system to save stacked drops.

After watching (learning outcomes)…

In this video (objectives)…

  • Save the stacked number in Inventory.cs

After watching (learning outcomes)…

In this video (objectives)…

  • What is the design approach we are following.

  • What does it mean to be adding inventory items to equipment slots.

After watching (learning outcomes)…

Overview of the equipment systems.

In this video (objectives)…

  • Create an Equipment UI layout.

After watching (learning outcomes)…

In this video (objectives)…

  • Implement an IDragContainer

After watching (learning outcomes)…

In this video (objectives)…

  • Create a backend store for UI state.

After watching (learning outcomes)…

In this video (objectives)…

  • Save the contents of a dictionary using our Saving library.

After watching (learning outcomes)…

In this video (objectives)…

  • Outline the general architecture of store and UI.

  • Explain how to create arrays of structs.

After watching (learning outcomes)…

In this video (objectives)…

  • Understand how virtual methods are defined.

  • Find the call sites of a given method.

After watching (learning outcomes)…

In this video (objectives)…

  • Let's download the final asset pack and bring it in to your existing project.

After watching (learning outcomes)…

Overview of integrating the inventory asset pack into your project and what we'll be modifying.

In this video (objectives)…

  • Implementing IRaycastable

After watching (learning outcomes)…

In this video (objectives)…

  • Replace sprites on an existing UI.

After watching (learning outcomes)…

In this video (objectives)…

  • Explain one technique for preventing input while dragging.

After watching (learning outcomes)…

In this video (objectives)…

  • Subscribe to an Action event dragging.

  • Changing the parent of a Scriptable Object.

After watching (learning outcomes)…

In this video (objectives)…

  • Implement IModifierProvider.

After watching (learning outcomes)…

In this video (objectives)…

  • Override a virtual method.

After watching (learning outcomes)…

In this video (objectives)…

  • Design the structure for a hierarchical Scriptable Object.

After watching (learning outcomes)…

In this video (objectives)…

Sam takes us over fixing an issue in the saving system.

In this video (objectives)…

  1. Sam shows us how to fix a bug Items being dropped in all scenes

Wrap up and challenge for future use of this project.

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Uses an asset pack to provide learners with existing code, which allows them to focus on understanding, modifying, and improving the inventory system rather than building it from scratch
Explores advanced programming principles like interfaces and virtual methods, which are essential for building robust and maintainable game systems in Unity
Covers good code architecture practices, which helps learners write clean, organized, and efficient code for their Unity projects
Requires prior experience with Unity and C#, which may exclude beginners who are new to game development or programming in general
Focuses on an inventory system that can be used in any project requiring item management, which makes it a versatile asset for various game genres beyond RPGs
Integrates with the RPG Core Combat project, which may require learners to have access to or familiarity with that specific project to fully benefit from the course

Save this course

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

Reviews summary

In-depth look at unity inventory code

According to learners, this course provides an in-depth breakdown of a professional-grade Unity RPG inventory system asset pack. Students highlight the clarity of explanations for complex code architecture and principles like interfaces and virtual methods. Many found the approach of explaining existing code efficient for intermediate users. While the course is part of an RPG series, the inventory system is modular and applicable to various projects. Some mention the initial setup or integration can be a bit challenging, especially if not using the exact prerequisite project, but overall, the practical application and detailed debugging guidance are highly valued.
Best suited for those with prior Unity/C# knowledge.
"They recommend prior Unity/C# experience, and I agree, it's not for total beginners."
"As an intermediate Unity user, the pace felt just right for me."
"If you haven't done the prerequisite course or have equivalent skills, you might struggle a bit."
"The course assumes you're comfortable with basic Unity development workflows."
Helpful lessons on using the debugger.
"The section on using the debugger was surprisingly useful and improved my troubleshooting skills."
"They show you how to use print statements and the Visual Studio debugger effectively."
"Learning to debug the provided code was a key takeaway for me."
"Understanding the debugger made it much easier to follow the code flow."
Explaining existing code works well for topic.
"The format of explaining existing code rather than building from scratch felt faster and more efficient."
"This teaching style is great for seeing a finished system and understanding its components."
"I liked learning by dissecting a complete, polished system."
"Building it line-by-line might be better for beginners, but this approach is perfect for intermediate learners."
Provides a useful, reusable inventory asset.
"Getting the finished asset pack is a huge time saver and the main reason I enrolled."
"I can see myself using this inventory system in future projects beyond just RPGs."
"The asset pack is well-structured and integrates nicely once you understand the code."
"Having access to the complete system to dissect was very beneficial."
Explains complex code and architecture clearly.
"This course really shines at breaking down the code and explaining the architecture, which was helpful."
"I appreciated the focus on understanding *why* the code is structured this way, not just how to type it."
"The instructor does a great job explaining complex concepts like interfaces and virtual methods."
"Understanding the existing asset pack code was the main goal, and the course delivered on that."
Initial setup or integration can require care.
"Integrating the asset pack into my own project took a bit more work than expected."
"Following along using the exact provided repo version is crucial for avoiding initial errors."
"Getting the save system to work seamlessly required careful following of the instructions."
"The setup section could maybe be a little more robust for those not using the RPG Core Combat base."

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 Unity RPG Inventory Systems Asset Pack: Behind The Scenes with these activities:
Review C# Fundamentals
Reinforce your understanding of C# syntax and concepts, which are essential for modifying and extending the inventory system code.
Browse courses on C# Scripting
Show steps
  • Review C# tutorials and documentation.
  • Practice writing basic C# scripts.
  • Experiment with variables, loops, and functions.
Brush Up on Unity UI
Familiarize yourself with Unity's UI system, including Canvas, RectTransform, and UI components, to better understand the inventory UI implementation.
Show steps
  • Review Unity UI tutorials and documentation.
  • Create a simple UI layout in Unity.
  • Experiment with different UI components.
Review 'Game Programming Patterns'
Study common game programming patterns to better understand the code architecture and design principles used in the inventory system.
Show steps
  • Read chapters related to object-oriented design.
  • Study patterns like observer and factory.
  • Relate patterns to the inventory system code.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Follow Unity Scriptable Object Tutorials
Deepen your understanding of Scriptable Objects, which are used to store item data in the inventory system, by following online tutorials and examples.
Show steps
  • Find tutorials on Scriptable Objects in Unity.
  • Create a Scriptable Object to store item data.
  • Access and modify the data in your script.
Create a Simple Inventory System
Build a basic inventory system from scratch to reinforce your understanding of the concepts covered in the course and practice your coding skills.
Show steps
  • Design the UI for your inventory.
  • Implement item storage and retrieval.
  • Add functionality to add and remove items.
  • Test your inventory system thoroughly.
Contribute to a Unity Open Source Project
Contribute to an open-source Unity project related to inventory systems or RPG mechanics to gain experience working with a larger codebase and collaborating with other developers.
Show steps
  • Find an open-source Unity project on GitHub.
  • Fork the repository and set up your local environment.
  • Identify a bug or feature to work on.
  • Submit a pull request with your changes.
Write a Blog Post on Inventory Systems
Write a blog post summarizing the key concepts and techniques learned in the course, sharing your insights and experiences with other developers.
Show steps
  • Choose a specific topic related to inventory systems.
  • Research and gather information on your topic.
  • Write a clear and concise blog post.
  • Edit and proofread your post carefully.

Career center

Learners who complete Unity RPG Inventory Systems Asset Pack: Behind The Scenes will develop knowledge and skills that may be useful to these careers:
Unity Developer
A Unity developer uses the Unity game engine to create interactive experiences, simulations, and games. They are proficient in C# programming and have a strong understanding of game development principles. This course prepares you to apply these principles. Unity developers can use the asset pack to import into existing projects. The course walks learners through the process of modifying, improving, and understanding the code that drives the asset pack. Developers can learn and apply good code architecture practices.
Gameplay Programmer
Gameplay programmers specialize in creating the interactive elements and mechanics of a video game. They work on character controls, game rules, artificial intelligence, and user interfaces. Gameplay programmers work on existing code to integrate systems, such as inventory, into the game. This course is tailored for the needs of gameplay programmers. The inventory system asset pack can be imported into existing Unity projects. The course walks learners through the process of modifying, improving, and understanding the code that drives the asset pack.
Indie Game Developer
An indie game developer works independently or in a small team to create and publish their own video games. They are involved in all aspects of game development, from design and programming to art and marketing. This course is greatly beneficial to a game developer, as the course content includes the use of a pickup system with scriptable objects providing the data for specific inventory items. The course also provides an asset pack. Indie game developers will also learn advanced programming principles and good code architecture practices, like how to build a user-friendly system.
Game Developer
As a game developer, you design and create video games for various platforms. Game developers are responsible for coding, testing, and debugging games, as well as collaborating with artists and designers to bring their visions to life. This course may be useful as it provides an asset pack that learners can import into an existing Unity project. The course walks learners through the process of modifying, improving, and understanding the code that drives the asset pack. A game developer builds a foundation through the study of interfaces, virtual methods, and the debugging tool, and is able to apply good code architecture practices.
Programmer
Programmers write code that tells a computer what to do. Programmers will find this course to be useful. The course provides learners with an asset pack to import into an existing Unity project. They will also learn how to refactor code so that when a new feature is added, it propagates to all areas of the project without breaking the game. A programmer builds a foundation through the study of interfaces, virtual methods, and the debugging tool.
Software Engineer
Software engineers are involved in the design, development, testing, and maintenance of software applications and systems. They apply engineering principles to create efficient and reliable software solutions. This course may be useful as it helps to build a foundation for working with C# and the Unity platform. The course gives learners an asset pack to import into existing Unity projects. Software engineers learn advanced programming principles, along with good code architecture practices. They can use interfaces, virtual methods, as well as the debugging tool.
Software Developer
Software developers create applications for computers or other devices. Software developers will find this course to be useful. The course provides learners with an asset pack to import into an existing Unity project. They will also learn how to refactor code so that when a new feature is added, it propagates to all areas of the project without breaking the game. A software developer builds a foundation through the study of interfaces, virtual methods, and the debugging tool.
Mobile Game Developer
Mobile game developers create games that run on mobile devices. This course may be useful as it provides an asset pack that learners can import into an existing Unity project. The mobile game development course walks learners through the process of modifying, improving, and understanding the code that drives the asset pack. A mobile game developer builds a foundation through the study of interfaces, virtual methods, and the debugging tool, and is able to apply good code architecture practices.
Game Designer
Game designers create the vision for a video game by defining the user experience. This course may be useful as it provides an asset pack that learners can import into an existing Unity project. The game-design course walks learners through the process of modifying, improving, and understanding the code that drives the asset pack. A designer builds a foundation through the study of interfaces, virtual methods, and the debugging tool, and is able to apply good code architecture practices.
Virtual Reality Developer
Virtual reality developers create immersive experiences using virtual reality technologies. They design interactive environments, user interfaces, and gameplay mechanics for VR applications. Virtual reality developers will find this course useful, as the course content includes how to use and modify a tooltip system that gives players information about their inventory items. The course also provides virtual reality developers with an asset pack to import into existing Unity projects. Virtual reality developers will also learn advanced programming principles and good code architecture practices.
Augmented Reality Developer
Augmented reality developers create interactive experiences that blend digital content with the real world. They design AR applications for mobile devices and AR headsets. Augmented reality developers may find this course useful. The course provides learners with an asset pack to import into an existing Unity project. They will also learn how to refactor code so that when a new feature is added, it propagates to all areas of the project without breaking the game. An augmented reality developer builds a foundation through the study of interfaces, virtual methods, and the debugging tool.
Simulation Developer
Simulation developers design and build virtual environments and scenarios for training, research, or entertainment purposes. They often use game engines like Unity to create interactive simulations. This course will be useful for simulation developers by familiarizing them with advanced programming principles and good code architecture practices. Simulation developers can use interfaces, virtual methods, as well as the debugging tool. The course also provides simulation developers with an asset pack to import into existing Unity projects.
UI Developer
User interface developers specialize in designing and implementing the visual elements and interactive components of software applications. They ensure that applications are user friendly. This course will be particularly useful to UI developers, as the course content includes how to implement and lay out inventory UI (user interface) so that the panels, buttons, slots and icons make sense. UI developers can use UI components like the Scroll View Asset and the Grid Layout Group to more easily structure the inventory UI.
Tools Programmer
A tools programmer develops software applications that aid in the creation of the interactive elements and mechanics of a video game. This course is tailored for the needs of programmers, as the inventory system asset pack can be imported into existing Unity projects. The course walks learners through the process of modifying, improving, and understanding the code that drives the asset pack. A programmer can then expand on this code to provide tools to other programmers.
Technical Artist
A technical artist bridges the gap between artists and programmers, creating tools and workflows that streamline the art creation process while ensuring optimal performance within the game engine. This course prepares learners to work with new and existing systems. Technical artists work with inventory and the user interface (UI). The course provides an asset pack. Technical artists can then learn how to refactor existing code so that when a new feature is added, it propagates to all areas of the project without breaking the game.

Featured in The Course Notes

This course is mentioned in our blog, The Course Notes. Read one article that features Unity RPG Inventory Systems Asset Pack: Behind The Scenes:

Reading list

We've selected one 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 Unity RPG Inventory Systems Asset Pack: Behind The Scenes.
Explores common design patterns used in game development. Understanding these patterns will help you grasp the code architecture practices discussed in the course. It provides a broader context for the specific implementation of the inventory system. This book is useful as additional reading to provide more depth to 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