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.
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
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.
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.
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.
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.