Because I needed it, I created a spring-dedicated-client which is basically a spring network client and demo dumper
this client is completely simless, all it does is recording the replay.
http://github.com/BrainDamage/spring/tr ... ted-client
The informations stored in the replay will be sufficient to watch the game again, altho it is not data complete, certain informations in normal replays are being filled by simulation and the generated replay will lack it; I do plan to add an infrastructure to allow them to be requested to a random client over network.
Couple things I'd need help with:
Atm I answer NETMSG_NEWFRAME with hashcode 0, but spring is still ignoring it and claiming the client did not send the sync response, what am I doing wrong?
Even when such thing is fixed, it's obvious that such hashcode would be wrong, so it would need some mechanism to avoid the server/clients to spit error messages about it, after some discussion with Tobi we came up with 2 solutions: add a special hashcode that will be ignored ( which would lead to a chance of misdetection of desync for normal clients equal to 1/( 2^(32) -1) ) or add a message to inform the other peers to bypass the syc check; with first system preferred, any other ideas/toughts?
For the messages that are missing compared to normal replay, some of them are still sent over the net but loopbacked to the client; me & Tobi were thinking of introducing to allow the client to register for the messages to be forwarded/skipped so all the clients who wouldn't need them wouldn't receive them, the source client will be picked randomly, thoughts/ideas?
I will also introduce new messages to allow team stats to be serialized, compressed and set over the new, but since the bulk is high, not all clients will transmit, but one in particular ( at random ) will be requested, thoughts?
Dedicated Client
Moderator: Moderators
Re: Dedicated Client
I have been annoyed by these spectator related errors flooding the console (sync error, no sync response). Maybe spectator errors should only be sent to the affected client? This might solve your problem.