Fixed all errors in doc building

This commit is contained in:
Griatch 2020-07-11 00:14:13 +02:00
parent 9fbfc8f8d0
commit 76761825d0
80 changed files with 766 additions and 767 deletions

View file

@ -3,50 +3,50 @@
This explains common recurring terms used in the Evennia docs. It will be expanded as needed.
- _[account](Glossary#account)_ - the player's account on the game
- _[admin-site](Glossary#admin-site)_ - the Django web page for manipulating the database
- _[attribute](Glossary#attribute)_ - persistent, custom data stored on typeclasses
- _[channel](Glossary#channel)_ - game communication channels
- _[character](Glossary#character)_ - the player's avatar in the game, controlled from
_[account](Glossary#account)_
- _[core](Glossary#core)_ - a term used for the code distributed with Evennia proper
- _[django](Glossary#django)_ - web framework Evennia uses for database access and web integration
- _[field](Glossary#field)_ - a _[typeclass](Glossary#typeclass)_ property representing a database
- _[account](./Glossary#account)_ - the player's account on the game
- _[admin-site](./Glossary#admin-site)_ - the Django web page for manipulating the database
- _[attribute](./Glossary#attribute)_ - persistent, custom data stored on typeclasses
- _[channel](./Glossary#channel)_ - game communication channels
- _[character](./Glossary#character)_ - the player's avatar in the game, controlled from
_[account](./Glossary#account)_
- _[core](./Glossary#core)_ - a term used for the code distributed with Evennia proper
- _[django](./Glossary#django)_ - web framework Evennia uses for database access and web integration
- _[field](./Glossary#field)_ - a _[typeclass](./Glossary#typeclass)_ property representing a database
column
- _[git](Glossary#git)_ - the version-control system we use
- _[github](Glossary#github)_ - the online hosting of our source code
- _[migrate](Glossary#migrate)_ - updating the database schema
- _[git](./Glossary#git)_ - the version-control system we use
- _[github](./Glossary#github)_ - the online hosting of our source code
- _[migrate](./Glossary#migrate)_ - updating the database schema
- _[multisession mode`](#multisession-mode)_ - a setting defining how users connect to Evennia
- _[object](Glossary#object)_ - Python instance, general term or in-game
_[typeclass](Glossary#typeclass)_
- _[pip](Glossary#pip)_ - the Python installer
- _[object](./Glossary#object)_ - Python instance, general term or in-game
_[typeclass](./Glossary#typeclass)_
- _[pip](./Glossary#pip)_ - the Python installer
- _player_ - the human connecting to the game with their client
- _[puppet](Glossary#puppet)_ - when an [account](Glossary#account) controls an in-game
[object](Glossary#object)
- _[property](Glossary#property)_ - a python property
- _evenv_ - see _[virtualenv](Glossary#virtualenv)_
- _[repository](Glossary#repository)_ - a store of source code + source history
- _[script](Glossary#script)_ - a building block for custom storage, systems and time-keepint
- _[session](Glossary#session)_ - represents one client connection
- _[ticker](Glossary#ticker)_ - Allows to run events on a steady 'tick'
- _[twisted](Glossary#twisted)_ - networking engine responsible for Evennia's event loop and
- _[puppet](./Glossary#puppet)_ - when an [account](./Glossary#account) controls an in-game
[object](./Glossary#object)
- _[property](./Glossary#property)_ - a python property
- _evenv_ - see _[virtualenv](./Glossary#virtualenv)_
- _[repository](./Glossary#repository)_ - a store of source code + source history
- _[script](./Glossary#script)_ - a building block for custom storage, systems and time-keepint
- _[session](./Glossary#session)_ - represents one client connection
- _[ticker](./Glossary#ticker)_ - Allows to run events on a steady 'tick'
- _[twisted](./Glossary#twisted)_ - networking engine responsible for Evennia's event loop and
communications
- _[typeclass](Glossary#typeclass)_ - Evennia's database-connected Python class
- _upstream_ - see _[github](Glossary#github)_
- _[virtualenv](Glossary#virtualenv)_ - a Python program and way to make an isolated Python install
- _[typeclass](./Glossary#typeclass)_ - Evennia's database-connected Python class
- _upstream_ - see _[github](./Glossary#github)_
- _[virtualenv](./Glossary#virtualenv)_ - a Python program and way to make an isolated Python install
---
### _account_
The term 'account' refers to the [player's](Glossary#player) unique account on the game. It is
represented by the `Account` [typeclass](Glossary#typeclass) and holds things like email, password,
The term 'account' refers to the [player's](./Glossary#player) unique account on the game. It is
represented by the `Account` [typeclass](./Glossary#typeclass) and holds things like email, password,
configuration etc.
When a player connects to the game, they connect to their account. The account has *no*
representation in the game world. Through their Account they can instead choose to
[puppet](Glossary#puppet) one (or more, depending on game mode) [Characters](Glossary#character) in
[puppet](./Glossary#puppet) one (or more, depending on game mode) [Characters](./Glossary#character) in
the game.
In the default [multisession mode](Component/Sessions#multisession-mode) of Evennia, you immediately start
@ -55,16 +55,16 @@ servers used to work.
### _admin-site_
This usually refers to [Django's](Glossary#django) *Admin site* or database-administration web page
This usually refers to [Django's](./Glossary#django) *Admin site* or database-administration web page
([link to Django docs](https://docs.djangoproject.com/en/2.1/ref/contrib/admin/)). The admin site is
an automatically generated web interface to the database (it can be customized extensively). It's
reachable from the `admin` link on the default Evennia website you get with your server.
### _attribute_
The term _Attribute_ should not be confused with ([properties](Glossary#property) or
[fields](Glossary#field). The `Attribute` represents arbitrary pieces of data that can be attached
to any [typeclassed](Glossary#typeclass) entity in Evennia. Attributes allows storing new persistent
The term _Attribute_ should not be confused with ([properties](./Glossary#property) or
[fields](./Glossary#field). The `Attribute` represents arbitrary pieces of data that can be attached
to any [typeclassed](./Glossary#typeclass) entity in Evennia. Attributes allows storing new persistent
data on typeclasses without changing their underlying database schemas.
[Read more about Attributes here](Component/Attributes).
@ -72,23 +72,23 @@ data on typeclasses without changing their underlying database schemas.
A _Channel_ refers to an in-game communication channel. It's an entity that people subscribe to and
which re-distributes messages between all subscribers. Such subscribers default to being
[Accounts](Glossary#account), for out-of-game communication but could also be [Objects (usually
[Accounts](./Glossary#account), for out-of-game communication but could also be [Objects (usually
Characters)](Glossary#character) if one wanted to adopt Channels for things like in-game walkie-
talkies or phone systems. It is represented by the `Channel` typeclass. [You can read more about the
comm system here](Communications#channels).
### _character_
The _Character_ is the term we use for the default avatar being [puppeted](Glossary#puppet) by the
[account](Glossary#account) in the game world. It is represented by the `Character` typeclass (which
is a child of [Object](Glossary#object)). Many developers use children of this class to represent
The _Character_ is the term we use for the default avatar being [puppeted](./Glossary#puppet) by the
[account](./Glossary#account) in the game world. It is represented by the `Character` typeclass (which
is a child of [Object](./Glossary#object)). Many developers use children of this class to represent
monsters and other NPCs. You can [read more about it here](Component/Objects#subclasses-of-object).
### _django_
[Django](https://www.djangoproject.com/) is a professional and very popular Python web framework,
similar to Rails for the Ruby language. It is one of Evennia's central library dependencies (the
other one is [Twisted](Glossary#twisted)). Evennia uses Django for two main things - to map all
other one is [Twisted](./Glossary#twisted)). Evennia uses Django for two main things - to map all
database operations to Python and for structuring our web site.
Through Django, we can work with any supported database (SQlite3, Postgres, MySQL ...) using generic
@ -97,7 +97,7 @@ Python instead of database-specific SQL: A database table is represented in Djan
There is usually no need to know the details of Django's database handling in order to use Evennia -
it will handle most of the complexity for you under the hood using what we call
[typeclasses](Glossary#typeclass). But should you need the power of Django you can always get it.
[typeclasses](./Glossary#typeclass). But should you need the power of Django you can always get it.
Most commonly people want to use "raw" Django when doing more advanced/custom database queries than
offered by Evennia's [default search functions](Howto/Starting/Part1/Searching-Things). One will then need
to read about Django's _querysets_. Querysets are Python method calls on a special form that lets
@ -115,24 +115,24 @@ when a user goes that URL in their browser, enters data into a form etc. The ret
to show. Django also offers templating with features such as being able to add special markers in
HTML where it will insert the values of Python variables on the fly (like showing the current player
count on the web page). [Here is one of our tutorials on wiring up such a web page](Add-a-simple-
new-web-page). Django also comes with the [admin site](Glossary#admin-site), which automatically
new-web-page). Django also comes with the [admin site](./Glossary#admin-site), which automatically
maps the database into a form accessible from a web browser.
### _core_
This term is sometimes used to represent the main Evennia library code suite, *excluding* its
[contrib](Glossary#contrib) directory. It can sometimes come up in code reviews, such as
[contrib](./Glossary#contrib) directory. It can sometimes come up in code reviews, such as
> Evennia is game-agnostic but this feature is for a particular game genre. So it does not belong in
core. Better make it a contrib.
### _field_
A _field_ or _database field_ in Evennia refers to a [property](Glossary#property) on a
[typeclass](Glossary#typeclass) directly linked to an underlying database column. Only a few fixed
A _field_ or _database field_ in Evennia refers to a [property](./Glossary#property) on a
[typeclass](./Glossary#typeclass) directly linked to an underlying database column. Only a few fixed
properties per typeclass are database fields but they are often tied to the core functionality of
that base typeclass (for example [Objects](Glossary#object) store its location as a field). In all
other cases, [attributes](Glossary#attribute) are used to add new persistent data to the typeclass.
that base typeclass (for example [Objects](./Glossary#object) store its location as a field). In all
other cases, [attributes](./Glossary#attribute) are used to add new persistent data to the typeclass.
[Read more about typeclass properties here](Component/Typeclasses#about-typeclass-properties).
### _git_
@ -143,12 +143,12 @@ tool. It allows us to track the development of the Evennia code by dividing it i
come back to it later if later changes caused problems. By tracking commits we know what 'version'
of the code we are currently using.
Evennia's source code + its source history is jointly called a [repository](Glossary#repository).
This is centrally stored at our online home on [GitHub](Glossary#github). Everyone using or
Evennia's source code + its source history is jointly called a [repository](./Glossary#repository).
This is centrally stored at our online home on [GitHub](./Glossary#github). Everyone using or
developing Evennia makes a 'clone' of this repository to their own computer - everyone
automatically gets everything that is online, including all the code history.
> Don't confuse Git and [GitHub](Glossary#github). The former is the version control system. The
> Don't confuse Git and [GitHub](./Glossary#github). The former is the version control system. The
latter is a website (run by a company) that allows you to upload source code controlled by Git for
others to see (among other things).
@ -172,13 +172,13 @@ you 'download' Evennia. You only need to do this once.
### _migrate_
This term is used for upgrading the database structure (it's _schema_ )to a new version. Most often
this is due to Evennia's [upstream](Glossary#github) schema changing. When that happens you need to
migrate that schema to the new version as well. Once you have used [git](Glossary#git) to pull the
this is due to Evennia's [upstream](./Glossary#github) schema changing. When that happens you need to
migrate that schema to the new version as well. Once you have used [git](./Glossary#git) to pull the
latest changes, just `cd` into your game dir and run
evennia migrate
That should be it (see [virtualenv](Glossary#virtualenv) if you get a warning that the `evennia`
That should be it (see [virtualenv](./Glossary#virtualenv) if you get a warning that the `evennia`
command is not available). See also [Updating your game](Coding/Updating-Your-Game) for more details.
> Technically, migrations are shipped as little Python snippets of code that explains which database
@ -195,23 +195,23 @@ here](Sessions#multisession-mode).
### _github_
[Github](https://github.com/evennia) is where Evennia's source code and documentation is hosted.
This online [repository](Glossary#repository) of code we also sometimes refer to as _upstream_.
This online [repository](./Glossary#repository) of code we also sometimes refer to as _upstream_.
GitHub is a business, offering free hosting to Open-source projects like Evennia. Despite the
similarity in name, don't confuse GitHub the website with [Git](Glossary#git), the versioning
system. Github hosts Git [repositories](Glossary#repository) online and helps with collaboration and
similarity in name, don't confuse GitHub the website with [Git](./Glossary#git), the versioning
system. Github hosts Git [repositories](./Glossary#repository) online and helps with collaboration and
infrastructure. Git itself is a separate project.
### _object_
In general Python (and other [object-oriented languages](https://en.wikipedia.org/wiki/Object-
oriented_programming)), an `object` is what we call the instance of a *class*. But one of Evennia's
core [typeclasses](Glossary#typeclasss) is also called "Object". To separate these in the docs we
core [typeclasses](./Glossary#typeclasss) is also called "Object". To separate these in the docs we
try to use `object` to refer to the general term and capitalized `Object` when we refer to the
typeclass.
The `Object` is a typeclass that represents all *in-game* entities, including
[Characters](Glossary#character), rooms, trees, weapons etc. [Read more about Objects here](Component/Objects).
[Characters](./Glossary#character), rooms, trees, weapons etc. [Read more about Objects here](Component/Objects).
### _pip_
@ -232,14 +232,14 @@ means that if the code in `<folder>` changes, the installed Python package is im
If not using `-e`, one would need to run `pip install --upgrade <folder>` every time to make the
changes available when you import this package into your code. Evennia is installed this way.
For development, `pip` is usually used together with a [virtualenv](Glossary#virtualenv) to install
For development, `pip` is usually used together with a [virtualenv](./Glossary#virtualenv) to install
all packages and dependencies needed for a project in one, isolated location on the hard drive.
### _puppet_
An [account](Glossary#account) can take control and "play as" any [Object](Glossary#object). When
An [account](./Glossary#account) can take control and "play as" any [Object](./Glossary#object). When
doing so, we call this _puppeting_, (like [puppeteering](https://en.wikipedia.org/wiki/Puppeteer)).
Normally the entity being puppeted is of the [Character](Glossary#character) subclass but it does
Normally the entity being puppeted is of the [Character](./Glossary#character) subclass but it does
not have to be.
### _property_
@ -247,25 +247,25 @@ not have to be.
A _property_ is a general term used for properties on any Python object. The term also sometimes
refers to the `property` built-in function of Python ([read more here](https://www.python-
course.eu/python3_properties.php)). Note the distinction between properties,
[fields](Glossary#field) and [Attributes](Glossary#attribute).
[fields](./Glossary#field) and [Attributes](./Glossary#attribute).
### _repository_
A _repository_ is a version control/[git](Glossary#git) term. It represents a folder containing
A _repository_ is a version control/[git](./Glossary#git) term. It represents a folder containing
source code plus its versioning history.
> In Git's case, that history is stored in a hidden folder `.git`. If you ever feel the need to look
into this folder you probably already know enough Git to know why.
The `evennia` folder you download from us with `git clone` is a repository. The code on
[GitHub](Glossary#github) is often referred to as the 'online repository' (or the _upstream_
[GitHub](./Glossary#github) is often referred to as the 'online repository' (or the _upstream_
repository). If you put your game dir under version control, that of course becomes a repository as
well.
### _script_
When we refer to _Scripts_, we generally refer to the `Script` [typeclass](Component/Typeclasses). Scripts are
the mavericks of Evennia - they are like [Objects](Glossary#object) but without any in-game
the mavericks of Evennia - they are like [Objects](./Glossary#object) but without any in-game
existence. They are useful as custom places to store data but also as building blocks in persistent
game systems. Since the can be initialized with timing capabilities they can also be used for long-
time persistent time keeping (for fast updates other types of timers may be better though).
@ -276,9 +276,9 @@ time persistent time keeping (for fast updates other types of timers may be bett
A [Session](Component/Sessions) is a Python object representing a single client connection to the server. A
given human player could connect to the game from different clients and each would get a Session
(even if you did not allow them to actually log in and get access to an
[account](Glossary#account)).
[account](./Glossary#account)).
Sessions are _not_ [typeclassed](Glossary#typeclass) and has no database persistence. But since they
Sessions are _not_ [typeclassed](./Glossary#typeclass) and has no database persistence. But since they
always exist (also when not logged in), they share some common functionality with typeclasses that
can be useful for certain game states.
@ -295,25 +295,25 @@ to be called when those ticks come around.
The [typeclass](Component/Typeclasses) is an Evennia-specific term. A typeclass allows developers to work with
database-persistent objects as if they were normal Python objects. It makes use of specific
[Django](Glossary#django) features to link a Python class to a database table. Sometimes we refer to
[Django](./Glossary#django) features to link a Python class to a database table. Sometimes we refer to
such code entities as _being typeclassed_.
Evennia's main typeclasses are [Account](Glossary#account), [Object](Glossary#object),
[Script](Glossary#script) and [Channel](Glossary#channel). Children of the base class (such as
[Character](Glossary#character)) will use the same database table as the parent, but can have vastly
different Python capabilities (and persistent features through [Attributes](Glossary#attributes) and
[Tags](Glossary#tags). A typeclass can be coded and treated pretty much like any other Python class
Evennia's main typeclasses are [Account](./Glossary#account), [Object](./Glossary#object),
[Script](./Glossary#script) and [Channel](./Glossary#channel). Children of the base class (such as
[Character](./Glossary#character)) will use the same database table as the parent, but can have vastly
different Python capabilities (and persistent features through [Attributes](./Glossary#attributes) and
[Tags](./Glossary#tags). A typeclass can be coded and treated pretty much like any other Python class
except it must inherit (at any distance) from one of the base typeclasses. Also, creating a new
instance of a typeclass will add a new row to the database table to which it is linked.
The [core](Glossary#core) typeclasses in the Evennia library are all named `DefaultAccount`,
The [core](./Glossary#core) typeclasses in the Evennia library are all named `DefaultAccount`,
`DefaultObject` etc. When you initialize your [game dir] you automatically get empty children of
these, called `Account`, `Object` etc that you can start working with.
### _twisted_
[Twisted](https://twistedmatrix.com/trac/) is a heavy-duty asynchronous networking engine. It is one
of Evennia's two major library dependencies (the other one is [Django](Glossary#django)). Twisted is
of Evennia's two major library dependencies (the other one is [Django](./Glossary#django)). Twisted is
what "runs" Evennia - it handles Evennia's event loop. Twisted also has the building blocks we need
to construct network protocols and communicate with the outside world; such as our MUD-custom
version of Telnet, Telnet+SSL, SSH, webclient-websockets etc. Twisted also runs our integrated web
@ -339,7 +339,7 @@ Python version than default.
A virtualenv is 'activated' only for the console/terminal it was started in, but it's safe to
activate the same virtualenv many times in different windows if you want. Once activated, all Python
packages now installed with [pip](Glossary#pip) will install to `evenv` rather than to a global
packages now installed with [pip](./Glossary#pip) will install to `evenv` rather than to a global
location like `/usr/local/bin` or `C:\Program Files`.
> Note that if you have root/admin access you *could* install Evennia globally just fine, without