evennia/README

183 lines
7 KiB
Text
Raw Normal View History

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
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
* 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.
* 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
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
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
-----------------------
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
* Evennia Webpage
http://evennia.com
* 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.
The possibilities for developing your game's website are nearly endless with
this tandem of MU* server, SQL, and Django.