Aspen logo

Contents

Licencing

In order to make the licencing a bit easier on users, all files found within Aspen are licenced under the gpl, and Copyright 2009-2010 Tyler Littlefield. The GPL is as follows:

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.  

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.  

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.


About Aspen

What is a mud?

Please see:
http://en.wikipedia.org/wiki/MUD


What is Aspen?

Aspen is a c++ base, on which people can easily build and extend to create a mud. The goal of Aspen is to remain light-weight, while providing the tools for you to build the mud you've always wanted, whether it is a PVP space-based mud, or a rp-based mud, this is the base for you. Starting off with a barebones base lets you build your mud exactly how you want it, without having to work around code that was already there, or rewrite the code in order to allow you to easily implament the systems you want.


Why another mudbase?

Aspen was written to solve a few problems that I've noticed:

Aspen intends to solve this problem; not only is Aspen light-weight, but it is barebones and provides an easily-extendable base for someone to add to.


How is Aspen Structured?

Aspen's structure is set up so that objects don't have to know about other objects as much as possible in order to perform their function. While the world handles most of the game play information such as the pointers to other objects, connected player and etc, other objects only have to interact with the world object to get information about the server as-needed. With the event system, editing the world object to do something other than add methods and properties crucial to the handling of game-data isn't needed. Using the event system, objects can subscribe to events that will be fired when a certain event occurs, such as a player logging on or off, creating, deleting, etc.


The Future of Aspen

The goal of Aspen 1.0 was to get the public's general opinion on the structure, and to determine in which direction the base will be going from here, after the general design work is complete. I plan to add many more features to Aspen such as:

As always, more ideas are welcome.


Aspen on IRC

You can join us on irc at irc.freenode.net, in #aspen-mud.


Requirements for compilation and running

Aspen has ran and successfully compiled on Debian 32/64-bit, and Snowleopard on the Mac. We are fairly certain that Aspen should compile on any Linux system with the GNU compiler installed. Though I haven't tested it on a BSD system, I don't believe it will compile there until the Makefile is changed for BSD; anyone willing to work on this would be welcome. Aspen currently does not compile on windows, and I don't have any big plans on making it do so. The only thing that would need to be written for windows would be file and directory options, and the sockets would have to be made to use Winsock. If anyone is willing to write in a win32 configuration and set it up so that it will compile on windows, I would accept the patches.


Getting Aspen

Aspen can be downloaded via SVN at the following address:

If you are interested in downloading, you can use many of the svn GUI frontends, or you may alternatively use:
svn co
to checkout the release, replacing with one of the urls found above. In order to update, you just need to be in the root directory where you checked out your copy of one of the branches, and use:
svn update
which will update you to the newest release in that branch. For more information on svn please see:
The wikipedia subversion article
The subversion home page
We do not currently distribute archives of the base, in order to facilitate development on Aspen and coordenation, svn is used so that people can always get the latest updates. As updates are committed to the repository, the changelog below is updated; please see that for updates.


Compilation and installation of Aspen

After you have retrieved your copy of Aspen, you can compile it by switching to the source directory (cd src), and typing 'make'. After that is done, your mud will be found in the bin directory, under the Aspen root directory. You can either use the startup script, or run the program directly from the bin directory. The default port is set to 6666; you may change this if you wish in the conf.h header.

Contributing to the development of Aspen

We do not currently have a mailing list or forum created for the purposes of adding or submitting patches. You can email all comments however, to tyler at tysdomain dot com.

Credits

I would like to thank those people at programmingblind who have helped me with this project either through viewing of code, or through advice. Also, thanks to CPPMan for the code contributions and his help.
Another thanks to the developers over at Socketmud. Though the code underwent lots of changes, Socketmud was what I built Aspen and its socket operations off.
As well as the people who have helped me, I couldn't have done this without the massive coffee consumption that fueled this project, and my playlist.

Changelog

Stable Releases

This branch should remain relatively small; it will be updated when I've made enough changes to the unstable branch to make it worth the update. Changes marked with [M] are all denoting a merge from the unstable branch.

RevisionAuthorDateComment
16tyler2010-01-07 00:29:25[M] merged 14:15 forgot to add the new syslog and modules file; those should now be in.
14tyler2010-01-07 00:25:28[M] Merged 10:13. Made a lot of major changes, added a syslog module and cleaned up some function calls.
10tyler2010-01-06 17:44:55[M] merged 8:9. Fixed switches in Makefile--Thanks, John.
8tyler2010-01-06 15:55:35[M] Merged 6:7
6tyler2010-01-05 19:21:38[m] Merged unstable 2:5
1tyler2010-01-02 02:44:56


Unstable Releases

Things you should be aware of:

RevisionAuthorDateComment
30tyler2010-02-06 16:33:25Added script_object
29tyler2010-02-06 16:31:13Started work on scripting interface, added a custom variant class (increased compilation time, and decreased binary size by over 75%). Started work on a help module.
28tyler2010-01-30 19:03:16Solved the problem with boost not recognizing other files, rank is now set to god if your the first admin to create. Fixed the syslog access issue; (added an if check to the channel broadcast to see if access should be ignored). Fixed some race conditions with shutdown; mud no longer hangs when you issue a sigint and friends.
27tyler2010-01-30 17:25:57Made a lot of new changes this release; started integrating to angelscript rather than lua, moved some functions over to the boost filesystem, fixed up the logger. There are a few bugs that need to be ironed out with first player becoming admin, syslog access, and I still need to write a log wrapper in World to make writing to logs easier.
26tyler2010-01-29 21:18:00Added in partial scripting support; more to go
25tyler2010-01-24 07:25:28Added a LoadPlayer method to world, added a whois/finger command to the commands.
24tyler2010-01-24 05:16:42Started work on a scripts module, added uptime, fixed serialization inheritance; entity calls the container serialization, player calls living and living calls entity.
23tyler2010-01-23 19:54:30Added documentation to the header files lacking, and fixed a couple bugs.
22tyler2010-01-22 20:00:00
21tyler2010-01-22 19:59:28The main change for this version is our component setup to allow for pluggable components.
20tyler2010-01-13 14:24:27Lots of good updates for this release: Fixed a bug with the sockets binding; the mud wouldn't exit if the socket was in use, (Thanks, Tristan). Fixed includes to remove circular includes,a nd removed all forward declarations except for those needed as dependencies (where a uses b and b uses a), etc.
19tyler2010-01-12 19:44:50
18tyler2010-01-12 19:44:18
17tyler2010-01-09 23:15:36As of this version, we link with the boost serialization library as we're using that for our serialization. The code is much cleaner and provides a better interface.
15tyler2010-01-07 00:27:56/Forgot to add the syslog and modules files; they should be in this version.
13tyler2010-01-07 00:24:21Added a variable to the world::AddChannel; you can now add dummy channels and not have it add the command for the channel. Added a modules.h and modules.cpp file as well as a syslog module. Fixed a bug with hist so that when you do hist and the specified channel doesn't exist, the mud doesn't crash. Fixed a bug in server.cpp, the address structure wasn't getting coppied to the socket's address structure. removed world from being passed around to the other sections of the engine, (server,channel,command), etc. removed the webserver info.
12tyler2010-01-06 20:47:09Added support for a command alias, so that more than one command didn't have to be created for the same purpose. Made channels register their alias with the command alias. Added support for command ranks; if the caller of the command doesn't have access to the command, they won't be able to use it.
11tyler2010-01-06 20:17:03Removed some of the newline warnings with the older compilers, removed the openssl include from previous (Thanks, CPPMan).
9tyler2010-01-06 17:44:10Removed some switches to the compiler from the makefile-Thanks, John.
7tyler2010-01-06 15:54:32Removed the "messages.h" file, that was supposed to contain game messages and integrated them to where they belong.
5tyler2010-01-05 18:54:32Added channel subscribe and unsubscribe events, as well as event handlers for when a player connects. Made the world class global, so we don't need to try to find ways to pass that around to the functions that need it. Removed the world argument from the command callback; it isn't needed anymore. Fixed the bug where copyover would make it where the player couldn't talk on a channel; the message was recorded, but the player didn't see channel messages. Fixed copyover recovery to delete it's copyover file when it's done. Added a function to world to expose a list of channel names, rather than a direct pointer to the channel mapping.
4tyler2010-01-05 03:22:42Fixed Broadcast to add the whole message to the history when someone broadcasts, history now shows the time of the broadcast in elapsed time.
3tyler2010-01-05 02:51:07Added a hist command to display channel history--need to add in time calculations next.
2tyler2010-01-02 02:53:48Created unstable branch.

This site is copyright 2010 Tyler Littlefield. All rights reserved.
All registerd trademarks, patents, and copyrights found within this site are held by their respective copyright owners.