Here is what I’ve come up with for the basic outline of the guide. This will almost certainly change as I build it, but I think it is pretty close.
If you have any ideas on what you’d like to see in the guide (from a programming or game point-of-view), please leave a comment.
UPDATE 22 May 2014: To see the lessons, visit the “Learn C# by Building a Simple RPG – Index” page.
- Define the game we’ll build
- Installing Visual Studio Express 2013 for Windows Desktop
- What is a program?
- Compare with a recipe (ingredients = objects, cooking steps = procedures)
- What are objects/classes?
- What is procedural code?
- Importance of clear naming
- Creating the solution in Visual Studio
- Create multiple projects (UI, business logic)
- Default files
- Set reference from UI project to engine project
- Create multiple projects (UI, business logic)
- Creating the character class
- Naming classes, properties, and methods
- Scope (public/internal)
- Properties
- Datatypes (string, int, etc.)
- With, and without, backing variables
- Private/public scoping of properties and backing variables
- Start with Name property only
- Set without constructor
- Set through constructor
- Importance of matching casing of parameters/properties
- Add other properties
- Create the simple UI
- Character creation screen
- “using” statement to Entities
- Game screen
- Character is passed from character creation screen
- Display values in labels
- Character creation screen
- Creating the item class
- Items that can have items inside of them (chests/bags/etc.)
- Introduce base classes and class interfaces
- Creating the location class
- Need minimum level to enter
- Need specific item to enter
- Creating a monster class
- Create abstract ‘Creature’ class
- Maximum/CurrentHitPoints properties
- Attack method
- Have Character class use this as a base
- Add List<Item> for inventory
- Create abstract ‘Creature’ class
- Creating, and populating the ‘world’
- Static class/methods
- Constants
- Connecting locations to each other
- Adding items
- List/collection
- Simple UI forms
- Character name entry
- Drag-and-drop controls (label, textbox, button)
- Create Game UI form
- Add in simple controls
- Character name entry
- How to use the debugger
- Moving around in the world
- Switch statement
- Adding items to inventory
- Limited inventory space
- Stacking items (different quantity for different types of items)
- Constructors in derived classes
- Use of items – determine with class interfaces
- Weapons
- Armor/clothes
- Consumables (food/potions/etc.)
- For, foreach and if
- Crafting complex items (items that use other items)
- Creating creatures
- Random numbers for hit points
- Move HitPoint label display to shared method
- Loot table for each creature
- Move Gold label display to shared method
- Fighting creatures
- Compare attack skill against armor class
- Random numbers of damage
- Math.Max
- Add experience
- Increase character level
- Collecting loot items
- Using potions/foods
- Update fighting code to allow using potions/food
- Save/read settings to file on disk