mirror of
https://github.com/evennia/evennia.git
synced 2026-03-16 21:06:30 +01:00
202 lines
9.6 KiB
ReStructuredText
202 lines
9.6 KiB
ReStructuredText
Introduction
|
|
|
|
"*A MUD (originally Multi-User Dungeon, with later variants
|
|
Multi-User Dimension and Multi-User Domain), pronounced 'mud', is a
|
|
multiplayer real-time virtual world described primarily in text.
|
|
MUDs combine elements of role-playing games, hack and slash, player
|
|
versus player, interactive fiction, and online chat. Players can
|
|
read or view descriptions of rooms, objects, other players,
|
|
non-player characters, and actions performed in the virtual world.
|
|
Players typically interact with each other and the world by typing
|
|
commands that resemble a natural language.*\ " -
|
|
`Wikipedia <http://en.wikipedia.org/wiki/MUD>`_
|
|
|
|
Evennia introduction
|
|
====================
|
|
|
|
If you are reading this, it's quite likely you are dreaming of creating
|
|
and running a text-based massively-multiplayer game
|
|
(`MUD/MUX/MUSH <http://tinyurl.com/c5sc4bm>`_ etc) of your very own. You
|
|
might just be starting to think about it, or you might have lugged
|
|
around that *perfect* game in your mind for years ... you know *just*
|
|
how good it would be, if you could only make it come to reality. We know
|
|
how you feel. That is, after all, why Evennia came to be.
|
|
|
|
Evennia is in principle a MUD-building system: a bare-bones Python
|
|
codebase and server intended to be highly extendable for any style of
|
|
game. "Bare-bones" in this context means that we try to impose as few
|
|
game-specific things on you as possible. So whereas we for convenience
|
|
offer basic building blocks like objects, characters, rooms, default
|
|
commands for building and administration etc, we don't prescribe any
|
|
combat rules, mob AI, races, skills, character classes or other things
|
|
that will be different from game to game anyway. It is possible that we
|
|
will offer some such systems as contributions in the future, but these
|
|
will in that case all be optional.
|
|
|
|
What we *do* however, is to provide a solid foundation for all the
|
|
boring database, networking, and behind-the-scenes administration stuff
|
|
that all online games need whether they like it or not. Evennia is
|
|
*fully persistent*, that means things you drop on the ground somewhere
|
|
will still be there a dozen server reboots later. Through Django we
|
|
support a large variety of different database systems (a database is
|
|
created for you automatically if you use the defaults).
|
|
|
|
Using the full power of Python throughout the server offers some
|
|
distinct advantages. All your coding, from object definitions and custom
|
|
commands to AI scripts and economic systems is done in normal Python
|
|
modules rather than some ad-hoc scripting language. The fact that you
|
|
script the game in the same high-level language that you code it in
|
|
allows for very powerful and custom game implementations indeed.
|
|
|
|
The server ships with a default set of player commands that are similar
|
|
to the MUX command set. We *do not* aim specifically to be a MUX server,
|
|
but we had to pick some default to go with (see `this <SoftCode.html>`_
|
|
for more about our original motivations). It's easy to remove or add
|
|
commands, or to have the command syntax mimic other systems, like Diku,
|
|
LP, MOO and so on. Or why not create a new and better command system of
|
|
your own design.
|
|
|
|
Can I test it somewhere?
|
|
------------------------
|
|
|
|
There are Evennia-based muds under development but they are still not
|
|
publicly available. If you do try to install Evennia (it's not hard), it
|
|
comes with its own tutorial though - this shows off some of the
|
|
possibilities *and* gives you a small single-player quest to play. The
|
|
tutorial takes only one single in-game command to install as explained
|
|
`here <TutorialWorldIntroduction.html>`_.
|
|
|
|
If you didn't see it before, here is also a
|
|
`screenshot <Screenshot.html>`_ of Evennia running.
|
|
|
|
Brief summary of features
|
|
=========================
|
|
|
|
Technical
|
|
---------
|
|
|
|
- Game development is done by the server importing your normal Python
|
|
modules. Specific server features are implemented by overloading
|
|
hooks that the engine calls appropriately.
|
|
- All game entities are simply Python classes that handles database
|
|
negotiations behind the scenes without you needing to worry.
|
|
- Command sets are stored on individual objects (including characters)
|
|
to offer unique functionality and object-specific commands. Sets can
|
|
be updated and modified on the fly to expand/limit player input
|
|
options during play.
|
|
- Scripts are used to offer asynchronous/timed execution abilities.
|
|
Scripts can also be persistent. There are easy mechanisms to thread
|
|
particularly long-running processes.
|
|
- In-game communication channels are modular and can be modified to any
|
|
functionality, including mailing systems and full logging of all
|
|
messages.
|
|
- Server can be fully rebooted/reloaded without users disconnecting.
|
|
- A session (player) can freely connect/disconnect from game-objects,
|
|
offering an easy way to implement multi-character systems and
|
|
puppeting.
|
|
- All source code is extensively documented.
|
|
- Unit-testing suite, including tests of default commands and plugins
|
|
|
|
Default content
|
|
---------------
|
|
|
|
- Basic classes for Objects, Characers, Rooms and Exits
|
|
- Basic login system, using the Player's login name as their in-game
|
|
Character's name for simplicity
|
|
- "MUX-like" command set with administration, building, puppeting,
|
|
channels and social commands
|
|
- In-game Tutorial
|
|
- Contributions folder with working, but optional, code such as
|
|
alternative login, menus, character generation and more
|
|
|
|
Standards/Protocols supported
|
|
-----------------------------
|
|
|
|
- Telnet with mud-specific extensions (MCCP, MSSP, TTYPE)
|
|
- SSH
|
|
- SSL
|
|
- TCP/Comet, JavaScript browser webclient included
|
|
- HTTP - Website served by in-built webserver and connected to same
|
|
database as game.
|
|
- IRC/IMC2 - external IRC and/or IMC2 channels can be connected to
|
|
in-game chat channels
|
|
- RSS feeds can be echoed to in-game channels
|
|
- ANSI, xterm256 colours
|
|
- Several different databases supported (SQLite3, MySQL, ...)
|
|
|
|
For more extensive feature information, see
|
|
`here <http://code.google.com/p/evennia/wiki/DeveloperCentral>`_.
|
|
|
|
What you need to know to work with Evennia
|
|
==========================================
|
|
|
|
Assuming you have Evennia working (see the `quick start
|
|
instructions <GettingStarted.html>`_) and have gotten as far as to start
|
|
the server and connect to it with the client of your choice, here's what
|
|
you need to know depending on your skills and needs.
|
|
|
|
I don't know (or don't want to do) any programming - I just want to run a game!
|
|
-------------------------------------------------------------------------------
|
|
|
|
Evennia comes with a default set of commands for the Python newbies and
|
|
for those who need to get a game running *now*. Stock Evennia is enough
|
|
for running a simple 'Talker'-type game - you can build and describe
|
|
rooms and basic objects, have chat channels, do emotes and other things
|
|
suitable for a social or free-form MU\ ``*``. Combat, mobs and other
|
|
game elements are not included, so you'll have a very basic game indeed
|
|
if you are not willing to do at least *some* coding.
|
|
|
|
I know basic Python, or am willing to learn
|
|
-------------------------------------------
|
|
|
|
Evennia's source code is extensively documented and `viewable
|
|
online <http://code.google.com/p/evennia/source/browse/>`_. We also have
|
|
a comprehensive `online
|
|
manual <http://code.google.com/p/evennia/wiki/Index>`_ with lots of
|
|
examples. But while Python is a relatively easy programming language, it
|
|
still represents a learning curve if you are new to programming. You
|
|
should probably sit down with a Python beginner's
|
|
`tutorial <http://docs.python.org/tutorial/>`_ (there are plenty of them
|
|
on the web if you look around) so you at least know what you are seeing.
|
|
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:
|
|
|
|
- Importing python modules
|
|
- Using variables, `conditional
|
|
statements <http://docs.python.org/tutorial/controlflow.html#if-statements>`_,
|
|
`loops <http://docs.python.org/tutorial/controlflow.html#for-statements>`_
|
|
and
|
|
`functions <http://docs.python.org/tutorial/controlflow.html#defining-functions>`_
|
|
- Using `lists, dictionaries and list
|
|
comprehensions <http://docs.python.org/tutorial/datastructures.html>`_
|
|
- Doing `string handling and
|
|
formatting <http://docs.python.org/tutorial/introduction.html#strings>`_
|
|
- Using `Classes <http://docs.python.org/tutorial/classes.html>`_,
|
|
their methods and properties
|
|
|
|
Obviously, the more things you feel comfortable with, the easier time
|
|
you'll have to find your way. With just basic knowledge you should be
|
|
able to define your own `Commands <Commands.html>`_, create custom
|
|
`Objects <Objects.html>`_ as well as make your world come alive with
|
|
basic `Scripts <Scripts.html>`_. You can definitely build a whole
|
|
advanced and customized game from extending Evennia's examples only.
|
|
|
|
I know my Python stuff and am willing to use it!
|
|
------------------------------------------------
|
|
|
|
Even if you started out as a Python beginner, you will likely get to
|
|
this point after working on your game for a while. With more general
|
|
knowledge in Python the full power of Evennia opens up for you. Apart
|
|
from modifying commands, objects and scripts, you can develop everything
|
|
from advanced mob AI and economic systems, through sophisticated combat
|
|
and social minigames, to redefining how commands, players, rooms or
|
|
channels themselves work. Since you code your game by importing normal
|
|
Python modules, there are few limits to what you can accomplish.
|
|
|
|
If you *also* happen to know some web programming (HTML, CSS,
|
|
Javascript) there is also a web presence (a website and an mud web
|
|
client) to play around with ...
|
|
|
|
From here you can continue to the `Index <Index.html>`_ to find more
|
|
info about Evennia.
|