> For the complete documentation index, see [llms.txt](https://infinitypbr.gitbook.io/magic-pig-games/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://infinitypbr.gitbook.io/magic-pig-games/legend-of-the-stones/actors-players-npcs.md).

# Actors, Players, NPCs

Using game modules, all things that might have stats, conditions, give conditions, have an inventory, and so on, will benefit from having an `actor` class which inherits from [`GameModulesInventoryActor`](/magic-pig-games/game-modules-4/module-documentation/game-modules-actor.md). Just because it has an actor class on it, does not mean it's going to walk around and do things in the world.

## Entity

All entities will be interactable, implementing `IAmInteractable`. They will have to decide for themselves what happens when they are interacted with. And all will have a `public actor Actor` on them. `Actor` is a class which inherits from `GameModulesInventoryActor`, and may have additional functionality on it in the future, shared by all `Entity` objects.

An entity can be the Player, or a townsperson, or a dragon. It can also be a treasure box, a secret wall that can be destroyed, or a barrel that explodes causing massive damage.

## Player

This is one of the main player characters. These are special. For **Legend of the Stones**, there will be 4 players, each of whom does not have an in-game body. Instead, we have a first person view with four portraits. However, each player will be a `monobehaviour` (inheriting from `Entity`), and can do things with `Update()` and other similar methods.

## Character

This is an `Entity` which can move around the world. It doesn't mean that it's an `NPC`, it just means that it may wander around the world in some way. While it can be interacted with, it does not have all the engagement mechanics that an `NPC` would have.

## NPC

This is a `Character` which engages with the player. It may be an enemy or a friend. `NPCs` will also be able to join the party as a "hireling" or follower.

{% hint style="success" %}
While the chart below shows the basic flow of inheritance, we will likely have additional classes added. For sure we will have specific classes for specific NPC/Enemies such as "Slime", which has unique methods and properties to that specific character.

We may also add new classes for specific non-character entities. One may imagine a "`Barrel`" class which inherits from Entity, and handles all the aspects of being a barrel. Even then, we may have "`PotionBarrel`", "`LootBarrel`", etc to further segment things out.
{% endhint %}

<figure><img src="/files/L7nDXoMZ8cxyiQBB7pCI" alt=""><figcaption></figcaption></figure>
