09-29-2009, 10:51 PM
I am currently developing a new MUD Engine called Fate (no, it's not an acronym). This is an engine that is written from scratching using Pike as the development language and Pike as the MUD Language as well.
I started with some proof-of-concepts seeing if Pike can be used to host a MUD environment. Given Pike's powerful features and access to the host-computer's resources, it was very important to me that I have a MUD Engine that hosts the MUD environment inside a sandbox. A sandbox is a virtual environment that prevents code inside the sandbox from accessing anything outside of the sandbox. All LP MUDs have this built-in because the MudOS/FluffOS drivers do this very thing. After playing around with all the features Pike has available, I got a sandbox running inside the Fate MUD Engine.
The next step was to develop the server component to allow for AJAX communications. The whole purpose of this MUD Engine is to be an AJAX MUD and if I couldn't properly handle AJAX communications, then it would be a waste. Also, and almost equally, important was the ability to hide the actual server behind a firewall/proxy server, but still allow communications with the MUD Engine and the web. I did this by using Apache's Proxy Module to forward all requests sent to a very specific resource (i.e.: http://<base URL>/webclient) to the internal MUD Server listening on a specific port. This worked great and allows for multiple MUDs running on the same server or even a different server elsewhere internally. Also, it allows all the other HTML files to be hosted by an optimized and up-to-date Web Server, such as Apache, instead of the MUD Engine's poorly implemented version of a Web Server.
So here is where the Fate MUD Engine stands. These features have been developed but not yet completed and still need work:
These are the features that I want to work on next (as well as wrap up the above list)
Feel free to comment or ask questions.
I started with some proof-of-concepts seeing if Pike can be used to host a MUD environment. Given Pike's powerful features and access to the host-computer's resources, it was very important to me that I have a MUD Engine that hosts the MUD environment inside a sandbox. A sandbox is a virtual environment that prevents code inside the sandbox from accessing anything outside of the sandbox. All LP MUDs have this built-in because the MudOS/FluffOS drivers do this very thing. After playing around with all the features Pike has available, I got a sandbox running inside the Fate MUD Engine.
The next step was to develop the server component to allow for AJAX communications. The whole purpose of this MUD Engine is to be an AJAX MUD and if I couldn't properly handle AJAX communications, then it would be a waste. Also, and almost equally, important was the ability to hide the actual server behind a firewall/proxy server, but still allow communications with the MUD Engine and the web. I did this by using Apache's Proxy Module to forward all requests sent to a very specific resource (i.e.: http://<base URL>/webclient) to the internal MUD Server listening on a specific port. This worked great and allows for multiple MUDs running on the same server or even a different server elsewhere internally. Also, it allows all the other HTML files to be hosted by an optimized and up-to-date Web Server, such as Apache, instead of the MUD Engine's poorly implemented version of a Web Server.
So here is where the Fate MUD Engine stands. These features have been developed but not yet completed and still need work:
- Sandbox for virtual environment to protect host server
- Loading and compiling MUD Library code (written in Pike/LPC-ish)
- Simple Server to handle AJAX/Comet requests and tie it to a User object in the MUD
- Implement a virtual file system which will allow for any backing of the files (i.e. local FS or Database).
These are the features that I want to work on next (as well as wrap up the above list)
- A standardized API for Engine < - > Library communication (commonly referred to as applies and efuns in the LPC MUD world)
- Object Management
- A base MUD Library for other MUDs to build on instead of starting from scratch. This would be like DGD's Kernel Library.
Feel free to comment or ask questions.