From 9ba8e6cf38da5196ed7bc878fe452952f3e10638 Mon Sep 17 00:00:00 2001 From: Magnus Auvinen Date: Tue, 22 May 2007 15:06:55 +0000 Subject: moved docs --- docs/teewars.txt | 183 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 docs/teewars.txt (limited to 'docs/teewars.txt') diff --git a/docs/teewars.txt b/docs/teewars.txt new file mode 100644 index 00000000..c0edcb38 --- /dev/null +++ b/docs/teewars.txt @@ -0,0 +1,183 @@ += Teewars Documentation + +== Tasks + +=== Bigger tasks +* Tilemap editor (Huge, non-R1). +* Offline gui (Non-R1) +* Fix everything so it builds under windows. +* Chat. +* Master server (Non-R1) +* zlib compression on the maps. + +=== Medium tasks +* Fix packetloss handling. (client.cpp/server.cpp) +* Flipping of tiles in the tilemap should be fixed. (mapres_tilemap.cpp, tool.py) +* Compression for snapshots. Not zlib as it's abit overkill for the small size. (client.cpp/server.cpp) +* Splitting and combine snapshot over several packets. (server.cpp/client.cpp) +* Some sort of settings format (think KISS) for the client. (client.cpp) +* Score board. (game/*) +* The gfx implementation uses 1 quad in a VBO. It should be a whole bunch. (gfx.cpp) +* Clients should timeout. (server.cpp) + +=== Smaller tasks +* The gfx API now uses BGRA for texture loading. It should be RGBA. (gfx.cpp, tool.py) +* Commandline option for what server to connect to. ("-c host") + +== Running the Game + +=== Start a Server +----------------- +# ./teewars -s +----------------- + +=== Connect with the client +----------------- +# ./teewars [-c IP] +----------------- +Not specifying -c will connect the client to localhost + +== Source Layout +=== data_src +Data for the game is located under data_src and is unprocessed. + +=== src +Engine source. It contains the network communication, graphics and sound. + +==== src/game +The game source. This is the source that acctually is teewars. You can write a +new game using the engine by removing these files and start from scratch. + +=== scripts +Scripts. + + +== File Formats + +This sections describes the diffrent file format that Teewars uses. + +=== Map v2 + int ID + int version + int size + int swaplen + + int num_item_types + int num_items + int num_raw_data + + int item_size + int data_size + + types { + int typeid + int start + int num + } * (num_item_types) + + item_offsets { + int offset + } * (num_items) + + raw_data_offsets { + int offset + } * (num_raw_data) + + item { + int type_and_id + int size + datai { + int data + } * (size/4) + } * (num_items) + + raw_data { + byte d + } * X + + Notes: + swaplen tells how much of the data that should be swapped + types.start is an index into offsets + item.size must be a multiple of 4 + the types must be sorted by type id + special typeid of 0xffff means raw data, and there fore should always come last + + Could change: + item.size could be removed + + +==== Map Items + 0x8010 = image + 0x8020 = tilemap + 0x8030 = collision + + collision { + int width + int height + int raw_data_index + } + data { + byte data + } * (width * height) + + image { + int width + int height + int raw_data_index + } + pixel { + byte r + byte g + byte b + byte a + } * (width * height) + + tilemap { + int image + int width + int height + int x + int y + int scale + int raw_data_index + } + data { + byte data + } * (width * height) + +== Network Protocol + +=== CLIENT_CONNECT +Sent by the client when it wants to connect. + str32 name + str32 clan + str32 password + str32 skin + +=== SERVER_ACCEPT +Sent by the server as a respons to CLIENT_CONNECT, when it accepts a connection. + str32 mapname + +=== CLIENT_DONE +Sent when the client is done loading the map. + nothing + +=== SERVER_SNAP +Sent by the server at a steady interval to all players. Contains a snapshot of the current world. + int num_parts + int part + int size + +==== Snapshot + + int num_items + + offsets { + int offset + } * num_items + + item { + int type_and_id + int data[X] + } * num_items + -- cgit 1.4.1