WebHack is a web-based MUD (Multiple User Dungeon). If you are familiar with MUDding (Or MUSHing/MOOing, or any other mutation of the basic concept), WebHack is an adaptation of the classic telnet/text-based game so that it can be played via a web browser.
WebHack (Accessible at http://www.llabmik.net/WebHack) is currently in the very early stages. You can create a character, walk around the (right now very small) dungeon, and pick up or drop any objects you encounter.
I am currently designing the best interface for player/monster interaction, which due to the limitations of HTTP, has been the biggest stumbling block to the project. With the original telnet-based interface, the MUD server "owned" the user screen. At any time, if something changed in the environment, such as a monster entering the room, another player attacking the player, or anything else, the server would instantly be able to update the user screen. This allowed for near real-time interaction.
However, with the browser/http interface, the user effectively "owns" the screen. The only time the server can let the user know of a change in the environment is to wait for the user to request new information (to move from room to room, check inventory, use an object, etc.) and then send the new information to the user. This creates some unique interface programming challenges in designing how to modify the gameplay to support the lack of a real-time interface and instead use only a request-driven interface.
I am playing around with several different approaches to it, such as turn-based melee interaction (Very similar to how it is done in classic paper-based Dungeons and Dragons) with response timeouts for a player who does nothing in a set amount of time. Other ideas are for a small frame that is constantly refreshed every 1 or 2 seconds, to allow for near-real-time information updating. I need to load-test this and see how much this consumes both processing and network resources.
This is where WebHack is currently going. Feedback is greatly requested!
- Klom Dark