Newer
Older
atlantis / atlantis.txt
======================
|| Project ATLANTIS ||
======================


SUMMARY

Atlantis is a framework for creating an MUD world. It includes an interpreted
language for describing places, items, monsters and NPCs; provides networking
capabilities for multiplayer games and a text-based user interface. Inspired
by Dungeons and Dragons and influenced by OpenWorld, it is written in
Common Lisp.


GAME PLAY

The player navigates around the world using shell-like commands. He is immersed
into the game by DnD-like descriptive texts; new areas of the world can be
generated on the fly by the players themselves. It is a RPG, players aim to
develop their characters and can interact with other players.


TECHNICAL CHALLENGES

Networking: does Common Lisp support networking? threading? If not the latter,
			how can a real-time networked multiplayer game be implemented?
				-> CLisp supports neither :-( However, it should be
				possible to write a simple server-client model in C and then
				integrate it with the CL code. A lot of the networking is
				probably passing simple strings around, so that shouldn't be
				too difficult. The threading is probably more of a challenge.
				(If it's necessary, that is?)
				-> actually, clisp does support networking via sockets. Yeah! :-)


Implementation: presumably Atlantis will have to have a server-client model. 
				How do the two communicate? Are there alternative implementation
				models?
					-> As stated above, this should be fairly easy to solve
					with string representations of objects in Lisp. (Just pass
					the *world* object to the client, for instance.)
						-> SECURITY RISK!
					-> For the sake of better code separation, it would probably
					be wise to create two Lisp packages (server and client).

Combat system: Here I have to think of something clever... The OpenWorld method
	   		   would be an option, but I'm not too keen on it.


PLAN OF ACTION - TODO

Networking: as described above. I would tend to leave this for quite late, the
			only problem might be that at a later stage, it would take a lot of
			refactoring/rewriting to adjust the game to deal with networking.
			Perhaps I can build a mockup of a server-client situation now, and
			do the actual implementation later.

Game features: Currently (v0.1), creating the world using ATL works, and the
	 		   player can move around. Now I need to add game items, NPCs,
			   monsters, a combat system, etc.