diff --git a/notes.md b/notes.md index 1c5a2e5..70c382a 100644 --- a/notes.md +++ b/notes.md @@ -2,34 +2,21 @@ The server holds the ultimate version of the world. The server has to handle log ons, logoffs, and world simulation. To do this, the server needs some sort of database system. I'd like to use something that is quick and efficient, which means that I'd probably end up using SQLite or something similar. -Any vanilla game client should be able to connect to any vanilla game server, regardless of how much that server has been customized. If a server's code has been modified, I might need scripts or something. - -Monster AI/other world effects should be controlled with customizable scripts. +Monster AI/other world effects should be controlled with customizable scripts/specific file formats. Should the server program have a UI? Or at least allow some sort of input at the terminal? -## Server Outline - -This is what a vanilla server needs to handle - -... - -#### Player Information: - -* username -* handle -* avatar index -* player index -* inventory -* equipment -* friends list -* banned - - -#### Item Information: -* item index +#### Template Item Information: +* item type index * name +* effect... + +#### Template Item Information: +* item index +* item type +* quantity + #### Equipment -* ??? +Equipment should be items, but should the item object be placed in the equipment slot when it's equiped? Or should the slot gain certain traits, and the item is removed from the game? diff --git a/program-architecture.md b/program-architecture.md index fbaee1a..f7e3cf2 100644 --- a/program-architecture.md +++ b/program-architecture.md @@ -1,4 +1,7 @@ -## Server Requirements +An unmodified client must be able to connect to any server, be it vanilla, custom or modded. + +------------------------- +### Server Requirements The server needs to handle the following content. @@ -8,14 +11,12 @@ The server needs to handle the following content. * logon/logoff protocol * maintaining the client list (dropouts) * persistent player data -* lua scripting engine #### Game Resource Distribution If the client lacks a resource, the server needs to transmit that resource to the client. * map data -* scripts * tilesets * sprites * sound effects @@ -23,13 +24,13 @@ If the client lacks a resource, the server needs to transmit that resource to th #### World Maps -The world map for a server can have any of these features. See [maps](wiki/maps). +The maps on a server are called rooms. For the data format, See [maps](wiki/maps). * overworld, connecting different locations * dungeons, possibly instanced * player owned pirate ships, which in turn can travel around the sea -* any numer of possible maps running at the same time -* collision detection in each map +* any numer of possible rooms running at the same time +* collision detection in each room #### Game Events @@ -46,13 +47,69 @@ All entities on the server have a unique, unsigned index. * players * monsters +* combat instances * pirate ships * loot drops -## Server Architecture +------------------------- +### Server Architecture * server metadata -* map list -* entity list + * name + * version + * distribution (official vs custom/name of the owner) + * major.minor.patch + * available map packs, resources, etc. + * player count + * maximum player count +* global client list +* global player list +* global room list +* global combat list + +#### Client Information + +* client index +* channel +* address +* player index + +#### Player Information + +* player index +* username +* avatar index +* current location +* inventory list +* equipment list +* friends list + +#### Room Information + +* room index +* map data +* player list +* monster list +* combat list + +#### Combat Information + +* combat index +* player list +* monster list +* origin room + +------------------------- +### Client Requirements + +The client needs to handle the following content. + +* user settings +* logon/logoff protocol +* resource downloading/loading +* user input +* rendering the resources +* player index +* player list +* monster list -* client list \ No newline at end of file diff --git a/scrapped-gdd.md b/scrapped-gdd.md index 60994dd..23d0c96 100644 --- a/scrapped-gdd.md +++ b/scrapped-gdd.md @@ -11,7 +11,7 @@ The Game Backdrop The game is set on a group of islands in the middle of a massive sea. The island environments are a mix of tropical and almost mythical locations. The structures in the world are reminiscent of pioneer designs, and steampunk machinery. The Game World -The game world is made up of interconnecting “rooms” that represent towns, islands, and the surrounding sea. Players can travel around these rooms freely, but certain conditions may be needed to access certain parts of these worlds. TODO: nope. +The game world is made up of interconnecting “rooms” that represent towns, islands, and the surrounding sea. Players can travel around these rooms freely, but certain conditions may be needed to access certain parts of these worlds. Back Story The people of the Tortuga islands have a legend of how they arrived. The legend states that when a god saw a small group of sailors clinging to a piece of driftwood, he took pity on them and created the islands in front of their eyes. These sailors went on to have hundreds of descendants, who cover the islands today. Small pieces of knowledge passed down led to the recreation of old technologies, such as the steam powered machines that are used in everyday life. Although the people live in towns and villages allover the islands, very little is known about the islands themselves. @@ -66,5 +66,3 @@ game flavour: everything can only be crafted? Eldritch horrors? combat triangle & other game balances - -I want a single, unmodified client to be able to connect to any server, be it vanilla, custom or modded.