We may earn an affiliate commission when you visit our partners.
Course image
Rob Ager

Have you ever wanted to create your own Farming RPG?  Games like Stardew Valley and Harvest Moon have been incredibly successful, and you too can develop your own game with the help of this course. We'll explain how to develop many of the core systems and game functionality.  We'll start with a blank project and then develop the game lecture by lecture, covering all the code and Unity configuration you will need.  This course is massive with over 44 hours of lecture videos, 99 lectures, a starter assets pack, and a complete Unity project that you can download to follow along. We even provide another Unity project to demonstrate AStar pathfinding. So while it took the creator of Stardew Valley over 4 years to create his game, you can get a head start by using this course, potentially saving many months or even years of development time .   This is one of the most comprehensive intermediate Unity 2D development courses on Udemy.  We hope that you decide to take the course and join the thousands of students who have already taken their next steps in advancing their Unity game development skills using a sophisticated, intermediate project based course.  I look forward to seeing you in the lectures.  

Read more

Have you ever wanted to create your own Farming RPG?  Games like Stardew Valley and Harvest Moon have been incredibly successful, and you too can develop your own game with the help of this course. We'll explain how to develop many of the core systems and game functionality.  We'll start with a blank project and then develop the game lecture by lecture, covering all the code and Unity configuration you will need.  This course is massive with over 44 hours of lecture videos, 99 lectures, a starter assets pack, and a complete Unity project that you can download to follow along. We even provide another Unity project to demonstrate AStar pathfinding. So while it took the creator of Stardew Valley over 4 years to create his game, you can get a head start by using this course, potentially saving many months or even years of development time .   This is one of the most comprehensive intermediate Unity 2D development courses on Udemy.  We hope that you decide to take the course and join the thousands of students who have already taken their next steps in advancing their Unity game development skills using a sophisticated, intermediate project based course.  I look forward to seeing you in the lectures.  

This is an Intermediate Course - Please check the Requirements Section for the experience you need before taking this course

Enroll now

What's inside

Syllabus

Introduction
Course Introduction
Preparation

The purpose of this lecture is to install the correct version of Unity and Visual Studio 2019 community edition.  We’ll also download the Unity project course files that will be used during this course to follow along.

Read more

The purpose of this lecture is to download the SourceTree GIT client, and use it to open the supplied completed Unity project.  We will then look at how we can use SourceTree to set the supplied Unity project to a particular lecture commit point.  We will then discuss how you should use the supplied Unity project and SourceTree to follow along with the course lectures.

In this lecture we take a high level look at the game architecture and course structure. 

The purpose of this lecture is to create the initial Unity project, install the required packages, and to implement the initial project settings.

The purpose of this lecture is to review all the imported assets in the provided starter assets custom package. 

The purpose of this lecture is to set-up the player object and child object hierarchy.

The purpose of this lecture is to create a SingletonMonobehaviour abstract class that can be used by the game managers and player class.  In this lecture we will also create a 'stub' player class component.

The purpose of this lecture is to add Animator components to the Player child object 'layers', and populate the AnimationController for each.  We'll then demonstrate how they control the animation states for the player. 

The purpose of this lecture is to create an event handler class to be used throughout the game, and create a MovementEvent that can be subscribed to, and a method to call the MovementEvent.  This will be used this in the next lecture to test the player animations.

The purpose of this lecture is to create a test harness to generate movement events to enable the testing of the player animations.

The purpose of this lecture is to add the ability to capture player movement input, and to move the player based on this input.

The purpose of this lecture is to create a hierarchy of tilemaps to be used when creating  game scenes. These will allow the required visual details to be created for scenes in the game and a sense of depth to be created where required.

The purpose of this lecture is to design a 'Farm' scene using tiles created from sprites and the tilemap hierarchy created previously.

The purpose of this lecture is to add the farmhouse to the 'Farm' scene.  We will also add collision tiles to prevent the Player from walking where they shouldn't.

The purpose of this lecture is to make the farmyard scene more interesting by adding some scenery trees and bushes.

The objective of the lecture is to prevent the camera from exceeding the bounds of the tilemap and showing black borders by using a cinemachine confiner.

When the player moves behind a bush or a tree they are hidden and you can't see what they are doing.  In this lecture we will create a component class script that will fade objects when the player moves behind them.

Items form a core part of the game.  Items include things you can pick up, tools you can use, and seeds you can plant.  The objective of this lecture is to define the information that we need to hold about each item so that it can be used in the game.

The objective of this lecture is to create a scriptable object that will hold all the item details that will be used in the game.  By using a scriptable object asset these details will persist as an asset and they can be added, amended, and deleted  as required.

The objective of this lecture is to create an Item.cs class that will be used on scene gameobjects to identify an object as an item.  We will create some prefabs of these items and add them to the scene.

The purpose of this lecture is to create an InventoryManager.cs class that will be used throughout the game to manage items and inventories of items.  We will create the class and initially a method to return the item details for a given item code.

The purpose of this lecture is to create a custom property drawer for the item code which will also display the item code description.

The purpose of this lecture is to create a component that will cause the item it is attached to to 'wobble' when the player walks past it, to provide a nice visual effect.  The Item.cs class will be extended to automatically add this component to certain types of items.

The purpose of this lecture is to allow the player to pickup items when walking over them.  The item will be initially added to the inventory list, and a message will be sent to the console showing the item was picked up.

The purpose of this lecture is to create an empty player inventory bar at the bottom of the screen, and have it switch to the top of the screen if the player moves to the bottom so as not to obscure the player.

The purpose of this lecture is to show picked up items on the player Inventory Bar displaying both the item sprite and the quantity held.

The purpose of this lecture is to allow the player to drop items from the inventory bar by dragging them into the scene.

The purpose of this lecture is to allow the player to reorder the items in the inventory bar by dragging them.

The purpose of this lecture is to display item description pop up windows when the player hovers over an item in the inventory bar.

The purpose of this lecture is to create more items to place in the farmyard scene from the inventory list of items.

The purpose of this lecture is to keep track of the the item selected on the inventory bar and apply a red highlight sprite to indicate that an item has been selected.

The purpose of this lecture is show the player character carrying selected items above their head by using animation overrides to switch the normal arm animation clips with carrying arm animation clips.

The purpose of this lecture is to create a TimeManager class to manage game years, seasons, days, days of the week, hours, minutes & seconds and trigger time related events.

The purpose of this lecture is to implement the game clock UI to display game years, seasons, days, days of the week, hours and minutes.

The purpose of this lecture is to create a scene controller manager to load scenes and unload scenes as we move between multiple scenes.

The purpose of this lecture is to create a new field scene for the game.

The purpose of this lecture is to move between the farmyard scene and the new field scene.

The purpose of this lecture is to create a new farmhouse cabin scene and implement a transition between the farmyard scene.

The purpose of the lecture is to explain why picked up items reappear when moving between scenes, and to discuss how we can preserve scene state as we move between different scenes.

The purpose of this lecture is to implement the core classes that we need to save the state of items in a scene.

The purpose of this lecture is to implement the functionality to store scene items and restore scene items as we move between different scenes.

This is an Addendum to Scene Storing and Restoring. 

The purpose of this lecture is to describe how we will use tilemaps to store boolean values that define where the player can drop items.

The purpose of this lecture is to add the functionality to paint boolean properties on the GridProperties tilemaps, and then have these properties stored in a scriptable object.

The purpose of this lecture is to ensure that the player can only drop items where permitted, which is on a grid square that is marked as 'CanDropItem'.

The purpose of this lecture is to implement a grid cursor which will provide visual feedback by turning green where the player can drop an item and red otherwise.  The cursor will be 'green' when the grid square is marked as 'Can Drop Item' and the drop radius is within the grid cursor radius defined for the item being dropped.

The purpose of this lecture is to allow the player to drop an item by clicking in the scene as well as being able to drag item an item into the scene to drop it.

The purpose of the lecture is to allow the player to select the hoe and click on a diggable area of the ground and trigger the animation of the player using the hoe.

The purpose of the lecture is to set the ground as dug in the grid properties and to display dug ground sprites where the player has dug.

The purpose of the lecture is to allow the player to select the watering can and trigger the watering animation when the player clicks in the scene.

The purpose of the lecture is to set the ground as watered in the grid properties and to display watered ground sprites where the player has watered.

The purpose of this lecture is to implement another type of cursor.  We are going to implement a cursor that isn't grid based, but can react to 'reapable scenery' such as grass that can be placed anywhere and not just in grid squares.

The purpose of this lecture is to allow the player to select the scythe and trigger the scythe animation when the player clicks while the cursor is hovering over reapable scenery.

The purpose of this lecture is to create a pool manager that will allow a pool of prefab objects to be defined and reused.

The purpose of this lecture is to create a particle effect that can be used  when the player reaps grass in the scene.

The purpose of this lecture is to build a VFX Manager that will be used to display the harvest action effects in the game.  We will also use the VFX Manager to display the particle effect when the player reaps the grass.

The purpose of this lecture is to create the core classes needed for crops in our game.  The CropDetails.cs class will define all the details for a crop, and the SO_CropDetailsList.cs class will enable an asset to be created containing a list of all crops.

The purpose of this lecture is to populate the data in the scriptable object crop details list asset for the parsnip crop.

The purpose of this lecture is to allow the player to plant a parsnip seed in dug ground, and display a planted seed. The parsnip plant will grow in stages as defined in the crops list as time progresses.

The purpose of this lecture is to allow the player to harvest a fully grown parsnip crop with the basket selected.

The purpose of this lecture is to create an animated effect when the parsnip crop is harvested.

The purpose of this lecture is to allow the player to plant an acorn and then grow an oak tree.

The purpose of this lecture is to allow the player to chop down the oak tree with an axe.

The purpose of this lecture is to produce a falling leaves particles effect when the oak tree is being chopped down.

The purpose of this lecture is to create a tree stump after the oak tree has been chopped down with the axe.  The tree stump can then be harvested with the axe, and we’ll create a new particle effects for when the tree stump is being chopped with the axe.

The purpose of this lecture is to create a spruce tree that can be grown and chopped down in the same way as the oak tree.

The purpose of this lecture is to create a 'crop instantiator' component.  This will enable crops, like trees, to be added to scenes at design time, and then loaded into the grid properties when the game starts.

The purpose of this lecture is to create stone 'crops'.

The purpose of this lecture is to break and 'harvest' the stones with the pickaxe.

The purpose of this lecture is to create a particle effect for breaking stones with the pickaxe.

The purpose of this lecture is to create a Pause Menu and toggle displaying it when the player presses the 'ESC' key.

The purpose of this lecture is to add a full inventory management screen to the pause menu.

The purpose of this lecture is to add a quit game option to the pause menu.  We'll also build an executable version of our game and run it.

The purpose of this lecture is to implement new game save functionality to save game state to a file and load saved game state from a file.  We will extend the ISaveable interface, and initially apply the new game save functionality to the GridPropertiesManager and the SceneItemsManager which already use the ISaveable interface to store scene data. In future lectures we’ll extend the save game to cover the player position, the player inventory, and the game clock time.

The purpose of this lecture is to enable the player’s position to be saved and loaded in the save game.

The purpose of this lecture is to enable the player's inventory to be saved and loaded as part of the save game.

The purpose of this lecture is to  enable the current game clock time to be saved and loaded in the save game.

The purpose of this lecture is to allow the user to start customising the character and we’ll allow the user to choose a shirt that will be applied to the character.

The purpose of this lecture is to allow the user to choose the colour of the player character's trousers to be used in the game.

The purpose of this lecture is to allow the user to choose the player character's hairstyle and hairstyle colour to be used in the game.

The purpose of this lecture is to allow the user to choose the player character's skin colour to be used in the game.

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Uses Unity, which is a leading engine for 2D and 3D game development, making it a valuable skill for aspiring game developers
Explores game architecture and course structure, which provides a high-level understanding of the game's design and organization
Covers scene management, including loading and unloading scenes, which is essential for creating complex and engaging game environments
Requires prior experience with Unity 2D development, so learners should ensure they meet the prerequisites before enrolling
Uses Visual Studio 2019, so learners should ensure they have access to this IDE or a compatible alternative for following along with 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

Comprehensive farming rpg development

According to learners, this course provides a strong foundation for creating a farming RPG in Unity, covering essential systems like inventory, game time, and saving. Students particularly praise the detailed, project-based approach, finding it highly effective for hands-on learning and building a functional game from scratch. While largely seen as positive and comprehensive, some learners note that it is indeed an intermediate course and may move quickly for those without prior Unity and C# experience, occasionally requiring troubleshooting for newer Unity versions. The course's depth in core mechanics is a major highlight.
Instructor explains complex topics well.
"The instructor's explanations were clear and easy to follow, making complex programming concepts understandable."
"Found the teaching style very engaging and the instructor knowledgeable about the subject matter."
"I really appreciated how the instructor broke down the logic behind the different game systems."
Hands-on project builds a real game.
"Building the game step-by-step, lecture by lecture, was the most effective way for me to learn Unity development."
"Starting with a blank project and ending up with a working farming RPG felt incredibly rewarding."
"The practical application of concepts through the project made everything click into place for me."
Covers core game mechanics thoroughly.
"The course dives deep into essential systems like inventory management, game time, and saving. I learned so much here."
"Really appreciated the detailed explanations for building the crop growing and tool usage mechanics."
"I feel like I now have a strong grasp on the key systems needed for my own RPG projects thanks to this course."
May need minor adjustments for newer Unity.
"Had to make a few small tweaks to get things working correctly with the latest version of Unity I was using."
"While the core principles are sound, some code might need slight updates depending on your Unity version."
"Keep in mind that Unity updates, so you might need to troubleshoot minor compatibility issues yourself."
Best suited for those with intermediate Unity.
"As a beginner, I found some sections moved very fast and required me to pause and rewatch often."
"Definitely recommend having a solid foundation in Unity scripting and C# before attempting this course."
"Some parts were quite challenging if you don't already have intermediate experience, which the course clearly states."

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 2D Game Developer Course Farming RPG with these activities:
Review C# Scripting Fundamentals
Strengthen your C# scripting skills to better understand the game logic and mechanics implemented in the course.
Browse courses on C# Scripting
Show steps
  • Review basic C# syntax and concepts.
  • Practice writing simple scripts in Unity.
  • Familiarize yourself with Unity's API.
Review 'Unity 2021 Cookbook'
Reference a cookbook to quickly find solutions to common problems encountered during game development.
Show steps
  • Browse the table of contents for relevant topics.
  • Read through recipes related to game mechanics.
  • Implement solutions in your own project.
Implement a Basic Inventory System
Build a simplified inventory system to reinforce your understanding of item management and UI implementation.
Show steps
  • Create item data structures and classes.
  • Design a basic inventory UI.
  • Implement item adding and removing functionality.
  • Display item information in the UI.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Create a Devlog Series
Document your progress and share your learnings by creating a devlog series on YouTube or a blog.
Show steps
  • Record or write about your development process.
  • Edit your videos or blog posts.
  • Share your content online.
Contribute to a Unity Asset
Contribute to an open-source Unity asset related to 2D game development or RPG mechanics.
Show steps
  • Find an open-source Unity asset project.
  • Identify a bug or feature to work on.
  • Submit a pull request with your changes.
Review 'Game Programming Patterns'
Study game programming patterns to improve code structure and design.
Show steps
  • Read about a specific game programming pattern.
  • Identify opportunities to apply the pattern.
  • Implement the pattern in your project.
Create a Game Design Document
Develop a comprehensive game design document for your farming RPG to solidify your vision and planning skills.
Show steps
  • Define the core gameplay mechanics.
  • Design the game's world and characters.
  • Outline the game's story and progression.
  • Create mockups of the game's UI.

Career center

Learners who complete Unity 2D Game Developer Course Farming RPG will develop knowledge and skills that may be useful to these careers:
Game Developer
A game developer is responsible for designing, coding, and debugging video games. The Unity 2D Game Developer Course Farming RPG is directly relevant to this role, especially for those interested in creating 2D games within the Unity engine. This course provides hands-on experience in developing core game systems and functionality, covering code and Unity configurations, which are essential skills for any game developer. This course may be useful because it helps the developer understand how to create games similar to Stardew Valley and Harvest Moon.
Indie Game Developer
An indie game developer typically works independently or in a small team to create and publish their own games. This Unity 2D Game Developer Course Farming RPG is incredibly useful for anyone pursuing this path. It offers a comprehensive understanding of game development, from project setup to advanced features like inventory management and scene management. The course emphasizes practical skills and provides assets and complete projects, potentially accelerating the development process for indie game developers. Overall, this course may be useful for those interested in being indie game developers.
Unity Developer
A Unity developer specializes in using the Unity game engine to create interactive experiences, including video games and simulations. This Unity 2D Game Developer Course Farming RPG can assist you with a role like this. It provides in-depth training in Unity 2D development, covering topics such as game architecture, player basics, scenes, and tile maps. The course's project-based approach, including a complete Unity project you can download, is valuable for building a strong portfolio, which is extremely helpful for Unity Developers. This course may be useful if you are interested in making 2D games using Unity.
Gameplay Programmer
A gameplay programmer specializes in implementing the game mechanics, player controls, and artificial intelligence that make a game fun and engaging. Gameplay Programmers may find the Unity 2D Game Developer Course Farming RPG to be a useful resource. The course covers core gameplay elements such as player movement, item interaction, and game time systems. By learning these skills, and others, gameplay programmers may find this course to be the best choice.
Mobile Game Developer
Mobile game developers specialize in creating games for smartphones and tablets. This Unity 2D Game Developer Course Farming RPG may be useful, as the fundamentals of 2D game development taught in the course are applicable to mobile platforms. The course may also help you understand how to design games that are optimized for mobile devices, considering factors such as screen size, touch input, and performance constraints. Overall mobile game developers may find this course to be the best choice.
Technical Artist
Technical artists bridge the gap between artists and programmers, optimizing art assets for use in a game engine and developing tools to improve the art pipeline. This Unity 2D Game Developer Course Farming RPG may teach you how to work with assets and implement them effectively within Unity. Understanding the technical constraints and optimization techniques taught in this course can help technical artists to create visually impressive and performant games.
Game Designer
A game designer is responsible for creating the concept, rules, and overall design of a video game. The Unity 2D Game Developer Course Farming RPG may be useful to a game designer in several ways because it provides insights into the technical aspects of game development. This course helps a game designer to understand how game mechanics are implemented in Unity, including player controls, inventory systems, and scene transitions. The more the game designer knows of game development, the easier they will find communicating with developers.
Level Designer
Level designers create the environments and layouts in which games take place, focusing on gameplay flow and player experience. While not purely about artistic creation, this Unity 2D Game Developer Course Farming RPG may give you insight into how levels are programatically built, and how tilemaps and collision tiles are used to construct game worlds. A level designers can use this knowledge and may become better at their job. They will know what to expect.
2D Artist
A 2D artist creates the visual elements for 2D games, including characters, backgrounds, and animations. While this Unity 2D Game Developer Course Farming RPG focuses primarily on development, it does involve working with assets and tilemaps, which can be helpful for anyone who wants to be a 2D artist. Working with existing assets, the 2D artist can learn about importing assets from the Unity Asset Store as well as third-party applications. Seeing how the art comes together in Unity may be helpful for a 2D artist in understanding the needs of a game development team.
Game Artist
A game artist creates the visual assets for video games, including characters, environments, and special effects. While the Unity 2D Game Developer Course Farming RPG is primarily focused on the development side, it involves working with art assets and implementing them in the Unity engine. Working with other developers, the game artist can learn about importing assets from the Unity Asset Store as well as third-party applications. The game artist may find it useful to see how art comes together in Unity.
Simulation Developer
Simulation developers create virtual environments and scenarios for training, research, or entertainment purposes. This Unity 2D Game Developer Course Farming RPG may assist in this role, especially if the simulation involves elements of farming, resource management, or character interaction. The course's focus on game mechanics and systems can be applied to simulations, making it easier to develop realistic and engaging experiences. The knowledge may even be used in business.
Software Engineer
Software engineers apply engineering principles to design, develop, and test software systems, and can sometimes work on video games. Although this Unity 2D Game Developer Course Farming RPG may not be directly related to all aspects of software engineering, its focus on C# scripting and Unity's architecture may be useful. The course will help build a foundation in game development, and may introduce software engineers to the unique challenges and opportunities in the game industry.
Augmented Reality Developer
Augmented reality developers create applications that overlay digital content onto the real world, often using devices like smartphones or tablets. While the Unity 2D Game Developer Course Farming RPG may not be directly focused on AR, the skills learned in Unity development and C# programming are transferable. This course may help developers who are wishing to learn a new skill. Overall, augmented reality developers may find this course to be the best choice.
Virtual Reality Developer
Virtual reality developers create immersive experiences for VR headsets, often involving 3D environments and interactive elements. The Unity 2D Game Developer Course Farming RPG is a stepping stone, because it can act as an accessible introduction to the Unity engine and C# scripting. Although it focuses on 2D game development rather than 3D, learning the fundamentals of Unity and game logic can be an advantage for developers who are interested in VR. Virtual reality developers may find this course to be the best choice.
Quality Assurance Tester
Quality assurance testers are responsible for finding and reporting bugs in video games to ensure a high-quality product. While the Unity 2D Game Developer Course Farming RPG is not directly focused on testing, understanding the development process and game mechanics can be highly beneficial. This course may help QA testers gain a better understanding of the potential issues that can arise during development, making them more effective at finding and reporting bugs. It could also open up opportunities to join small game development teams.

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 Unity 2D Game Developer Course Farming RPG.
Explores common design patterns used in game development. Understanding these patterns can help you write more maintainable and efficient code. It provides a deeper understanding of the underlying principles behind game architecture. This book is more valuable as additional reading to improve your overall game development skills.
Provides practical solutions to common Unity development challenges. It offers recipes for implementing various game mechanics, including those relevant to farming RPGs. It serves as a useful reference for troubleshooting and expanding upon the course material. The cookbook format allows for quick access to specific solutions.

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