Learning Netcode

Started by
9 comments, last by herocrab 4 years, 8 months ago

Howdy folks,

My name is Jeremy, I was browsing around gamedev.net and saw this forum. I've been working on learning Netcode for a year now and am working on my second iteration of netcode (using Lidgren underneath). The first version worked well enough (you can see some of the videos on YouTube under Buckwild Games Colorado - Projekt Hunter). In the first version I implemented authoritative server functionality, client side prediction, client sync rewind & playback, remote player interpolation and a whole bunch of client side rendering tuning (graceful rotational sync, etc).

I'm currently building a demo game to test my second version of netcode which has updates over the first version. I think the biggest update is that it is portable and also that previously I was doing resync/interpolation only on buffered server updates, this new version will include resync/interpolation per game tick re-inflated from the bundled server update similar to valve/CS-Go). I've also added server controlled entities (AI streaming) and render spawning.

Once I get the second demo game up I'll publish a website and link it back here. I'd love for developers/people with industry netcode experience to help/review my code and make recommendations.

My goal is to develop libraries that can be used with various engines for specific game types. I have dreams of even supporting client side hit validation/trusting like Counter strike.

Please shoot me a message if you have netcode experience and would like to contribute to the learning process.

-Jeremy/Jarmo

Advertisement

Sounds like fun ? Feel free to keep us updated on your progress!

enum Bool { True, False, FileNotFound };
On 12/17/2018 at 5:48 PM, hplus0603 said:

Sounds like fun ? Feel free to keep us updated on your progress!

Thanks! Did I read on another post that you were working on an implementation too? Do you use Discord? I don't use it much for voice chat but for messaging and have been adding other developers I meet.

I've built and worked on a number of gaming platforms over the years (hence why I take care of this sub-forum ?)

I prefer to discuss on the forum, though, because then the questions and answers are available to anyone with a simple Google search.

enum Bool { True, False, FileNotFound };
18 hours ago, DevJarmo said:

Do you use Discord? I don't use it much for voice chat but for messaging and have been adding other developers I meet.

This site has a discord server if you want to visit any time :)

https://www.gamedev.net/community/chat

Just to update this thread, I am still making great progress and plan to have a release by April.

Hello folks,

Below is a video demonstrating the second version of netcode I’ve written in C# which I’m dubbing “resync.” I plan to complete another 1-2 cycles on this version and release the source… targeting April/May. The demo game was built in Xenko 3.0. Also…, at that time I will launch a website to continue the further development of these libraries and general commoditizing of network code for indies and small teams… I want to write a lockstep version as well.

This version is relatively simple, it was built with the objective of satisfying the core “pillars” of networking code… things like:

a) Authoritative Server
b) Instance Hosting
c) Client Side Prediction
d) Client Side Rendering
e) Server Reconciliation
etc…

I built in hooks for Lag Compensation and Replays as well.

This is an early version, there are still many thing to optimize.

PS. My website isn't live yet.

Cheers,

Jarmo

Updated video here, pulled the other one down.

https://youtu.be/O-GuXHHUtlU

Nice visualization!

I assume the double sound effects are because the client and server render on the same host, and thus measure the lag?

enum Bool { True, False, FileNotFound };

Yes, the double sound effects are from the client & server running on the same host.

This topic is closed to new replies.

Advertisement