|
@@ -151,7 +156,10 @@
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Coding Introduction
+
+
@@ -390,7 +395,10 @@ never raise a traceback but instead echo errors through logging. See
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Coding Utils
+
+
@@ -42,7 +47,7 @@ command over and over. Or in an advanced combat system, a massive swing may
offer a chance of lots of damage at the cost of not being able to re-do it for
a while. Such effects are called cooldowns.
This page exemplifies a very resource-efficient way to do cooldowns. A more
-‘active’ way is to use asynchronous delays as in the command duration
+‘active’ way is to use asynchronous delays as in the command duration
tutorial, the two might be useful to
combine if you want to echo some message to the user after the cooldown ends.
@@ -89,7 +94,7 @@ this syntax. A short example will probably make it clear:
Important: The yield functionality will only work in the func method of
Commands. It only works because Evennia has especially
catered for it in Commands. If you want the same functionality elsewhere you
-must use the interactive decorator.
+must use the interactive decorator.
The important line is the yield 10. It tells Evennia to “pause” the command
and to wait for 10 seconds to execute the rest. If you add this command and
@@ -662,7 +667,10 @@ If you want to provide arguments for utils.delay to use, when calling your callb
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Command Duration
+
+
@@ -256,7 +261,10 @@
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Command Prompt
+
+
@@ -38,13 +43,13 @@
Command Sets
Command Sets are intimately linked with Commands and you should be familiar with Commands before reading this page. The two pages were split for ease of reading.
A Command Set (often referred to as a CmdSet or cmdset) is the basic unit for storing one or more Commands. A given Command can go into any number of different command sets. Storing Command classes in a command set is the way to make commands available to use in your game.
-When storing a CmdSet on an object, you will make the commands in that command set available to the object. An example is the default command set stored on new Characters. This command set contains all the useful commands, from look and inventory to @dig and @reload (permissions then limit which players may use them, but that’s a separate topic).
+When storing a CmdSet on an object, you will make the commands in that command set available to the object. An example is the default command set stored on new Characters. This command set contains all the useful commands, from look and inventory to @dig and @reload (permissions then limit which players may use them, but that’s a separate topic).
When an account enters a command, cmdsets from the Account, Character, its location, and elsewhere are pulled together into a merge stack. This stack is merged together in a specific order to create a single “merged” cmdset, representing the pool of commands available at that very moment.
An example would be a Window object that has a cmdset with two commands in it: look through window and open window. The command set would be visible to players in the room with the window, allowing them to use those commands only there. You could imagine all sorts of clever uses of this, like a Television object which had multiple commands for looking at it, switching channels and so on. The tutorial world included with Evennia showcases a dark room that replaces certain critical commands with its own versions because the Character cannot see.
If you want a quick start into defining your first commands and using them with command sets, you can head over to the Adding Command Tutorial which steps through things without the explanations.
Defining Command Sets
- A CmdSet is, as most things in Evennia, defined as a Python class inheriting from the correct parent (evennia.CmdSet, which is a shortcut to evennia.commands.cmdset.CmdSet). The CmdSet class only needs to define one method, called at_cmdset_creation(). All other class parameters are optional, but are used for more advanced set manipulation and coding (see the merge rules section).
+ A CmdSet is, as most things in Evennia, defined as a Python class inheriting from the correct parent (evennia.CmdSet, which is a shortcut to evennia.commands.cmdset.CmdSet). The CmdSet class only needs to define one method, called at_cmdset_creation(). All other class parameters are optional, but are used for more advanced set manipulation and coding (see the merge rules section).
1
2
3
@@ -122,11 +127,11 @@
Properties on Command Sets
- There are several extra flags that you can set on CmdSets in order to modify how they work. All are optional and will be set to defaults otherwise. Since many of these relate to merging cmdsets, you might want to read the Adding and Merging Command Sets section for some of these to make sense.
+ There are several extra flags that you can set on CmdSets in order to modify how they work. All are optional and will be set to defaults otherwise. Since many of these relate to merging cmdsets, you might want to read the Adding and Merging Command Sets section for some of these to make sense.
key (string) - an identifier for the cmdset. This is optional, but should be unique. It is used for display in lists, but also to identify special merging behaviours using the key_mergetype dictionary below.
mergetype (string) - allows for one of the following string values: “Union”, “Intersect”, “Replace”, or “Remove”.
-priority (int) - This defines the merge order of the merge stack - cmdsets will merge in rising order of priority with the highest priority set merging last. During a merger, the commands from the set with the higher priority will have precedence (just what happens depends on the merge type). If priority is identical, the order in the merge stack determines preference. The priority value must be greater or equal to -100. Most in-game sets should usually have priorities between 0 and 100. Evennia default sets have priorities as follows (these can be changed if you want a different distribution):
+priority (int) - This defines the merge order of the merge stack - cmdsets will merge in rising order of priority with the highest priority set merging last. During a merger, the commands from the set with the higher priority will have precedence (just what happens depends on the merge type). If priority is identical, the order in the merge stack determines preference. The priority value must be greater or equal to -100. Most in-game sets should usually have priorities between 0 and 100. Evennia default sets have priorities as follows (these can be changed if you want a different distribution):
EmptySet: -101 (should be lower than all other sets)
SessionCmdSet: -20
@@ -136,7 +141,7 @@
ChannelCmdSet: 101 (should usually always be available) - since exits never accept arguments, there is no collision between exits named the same as a channel even though the commands “collide”.
-key_mergetype (dict) - a dict of key:mergetype pairs. This allows this cmdset to merge differently with certain named cmdsets. If the cmdset to merge with has a key matching an entry in key_mergetype, it will not be merged according to the setting in mergetype but according to the mode in this dict. Please note that this is more complex than it may seem due to the merge order of command sets. Please review that section before using key_mergetype.
+key_mergetype (dict) - a dict of key:mergetype pairs. This allows this cmdset to merge differently with certain named cmdsets. If the cmdset to merge with has a key matching an entry in key_mergetype, it will not be merged according to the setting in mergetype but according to the mode in this dict. Please note that this is more complex than it may seem due to the merge order of command sets. Please review that section before using key_mergetype.
duplicates (bool/None default None) - this determines what happens when merging same-priority cmdsets containing same-key commands together. Thedupicate option will only apply when merging the cmdset with this option onto one other cmdset with the same priority. The resulting cmdset will not retain this duplicate setting.
None (default): No duplicates are allowed and the cmdset being merged “onto” the old one will take precedence. The result will be unique commands. However, the system will assume this value to be True for cmdsets on Objects, to avoid dangerous clashes. This is usually the safe bet.
@@ -167,7 +172,7 @@
Command Sets Searched
- When a user issues a command, it is matched against the merged command sets available to the player at the moment. Which those are may change at any time (such as when the player walks into the room with the Window object described earlier).
+ When a user issues a command, it is matched against the merged command sets available to the player at the moment. Which those are may change at any time (such as when the player walks into the room with the Window object described earlier).
The currently valid command sets are collected from the following sources:
@@ -39,7 +44,7 @@
See also:
@@ -136,7 +141,7 @@
cmdstring - the matched key for the command. This would be look in our example.
args - this is the rest of the string, except the command name. So if the string entered was look at sword, args would be “ at sword”. Note the space kept - Evennia would correctly interpret lookat sword too. This is useful for things like /switches that should not use space. In the MuxCommand class used for default commands, this space is stripped. Also see the arg_regex property if you want to enforce a space to make lookat sword give a command-not-found error.
obj - the game Object on which this command is defined. This need not be the caller, but since look is a common (default) command, this is probably defined directly on BigGuy - so obj will point to BigGuy. Otherwise obj could be an Account or any interactive object with commands defined on it, like in the example of the “check time” command defined on a “Clock” object.
-cmdset - this is a reference to the merged CmdSet (see below) from which this command was matched. This variable is rarely used, it’s main use is for the auto-help system (Advanced note: the merged cmdset need NOT be the same as BigGuy.cmdset. The merged set can be a combination of the cmdsets from other objects in the room, for example).
+cmdset - this is a reference to the merged CmdSet (see below) from which this command was matched. This variable is rarely used, it’s main use is for the auto-help system (Advanced note: the merged cmdset need NOT be the same as BigGuy.cmdset. The merged set can be a combination of the cmdsets from other objects in the room, for example).
raw_string - this is the raw input coming from the user, without stripping any surrounding whitespace. The only thing that is stripped is the ending newline marker.
@@ -162,8 +167,8 @@ display to the user. They are useful for creating listings and forms with colors
locks (string) - a lock definition, usually on the form cmd:<lockfuncs>. Locks is a rather big topic, so until you learn more about locks, stick to giving the lockstring "cmd:all()" to make the command available to everyone (if you don’t provide a lock string, this will be assigned for you).
help_category (optional string) - setting this helps to structure the auto-help into categories. If none is set, this will be set to General.
save_for_next (optional boolean). This defaults to False. If True, a copy of this command object (along with any changes you have done to it) will be stored by the system and can be accessed by the next command by retrieving self.caller.ndb.last_cmd. The next run command will either clear or replace the storage.
- arg_regex (optional raw string): Used to force the parser to limit itself and tell it when the command-name ends and arguments begin (such as requiring this to be a space or a /switch). This is done with a regular expression. See the arg_regex section for the details.
- auto_help (optional boolean). Defaults to True. This allows for turning off the auto-help system on a per-command basis. This could be useful if you either want to write your help entries manually or hide the existence of a command from help’s generated list.
+ arg_regex (optional raw string): Used to force the parser to limit itself and tell it when the command-name ends and arguments begin (such as requiring this to be a space or a /switch). This is done with a regular expression. See the arg_regex section for the details.
+ auto_help (optional boolean). Defaults to True. This allows for turning off the auto-help system on a per-command basis. This could be useful if you either want to write your help entries manually or hide the existence of a command from help’s generated list.
is_exit (bool) - this marks the command as being used for an in-game exit. This is, by default, set by all Exit objects and you should not need to set it manually unless you make your own Exit system. It is used for optimization and allows the cmdhandler to easily disregard this command when the cmdset has its no_exits flag set.
is_channel (bool)- this marks the command as being used for an in-game channel. This is, by default, set by all Channel objects and you should not need to set it manually unless you make your own Channel system. is used for optimization and allows the cmdhandler to easily disregard this command when its cmdset has its no_channels flag set.
msg_all_sessions (bool): This affects the behavior of the Command.msg method. If unset (default), calling self.msg(text) from the Command will always only send text to the Session that actually triggered this Command. If set however, self.msg(text) will send to all Sessions relevant to the object this Command sits on. Just which Sessions receives the text depends on the object and the server’s MULTISESSION_MODE.
@@ -453,7 +458,7 @@ everyone while waiting for that user to input their text. Inside a Command’s
Dynamic Commands
Note: This is an advanced topic.
- Normally Commands are created as fixed classes and used without modification. There are however situations when the exact key, alias or other properties is not possible (or impractical) to pre-code (Exits is an example of this).
+ Normally Commands are created as fixed classes and used without modification. There are however situations when the exact key, alias or other properties is not possible (or impractical) to pre-code (Exits is an example of this).
To create a command with a dynamic call signature, first define the command body normally in a class (set your key, aliases to default values), then use the following call (assuming the command class you created is named MyCommand):
1
2
@@ -470,8 +475,8 @@ everyone while waiting for that user to input their text. Inside a Command’s
Exits
Note: This is an advanced topic.
- Exits are examples of the use of a Dynamic Command.
- The functionality of Exit objects in Evennia is not hard-coded in the engine. Instead Exits are normal typeclassed objects that auto-create a CmdSet on themselves when they load. This cmdset has a single dynamically created Command with the same properties (key, aliases and locks) as the Exit object itself. When entering the name of the exit, this dynamic exit-command is triggered and (after access checks) moves the Character to the exit’s destination.
+ Exits are examples of the use of a Dynamic Command.
+ The functionality of Exit objects in Evennia is not hard-coded in the engine. Instead Exits are normal typeclassed objects that auto-create a CmdSet on themselves when they load. This cmdset has a single dynamically created Command with the same properties (key, aliases and locks) as the Exit object itself. When entering the name of the exit, this dynamic exit-command is triggered and (after access checks) moves the Character to the exit’s destination.
Whereas you could customize the Exit object and its command to achieve completely different behaviour, you will usually be fine just using the appropriate traverse_* hooks on the Exit object. But if you are interested in really changing how things work under the hood, check out evennia/objects/objects.py for how the Exit typeclass is set up.
@@ -542,8 +547,8 @@ Whereas you could customize the Exit object and its command to achieve completel
The caller’s own currently active CmdSet.
CmdSets defined on the current account, if caller is a puppeted object.
CmdSets defined on the Session itself.
- The active CmdSets of eventual objects in the same location (if any). This includes commands on Exits.
- Sets of dynamically created System commands representing available Communications.
+ The active CmdSets of eventual objects in the same location (if any). This includes commands on Exits.
+ Sets of dynamically created System commands representing available Communications.
All CmdSets of the same priority are merged together in groups. Grouping avoids order-dependent issues of merging multiple same-prio sets onto lower ones.
@@ -659,7 +664,10 @@ thus do so asynchronously, using callbacks.
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+ Commands
+
+
@@ -165,7 +170,10 @@
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+ Communications
+
+
@@ -122,7 +127,10 @@ tutorial section on how to add new commands to a default command set.
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Connection Screen
+
+
@@ -425,7 +430,10 @@ build steps could be added or removed at this point, adding some features like U
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Continuous Integration
+
+
@@ -69,7 +74,7 @@ chat/forum).
bug or feature, just correcting typos, adjusting formatting or simply using the thing
and reporting when stuff doesn’t make sense helps us a lot.
The most elegant way to contribute code to Evennia is to use GitHub to create a fork of the
-Evennia repository and make your changes to that. Refer to the Forking Evennia version
+Evennia repository and make your changes to that. Refer to the Forking Evennia version
control instructions for detailed instructions.
Once you have a fork set up, you can not only work on your own game in a separate branch, you can
also commit your fixes to Evennia itself. Make separate branches for all Evennia additions you do -
@@ -167,7 +172,10 @@ Forked repository as described above.
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Contributing
+
+
@@ -560,7 +565,10 @@ optimized to be quick and efficient.
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Coordinates
+
+
@@ -38,7 +43,7 @@
Custom Protocols
Note: This is considered an advanced topic and is mostly of interest to users planning to implement
their own custom client protocol.
-A PortalSession is the basic data object representing an external
+ A PortalSession is the basic data object representing an external
connection to the Evennia Portal – usually a human player running a mud client
of some kind. The way they connect (the language the player’s client and Evennia use to talk to
each other) is called the connection Protocol. The most common such protocol for MUD:s is the
@@ -413,7 +418,10 @@ ways.
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Custom Protocols
+
+
@@ -746,7 +751,10 @@ this article.
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Customize channels
+
+
@@ -363,7 +368,10 @@ command is not needed much in
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Debugging
+
+
@@ -47,111 +52,111 @@ information about how commands work can be found in the documentation for A-Z
__unloggedin_look_command - look when in unlogged-in state
-about - show Evennia info
-access - show your current game access
-addcom - add a channel alias and/or subscribe to a channel
-alias - adding permanent aliases for object
-allcom - perform admin operations on all channels
-ban - ban an account from the server
-batchcode - build from batch-code file
-batchcommands - build from batch-command file
-boot - kick an account from the server.
-cboot - kick an account from a channel you control
-ccreate - create a new channel
-cdesc - describe a channel you control
-cdestroy - destroy a channel you created
-cemit - send an admin message to a channel you control
-channels - list all channels available to you
-charcreate - create a new character
-chardelete - delete a character - this cannot be undone!
-clock - change channel locks of a channel you control
-cmdsets - list command sets defined on an object
-color - testing which colors your client support
-command - This is a parent class for some of the defining objmanip commands
-connect - connect to the game
-copy - copy an object and its properties
-cpattr - copy attributes between objects
-create - create a new account account
-create - create new objects
-cwho - show who is listening to a channel
-delcom - remove a channel alias and/or unsubscribe from channel
-desc - describe an object or the current room.
-destroy - permanently delete objects
-dig - build new rooms and connect them to the current location
-drop - drop something
-emit - admin command for emitting message to multiple objects
-examine - get detailed information about an object
-find - search the database for objects
-force - forces an object to execute a command
-get - pick up something
-give - give away something to someone
-help - get help when in unconnected-in state
-help - View help or a list of topics
-home - move to your character’s home location
-ic - control an object you have permission to puppet
-inventory - view inventory
-irc2chan - Link an evennia channel to an external IRC channel
-link - link existing rooms together with exits
-lock - assign a lock definition to an object
-look - look at location or object
-look - look while out-of-character
-mvattr - move attributes between objects
-name - change the name and/or aliases of an object
-nick - define a personal alias/nick by defining a string to
-objects - statistics on objects in the database
-ooc - stop puppeting and go ooc
-open - open a new exit from the current room
-option - Set an account option
-page - send a private message to another account
-password - change your password
-perm - set the permissions of an account/object
-pose - strike a pose
-py - execute a snippet of python code
-quell - use character’s permissions instead of account’s
-quit - quit when in unlogged-in state
-quit - quit the game
-reload - reload the server
-reset - reset and reboot the server
-rss2chan - link an evennia channel to an external RSS feed
-say - speak as your character
-script - attach a script to an object
-scripts - list and manage all running scripts
-server - show server load and memory statistics
-service - manage system services
-sessions - check your connected session(s)
-set - set attribute on an object or account
-setdesc - describe yourself
-sethelp - Edit the help database.
-sethome - set an object’s home location
-shutdown - stop the server completely
-spawn - spawn objects from prototype
-style - In-game style options
-tag - handles the tags of an object
-tel - teleport object to another location
-time - show server time statistics
-tunnel - create new rooms in cardinal directions only
-typeclass - set or change an object’s typeclass
-unban - remove a ban from an account
-unlink - remove exit-connections between rooms
-userpassword - change the password of an account
-wall - make an announcement to all
-whisper - Speak privately as your character to another
-who - list who is currently online
-wipe - clear all attributes from an object
+about - show Evennia info
+access - show your current game access
+addcom - add a channel alias and/or subscribe to a channel
+alias - adding permanent aliases for object
+allcom - perform admin operations on all channels
+ban - ban an account from the server
+batchcode - build from batch-code file
+batchcommands - build from batch-command file
+boot - kick an account from the server.
+cboot - kick an account from a channel you control
+ccreate - create a new channel
+cdesc - describe a channel you control
+cdestroy - destroy a channel you created
+cemit - send an admin message to a channel you control
+channels - list all channels available to you
+charcreate - create a new character
+chardelete - delete a character - this cannot be undone!
+clock - change channel locks of a channel you control
+cmdsets - list command sets defined on an object
+color - testing which colors your client support
+command - This is a parent class for some of the defining objmanip commands
+connect - connect to the game
+copy - copy an object and its properties
+cpattr - copy attributes between objects
+create - create a new account account
+create - create new objects
+cwho - show who is listening to a channel
+delcom - remove a channel alias and/or unsubscribe from channel
+desc - describe an object or the current room.
+destroy - permanently delete objects
+dig - build new rooms and connect them to the current location
+drop - drop something
+emit - admin command for emitting message to multiple objects
+examine - get detailed information about an object
+find - search the database for objects
+force - forces an object to execute a command
+get - pick up something
+give - give away something to someone
+help - get help when in unconnected-in state
+help - View help or a list of topics
+home - move to your character’s home location
+ic - control an object you have permission to puppet
+inventory - view inventory
+irc2chan - Link an evennia channel to an external IRC channel
+link - link existing rooms together with exits
+lock - assign a lock definition to an object
+look - look at location or object
+look - look while out-of-character
+mvattr - move attributes between objects
+name - change the name and/or aliases of an object
+nick - define a personal alias/nick by defining a string to
+objects - statistics on objects in the database
+ooc - stop puppeting and go ooc
+open - open a new exit from the current room
+option - Set an account option
+page - send a private message to another account
+password - change your password
+perm - set the permissions of an account/object
+pose - strike a pose
+py - execute a snippet of python code
+quell - use character’s permissions instead of account’s
+quit - quit when in unlogged-in state
+quit - quit the game
+reload - reload the server
+reset - reset and reboot the server
+rss2chan - link an evennia channel to an external RSS feed
+say - speak as your character
+script - attach a script to an object
+scripts - list and manage all running scripts
+server - show server load and memory statistics
+service - manage system services
+sessions - check your connected session(s)
+set - set attribute on an object or account
+setdesc - describe yourself
+sethelp - Edit the help database.
+sethome - set an object’s home location
+shutdown - stop the server completely
+spawn - spawn objects from prototype
+style - In-game style options
+tag - handles the tags of an object
+tel - teleport object to another location
+time - show server time statistics
+tunnel - create new rooms in cardinal directions only
+typeclass - set or change an object’s typeclass
+unban - remove a ban from an account
+unlink - remove exit-connections between rooms
+userpassword - change the password of an account
+wall - make an announcement to all
+whisper - Speak privately as your character to another
+who - list who is currently online
+wipe - clear all attributes from an object
@@ -223,7 +228,10 @@
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Default Exit Errors
+
+
@@ -49,7 +54,7 @@
Getting started with Travis and Github for continuous integration testing
Planning your own Evennia game
First steps coding Evennia
-Translating Evennia
+Translating Evennia
Evennia Quirks to keep in mind.
Directions for configuring PyCharm with Evennia on Windows
@@ -92,7 +97,7 @@
Command System overview
Commands
Command Sets
-Command Auto-help
+Command Auto-help
@@ -238,7 +243,10 @@
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Developer Central
+
+
@@ -255,7 +260,10 @@
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Dialogues in events
+
+
@@ -148,7 +153,10 @@
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Directory Overview
+
+
@@ -179,7 +184,10 @@ evennia/locks/lockhandler.py
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Docs refactoring
+
+
@@ -46,7 +51,7 @@
There are at least two requirements needed for this tutorial to work.
The structure of your mud has to follow a logical layout. Evennia supports the layout of your world to be ‘logically’ impossible with rooms looping to themselves or exits leading to the other side of the map. Exits can also be named anything, from “jumping out the window” to “into the fifth dimension”. This tutorial assumes you can only move in the cardinal directions (N, E, S and W).
-Rooms must be connected and linked together for the map to be generated correctly. Vanilla Evennia comes with a admin command @tunnel that allows a user to create rooms in the cardinal directions, but additional work is needed to assure that rooms are connected. For example, if you @tunnel east and then immediately do @tunnel west you’ll find that you have created two completely stand-alone rooms. So care is needed if you want to create a “logical” layout. In this tutorial we assume you have such a grid of rooms that we can generate the map from.
+Rooms must be connected and linked together for the map to be generated correctly. Vanilla Evennia comes with a admin command @tunnel that allows a user to create rooms in the cardinal directions, but additional work is needed to assure that rooms are connected. For example, if you @tunnel east and then immediately do @tunnel west you’ll find that you have created two completely stand-alone rooms. So care is needed if you want to create a “logical” layout. In this tutorial we assume you have such a grid of rooms that we can generate the map from.
@@ -308,7 +313,10 @@
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+EvEditor
+
+
@@ -522,14 +527,14 @@ needed. Here is an example:
@@ -175,7 +180,10 @@ if you are not ready for players yet.
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Evennia Game Index
+
+
@@ -103,7 +108,7 @@
I know basic Python, or I am willing to learn
Evennia’s source code is extensively documented and is viewable online. We also have a comprehensive online manual with lots of examples. But while Python is considered a very easy programming language to get into, you do have a learning curve to climb if you are new to programming. You should probably sit down
-with a Python beginner’s tutorial (there are plenty of them on the web if you look around) so you at least know what you are seeing. See also our link page for some reading suggestions. To efficiently code your dream game in Evennia you don’t need to be a Python guru, but you do need to be able to read example code containing at least these basic Python features:
+with a Python beginner’s tutorial (there are plenty of them on the web if you look around) so you at least know what you are seeing. See also our link page for some reading suggestions. To efficiently code your dream game in Evennia you don’t need to be a Python guru, but you do need to be able to read example code containing at least these basic Python features:
@@ -313,7 +318,10 @@ T 95
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Evennia for Diku Users
+
+
@@ -49,7 +54,7 @@
Collaborating on a game - Python vs Softcode
- For a Player, collaborating on a game need not be too different between MUSH and Evennia. The building and description of the game world can still happen mostly in-game using build commands, using text tags and inline functions to prettify and customize the experience. Evennia offers external ways to build a world but those are optional. There is also nothing in principle stopping a Developer from offering a softcode-like language to Players if that is deemed necessary.
+ For a Player, collaborating on a game need not be too different between MUSH and Evennia. The building and description of the game world can still happen mostly in-game using build commands, using text tags and inline functions to prettify and customize the experience. Evennia offers external ways to build a world but those are optional. There is also nothing in principle stopping a Developer from offering a softcode-like language to Players if that is deemed necessary.
For Developers of the game, the difference is larger: Code is mainly written outside the game in Python modules rather than in-game on the command line. Python is a very popular and well-supported language with tons of documentation and help to be found. The Python standard library is also a great help for not having to reinvent the wheel. But that said, while Python is considered one of the easier languages to learn and use it is undoubtedly very different from MUSH softcode.
While softcode allows collaboration in-game, Evennia’s external coding instead opens up the possibility for collaboration using professional version control tools and bug tracking using websites like github (or bitbucket for a free private repo). Source code can be written in proper text editors and IDEs with refactoring, syntax highlighting and all other conveniences. In short, collaborative development of an Evennia game is done in the same way most professional collaborative development is done in the world, meaning all the best tools can be used.
@@ -223,7 +228,10 @@ A big guy. His eyes are blue.
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Evennia for MUSH Users
+
+
@@ -61,7 +66,7 @@
The permission hierarchy
- Evennia has the following permission hierarchy out of the box: Players, Helpers, Builders, Admins and finally Developers. We could change these but then we’d need to update our Default commands to use the changes. We want to keep this simple, so instead we map our different roles on top of this permission ladder.
+ Evennia has the following permission hierarchy out of the box: Players, Helpers, Builders, Admins and finally Developers. We could change these but then we’d need to update our Default commands to use the changes. We want to keep this simple, so instead we map our different roles on top of this permission ladder.
Players is the permission set on normal players. This is the default for anyone creating a new account on the server.
Helpers are like Players except they also have the ability to create/edit new help entries. This could be granted to players who are willing to help with writing lore or custom logs for everyone.
@@ -70,7 +75,7 @@
Developers-level permission are the server administrators, the ones with the ability to restart/shutdown the server as well as changing the permission levels.
-The superuser is not part of the hierarchy and actually completely bypasses it. We’ll assume server admin(s) will “just” be Developers.
+ The superuser is not part of the hierarchy and actually completely bypasses it. We’ll assume server admin(s) will “just” be Developers.
@@ -930,7 +935,7 @@
Channels
- Evennia comes with Channels in-built and they are described fully in the documentation. For brevity, here are the relevant commands for normal use:
+ Evennia comes with Channels in-built and they are described fully in the documentation. For brevity, here are the relevant commands for normal use:
@@ -50,7 +55,7 @@
obj - a dummy Object instance
evennia - Evennia’s flat API - through this you can access all of Evennia.
-For accessing other objects in the same room you need to use self.search(name). For objects in other locations, use one of the evennia.search_* methods. See below.
+For accessing other objects in the same room you need to use self.search(name). For objects in other locations, use one of the evennia.search_* methods. See below.
@@ -359,7 +364,10 @@
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+First Steps Coding
+
+
@@ -204,7 +209,10 @@
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Game Planning
+
+
@@ -404,7 +409,10 @@
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Gametime Tutorial
+
+
@@ -43,14 +48,14 @@ test out Evennia. Apart from downloading and updating you don’t even need an
internet connection until you feel ready to share your game with the world.
@@ -106,9 +111,9 @@ version is usually untested with Evennia)
Linux Install
If you run into any issues during the installation and first start, please
-check out Linux Troubleshooting.
+check out Linux Troubleshooting.
For Debian-derived systems (like Ubuntu, Mint etc), start a terminal and
-install the dependencies:
+install the dependencies:
sudo apt-get update
sudo apt-get install python3 python3-pip python3-dev python3-setuptools python3-git python3-virtualenv gcc
@@ -133,7 +138,7 @@ development:
contains the source code though, it is not installed yet. To isolate the
Evennia install and its dependencies from the rest of the system, it is good
Python practice to install into a virtualenv. If you are unsure about what a
-virtualenv is and why it’s useful, see the Glossary entry on
+virtualenv is and why it’s useful, see the Glossary entry on
virtualenv.
Run python -V to see which version of Python your system defaults to.
# If your Linux defaults to Python3.7+:
@@ -165,8 +170,8 @@ folders) and run
-For more info about pip, see the Glossary entry on pip. If
-install failed with any issues, see Linux Troubleshooting.
+For more info about pip, see the Glossary entry on pip. If
+install failed with any issues, see Linux Troubleshooting.
Next we’ll start our new game, here called “mygame”. This will create yet
another new folder where you will be creating your new game:
evennia --init mygame
@@ -179,7 +184,7 @@ another new folder where you will be creating your new game:
mygame/
-You can configure Evennia extensively, for example
+ You can configure Evennia extensively, for example
to use a different database. For now we’ll just stick
to the defaults though.
cd mygame
@@ -193,14 +198,14 @@ live in the terminal, use
Your game should now be running! Open a web browser at http://localhost:4001
or point a telnet client to localhost:4000 and log in with the user you
-created. Check out where to go next.
+created. Check out where to go next.
Mac Install
The Evennia server is a terminal program. Open the terminal e.g. from
Applications->Utilities->Terminal. Here is an introduction to the Mac terminal
if you are unsure how it works. If you run into any issues during the
-installation, please check out Mac Troubleshooting.
+installation, please check out Mac Troubleshooting.
Python should already be installed but you must make sure it’s a high enough version.
(This discusses
@@ -226,7 +231,7 @@ install gcc and the Python headers.
contains the source code though, it is not installed yet. To isolate the
Evennia install and its dependencies from the rest of the system, it is good
Python practice to install into a virtualenv. If you are unsure about what a
-virtualenv is and why it’s useful, see the Glossary entry on virtualenv.
+virtualenv is and why it’s useful, see the Glossary entry on virtualenv.
Run python -V to check which Python your system defaults to.
# If your Mac defaults to Python3:
virtualenv evenv
@@ -256,8 +261,8 @@ folders) and run
pip install -e evennia
-For more info about pip, see the Glossary entry on pip. If
-install failed with any issues, see Mac Troubleshooting.
+For more info about pip, see the Glossary entry on pip. If
+install failed with any issues, see Mac Troubleshooting.
Next we’ll start our new game. We’ll call it “mygame” here. This creates a new
folder where you will be creating your new game:
evennia --init mygame
@@ -270,7 +275,7 @@ folder where you will be creating your new game:
mygame/
-You can configure Evennia extensively, for example
+ You can configure Evennia extensively, for example
to use a different database. We’ll go with the
defaults here.
cd mygame
@@ -284,12 +289,12 @@ live in the terminal, use
Your game should now be running! Open a web browser at http://localhost:4001
or point a telnet client to localhost:4000 and log in with the user you
-created. Check out where to go next.
+created. Check out where to go next.
Windows Install
If you run into any issues during the installation, please check out
-Windows Troubleshooting.
+ Windows Troubleshooting.
If you are running Windows10, consider using the Windows Subsystem for Linux
(WSL) instead.
@@ -335,7 +340,7 @@ directory change.
contains the source code though, it is not installed yet. To isolate the
Evennia install and its dependencies from the rest of the system, it is good
Python practice to install into a virtualenv. If you are unsure about what a
-virtualenv is and why it’s useful, see the Glossary entry on virtualenv.
+virtualenv is and why it’s useful, see the Glossary entry on virtualenv.
In your console, try python -V to see which version of Python your system
defaults to.
pip install virtualenv
@@ -373,8 +378,8 @@ folders when you use the
- For more info about pip, see the Glossary entry on pip. If
-the install failed with any issues, see Windows Troubleshooting.
+ For more info about pip, see the Glossary entry on pip. If
+the install failed with any issues, see Windows Troubleshooting.
Next we’ll start our new game, we’ll call it “mygame” here. This creates a new folder where you will be
creating your new game:
evennia --init mygame
@@ -387,7 +392,7 @@ creating your new game:
mygame\
- You can configure Evennia extensively, for example
+ You can configure Evennia extensively, for example
to use a different database. We’ll go with the
defaults here.
cd mygame
@@ -401,7 +406,7 @@ live in the terminal, use
Your game should now be running! Open a web browser at http://localhost:4001
or point a telnet client to localhost:4000 and log in with the user you
-created. Check out where to go next.
+created. Check out where to go next.
@@ -38,83 +43,83 @@
Glossary
This explains common recurring terms used in the Evennia docs. It will be expanded as needed.
-account - the player’s account on the game
-admin-site - the Django web page for manipulating the database
-attribute - persistent, custom data stored on typeclasses
-channel - game communication channels
-character - the player’s avatar in the game, controlled from account
-core - a term used for the code distributed with Evennia proper
-django - web framework Evennia uses for database access and web integration
-field - a typeclass property representing a database column
-git - the version-control system we use
-github - the online hosting of our source code
-migrate - updating the database schema
+account - the player’s account on the game
+admin-site - the Django web page for manipulating the database
+attribute - persistent, custom data stored on typeclasses
+channel - game communication channels
+character - the player’s avatar in the game, controlled from account
+core - a term used for the code distributed with Evennia proper
+django - web framework Evennia uses for database access and web integration
+field - a typeclass property representing a database column
+git - the version-control system we use
+github - the online hosting of our source code
+migrate - updating the database schema
multisession mode` - a setting defining how users connect to Evennia
-object - Python instance, general term or in-game typeclass
-pip - the Python installer
+object - Python instance, general term or in-game typeclass
+pip - the Python installer
player - the human connecting to the game with their client
-puppet - when an account controls an in-game object
-property - a python property
-evenv - see virtualenv
-repository - a store of source code + source history
-script - a building block for custom storage, systems and time-keepint
-session - represents one client connection
-ticker - Allows to run events on a steady ‘tick’
-twisted - networking engine responsible for Evennia’s event loop and communications
-typeclass - Evennia’s database-connected Python class
-upstream - see github
-virtualenv - a Python program and way to make an isolated Python install
+puppet - when an account controls an in-game object
+property - a python property
+evenv - see virtualenv
+repository - a store of source code + source history
+script - a building block for custom storage, systems and time-keepint
+session - represents one client connection
+ticker - Allows to run events on a steady ‘tick’
+twisted - networking engine responsible for Evennia’s event loop and communications
+typeclass - Evennia’s database-connected Python class
+upstream - see github
+virtualenv - a Python program and way to make an isolated Python install
account
- The term ‘account’ refers to the player’s unique account on the game. It is represented by the Account 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 one (or more, depending on game mode) Characters in the game.
- In the default multisession mode of Evennia, you immediately start puppeting a Character with the same name as your Account when you log in - mimicking how older servers used to work.
+ The term ‘account’ refers to the player’s unique account on the game. It is represented by the Account 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 one (or more, depending on game mode) Characters in the game.
+ In the default multisession mode of Evennia, you immediately start puppeting a Character with the same name as your Account when you log in - mimicking how older servers used to work.
admin-site
- This usually refers to Django’s Admin site or database-administration web page (link to Django docs). 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.
+ This usually refers to Django’s Admin site or database-administration web page (link to Django docs). 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 or fields. The Attribute represents arbitrary pieces of data that can be attached to any typeclassed entity in Evennia. Attributes allows storing new persistent data on typeclasses without changing their underlying database schemas. Read more about Attributes here.
+ The term Attribute should not be confused with (properties or fields. The Attribute represents arbitrary pieces of data that can be attached to any typeclassed entity in Evennia. Attributes allows storing new persistent data on typeclasses without changing their underlying database schemas. Read more about Attributes here.
channel
- 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, for out-of-game communication but could also be Objects (usually Characters) 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.
+ 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, for out-of-game communication but could also be Objects (usually Characters) 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.
character
- The Character is the term we use for the default avatar being puppeted by the account in the game world. It is represented by the Character typeclass (which is a child of Object). Many developers use children of this class to represent monsters and other NPCs. You can read more about it here.
+ The Character is the term we use for the default avatar being puppeted by the account in the game world. It is represented by the Character typeclass (which is a child of Object). Many developers use children of this class to represent monsters and other NPCs. You can read more about it here.
django
- Django 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). Evennia uses Django for two main things - to map all database operations to Python and for structuring our web site.
+ Django 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). 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 Python instead of database-specific SQL: A database table is represented in Django as a Python class (called a model). An Python instance of such a class represents a row in that table.
- 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. 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. One will then need to read about Django’s querysets. Querysets are Python method calls on a special form that lets you build complex queries. They get converted into optimized SQL queries under the hood, suitable for your current database. Here is our tutorial/explanation of Django queries.
+ 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. 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. One will then need to read about Django’s querysets. Querysets are Python method calls on a special form that lets you build complex queries. They get converted into optimized SQL queries under the hood, suitable for your current database. Here is our tutorial/explanation of Django queries.
By the way, Django (and Evennia) does allow you to fall through and send raw SQL if you really want to. It’s highly unlikely to be needed though; the Django database abstraction is very, very powerful.
- The other aspect where Evennia uses Django is for web integration. On one end Django gives an infrastructure for wiring Python functions (called views) to URLs: the view/function is called when a user goes that URL in their browser, enters data into a form etc. The return is the web page 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. Django also comes with the admin site, which automatically maps the database into a form accessible from a web browser.
+ The other aspect where Evennia uses Django is for web integration. On one end Django gives an infrastructure for wiring Python functions (called views) to URLs: the view/function is called when a user goes that URL in their browser, enters data into a form etc. The return is the web page 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. Django also comes with the 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 directory. It can sometimes come up in code reviews, such as
+ This term is sometimes used to represent the main Evennia library code suite, excluding its 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 on a 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 store its location as a field). In all other cases, attributes are used to add new persistent data to the typeclass. Read more about typeclass properties here.
+ A field or database field in Evennia refers to a property on a 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 store its location as a field). In all other cases, attributes are used to add new persistent data to the typeclass. Read more about typeclass properties here.
git
Git is a version control tool. It allows us to track the development of the Evennia code by dividing it into units called commits. A ‘commit’ is sort of a save-spot - you save the current state of your code and can then 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. This is centrally stored at our online home on 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.
+ Evennia’s source code + its source history is jointly called a repository. This is centrally stored at our online home on 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. 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).
+ Don’t confuse Git and 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).
Git allows multiple users from around the world to efficiently collaborate on Evennia’s code: People can make local commits on their cloned code. The commits they do can then be uploaded to GitHub and reviewed by the Evennia lead devs - and if the changes look ok they can be safely merged into the central Evennia code - and everyone can pull those changes to update their local copies.
Developers using Evennia often uses Git on their own games in the same way - to track their changes and to help collaboration with team mates. This is done completely independently of Evennia’s Git usage.
@@ -129,28 +134,28 @@
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 schema changing. When that happens you need to migrate that schema to the new version as well. Once you have used git to pull the latest changes, just cd into your game dir and run
+ 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 schema changing. When that happens you need to migrate that schema to the new version as well. Once you have used git to pull the latest changes, just cd into your game dir and run
- That should be it (see virtualenv if you get a warning that the evennia command is not available). See also Updating your game for more details.
+ That should be it (see virtualenv if you get a warning that the evennia command is not available). See also Updating your game for more details.
Technically, migrations are shipped as little Python snippets of code that explains which database actions must be taken to upgrade from one version of the schema to the next. When you run the command above, those snippets are run in sequence.
multisession mode
- This term refers to the MULTISESSION_MODE setting, which has a value of 0 to 3. The mode alters how players can connect to the game, such as how many Sessions a player can start with one account and how many Characters they can control at the same time. It is described in detail here.
+ This term refers to the MULTISESSION_MODE setting, which has a value of 0 to 3. The mode alters how players can connect to the game, such as how many Sessions a player can start with one account and how many Characters they can control at the same time. It is described in detail here.
github
- Github is where Evennia’s source code and documentation is hosted. This online 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, the versioning system. Github hosts Git repositories online and helps with collaboration and infrastructure. Git itself is a separate project.
+ Github is where Evennia’s source code and documentation is hosted. This online 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, the versioning system. Github hosts Git repositories online and helps with collaboration and infrastructure. Git itself is a separate project.
object
- In general Python (and other object-oriented languages), an object is what we call the instance of a class. But one of Evennia’s core typeclasses 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, rooms, trees, weapons etc. Read more about Objects here.
+ In general Python (and other object-oriented languages), an object is what we call the instance of a class. But one of Evennia’s core typeclasses 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, rooms, trees, weapons etc. Read more about Objects here.
pip
@@ -164,32 +169,32 @@
pip install <folder> - install a Python package you have downloaded earlier (or cloned using git).
pip install -e <folder> - install a local package by just making a soft link to the folder. This means that if the code in <folder> changes, the installed Python package is immediately updated. 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 to install all packages and dependencies needed for a project in one, isolated location on the hard drive.
+ For development, pip is usually used together with a virtualenv to install all packages and dependencies needed for a project in one, isolated location on the hard drive.
puppet
- An account can take control and “play as” any Object. When doing so, we call this puppeting, (like puppeteering). Normally the entity being puppeted is of the Character subclass but it does not have to be.
+ An account can take control and “play as” any Object. When doing so, we call this puppeting, (like puppeteering). Normally the entity being puppeted is of the Character subclass but it does not have to be.
property
- 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). Note the distinction between properties, fields and Attributes.
+ 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). Note the distinction between properties, fields and Attributes.
repository
- A repository is a version control/git term. It represents a folder containing source code plus its versioning history.
+ A repository is a version control/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 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.
+ The evennia folder you download from us with git clone is a repository. The code on 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. Scripts are the mavericks of Evennia - they are like Objects 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). Read more about Scripts here
+ When we refer to Scripts, we generally refer to the Script typeclass. Scripts are the mavericks of Evennia - they are like Objects 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). Read more about Scripts here
session
- A Session 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).
- Sessions are not typeclassed 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.
+ A Session 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).
+ Sessions are not typeclassed 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.
ticker
@@ -197,13 +202,13 @@
typeclass
- The typeclass 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 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, Object, Script and Channel. Children of the base class (such as Character) will use the same database table as the parent, but can have vastly different Python capabilities (and persistent features through Attributes and 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 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.
+ The typeclass 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 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, Object, Script and Channel. Children of the base class (such as Character) will use the same database table as the parent, but can have vastly different Python capabilities (and persistent features through Attributes and 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 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 is a heavy-duty asynchronous networking engine. It is one of Evennia’s two major library dependencies (the other one is 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 server, serving the Django-based website for your game.
+ Twisted is a heavy-duty asynchronous networking engine. It is one of Evennia’s two major library dependencies (the other one is 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 server, serving the Django-based website for your game.
virtualenv
@@ -216,7 +221,7 @@
<folder_name>\Scripts\activate (windows)
deactivate - turn off the currently activated virtualenv.
- 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 will install to evenv rather than to a global location like /usr/local/bin or C:\Program Files.
+ 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 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 using a virtualenv. It’s strongly discouraged and considered bad practice though. Experienced Python developers tend to rather create one new virtualenv per project they are working on, to keep the varying installs cleanly separated from one another.
@@ -311,7 +316,10 @@
-
modules |
- - Evennia 0.9.1 documentation »
+ - Evennia 0.9.1 documentation »
+ - Glossary
+
+
@@ -152,7 +157,10 @@ it to your channel in-game.
-
modules |
- - Evennia 0.9.1 documentation »
+ - Evennia 0.9.1 documentation »
+- Grapevine
+
+
@@ -97,7 +102,10 @@
-
modules |
- - Evennia 0.9.1 documentation »
+ - Evennia 0.9.1 documentation »
+ - Guest Logins
+
+
@@ -146,7 +151,10 @@
-
modules |
- - Evennia 0.9.1 documentation »
+ - Evennia 0.9.1 documentation »
+ - HAProxy Config (Optional)
+
+
@@ -584,7 +589,10 @@
-
modules |
- - Evennia 0.9.1 documentation »
+ - Evennia 0.9.1 documentation »
+ - Help System Tutorial
+
+
@@ -98,7 +103,7 @@
Database help entries
- These are all help entries not involving commands (this is handled automatically by the Command Auto-help system). Non-automatic help entries describe how your particular game is played - its rules, world descriptions and so on.
+ These are all help entries not involving commands (this is handled automatically by the Command Auto-help system). Non-automatic help entries describe how your particular game is played - its rules, world descriptions and so on.
A help entry consists of four parts:
@@ -115,7 +120,10 @@
-
modules |
- - Evennia 0.9.1 documentation »
+ - Evennia 0.9.1 documentation »
+ - How To Get And Give Help
+
+
@@ -217,7 +222,10 @@
-
modules |
- - Evennia 0.9.1 documentation »
+ - Evennia 0.9.1 documentation »
+- How to connect Evennia to Twitter
+
+
@@ -141,7 +146,10 @@
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+ IRC
+
+
@@ -411,7 +416,10 @@ your rules
modules |
- Evennia 0.9.1 documentation »
+ Evennia 0.9.1 documentation »
+Implementing a game rule system
+
+
@@ -36,7 +41,7 @@
|
|
|