Reviewing the wiki and the design plans
+17
-6
@@ -1,6 +1,8 @@
|
|||||||
Welcome to the Tortuga wiki!
|
Welcome to the Tortuga wiki!
|
||||||
|
|
||||||
This guide should help you to understand this project, as well as helping me to plan out the expected features. This project uses C++11, which is available via GNU (or MinGW) 4.7, or Visual Studio 2012.
|
This guide should help you to understand this project, as well as helping me to
|
||||||
|
plan out the expected features. This project uses C++11, which is available via
|
||||||
|
GNU (or MinGW) 4.7, or Visual Studio 2012.
|
||||||
|
|
||||||
If this wiki is missing something, it means I haven't gotten to it yet.
|
If this wiki is missing something, it means I haven't gotten to it yet.
|
||||||
|
|
||||||
@@ -38,16 +40,25 @@ If this wiki is missing something, it means I haven't gotten to it yet.
|
|||||||
|
|
||||||
## Copyright
|
## Copyright
|
||||||
|
|
||||||
Tortuga is released under the [zlib license](http://en.wikipedia.org/wiki/Zlib_License).
|
The current version of Tortuga is released under the
|
||||||
|
[zlib license](http://en.wikipedia.org/wiki/Zlib_License).
|
||||||
|
|
||||||
Copyright (c) 2013 Kayne Ruse
|
Copyright (c) 2013 Kayne Ruse
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
|
This software is provided 'as-is', without any express or implied warranty. In
|
||||||
|
no event will the authors be held liable for any damages arising from the use
|
||||||
|
of this software.
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
|
Permission is granted to anyone to use this software for any purpose, including
|
||||||
|
commercial applications, and to alter it and redistribute it freely, subject to
|
||||||
|
the following restrictions:
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
|
1. The origin of this software must not be misrepresented; you must not
|
||||||
|
claim that you wrote the original software. If you use this software in a
|
||||||
|
product, an acknowledgment in the product documentation would be appreciated
|
||||||
|
but is not required.
|
||||||
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
|
2. Altered source versions must be plainly marked as such, and must not be
|
||||||
|
misrepresented as being the original software.
|
||||||
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
3. This notice may not be removed or altered from any source distribution.
|
||||||
|
|||||||
+76
-39
@@ -1,4 +1,14 @@
|
|||||||
An unmodified client must be able to connect to any server, be it vanilla, custom or modded.
|
### Overall Requirements
|
||||||
|
|
||||||
|
An unmodified client must be able to connect to any server, be it vanilla,
|
||||||
|
custom or modded.
|
||||||
|
A server must allow the client to operate correctly.
|
||||||
|
If any information causes issues, it must be resolved.
|
||||||
|
If the source of the issue is the vanilla software, than that is the
|
||||||
|
developer's responsibility to bring the software into line with the expected
|
||||||
|
features.
|
||||||
|
If however, the problem is caused by modified software or assets, than it is
|
||||||
|
the responsibility of the server operator to resolve the issue.
|
||||||
|
|
||||||
-------------------------
|
-------------------------
|
||||||
### Server Requirements
|
### Server Requirements
|
||||||
@@ -6,31 +16,41 @@ An unmodified client must be able to connect to any server, be it vanilla, custo
|
|||||||
The server needs to handle the following content.
|
The server needs to handle the following content.
|
||||||
|
|
||||||
* server name
|
* server name
|
||||||
* server version
|
* server version (including host name & modification status)
|
||||||
* maximum player count
|
* maximum player count
|
||||||
* logon/logoff protocol
|
* logon/logoff protocol
|
||||||
* maintaining the client list (dropouts)
|
* maintaining the client list (handling dropouts)
|
||||||
* persistent player data
|
* persistent player data (in a database or custom format)
|
||||||
|
|
||||||
#### Game Resource Distribution
|
#### Game Resource Distribution
|
||||||
|
|
||||||
If the client lacks a resource, the server needs to transmit that resource to the client.
|
If the client lacks a resource, the server needs to transmit that resource to
|
||||||
|
the client upon connection.
|
||||||
|
Resources transmitted include but are not limited to:
|
||||||
|
|
||||||
* map data
|
* map data
|
||||||
* tilesets
|
* graphical assets
|
||||||
* sprites
|
* tilesets
|
||||||
* sound effects
|
* sprites
|
||||||
* music
|
* audio assets
|
||||||
|
* sound effects
|
||||||
|
* background music
|
||||||
|
* scripts
|
||||||
|
* AI scripts
|
||||||
|
* locational triggers
|
||||||
|
|
||||||
#### World Maps
|
#### World Maps
|
||||||
|
|
||||||
The maps on a server are called rooms. For the data format, See [maps](wiki/maps).
|
The maps on a server are called rooms. For the data format, See
|
||||||
|
[maps](wiki/maps).
|
||||||
|
This is an example of the structure that a server's world can have. This isn't
|
||||||
|
a requirement, but it can offer the easiest solutions.
|
||||||
|
|
||||||
* overworld, connecting different locations
|
* a singular "overworld", connecting different locations
|
||||||
* dungeons, possibly instanced
|
* dungeons, possibly instanced
|
||||||
* player owned pirate ships, which in turn can travel around the sea
|
* player owned locations, like pirate ships, depending on a server's theme
|
||||||
* any numer of possible rooms running at the same time
|
* any number of possible rooms running at the same time
|
||||||
* collision detection in each room
|
* each room is it's own little world
|
||||||
|
|
||||||
#### Game Events
|
#### Game Events
|
||||||
|
|
||||||
@@ -48,7 +68,7 @@ All entities on the server have a unique, unsigned index.
|
|||||||
* players
|
* players
|
||||||
* monsters
|
* monsters
|
||||||
* combat instances
|
* combat instances
|
||||||
* pirate ships
|
* pirate ships/vehicles
|
||||||
* loot drops
|
* loot drops
|
||||||
|
|
||||||
-------------------------
|
-------------------------
|
||||||
@@ -57,7 +77,7 @@ All entities on the server have a unique, unsigned index.
|
|||||||
#### Modules
|
#### Modules
|
||||||
|
|
||||||
* server metadata
|
* server metadata
|
||||||
* name
|
* server name
|
||||||
* version
|
* version
|
||||||
* distribution (official vs custom/name of the owner)
|
* distribution (official vs custom/name of the owner)
|
||||||
* major.minor.patch
|
* major.minor.patch
|
||||||
@@ -67,23 +87,24 @@ All entities on the server have a unique, unsigned index.
|
|||||||
* global client list
|
* global client list
|
||||||
* global player list
|
* global player list
|
||||||
* global room list
|
* global room list
|
||||||
* global combat list
|
* global combat list -?
|
||||||
|
|
||||||
#### Client Information
|
#### Client Information
|
||||||
|
|
||||||
* client index
|
* client index
|
||||||
* channel
|
|
||||||
* address
|
|
||||||
* last contact time
|
|
||||||
* ping count (number of times this client has been pinged, disconnect if it's too high)
|
|
||||||
* player index
|
* player index
|
||||||
|
* channel/address
|
||||||
|
* last contact time (ping/keep alive)
|
||||||
|
* ping count (number of times this client has been pinged, disconnect if it's
|
||||||
|
too high)
|
||||||
|
|
||||||
#### Player Information
|
#### Player Information
|
||||||
|
|
||||||
* player index
|
* player index
|
||||||
* username
|
* client index
|
||||||
* avatar index
|
* handle
|
||||||
* current location
|
* avatar
|
||||||
|
* current location (room, coords)
|
||||||
* inventory list
|
* inventory list
|
||||||
* equipment list
|
* equipment list
|
||||||
* friends list
|
* friends list
|
||||||
@@ -95,43 +116,59 @@ All entities on the server have a unique, unsigned index.
|
|||||||
* player list
|
* player list
|
||||||
* monster list
|
* monster list
|
||||||
* combat list
|
* combat list
|
||||||
|
* loot drop list
|
||||||
|
|
||||||
#### Combat Information
|
#### Combat Information
|
||||||
|
|
||||||
* combat index
|
* combat index
|
||||||
|
* room index
|
||||||
* player list
|
* player list
|
||||||
* monster list
|
* monster list
|
||||||
* origin room
|
|
||||||
|
|
||||||
-------------------------
|
-------------------------
|
||||||
### Client Requirements
|
### Client Requirements
|
||||||
|
|
||||||
The client needs to handle the following content.
|
The client needs to handle the following content.
|
||||||
|
|
||||||
* user settings
|
* user settings (name, avatar, etc.)
|
||||||
* logon/logoff protocol
|
* logon/logoff protocol
|
||||||
* resource downloading/loading
|
* resource downloading/loading
|
||||||
* user input
|
* user input
|
||||||
* rendering the resources
|
* drawing to the screen
|
||||||
|
* playing the correct information
|
||||||
|
* client index
|
||||||
* player index
|
* player index
|
||||||
* player list
|
* room data
|
||||||
* monster list
|
* player list
|
||||||
|
* monster list
|
||||||
|
* etc.
|
||||||
|
|
||||||
-------------------------
|
-------------------------
|
||||||
### Client Architecture
|
### Client Architecture
|
||||||
|
|
||||||
#### Scenes
|
#### Scenes
|
||||||
|
|
||||||
* SplashScreen: start of the program
|
* SplashScreen
|
||||||
* MainMenu: program hub
|
* start of the program
|
||||||
* OptionScreen: configuration saved on exit
|
* load the boilerplate resources
|
||||||
* Lobby: find available servers
|
* display the kr-studios logo
|
||||||
* ping the network
|
* MainMenu
|
||||||
* phone home
|
* program hub
|
||||||
* InWorld: the player is on the map
|
* OptionScreen
|
||||||
* InCombat: the player is in combat
|
* custom config saved on exit
|
||||||
|
* Lobby
|
||||||
|
* find available servers
|
||||||
|
* broadcast to the network
|
||||||
|
* phone home -?
|
||||||
|
* InWorld
|
||||||
|
* the player is in a room
|
||||||
|
* walk around the map
|
||||||
|
* communicate with others on the map
|
||||||
|
* InCombat
|
||||||
|
* the player is in combat
|
||||||
|
* return to the original room when finished
|
||||||
|
|
||||||
#### Modules
|
#### Modules
|
||||||
|
|
||||||
* Map Loader
|
* map system
|
||||||
* player
|
* players
|
||||||
|
|||||||
-7
@@ -1,11 +1,4 @@
|
|||||||
* Each client needs to know about each other client now.
|
|
||||||
* Have multiple players moving around the server at the same time
|
* Have multiple players moving around the server at the same time
|
||||||
* keep the docs up to date!!!!!
|
|
||||||
* Player's internals a weird.
|
* 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
|
* Update the networking outline
|
||||||
* I should really use "index" instead of "ID" for naming things
|
|
||||||
* What if a bounding box could have a vector added to it?
|
* What if a bounding box could have a vector added to it?
|
||||||
Reference in New Issue
Block a user