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/.
Please see:
http://en.wikipedia.org/wiki/MUD
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.
Aspen was written to solve a few problems that I've noticed:
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 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:
You can join us on irc at irc.freenode.net, in #aspen-mud.
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.
Aspen can be downloaded via SVN at the following address:
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.
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.
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.
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.
| Revision | Author | Date | Comment |
| 16 | tyler | 2010-01-07 00:29:25 | [M] merged 14:15 forgot to add the new syslog and modules file; those should now be in. |
| 14 | tyler | 2010-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. |
| 10 | tyler | 2010-01-06 17:44:55 | [M] merged 8:9. Fixed switches in Makefile--Thanks, John. |
| 8 | tyler | 2010-01-06 15:55:35 | [M] Merged 6:7 |
| 6 | tyler | 2010-01-05 19:21:38 | [m] Merged unstable 2:5 |
| 1 | tyler | 2010-01-02 02:44:56 |
Things you should be aware of:
| Revision | Author | Date | Comment |
| 70 | tyler | 2010-07-12 19:30:37 | Made windows changes work with the make, fixed a bug with send/recv where send was being used in 'read'. |
| 69 | chris95219 | 2010-07-12 17:57:03 | |
| 68 | tyler | 2010-07-12 16:38:10 | Made serializer work--Thanks, Chris! |
| 67 | tyler | 2010-07-12 16:25:36 | |
| 66 | tyler | 2010-07-10 17:00:51 | Started work on serialization helpers, got the serializer class built in. |
| 65 | tyler | 2010-06-30 20:35:51 | Started work on converting to serialization; not a good version, don't use this if your just upgrading. |
| 64 | tyler | 2010-06-27 17:20:43 | Added in the serializer library, next update will switch to using that instead of boost's serialization. This should speed up compilation time, and make things a lot smaller over-all. |
| 63 | tyler | 2010-06-27 17:15:19 | Fixed some minor memory leaks. |
| 62 | tyler | 2010-05-25 02:43:12 | Started work on converting the project to use Doxygen. Started documenting zone.h, more to come. Added a docs directive to the Makefile, used to generate documentation. |
| 61 | tyler | 2010-05-24 16:02:38 | |
| 60 | tyler | 2010-05-24 15:50:55 | Fixed rlist to show rooms, wasn't matching on zones previously. |
| 59 | tyler | 2010-05-24 15:39:17 | Room descriptions are now shown when you move, bit of a hackish work, but it works for now. |
| 58 | tyler | 2010-05-24 15:17:52 | Moved event calls to use the event manager. |
| 57 | tyler | 2010-05-23 17:56:02 | Moved most of the Variant class down to a cpp file. |
| 56 | tyler | 2010-05-23 17:20:35 | Moved events down to a class used for calling them, so that they wouldn't have to be declared as public variables in classes. Each event is registered, then it can be retrieved and called. The class responsible for holding events is the EventManager class, declared in event.h. Both the Entity and World inherit this. |
| 55 | tyler | 2010-05-18 18:06:07 | Added digging, fixed an error with the look event for rooms, where it wouldn't show the name, but the pointer. Added a zone property on rooms so they know what zone they belong to. |
| 54 | tyler | 2010-04-21 22:51:18 | Cleaned up some code, fixed input handlers to (hopefully) work off a stack. Updated the Menu and Editor class to use the new input setup. |
| 53 | tyler | 2010-04-19 16:04:29 | Fixed some recursive destructor calls, cleaned up some memory leaks. Added password warning if someone tries to guess a player's password (soon to be followed by more security-like stuff). Fixed some errors in login code. (Username now gets checked before it's passwed to the load function). Player files now save on login and on exit. (Keeps new players from getting deleted if they don't save). |
| 52 | tyler | 2010-04-18 22:42:50 | Finally got object management set up (for the most part). This commit fixes a bug with objects not being serialized with their vnums. |
| 51 | tyler | 2010-04-17 23:54:21 | Added the eventargs.h file; forgot to add that when it was created. |
| 50 | tyler | 2010-04-17 20:57:28 | Mor work with rooms, zones, and object management. |
| 49 | tyler | 2010-04-14 19:45:53 | Fixed a small bug where a check was done against the calling player for mkgod, cleaned up the code a bit. Started work on the builder subgroup of commands, and added a mkbuilder command to make people builders. |
| 48 | tyler | 2010-04-14 16:58:17 | Started work on locations, making the object use it's location and serialize back to a num. Moved entity functions to a cpp file. |
| 47 | tyler | 2010-04-10 18:22:34 | Startedwork on zone creation and initialization. |
| 46 | tyler | 2010-04-09 19:45:40 | Started work on object management for both objects and rooms. |
| 45 | tyler | 2010-04-09 15:50:52 | Added a basic Zone object, used for managing collections of rooms. Added a room table to the world class. |
| 44 | tyler | 2010-04-08 18:35:50 | Added look information, attached events. Cleaned up some compilation warnings. |
| 43 | tyler | 2010-04-08 16:52:16 | Added a IsLiving and IsPlayer to the living object for checks. Added a basic room object. |
| 42 | tyler | 2010-04-08 16:51:49 | Fixed a memory leak in player; added a ctor to clean up mappings and kill the socket. |
| 41 | tyler | 2010-04-08 15:28:23 | Added exit class, for use with upcoming rooms. |
| 40 | tyler | 2010-04-08 15:08:51 | Deleted the material code; doesn't need to be added just yet. |
| 39 | tyler | 2010-04-08 15:03:29 | Lots of changes, code cleanup/started work on MCCp. |
| 38 | tyler | 2010-03-30 02:12:07 | Added telnet constants. |
| 37 | tyler | 2010-03-30 02:05:02 | Started work on the telnet protocal implementation. |
| 36 | tyler | 2010-03-28 00:55:54 | Finished removal of scripts. |
| 35 | tyler | 2010-03-28 00:54:45 | Deleted the angelscript info; we'll be using python for the lib (I think). |
| 34 | tyler | 2010-03-28 00:49:49 | Added more editor functionality (the functions should be done, now I just need to bugfix). |
| 33 | tyler | 2010-03-25 17:13:35 | Added most of the functionality for the basic editor handler; need to write the editor class. |
| 32 | tyler | 2010-03-24 15:25:57 | Fixed a compile error with help.cpp; forgot I had started to add code to the bottom. |
| 31 | tyler | 2010-03-24 15:20:48 | Added the help system in, and started work on editors. Got the menu basics in, though that can't be tested until I have the help editor ready to link with it. Added input handlers to the socket class, and fixed the parsing to recognize those. |
| 30 | tyler | 2010-02-06 16:33:25 | Added script_object |
| 29 | tyler | 2010-02-06 16:31:13 | Started 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. |
| 28 | tyler | 2010-01-30 19:03:16 | Solved 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. |
| 27 | tyler | 2010-01-30 17:25:57 | Made 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. |
| 26 | tyler | 2010-01-29 21:18:00 | Added in partial scripting support; more to go |
| 25 | tyler | 2010-01-24 07:25:28 | Added a LoadPlayer method to world, added a whois/finger command to the commands. |
| 24 | tyler | 2010-01-24 05:16:42 | Started work on a scripts module, added uptime, fixed serialization inheritance; entity calls the container serialization, player calls living and living calls entity. |
| 23 | tyler | 2010-01-23 19:54:30 | Added documentation to the header files lacking, and fixed a couple bugs. |
| 22 | tyler | 2010-01-22 20:00:00 | |
| 21 | tyler | 2010-01-22 19:59:28 | The main change for this version is our component setup to allow for pluggable components. |
| 20 | tyler | 2010-01-13 14:24:27 | Lots 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. |
| 19 | tyler | 2010-01-12 19:44:50 | |
| 18 | tyler | 2010-01-12 19:44:18 | |
| 17 | tyler | 2010-01-09 23:15:36 | As 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. |
| 15 | tyler | 2010-01-07 00:27:56 | /Forgot to add the syslog and modules files; they should be in this version. |
| 13 | tyler | 2010-01-07 00:24:21 | Added 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 |
| 12 | tyler | 2010-01-06 20:47:09 | Added 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. |
| 11 | tyler | 2010-01-06 20:17:03 | Removed some of the newline warnings with the older compilers, removed the openssl include from previous (Thanks, CPPMan). |
| 9 | tyler | 2010-01-06 17:44:10 | Removed some switches to the compiler from the makefile-Thanks, John. |
| 7 | tyler | 2010-01-06 15:54:32 | Removed the "messages.h" file, that was supposed to contain game messages and integrated them to where they belong. |
| 5 | tyler | 2010-01-05 18:54:32 | Added 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. |
| 4 | tyler | 2010-01-05 03:22:42 | Fixed Broadcast to add the whole message to the history when someone broadcasts, history now shows the time of the broadcast in elapsed time. |
| 3 | tyler | 2010-01-05 02:51:07 | Added a hist command to display channel history--need to add in time calculations next. |
| 2 | tyler | 2010-01-02 02:53:48 | Created 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.