Jump to content
SubSpace Forum Network

Recommended Posts

Posted

Just finished the main security update for Discretion. The peer-based checking is done. Clients will periodically check each other to see if they're cheating. The last piece of the puzzle that's yet to be done is server-side checks to make sure the "audit stream" sent by clients matches packets the server has gotten/sent. In particular, what's left to be done is:

 

// Ship Changes are Server-initiated
// death packets are always received when client says he died
// Claimed Position Packets Match Received/Sent Position Packets
// C2S Packetloss is acceptable (based on missing position packets)
// Set Weapons % packets dropped (based on missing weapons packets, if applicable)
// Stale Packets are ignored / don't exist
// All Timer Sync Messages are Server initiated (and ping received with reasonable period of request)
// C2S Ping is Acceptable (based on times of position packets received)
// player entering / leaving / changing freq / changing ship / death / actually occurred and at correct time
// auditable state at beginning / end of sequences is the same

 

If you can come up with a way to cheat that's not included in the above list of to-do server checks, and not already taken care of by the peer-based checks, I'd like to know about it. Also if you can crash the client or server please let me know too. The code is quite complicated so I wouldn't be surprised if I missed a bug or two.

 

In either case, your Discretion client should auto-update to the latest version. I have the newest version of the server up, although we're waiting for the audit stream port to be unblocked before you can play in the game online. Practice offline should work, and you may even get a target to aim for :tongue:

 

Also, some miscellaneous bug fixes particularly with the drawing of the explosion graphics. Let me know of any other bugs you guys can find. Enjoy!

Posted

Right now there is no stealth or cloak implemented, so no.

 

For stealth I'll probably not send position update until the player is within a reasonable range (~2000 pixels), so it will turn into a long-range radar disabler (until the stealthed player is on the screen). Will need to think more about weapons while stealthed, although it may be reasonable for players to lose stealth temporarily if they fire weapons while maintaining the spirit of the item.

 

For cloak just don't forward any position packets (like cloak+stealth). Cloak without stealth wouldn't work, unfortunately. Perhaps there could be a radar update packet that provides a fuzzy location for a cloaked player without stealth.

Posted (edited)

That's actually a good idea.. Stealth would be like Perfect and Cloak with fuzzy.

 

Could not log in...

ERROR: Vector Game Setting undefined spec::BounceFactorY and Default Ship Settin
gs::BounceFactorY in function getVectorGameSetting, on line 61 in file ..\GameSe
ttings.cpp
ERROR: Int Game Setting undefined spec::Radius and Default Ship Settings::Radius
in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp
Checking module update file crc32 from 'ss-discretion.sourceforge.net/update/dis
c_update.txt.crc32'
ss-discretion.sourceforge.net/update/disc_update.txt.crc32: . got 8 bytes in 0.0
44 seconds (0.02 KB/sec)
Read crc32 from server 'f9174495'
crc32 matches, Discretion is up to date!
SUCCESS: CHECK FOR UPDATES SUCCEEDED!
Net.cpp line 532, drivel: ignoring 6 packet types
ERROR: Vector Game Setting undefined spec::BounceFactorX and Default Ship Settin
gs::BounceFactorX in function getVectorGameSetting, on line 61 in file ..\GameSe
ttings.cpp
ERROR: Vector Game Setting undefined spec::BounceFactorY and Default Ship Settin
gs::BounceFactorY in function getVectorGameSetting, on line 61 in file ..\GameSe
ttings.cpp
ERROR: Int Game Setting undefined spec::Radius and Default Ship Settings::Radius
in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp

 

 

Seems you forgot to disable the settings for spec of bouncefactor / radius.. woopsies :tongue:

Edited by jabjabjab
Posted

Could not log in

...

Seems you forgot to disable the settings for spec of bouncefactor / radius

 

Hmm that's very odd. I can't seem to reproduce it with my version. Anyone else have this problem?

 

Also: port is unblocked on the server now, you should be able to play online.

Posted
still got same error, and also got a disconnected from server due to packet flooding? and a freeze of black for a second on next attempt, followed by a spam of log-in attempts followed by the close to main menu i had this morning...
Posted
I did notice the repeated login attempts on my screen which I blamed on my virus scanner being slow to scan everything causing 10 attempts in a row therefore a disconnect. The settings error is odd though. Could you copy your discretion folder, delete conf/front_end/profiles.conf, zip it up, and email it to me (vamperz at yahoo.com).
Posted

Sorry deleted your post for your own good. Zip up everything *but* the profiles.conf file, since it contains things like passwords you likely don't want to share with everyone.

 

On a side note, why can't I remove attachments from people's posts? When I went to edit post it said action failed when I tried to delete the attachment.

Posted (edited)

dont click on 'zones' it removes everything.

 

 

also: tried to get into single player mode and this is what happened...

Net.cpp line 532, drivel: ignoring 6 packet types
ERROR: Invalid int setting Security::MaxMainLoopIterationMilliseconds, defaultin
g to 100 in function getServerSettingAsInt2, on line 756 in file ..\SettingsHand
ler.cpp
ERROR: Invalid int setting Net::Spec Position Send Delay, defaulting to 1000 in
function getServerSettingAsInt2, on line 756 in file ..\SettingsHandler.cpp
ERROR: Invalid int setting Security::ViolationSpecMilliseconds, defaulting to 65
000 in function getServerSettingAsInt2, on line 756 in file ..\SettingsHandler.c
pp
ERROR: Invalid int setting Security::MaxMainLoopIterationMilliseconds, defaultin
g to 50 in function getServerSettingAsInt2, on line 756 in file ..\SettingsHandl
er.cpp
ERROR: Invalid int setting Net::SendPositionDelay, defaulting to 100 in function
getServerSettingAsInt2, on line 756 in file ..\SettingsHandler.cpp
ERROR: Invalid int setting Security::Max Milliseconds Per Audit, defaulting to 5
000 in function getServerSettingAsInt2, on line 756 in file ..\SettingsHandler.c
pp
ERROR: Invalid int setting Net::SendPositionDelay, defaulting to 100 in function
getServerSettingAsInt2, on line 756 in file ..\SettingsHandler.cpp
ERROR: Int Game Setting undefined spec::antiwarpStartsOn and Default Ship Settin
gs::antiwarpStartsOn in function getIntGameSetting, on line 40 in file ..\GameSe
ttings.cpp
ERROR: Int Game Setting undefined spec::MaxBrick and Default Ship Settings::MaxB
rick in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp
ERROR: Int Game Setting undefined spec::MaxBurst and Default Ship Settings::MaxB
urst in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp
ERROR: Int Game Setting undefined spec::CloakStartsOn and Default Ship Settings:
:CloakStartsOn in function getIntGameSetting, on line 40 in file ..\GameSettings
.cpp
ERROR: Int Game Setting undefined spec::Maxdecoy and Default Ship Settings::Maxd
ecoy in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp
ERROR: Int Game Setting undefined spec::Maxportal and Default Ship Settings::Max
portal in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp
ERROR: Int Game Setting undefined spec::Maxrepel and Default Ship Settings::Maxr
epel in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp
ERROR: Int Game Setting undefined spec::Maxrocket and Default Ship Settings::Max
rocket in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp
ERROR: Int Game Setting undefined spec::stealthStartsOn and Default Ship Setting
s::stealthStartsOn in function getIntGameSetting, on line 40 in file ..\GameSett
ings.cpp
ERROR: Int Game Setting undefined spec::Maxthor and Default Ship Settings::Maxth
or in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp
ERROR: Int Game Setting undefined spec::xradarStartsOn and Default Ship Settings
::xradarStartsOn in function getIntGameSetting, on line 40 in file ..\GameSettin
gs.cpp
ERROR: Int Game Setting undefined spider::Max Energy and Default Ship Settings::
Max Energy in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp

ERROR: Int Game Setting undefined spider::antiwarpStartsOn and Default Ship Sett
ings::antiwarpStartsOn in function getIntGameSetting, on line 40 in file ..\Game
Settings.cpp
ERROR: Int Game Setting undefined spider::MaxBrick and Default Ship Settings::Ma
xBrick in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp
ERROR: Int Game Setting undefined spider::MaxBurst and Default Ship Settings::Ma
xBurst in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp
ERROR: Int Game Setting undefined spider::CloakStartsOn and Default Ship Setting
s::CloakStartsOn in function getIntGameSetting, on line 40 in file ..\GameSettin
gs.cpp
ERROR: Int Game Setting undefined spider::Maxdecoy and Default Ship Settings::Ma
xdecoy in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp
ERROR: Int Game Setting undefined spider::Maxportal and Default Ship Settings::M
axportal in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp
ERROR: Int Game Setting undefined spider::Maxrepel and Default Ship Settings::Ma
xrepel in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp
ERROR: Int Game Setting undefined spider::Maxrocket and Default Ship Settings::M
axrocket in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp
ERROR: Int Game Setting undefined spider::stealthStartsOn and Default Ship Setti
ngs::stealthStartsOn in function getIntGameSetting, on line 40 in file ..\GameSe
ttings.cpp
ERROR: Int Game Setting undefined spider::Maxthor and Default Ship Settings::Max
thor in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp
ERROR: Int Game Setting undefined spider::xradarStartsOn and Default Ship Settin
gs::xradarStartsOn in function getIntGameSetting, on line 40 in file ..\GameSett
ings.cpp
ERROR: Int Game Setting undefined spider::Max Energy and Default Ship Settings::
Max Energy in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp

ERROR: Int Game Setting undefined spider::Max Energy and Default Ship Settings::
Max Energy in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp

ERROR: Int Game Setting undefined spider::Recharge Energy Per Ten Seconds and De
fault Ship Settings::Recharge Energy Per Ten Seconds in function getIntGameSetti
ng, on line 40 in file ..\GameSettings.cpp
ERROR: Int Game Setting undefined spider::Radius and Default Ship Settings::Radi
us in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp
ERROR: Int Game Setting undefined spider::Radius and Default Ship Settings::Radi
us in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp
ERROR: Int Game Setting undefined spider::Max Energy and Default Ship Settings::
Max Energy in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp

ERROR: Int Game Setting undefined spider::Recharge Energy Per Ten Seconds and De
fault Ship Settings::Recharge Energy Per Ten Seconds in function getIntGameSetti
ng, on line 40 in file ..\GameSettings.cpp
ERROR: Main Loop Iteration Time (61) Exceeds Maximum Allowed (50) in function ch
eckThenProcess, on line 1372 in file ..\Audit.cpp
ERROR: Int Game Setting undefined spider::Max Energy and Default Ship Settings::
Max Energy in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp

ERROR: Int Game Setting undefined spider::Recharge Energy Per Ten Seconds and De
fault Ship Settings::Recharge Energy Per Ten Seconds in function getIntGameSetti
ng, on line 40 in file ..\GameSettings.cpp
ERROR: Int Game Setting undefined spider::Radius and Default Ship Settings::Radi
us in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp
ERROR: Int Game Setting undefined spider::Radius and Default Ship Settings::Radi
us in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp
ERROR: Int Game Setting undefined spider::Max Energy and Default Ship Settings::
Max Energy in function getIntGameSetting, on line 40 in file ..\GameSettings.cpp

ERROR: Int Game Setting undefined spider::Recharge Energy Per Ten Seconds and De
fault Ship Settings::Recharge Energy Per Ten Seconds in function getIntGameSetti
ng, on line 40 in file ..\GameSettings.cpp
ERROR: Main Loop Iteration Time (100) Exceeds Maximum Allowed (50) in function c
heckThenProcess, on line 1372 in file ..\Audit.cpp
ERROR: Violation Timeout > 0 (65000) in function checkThenProcess, on line 1471
in file ..\Audit.cpp
ERROR: Too long between position packets! in function checkThenProcess, on line
1482 in file ..\Audit.cpp
ERROR: Security violation of type 'sendingPositionPacket: TOO_LONG_BETWEEN_POSIT
ION_PACKETS'; disconnecting. in function selfViolation, on line 2339 in file ..\
Audit.cpp
ERROR: This is probably a bug, but if you were to continue playing other players
may think you were cheating. in function selfViolation, on line 2340 in file ..
\Audit.cpp
ERROR: Exiting because we're in an offline server in function selfViolation, on
line 2348 in file ..\Audit.cpp

 

 

seems like your security updates left alot of bugs :/

Edited by jabjabjab
Posted (edited)

Why exactly is the directory server hardcoded anyway?

 

Good point. Which directory server is working these days?

The only two left working at the moment are:

 

ssdir.playsubspace.com (mine)

sscentral.sscuservers.net (currently down)

 

Incidentally if there any changes you'd like made to the directory server to help discretion, let me know :o

Edited by doc flabby
Posted
Here's another question, why is it that if one zone has a blank description, Discretion will delete and try to re-retrieve the entire list of zones without my permission?
Posted
Happens right when I start up Discretion, even before I have a chance to click on anything. I don't think it matters if there's an update or not, but I guess you could say it occurs right after it checks for updates and before or when the frontend screen loads.
Posted

Okay, new update fixing a series of bugs that you guys reported (thanks). You'll need to download the newest version manually through sourceforge, as one of the critical bugs was with the auto update system itself. Go to https://sourceforge.net/projects/ss-discretion/ to download the newest version (0.33).

 

Here's the bug fixes:

1. Jab, your settings errors were because the single player settings were incorrect. I reorganized it so that there is now a CustomSettings.conf in zones/SinglePlayer where you should put your custom settings (it's #included at the bottom of Settings.conf), otherwise the automatic updates may overwrite any custom settings in the other files.

 

2. I updated the settings to not give up connecting so easily. Now there will be 100 connection attempts and 50 reliable retries before it gives up, so enough for virus scanners to check the files (hopefully) without disconnecting because of a timeout.

 

3. I change the zones download to use a settings-defined directory server. Also changed the setting to be a working directory server (ssdir.playsubspace.com).

 

4. Added a preliminary interface for the "Options" button from the main menu. Right now all you can do is initiate a Discretion update without having the connect to any servers. Also the site used for that update is settings-defined.

 

5. I changed/fixed the way updates to Discretion.exe work. This is why you need to download the zip again from sourceforge. Updates to Discretion.exe should automatically restart the front end now so you don't need to do it manually. The "should never get here" message should never appear.

 

6. I made it so zones with blank description generate only a warning, but it will continue to parse the zonelist.conf file. I wasn't able to reproduce the automatic zone download that Hakaru described though.

 

7. There's a new experimental zone now ("Discretion Experimental Warfare") for testing the server-side aspects that I'm running off my computer. This is because I don't want to bother freakmonger every time I have issues with Discretion Wars. His server will still be used for stable versions of the server that don't require intricate debugging (as I suspect I need to do since I made rather large additions with the disc_audit module on the server). Everyone play go into Continuum and do "?message freakmonger:Thanks for helping with Discretion by hosting the server!" please!

 

Let me know if there are any further issues.

Posted

Okay! just uploaded this weekend's update to the update site, you should be able to update through Discretion.

 

I found and fixed the settings bug ya'll were reporting! The bug was related to a fundamental design issue, namely that you can be in the arena while you are downloading, so that you might not yet have the settings. This is an issue when your client tried to make predictions about what other players are doing, since your settings are wrong your predictions will be wrong (or it will report it doesn't have the proper settings as you guys reported). In order to reproduce this you needed two people in the same arena, with the second one downloading. That case escaped my testing since I rarely re-download the files, so it didn't manifest. Also, if you're the first one in the arena there are no (wrong) predictions, so you can get in just fine, as Cerium noticed (however since I was usually afk in the arena any new players who would undoubtedly have to download got screwed).

 

I fixed it by adding a new auditable event that occurs when the server settings have finished downloading (no predictions are made before this, which may be bad, but even Continuum doesn't resend existing weapons to entering players, think of how you can players plow through mines in tw if they were dropped before they entered the arena; I think asss may try to send the state of the bricks in the arena to entering players though, wonder how it handles the timing issues).

 

 

I also fixed a pretty big memory leak. I broke my rule of creating the "delete" code whenever I used "new", and that's what caused it. I also partially implemented a ?memory command to view memory usage of participating modules. I might get all of them to use it if I feel like it, but if there's no more memory leaks I probably won't bother.

 

There are still bugs with the server, so expect it to be crashy. Please continue to report any client-side bugs you guys spot.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...