2010-08-29 18:46:58 +00:00
|
|
|
|
|
|
|
|
Evennia README http://evennia.com
|
|
|
|
|
--------------
|
|
|
|
|
|
|
|
|
|
- < 2010 (earlier revisions)
|
|
|
|
|
- May 2010 - merged ABOUT and README. Added Current status /Griatch
|
|
|
|
|
- Aug 2010 - evennia devel merged into trunk /Griatch
|
|
|
|
|
|
|
|
|
|
Contents:
|
|
|
|
|
---------
|
|
|
|
|
- Version
|
|
|
|
|
- About Evennia
|
|
|
|
|
- Current Status
|
|
|
|
|
- Contact, Support and Development
|
|
|
|
|
- Directory structure
|
|
|
|
|
- Design Objectives
|
|
|
|
|
- The Components
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Version
|
|
|
|
|
-------
|
|
|
|
|
Evennia Alpha SVN version
|
|
|
|
|
|
2006-12-05 19:36:45 +00:00
|
|
|
About Evennia
|
|
|
|
|
-------------
|
|
|
|
|
Evennia is a proof-of-concept MU* server that aims to provide a functional
|
2010-08-29 18:46:58 +00:00
|
|
|
bare-bones base for developers. While there are quite a few codebases that do the same
|
2006-12-05 19:36:45 +00:00
|
|
|
(and very well in many cases), we are taking a unique spin on the problem.
|
|
|
|
|
Some of our flagship features include (or will one day include):
|
2006-11-20 18:54:10 +00:00
|
|
|
|
2010-08-29 18:46:58 +00:00
|
|
|
* Coded fully in Python using Django and Twisted
|
2006-12-05 19:36:45 +00:00
|
|
|
* Extensive web integration.
|
|
|
|
|
* The ability to build/administer through a web browser.
|
|
|
|
|
* Shared accounts between the website and the game.
|
|
|
|
|
* Optional web-based character creation.
|
|
|
|
|
* Extremely easy-to-manipulate SQL database back-end via Django
|
|
|
|
|
(djangoproject.com)
|
|
|
|
|
* Simple and easily extensible design.
|
|
|
|
|
* Very granular permissions. Individual and group based.
|
2010-08-29 18:46:58 +00:00
|
|
|
* Powerful an extremely extendable base system
|
2006-11-20 18:54:10 +00:00
|
|
|
|
2006-12-05 19:36:45 +00:00
|
|
|
The essential points here are the web integration and the SQL backing via
|
|
|
|
|
Django. The Django framework has database abstraction abilities that give us
|
|
|
|
|
many features free, such as:
|
2006-11-20 18:54:10 +00:00
|
|
|
|
2006-12-05 19:36:45 +00:00
|
|
|
* The codebase will run transparently on MySQL, SQLite, or Postgres
|
|
|
|
|
* At the time of this document's writing, our SQL-backed application here
|
|
|
|
|
contains 0 lines of SQL. Django's database abstraction layer is absolutely
|
|
|
|
|
simple yet very powerful.
|
|
|
|
|
* For any model we outline for the server's use, we have the ability to
|
|
|
|
|
more or less automatically generate a web-based admin interface for it with
|
2010-08-29 18:46:58 +00:00
|
|
|
two lines of code. This lets you Create, Update, or Delete entries, as well
|
|
|
|
|
limit permissions for those abilities.
|
2006-12-05 19:36:45 +00:00
|
|
|
* On the web-based side of things, features such as automatic form validation,
|
|
|
|
|
abstraction of sessions and cookies, and access to whatever game data you
|
2010-08-29 18:46:58 +00:00
|
|
|
desire are all attractive.
|
|
|
|
|
|
|
|
|
|
See the INSTALL file for help on setting up and running Evennia.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Current Status
|
|
|
|
|
--------------
|
|
|
|
|
Aug 2010:
|
|
|
|
|
Evennia-griatch-branch is ready for merging with trunk. This marks
|
|
|
|
|
a rather big change in the inner workings of the server, but should
|
|
|
|
|
hopefully bring everything together into one consistent package as
|
|
|
|
|
code development continues.
|
|
|
|
|
|
|
|
|
|
May 2010:
|
|
|
|
|
Evennia is currently being heavily revised and cleaned from
|
|
|
|
|
the years of gradual piecemeal development. It is thus in a very
|
|
|
|
|
'Alpha' stage at the moment. This means that old code snippets
|
|
|
|
|
will not be backwards compatabile. Changes touch almost all
|
|
|
|
|
parts of Evennia's innards, from the way Objects are handled
|
|
|
|
|
to Events, Commands and Permissions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Contact, Support and Development
|
2006-12-05 19:36:45 +00:00
|
|
|
-----------------------
|
2010-08-29 18:46:58 +00:00
|
|
|
We are early in development, but we try to give support best we can
|
|
|
|
|
if you feel daring enough to play with the codebase. Make a post to
|
|
|
|
|
the mailing list or chat us up on IRC if you have questions. We also
|
|
|
|
|
have a bug tracker if you want to report bugs. Finally, if
|
|
|
|
|
you are willing to help with the code work, we much appreciate all help!
|
|
|
|
|
Visit either of the following resources:
|
2006-11-20 18:54:10 +00:00
|
|
|
|
2007-04-25 19:39:15 +00:00
|
|
|
* Evennia Webpage
|
|
|
|
|
http://evennia.com
|
2010-08-29 18:46:58 +00:00
|
|
|
|
|
|
|
|
* Evennia wiki (documentation)
|
|
|
|
|
http://code.google.com/p/evennia/wiki/Index
|
|
|
|
|
|
|
|
|
|
* Evennia Code Page (See INSTALL text for installation)
|
|
|
|
|
http://code.google.com/p/evennia/source/checkout
|
|
|
|
|
|
|
|
|
|
* Bug tracker
|
|
|
|
|
http://code.google.com/p/evennia/issues/list
|
|
|
|
|
|
|
|
|
|
* IRC channel
|
|
|
|
|
visit channel #evennia on the Freenode IRC network
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Directory structure
|
|
|
|
|
-------------------
|
|
|
|
|
evennia
|
|
|
|
|
|_______src
|
|
|
|
|
| |___(engine-related dirs)
|
|
|
|
|
|
|
|
|
|
|
|_______game (start the server)
|
|
|
|
|
|___gamesrc
|
|
|
|
|
|___(game-related dirs)
|
|
|
|
|
|
|
|
|
|
The two main directories you will spend most of your time in
|
|
|
|
|
are src/ and game/ (probably mostly game/).
|
|
|
|
|
|
|
|
|
|
Basically src contains everything related to
|
|
|
|
|
running the gritty stuff behind the scenes. Unless you are an
|
|
|
|
|
Evennia developer you should normally make sure never to edit
|
|
|
|
|
things in src/, since this is where we push new revisions that
|
|
|
|
|
may overwrite your changes when you update. You will however
|
|
|
|
|
need to have a good feeling for the resources supplied by
|
|
|
|
|
the functions in src, since accessing them correctly is the key
|
|
|
|
|
to making your dream game come true.
|
|
|
|
|
|
|
|
|
|
If src/ is the Evennia developer's domain, the game/ directory
|
|
|
|
|
on the other hand contains YOUR game. This is where you will
|
|
|
|
|
define and extend the commands, objects and systems of Evennia
|
|
|
|
|
to make your dream game. game/ contains the main server settings
|
|
|
|
|
and the actual evennia executable to start things. game/gamesrc/
|
|
|
|
|
holds all the templates for creating objects in your virtual world.
|
|
|
|
|
|
|
|
|
|
With this little first orientation, you should head into the online
|
|
|
|
|
Evennia wiki documentation to get going with the codebase.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Design Objectives
|
|
|
|
|
-----------------
|
|
|
|
|
1) To create a barebones MU* server that serves as a great foundation
|
|
|
|
|
for capable admins to craft their own respective games. It is not the
|
|
|
|
|
intention to provide a full-fledged, ready-to-run base, rather Evennia
|
|
|
|
|
is offering the means to make such games.
|
|
|
|
|
|
|
|
|
|
2) Development of games on Evennia must be easy for anyone with some degree
|
|
|
|
|
of Python experience. Building needs to be easy, and per-room, per-object,
|
|
|
|
|
and environmental customizations need to be simple to do.
|
|
|
|
|
|
|
|
|
|
3) The server must utilize SQL as a storage back-end to allow for web->game
|
|
|
|
|
integration. See the details on Django later on in the document for more
|
|
|
|
|
details.
|
|
|
|
|
|
|
|
|
|
4) Any and all game-specific configuration must reside in SQL, not
|
|
|
|
|
external configuration files. The only exception is the settings.py file
|
|
|
|
|
containing the SQL information.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The Components
|
|
|
|
|
--------------
|
|
|
|
|
Python (Including the SQL driver of your choice)
|
|
|
|
|
|-Twisted (http://twistedmatrix.com)
|
|
|
|
|
|-SQL (MySQL, SQLite, Postgresql)
|
|
|
|
|
|-Django (http://djangoproject.com)
|
|
|
|
|
|
|
|
|
|
Evennia is built on top of Twisted, a networking engine that handles a lot
|
|
|
|
|
of the guts and lower-level socket stuff for us.
|
|
|
|
|
|
|
|
|
|
Serving as our storage medium, SQL allows for very simple code in many cases, and
|
|
|
|
|
can lead to a game being a lot more scalable due to the inherent speed of
|
|
|
|
|
most modern SQL servers. Another extremely important benefit is that by
|
|
|
|
|
storing everything in SQL, we make the entire game accessible from other
|
|
|
|
|
means, such as a website. Which leads us to the next component.
|
|
|
|
|
|
|
|
|
|
Django is perhaps one of the most interesting introductions to the codebase.
|
|
|
|
|
Django is technically a Python web framework, but it also includes a great
|
|
|
|
|
data modeling and database abstraction module. This means that things like
|
|
|
|
|
Players or Objects can be represented by a very short class, then related to one
|
|
|
|
|
another. This allows us to add, remove, delete, and manipulate things in our database
|
|
|
|
|
very easily. Another huge benefit is the admin interface that Django more
|
|
|
|
|
or less automatically generates for us. Instead of a bunch of clunky admin
|
|
|
|
|
commands, you can fire up your web browser and administer pretty much
|
|
|
|
|
everything from there, although equivalent in-game commands may be offered.
|
2007-04-25 19:39:15 +00:00
|
|
|
|
2010-08-29 18:46:58 +00:00
|
|
|
The possibilities for developing your game's website are nearly endless with
|
|
|
|
|
this tandem of MU* server, SQL, and Django.
|