Client side prediction
I’ve spent about a week working on the client side prediction implementation. It’s very rough but it’s much, much better than the slideshow it appeared to be before. There’s a lot for me to learn as not everything works quite how I’d expect. Server-side monitoring needs to be improved and I think it’s almost time to work on a UI to make that process easier. Right now I don’t want to do any involved CURSES work, but it would appear to be required.
I’m also unsure if I should switch over to fixing the remaining issues that aren’t necessarily impeding progress but would be great to have. Clients actually being disconnected rather than marking them as gone on the server, for example.
The Cisco Catalyst 3500XL died about a month or so ago and I’ve been putting up with a 3Com SuperStacker which is 10Mbps. Luckily they’re not so expensive. This has been an annoyance when it comes to transferring these videos over. I did get a nice Sun Netra T1 AC200 last week that’s doing way better as a gateway than the Dell laptop I was using. Now I need to transfer SSH over to it to avoid using rlogin, which has been making me very nervous.
Anyway, here are some neat videos showing off the progress. No deadzone has been set for the input so you’ll see quite a bit of pointless, unintentional spinning:
First stab at smoothing out the motion, it’s still pretty rough.
This was after getting the first pass of the interpolation running. There were some synchronisation issues that occurred over time.
Where I’m at currently. The neat thing has been using the controller on the remote Dreamcast while looking at the output of the local one to see how well they match up.
It’s a coin toss at the moment for what’s next. The server-side code has become very ugly and not as easy to navigate as I’d like. A more structured output to see what’s going on would be great as I’m relying on stdout for all the message information. Ideally, I’d like to log each entity to a separate file and probe it at a later date. The linear speed is determined by a hard-coded value on both the client and server. It would be great to move that into a data file that either both have access to or the server reads and relays to the clients. There’s also the case of splitting out the server code into a master server list and game server. This would mean also building a UI for the client to browse servers.
I also really need to work on a roadmap. This is great fun for me, but I need to have a more solid path to the end. Many avenues are available for progression. Last year I was looking to get a basic game of tag running, which would be much more possible now. The editor is atrocious. No network compression has been implemented and I’m already nearing the limit of the modem. Exporting from Maya is flaky at best. The server has no real resiliency built in. I haven’t even started on the audio side and there’s no interface to the memory unit.
There’s a lot to finish and a lot to start.