Difference between revisions of "Development:Network:Todo"

From VsWiki
Jump to: navigation, search
(Add some more weapon todos)
(Vegaserver:)
 
(42 intermediate revisions by 7 users not shown)
Line 1: Line 1:
 +
= Bugs for deathmatch =
 +
* With renamed units (renamed aeon in both test2 savegame files, Player 2 seems to load fine, but cannot fire guns.
 +
** Yes.  This is a feature, not a bug.  The way it sends saved games is by starting with the original entry in units.csv.  If that does not exist, it sends a blank CSV file to the clients. [[User:ace123|Patrick]] 02:28, 29 July 2007 (PDT)
 +
* Asteroids not always networked... Space junk doesn't display the cargo type because of the way it was created....
 +
 
= Network TODO =
 
= Network TODO =
 +
 +
List of stuff to be done (that is... the to do in "TODO")
 +
Update of April 2014 :
 +
 +
2 members are working at the MMO Development :
 +
 +
*Eye~R ( hosting , gameplay designer )
 +
*Ezee ( Dev , graphics , gameplay )
 +
 +
Eye~R wrote a first TODO list , because of " '''There's still a lot to do'''. " :
 +
 +
== Vegastrike MMO Server ToDo list: ==
 +
 +
 +
 +
 +
== Vegaserver: ==
 +
 +
* Fix "turrets"
 +
 +
* Fix owning >1 ship = player dies (workaround via PHP implemented)
 +
 +
* Parse user input for sanity in httpserver.py ( as workaround .py isolated from public, [http://vegastrike.armed.me.uk/signup.php signup offered via PHP])
 +
** Currently when a 'tard tries to use it as a proxy server it crashes it.
 +
 +
* Needs admin commands:
 +
** lacking ability for systems administration or faction/clan administration. see below.
 +
*** poking in the code, I found an admin level - but applying it causes errors
 +
*** I also see mention of "guilds" which I assume is to build user clans, but don't yet know how to utilise
 +
 +
* Needs Communications:
 +
** Currently exists a basic IRC-style chat interface, ideally needs more advanced functionality.
 +
 +
== Account Server: ==
 +
 +
Python:
 +
 +
PHP:
 +
 +
== Website: ==
 +
 +
 +
Pretty frontend, user signup and general website
 +
 +
* Home page:
 +
**    I Stole the vegastrike site
 +
 +
* About page:
 +
**    As above
 +
* Signup page:
 +
**    Currently functional although ability to set ship/faction isn't
 +
* Login Page
 +
**
 +
* Buy ship workaround
 +
** fully functional [http://vegastrike.armed.me.uk/test/usership4.php User Ship Adjustment Form]
 +
 +
== Admin control interface ==
 +
 +
 +
*Ability to perform basic admin of user accounts
 +
** Issue p/w reset request to user's email
 +
** Basic account maintainence
 +
** Blocklist maintainence(may tie this directly into the firewall)
 +
 +
*Ability to perform basic admin of server
 +
** graceful Start/Stop/Restart of services
 +
** view and evict users
 +
 +
== User control interface ==
 +
 +
 +
*Ability to change contact Email.
 +
*Ability to change alternate contact details.
 +
*Abiltiy to change about.
 +
*Abiltiy to upload avatar.
 +
*Ability to upload personal livery.
 +
*Ability to maintain friends/contacts.
 +
**Considered to implement in here as a workaround to being unable to add functionality to vegaserver(At this time):
 +
***Ability to adjust current ship. '''Implemented.'''[http://vegastrike.armed.me.uk/test/usership4.php Ship Adjustment Form]
 +
***Ability to adjust faction aligence.
 +
 +
== DataBase: ==
 +
 +
 +
*Bases table
 +
** to provide for what factions/individuals hold what resources and their production queues
 +
 +
*account table
 +
**Possibly split CSV into applicable fields? will make tweaking of any particular value "easier"..
 +
 +
== Markets: ==
 +
 +
*Create sensible "production Tree"
 +
** Work started. Multiplayer editing possible via: [http://morrigan.armed.me.uk:9001/p/Vegastrike Parts list in etherpad]
 +
*Create interface for human control over production
 +
 +
== NEW : DATABASE FOR ACCOUNT SERVER ==
 +
Current:<br />
 +
To setup a working vegastrike server with SQL backend you will require two tables in the database, user_table and account_table - formatted thusly:<br />
 +
*user_table
 +
+---------------+-------------+------+-----+---------+----------------+<br />
 +
<nowiki>| Field        | Type        | Null | Key | Default | Extra          |</nowiki><br />
 +
+---------------+-------------+------+-----+---------+----------------+<br />
 +
| username      | varchar(20) | YES  | UNI | NULL    |                |<br />
 +
| user_id      | int(10)    | NO  | PRI | NULL    | auto_increment |<br />
 +
| user_password | varchar(50) | YES  |    | NULL    |                |<br />
 +
+---------------+-------------+------+-----+---------+----------------+<br />
 +
*account_table
 +
+------------------+-------------+------+-----+---------+-------+<br />
 +
| Field            | Type        | Null | Key | Default | Extra |<br />
 +
+------------------+-------------+------+-----+---------+-------+<br />
 +
| username        | varchar(20) | YES  |    | NULL    |      |<br />
 +
| modname          | varchar(20) | YES  |    | NULL    |      |<br />
 +
| csv              | mediumtext  | YES  |    | NULL    |      |<br />
 +
| savegame        | mediumtext  | YES  |    | NULL    |      |<br />
 +
+------------------+-------------+------+-----+---------+-------+<br />
 +
<br />
 +
The above tables are nicely formattted in the preview window but mediawiki thinks it's clever and removes spaces and I can't clock how to prevent.
 +
 +
Proposed:
 +
 +
Either the "csv" and "savegame" field to be split to individual values or aquire/build some sort of tool to manipulate data easier.
 +
 +
On my server I've added another table to provide admin with contact details for player (email) and provide other players with alternate contact details for other players(like social media)
 +
 +
== CMD_CARGOUPGRADE and other Docking-related stuff ==
 +
* Client basecomputer notifications are bad:
 +
** Whenever anyone docked at ({{Fixme}}: any????) base buys or sells cargo/upgrade, the menu for all other players resets to the top level...
 +
** Needs to keep menu open but still keep cargo in sync.
 +
* To do much much later: Buying ships, missions, saving/loading from COMPY interface.
 +
* Cargo salvage boxes - tractor beams?
 +
 +
== More bugs ==
 +
* There are two different functions to send damage, and I have seen three distinct error messages in a few cases (?!?!?!)
 +
** zonemgr.cpp:614, broadcastDamage AS WELL AS zonemgr.cpp:538, addPosition CALLS zonemgr.cpp:688, addDamage
 +
** netserver_devices.cpp:136, sendDamages CALLED FROM Unit::ApplyLocalDamage
 +
 +
== Other synchronization bugs ==
 +
* Saving games: WriteSavedGame() being used to send ADDCLIENT messages to other players, but original saved game used for player himself.
 +
 +
== Some other bug I wrote down, probably doesn't belong here: ==
 +
* Gas Giant ice rings appear in front of the planet - z buffer.
 +
 +
== General list ==
  
 
* Clean up server-client-authserver communication
 
* Clean up server-client-authserver communication
Line 6: Line 155:
 
* Login:
 
* Login:
 
** Encrypted authentication, possibly using a random server token.
 
** Encrypted authentication, possibly using a random server token.
*** This means that login data cannot be the first packet sent.
+
*** This means that login data cannot be the first packet sent -- it must first negotiate a key.
 +
** Would SSL be a good idea here.  I think we currently link with a Crypto++ library... but I'm not sure how it is currently used or how to use it.
 
** Make sure authserver-server-client time synchronization works correctly. Maybe every few minutes (or even hours) A,S,C should sync in case a clock gets off somehow.
 
** Make sure authserver-server-client time synchronization works correctly. Maybe every few minutes (or even hours) A,S,C should sync in case a clock gets off somehow.
* Exiting:
 
** VSExit(1) is somewhat brutal way of quitting the game.  It often doesn't even nicely inform the server until it closes the connection.
 
** Other clients sometimes still see a ghost of the player who left.  I'm not sure if this is fixed yet.
 
** Games should be saved?
 
*** How much data should actually be saved?  What if you have died?
 
 
* Damage:
 
* Damage:
** Theoretically implented, but I have yet to see collisions and weapons actually do damage.
+
** Theoretically implented, but I have yet to see collisions and weapons actually do damage client-side.
** I don't know yet how dying will work... It would be bad to have to start from scratch every time you crash into something.
+
*** The problem is: Clients are responsible for position, so they often bounce before the server has a chance to give damage.  Other times you die because the client doesn't respond fast enough! [[User:ace123|Patrick]] 20:04, 24 February 2007 (PST)
* Weapons:
+
** Not sure what CMD_SCAN is to be used for... it's used in one place -- that is in NetClient::scanRequest.
** Energy needs to be sent on CMD_FIREREQUEST (ideally just S->C firerequest), and must charge client-side too.
+
** I don't know yet how a MMORPG would implement dying...
** Create new message CMD_TARGET when someone targets a new message.  Will be relayed to all clients for autotracking.
+
*** It would be bad to have to start from scratch every time you crash into something.
** Also, send out CMD_TARGET when an AI targets.
+
*** Have the respawn key re-join?
* Jumping:
+
*** Right now you save only if you disconnect without dying.  I guess that works.
** Server switching???
+
*** How do we implement saving?  Respawn doesn't work without a way to save... or should you keep everything the same as when you died, and then start from a random "spawn point".
** Having the server load a new system may not be a good ideaThe server should always have all systems it will handle running at once.
+
**** I believe most FPS games make you lose all upgrades, but this is not an option in Vega Strike, or things will get boring quickly.
** This also means that the universe must be limited.
+
**** How do games like Ultima or WoW behave when you die? Do you lose everything (obviously you can't lose all your experience)?
 +
***** Diablo II: A dead body is left at the place where you died. With it are all your equipment, upgrades and the gold (credits) you carried. Your team members can recover all that for you or you can hurry there yourself. Some of the gold is alsways lost however. In more difficult settings (hell and nightmare) also some of your experience is lost. ([[User:Zeog|Zeog]] 01:24, 4 July 2006 (PDT))
 +
***** WoW: Your equipment takes some damage.  With high-end gear, this costs enough that death is worth avoiding(top-level characters don't have to worry about the XP loss).  There's also the time it takes to run your ghost to your corpse.  If you just log off without recovering your corpse, I think your gear takes more damage.  In Vega Strike, you could lose some of your cargo, and take some damage to your upgrades.
 +
***** I think that something more realistic will do, a ship has an eject option, we could say that auto eject works when the ship blows up, since credit should be theoraticlly in a bank account it doesnt get stolen, but all equipment is lost, about stronger richer players having lots of cash and a serious ship would need to avoid death or else they would have to buy a ship that is a lot worse, and people that cannot afford a ship could join a faction doing missions for it as a pilot and buying a ship when they get enough cash.
  
 
[[Category:Development]]
 
[[Category:Development]]

Latest revision as of 17:14, 12 June 2015

Bugs for deathmatch

  • With renamed units (renamed aeon in both test2 savegame files, Player 2 seems to load fine, but cannot fire guns.
    • Yes. This is a feature, not a bug. The way it sends saved games is by starting with the original entry in units.csv. If that does not exist, it sends a blank CSV file to the clients. Patrick 02:28, 29 July 2007 (PDT)
  • Asteroids not always networked... Space junk doesn't display the cargo type because of the way it was created....

Network TODO

List of stuff to be done (that is... the to do in "TODO") Update of April 2014 :

2 members are working at the MMO Development :

*Eye~R ( hosting , gameplay designer )
*Ezee ( Dev , graphics , gameplay )

Eye~R wrote a first TODO list , because of " There's still a lot to do. " :

Vegastrike MMO Server ToDo list:

Vegaserver:

  • Fix "turrets"
  • Fix owning >1 ship = player dies (workaround via PHP implemented)
  • Parse user input for sanity in httpserver.py ( as workaround .py isolated from public, signup offered via PHP)
    • Currently when a 'tard tries to use it as a proxy server it crashes it.
  • Needs admin commands:
    • lacking ability for systems administration or faction/clan administration. see below.
      • poking in the code, I found an admin level - but applying it causes errors
      • I also see mention of "guilds" which I assume is to build user clans, but don't yet know how to utilise
  • Needs Communications:
    • Currently exists a basic IRC-style chat interface, ideally needs more advanced functionality.

Account Server:

Python:

PHP:

Website:

Pretty frontend, user signup and general website

  • Home page:
    • I Stole the vegastrike site
  • About page:
    • As above
  • Signup page:
    • Currently functional although ability to set ship/faction isn't
  • Login Page
  • Buy ship workaround

Admin control interface

  • Ability to perform basic admin of user accounts
    • Issue p/w reset request to user's email
    • Basic account maintainence
    • Blocklist maintainence(may tie this directly into the firewall)
  • Ability to perform basic admin of server
    • graceful Start/Stop/Restart of services
    • view and evict users

User control interface

  • Ability to change contact Email.
  • Ability to change alternate contact details.
  • Abiltiy to change about.
  • Abiltiy to upload avatar.
  • Ability to upload personal livery.
  • Ability to maintain friends/contacts.
    • Considered to implement in here as a workaround to being unable to add functionality to vegaserver(At this time):
      • Ability to adjust current ship. Implemented.Ship Adjustment Form
      • Ability to adjust faction aligence.

DataBase:

  • Bases table
    • to provide for what factions/individuals hold what resources and their production queues
  • account table
    • Possibly split CSV into applicable fields? will make tweaking of any particular value "easier"..

Markets:

  • Create sensible "production Tree"
  • Create interface for human control over production

NEW : DATABASE FOR ACCOUNT SERVER

Current:
To setup a working vegastrike server with SQL backend you will require two tables in the database, user_table and account_table - formatted thusly:

  • user_table

+---------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+----------------+
| username | varchar(20) | YES | UNI | NULL | |
| user_id | int(10) | NO | PRI | NULL | auto_increment |
| user_password | varchar(50) | YES | | NULL | |
+---------------+-------------+------+-----+---------+----------------+

  • account_table

+------------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-------------+------+-----+---------+-------+
| username | varchar(20) | YES | | NULL | |
| modname | varchar(20) | YES | | NULL | |
| csv | mediumtext | YES | | NULL | |
| savegame | mediumtext | YES | | NULL | |
+------------------+-------------+------+-----+---------+-------+

The above tables are nicely formattted in the preview window but mediawiki thinks it's clever and removes spaces and I can't clock how to prevent.

Proposed:

Either the "csv" and "savegame" field to be split to individual values or aquire/build some sort of tool to manipulate data easier.

On my server I've added another table to provide admin with contact details for player (email) and provide other players with alternate contact details for other players(like social media)

CMD_CARGOUPGRADE and other Docking-related stuff

  • Client basecomputer notifications are bad:
    • Whenever anyone docked at (FIXME : any????) base buys or sells cargo/upgrade, the menu for all other players resets to the top level...
    • Needs to keep menu open but still keep cargo in sync.
  • To do much much later: Buying ships, missions, saving/loading from COMPY interface.
  • Cargo salvage boxes - tractor beams?

More bugs

  • There are two different functions to send damage, and I have seen three distinct error messages in a few cases (?!?!?!)
    • zonemgr.cpp:614, broadcastDamage AS WELL AS zonemgr.cpp:538, addPosition CALLS zonemgr.cpp:688, addDamage
    • netserver_devices.cpp:136, sendDamages CALLED FROM Unit::ApplyLocalDamage

Other synchronization bugs

  • Saving games: WriteSavedGame() being used to send ADDCLIENT messages to other players, but original saved game used for player himself.

Some other bug I wrote down, probably doesn't belong here:

  • Gas Giant ice rings appear in front of the planet - z buffer.

General list

  • Clean up server-client-authserver communication
    • I would really like if the messages sent and received could be done in a more uniform way.
    • Clean up some unused messages.
  • Login:
    • Encrypted authentication, possibly using a random server token.
      • This means that login data cannot be the first packet sent -- it must first negotiate a key.
    • Would SSL be a good idea here. I think we currently link with a Crypto++ library... but I'm not sure how it is currently used or how to use it.
    • Make sure authserver-server-client time synchronization works correctly. Maybe every few minutes (or even hours) A,S,C should sync in case a clock gets off somehow.
  • Damage:
    • Theoretically implented, but I have yet to see collisions and weapons actually do damage client-side.
      • The problem is: Clients are responsible for position, so they often bounce before the server has a chance to give damage. Other times you die because the client doesn't respond fast enough! Patrick 20:04, 24 February 2007 (PST)
    • Not sure what CMD_SCAN is to be used for... it's used in one place -- that is in NetClient::scanRequest.
    • I don't know yet how a MMORPG would implement dying...
      • It would be bad to have to start from scratch every time you crash into something.
      • Have the respawn key re-join?
      • Right now you save only if you disconnect without dying. I guess that works.
      • How do we implement saving? Respawn doesn't work without a way to save... or should you keep everything the same as when you died, and then start from a random "spawn point".
        • I believe most FPS games make you lose all upgrades, but this is not an option in Vega Strike, or things will get boring quickly.
        • How do games like Ultima or WoW behave when you die? Do you lose everything (obviously you can't lose all your experience)?
          • Diablo II: A dead body is left at the place where you died. With it are all your equipment, upgrades and the gold (credits) you carried. Your team members can recover all that for you or you can hurry there yourself. Some of the gold is alsways lost however. In more difficult settings (hell and nightmare) also some of your experience is lost. (Zeog 01:24, 4 July 2006 (PDT))
          • WoW: Your equipment takes some damage. With high-end gear, this costs enough that death is worth avoiding. (top-level characters don't have to worry about the XP loss). There's also the time it takes to run your ghost to your corpse. If you just log off without recovering your corpse, I think your gear takes more damage. In Vega Strike, you could lose some of your cargo, and take some damage to your upgrades.
          • I think that something more realistic will do, a ship has an eject option, we could say that auto eject works when the ship blows up, since credit should be theoraticlly in a bank account it doesnt get stolen, but all equipment is lost, about stronger richer players having lots of cash and a serious ship would need to avoid death or else they would have to buy a ship that is a lot worse, and people that cannot afford a ship could join a faction doing missions for it as a pilot and buying a ship when they get enough cash.