Hi all!  It's taken a long time, but it's finally gone public.  This is the official (beta) release of:

SRB2CS - SRB2 with client-side networking [v1.10.6]

Features:

*) SRB2 with no control lag!  This is the first time SRB2 has seen client-side netcode; and as such, it plays a bit differently than you might expect.  Control lag and spike lag have been replaced by the occasional ring miss and jumpy players, as ping/latency is still prevalent.  Instead of being struck by lag, others will appear to be struck by it.  Good for them! 
*) True-blue client-to-client networking! 
*) Match (including Team Match), CTF, and partial race support.  The rest of the gametypes are not yet available, and have been deactivated for the time being.  Sorry! 

Due to the ambitious nature of this mod (as well as its beta status), there are still some issues with the game's features and their synchronization.  I plan to patch many of these up as soon as possible; but in the meantime, take note of the following:

*) Weapon rings are not yet dropped - this is to save bandwidth and will hopefully be fixed in the future. 
*) Emeralds and randomizing monitors (MixUp, Recycler, Random, etc.)  are not yet properly synchronised.  So if an emerald disappears right in front of you, just be nice and forgive the guy who picked it up on the opposite end of the map! 
*) ADDFILE support is currently very limited.  In order to play on a custom level, the host must add it using srb2net (or the -file parameter) before starting up SRB2.  WAD downloads from the server are not yet supported. 
*) The maximum amount of players this can (so far) support in a netgame is twelve, due to the nature of the network packets.  We hope to expand this to a larger value in the future. 
*) There is often a delay when you hit someone with a ring.  As such, rings are not guaranteed to hit players when you see things that way (see: RINGSTATS command).  This is the nature of client-side game synchronisation.  However, rail rings are very likely to hit when they should; so when in doubt, rails out! 
*) There is currently an invisible player limit of 12.  Maxplayers can still be adjusted; but be advised that no more than 12 players will be able to join your server at any time - even if maxplayers is above 12. 
*) OpenGL has been disabled for now - sorry! 

The mod features quite a few commands and console variables specific to the new netcode.  Some of them are particularly important:

cshost (BETA 1): Starts up CS mode and hosts.  This command *must* be input whenever you start a new server.  NOTE: BOTH PORT 5029 and 5030 ARE USED FOR CS GAMEPLAY, AND MUST BE OPEN/FORWARDED IN ORDER TO HOST.  Do be sure to open this port if you can, even if you aren't hosting (see clienttoclient).  As of Beta 2, cshost is no longer required, and port 5030 no longer needs opening. 
- csconnect: Connects to a server in CS mode.  This is used to manually connect to servers in CS mode.  Use this if you don't want to join an SRB2CS netgame using the master server (which, keep in mind, works completely fine). 

The rest of the commands are useful in specific situations, but you shouldn't have to worry about them too much in your average netgame.  Changing these may have adverse effects on how the game works, so proceed with caution:

- csdelay: This delays players slightly, increasing their ping.  A relatively high delay may make other players seem less jumpy; however, a lower delay will make for more accurate ring hits and is generally recommended.  Range of values is 0-2 (delay is done in tics).  As of beta 2, a new value - "Automatic" or "-1" - is the default, and it is recommended that it be left that way. 
- clienttoclient: This feature - enabled by default - allows clients to connect directly to each other, as opposed to connecting via the host.  This allows for a lower ping and also puts less stress on the host; however, network traffic on your end will increase (not very significantly).  This feature can be disabled or enabled by you as a client.  Players can only be linked if one of them has their ports correctly forwarded - which is highly recommended. 
- ringmove: In CS mode, adjustments have to be made to compensate for ping.  The type of adjustments made, however, can sometimes be chosen.  There are two options to this - "fast" and "jumpy". " Fast" ringmove will cause opponents' rings to move slightly faster under certain conditions. " Jumpy" ringmove, on the other hand, will cause rings to jump ahead of opponents as they are thrown (under the right conditions).  Jumpy ringmove is generally more accurate, but fast ringmove is recommended for easier usability. 
- ringstats: This command shows a report of how well the netcode has performed in synchronising your hits.  It gives you a percentage of successful ring hits against all players you've hit so far, and also lets you know how many were unsuccessful. 
- playerlinks: If you are the host, this command will show who is linked to whom.  If you are a client, this shows your links with other clients - like ping. 

Adjustments to some of SRB2's official commands have been made, too:

- nodes: Shows the IDs and names of all players connected, as well as their IP address.  Due to clienttoclient, all clients can see IP addresses. 
- ping: As always, ping exists, and it is shown with this command (as well as player links).  However, it is worth noting that ping may appear to be different to each player.  If you want good points, it is recommended that you fight the players with the lower ping- unless they're the server champions, of course.  =P

I'd like to thank the many friendly players and netgamers who had helped me test this mod during its development. ( If you're out there, make yourself known!)  Also of particular mention is Spazzo, who helped lead the direction of this mod, introduced me to the world of SVN, and motivated me to give this mod a public release.  Along the way, he added a pretty interesting program that logs SRB2 battles.  I've included this as a little add-on - check SRB2Stats.zip if you're interested! 

Feel free to contact either myself or Spazzo on IRC if you have any questions/bug reports/feature suggestions.  We'd love to hear from you! 

Latest updates (Beta 5):
[This is another small bugfix update- but it's bigger than it looks.] 
- The setlives command has been disabled. ( Thanks Kitoko and Hinote!) 
- Fixed an issue where the wrong gametype would show up on the rankings. ( Thanks Hinote!) 
- Fixed an issue where disabling clienttoclient would break synchronisation. 
- Made many further updates to Race mode so as to include support for single-player maps, and to properly order the winning players. 

Past updates:

BETA 4:
- Beta 3 had a serious bug involving ring drops and scoring - this has now been fixed. 
- A minor sound effect fix was made. 
- On a similar note, sound effects can now be heard while spectating someone else. 
- Some internal updates were made to make the game run more efficiently online. 
- Work on Race mode has begun, but is in its very early stages.  You may now try it out if you like, but there are some de-synchronising bugs I'm aware of that have yet to be fixed.  Be advised also that players who appear to be crossing the finish line first may not necessarily be in first place, due to ping issues. 

BETA 3:
[No real updates were made other than a few small bugfixes.  Sorry!] 
- Attempted to fix a few crash bugs that have been showing up lately.  Hopefully they're gone now, and hopefully no more have been created! 
- Fixed team-nuke issue. 
- Hopefully fixed an issue where lagging players release 'ring lasers'.  Ring lasers are not an official part of SRB2's gameplay and have as such been disabled. 

BETA 2:
- SRB2CS's netcode now uses SRB2's standard interface.  This means that port 5030 no longer needs forwarding, and that MS support should now be more stable.  However, glitches are likely to arise, so let me know if odd things start to happen.  This change is completely reversible, so don't panic if things stop working! 
- cshost no longer needs to be called when you start up the server. 
- The "GOT FLAG!"  in Match bug has been fixed. ( Thanks Sky, Kitoko and Hinote!) 
- Autoaim will appear to work, but it is not yet synced; so please disable it before you play! 
- csdelay has been updated to account for network instability.  A new value, "Automatic", is now the default, and ping will hopefully be generally lower than it was in the past. 
- The ping command now shows player links, and also displays average ping "jumpiness". 

Kitoko: I couldn't find anything wrong with setrings, but setlives was definitely out, so I've fixed that.  Thanks for the report. ( Turns out I had disabled 'setlines' instead of 'setlives'.  Darn typos!) 

Hinote: I actually forgot to mention that Circuit Race was the only mode I had started on (it shouldn't be too hard to get single-player races working, however).  The errorlog will be most helpful in tracking down the crash - thanks for that! 

The Team Match issue is something that came along with Alam's build of SRB2.  I'll try and fix that soon.  The WAD error is a bit silly, but I think it's happening because the names of the WADs are too long.  The limit I've applied for now is 20 characters, I think, so it might be a while until those start working. 

Katmint: Thanks for making one of the first videos of SRB2CS!  =P

Do you think you could also send the error reported in your errorlog, please?  It'll help me solve the sigsegv that you came across - if it isn't the same one as Hinote's. 

Everyone: Expect the next release to be another bugfix release - apparently there are a lot of them to deal with!  I am looking forward to polishing up the gameplay - particularly in Match/CTF - but bugs are top-priority at the moment. 

Also - if you want - follow in Katmint's footsteps!  I would just love to compare two people's videos from the same netgame, and see how things differ between their points-of-view.  As you probably already know, some really wacky things can happen in this mod! 

The Team Match issue is something that came along with Alam's build of SRB2.  I'll try and fix that soon.  The WAD error is a bit silly, but I think it's happening because the names of the WADs are too long.  The limit I've applied for now is 20 characters, I think, so it might be a while until those start working. 

What do you mean by "Alam's build of SRB2?" 

__________________
"remember, hacking SRB2 is a good thing, cracking it's save games is not" - Alam and Logan Arias

I called it that, hoping it would make sense; but I don't think it did.  =P

Actually, I'm not very sure what I mean - I wasn't the one who performed the merge.  From what I can see (I'm new to SVNs and the like), the source code from the ALAM branch was used as a replacement base for SRB2CS.  The bugfixes I made might have simply been due to an errors in the merge; I'm afraid I can't really tell.  =/

Quote:

Originally Posted by Vash

When I first saw the username "LXShadow", I thought my eyes were deceiving me. 

Boy, was I wrong!  Great to see that you're doing amazing things other than hacking Spyro games! 

Vash, you're alive!  I haven't seen you around in ages.  I'm glad you're liking this - as well as my hacking, which I didn't even notice you were watching.  =P

I can't believe how many old friends and competitors have seemingly been resurrected since the release of this mod.  What can I say?  It's great to see you all! 

So am I doing something wrong or is there just nobody hosting in CS?  I used beta 4 like the instructions say so until beta 5 is done but when I look for a server to join or host there are no active players.  Am I doing anything wrong or are people just not hosting? 

If I ever do find out what the problem is I hope we can have a match again LX.  Just for good times. 

So am I doing something wrong or is there just nobody hosting in CS?  I used beta 4 like the instructions say so until beta 5 is done but when I look for a server to join or host there are no active players.  Am I doing anything wrong or are people just not hosting? 

Usually I host CS from time to time, so I don't know for sure. 
You could always check the Master Server and look for someone hosting version 1.10.6. 

Probably people aren't hosting CS at the time and you're doing nothing wrong. 

Oh, and I found CS does something funny in NiGHTS mode. 

Spoiler: Flying animals doing idle frames. 

Call me weird, but I just seem to giggle at it. 

Oh, and you're welcome LXShadow!  If I happen to find anymore bugs I'll be happy to report them. 

sigh, if you going to use the Subverison repos for bugfixes, why not also get an account and branch to store your code? 

Sent from my HTC Vision using ********

Using the SVN was never my choice; I'm just following along with the few other people who are/were involved in this project.  As long as I include the source code with the EXE, should this matter? 

Quote:

Originally Posted by Hinote

Oh, and I found CS does something funny in NiGHTS mode. 

Spoiler: Flying animals doing idle frames. 

Whoops - NiGHTS mode is something I haven't touched upon yet.  I'll keep that in mind when I next update.  We don't need bored levitating hedgehogs in the middle of a race. 

Also, it's looking like Beta 5 might be working with the Master Server now (I just tried hosting Beta 4 and it did not show up, whereas Beta 5 did).  If that's the case, then it'll be best to upgrade now.  The old beta is still around, just in case.  Thanks everyone for your patience in this slightly awkward moment! 

You know, I think Race would be very easily done with this.  The players race as normal, then send the host their lap times, and then they would be compared.  The host wouldn't decide the player's laptimes, the players would.  =3

You must still be using beta 4.  Since beta 5 works now people are using that.  I just found a server there today. 

I like how there is less to no clag in the games now.  I do find it annoying when you hit someone directly with a ring and they run past you unaffected, but thats how you know those people would have had clag in the original SRB2.  I don't think that can be helped though because of course someone is going to lag in a netgame. 

Sorry about the lack of updates, everyone.  I've been a bit unsure as to how I could push this mod further.  I also haven't seen many servers up, which is bad news for a multiplayer-exclusive mod (and means I couldn't really test any new experimental features to combat ping). 

Cue: The issue is that the MS admins need to update the MODVERSION at times.  I don't think the source code will help with that, but thanks for the link - it might be helpful in the future. 

Ezer. Arch: The message was supposed tell you which version the server was using (and that your version was incompatible).  Apparently I should have broke that message up into more lines - sorry about that! 

J-town: Having the server register the times won't be difficult (and is already done in Beta 5); it's just making sure that the players get an accurate picture of who's-in-which-place.  That is near impossible to do. 

The future of this mod is really uncertain at the moment- I think it's reached a point where people prefer to use the old, more reliable (technically speaking =/) netcode rather than this somewhat awkward one.  I haven't updated this mod since Beta 5, but we'll see. 

The issue is that the MS admins need to update the MODVERSION at times. 

MODVERSION only pops up a message if the MS's listed version is greater than the client's.  It does absolutely nothing if they're the same or the client's is greater than the MS's.  If it DID break when it wasn't an exact match, I wouldn't have been able to text XMOD X-010 on people in IRC. 

If your code is relying on an exact MODVERSION match, something's wrong and you should fix it. 

It's hard to tell, because during one update it seemed as though the latest version wasn't working with the MS (since the MS's version had not been updated).  Maybe this wasn't really the case- I don't know.  I haven't touched that area of the MS code, so it should work as any other mod would.