# Part 3: How we get there

Warning

The tutorial game is under development and is not yet complete, nor tested. Use the existing lessons as inspiration and to help get you going, but don’t expect out-of-the-box perfection from it at this time.

In part three of the Evennia Beginner tutorial we will go through the actual creation of our tutorial game EvAdventure, based on the Knave RPG ruleset.

This is a big part. You’ll be seeing a lot of code and there are plenty of lessons to go through. Take your time!

If you followed the previous parts of this tutorial you will have some notions about Python and where to find and make use of things in Evennia. We also have a good idea of the type of game we will create.

Even if this is not the game-style you are interested in, following along will give you a lot of experience using Evennia and be really helpful for doing your own thing later!

Fully coded examples of all code we make in this part can be found in the evennia/contrib/tutorials/evadventure package.

## Lessons

- Code structure and Utilities
- Rules and dice rolling
- Player Characters
- In-game Objects and items
- Handling Equipment
- Character Generation
- In-game Rooms
- Non-Player-Characters (NPCs)
- Game Quests
- In-game Shops
- Dynamically generated Dungeon
- In-game Commands

## Table of Contents

- Code structure and Utilities
  - Folder structure
  - Enums
  - Utility module
  - Testing
    - Running your test
  - Summary
- Rules and dice rolling
  - Summary of Knave rules
  - Making a rule module
  - Rolling dice
    - Generic dice roller
    - Rolling with advantage
    - Saving throws
    - Opposed saving throw
    - Morale check
    - Roll for Healing
    - Rolling on a table
    - Roll for death
  - Testing
    - Mocking and patching
  - Summary
- Player Characters
  - Inheritance structure
  - Living mixin class
  - Character class
    - Funcparser inlines
    - Backtracking
  - Connecting the Character with Evennia
  - Unit Testing
  - About races and classes
  - Summary
- In-game Objects and items
  - New Enums
  - The base object
    - Using Attributes or not
    - Creating tags in `at_object_creation`
  - Other object types
  - Consumables
  - Weapons
  - Magic
  - Armor
  - Your Bare hands
  - Testing and Extra credits
- Handling Equipment
  - EquipmentHandler that saves
  - Connecting the EquipmentHandler
  - Expanding the Equipmenthandler
  - `.validate_slot_usage`
    - `.max_slots`
    - `.count_slots`
    - Validating slots
  - `.add` and `.remove`
  - Moving things around
  - Get everything
  - Weapon and armor
  - Extra credits
  - Unit Testing
  - Summary
- Character Generation
  - How it will work
  - Random tables
  - Storing state of the menu
    - Showing the sheet
    - Apply character
  - Initializing EvMenu
  - Main Node: Choosing what to do
  - Node: Changing your name
  - Node: Swapping Abilities around
  - Node: Creating the Character
  - Tying the nodes together
  - Conclusions
- In-game Rooms
- Non-Player-Characters (NPCs)
- Game Quests
- In-game Shops
- Dynamically generated Dungeon
- In-game Commands