diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..a9a6978 --- /dev/null +++ b/TODO.md @@ -0,0 +1,10 @@ +* Each client needs to know about each other client now. +* Have multiple players moving around the server at the same time +* keep the docs up to date!!!!! +* Player's internals a weird. +* clarify some of the names in the server project +* reimplement the server's time system. +* Overall, I think the server needs restructuring +* zero the packet data? +* Update the networking outline +* I should really use "index" instead of "ID" for naming things diff --git a/architecture.md b/architecture.md new file mode 100644 index 0000000..e69de29 diff --git a/client.md b/client.md new file mode 100644 index 0000000..e69de29 diff --git a/networking outline.md b/networking outline.md new file mode 100644 index 0000000..8d11c89 --- /dev/null +++ b/networking outline.md @@ -0,0 +1,22 @@ +Networking protocol: + //connections + ping: + ping the server + pong: + a response to a ping + join request: + from client to server, this is the initial contact the client makes. it carries all of the client's information, like the handle, avatar, etc. + join confirm: + the response to a join request, this makes the client enter the game proper, and carries the client's playerID. + disconnect: + from either the client or server, this officially ends communications between the two programs + + //information control + synchronize: + update both the server and client + new player: + a new player enters the world. carries all player info + delete player: + a player leaves the world, carries the player ID + movement: + this is the initial position and motion of a player in the world. it is relayed to all clients, and progresses using delta progression diff --git a/notes.md b/notes.md new file mode 100644 index 0000000..5a6f16c --- /dev/null +++ b/notes.md @@ -0,0 +1,72 @@ +## Notes + +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. + +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 + +* server name +* player cap +* maintaining the client list +* persistent player data + +#### Game Resources + +* resource distribution +* map data +* scripts +* tilesets +* sprites +* sound effects +* music + +#### World Maps + +* each game map is paged, giving free movement +* overworld (world backbone) +* dungeons (instanced?) +* player owned pirate ships +* other possible accessible locations +* collidable flags + +#### Game Events + +* Misc events +* Player combat is instanced, but players can drop in/out from the map + +#### Active Entities + +all entities have a unique, unsigned index + +* players +* pirate ships +* monster intelligence +* loot drops +* combat instances + +#### Player Information: + +* username +* handle +* avatar index +* player index +* inventory +* equipment +* friends list +* banned + + +#### Item Information: +* item index +* name + +#### Equipment +* ??? + diff --git a/server.md b/server.md new file mode 100644 index 0000000..e69de29