top | item 32876158

(no title)

piinecone | 3 years ago

I love reading these kinds of posts. Whenever I’m reminded that I’m not alone, I get a little bit more self-compassion and that makes me more excited to release my game and helps me appreciate all the progress and hard work to date.

I’ve been working on King of Kalimpong [0] on and off since playtesting a one-week prototype of it in 2014. I had no idea how much work a networked physics vehicle/movement shooter game would be. (I should have, I was 8 years into a programming career).

Working part-time was critical (for many reasons), but so was learning that progress is a product of discipline, not motivation, and that I needed to learn “infinite endurance” (I think that’s what Chris Hecker called it).

Once I adopted the perspective that I was some finite number of 3-4 hour blocks of concentration away from turning a goofy idea into a game that anyone could play, finishing became something that felt inevitable — as long as I kept going.

I’ll take the time to write about my experience after I release (which is now months instead of years away) in case any other game developers get anything out of it. Until then, thanks for another reminder that I’m not alone!

[0] https://store.steampowered.com/app/1989110/King_of_Kalimpong...

discuss

order

hombre_fatal|3 years ago

That looks really polished/professional. Nice work.

Tarsul|3 years ago

Damn. That gameplay looks tight. Keep up the good work!

intelVISA|3 years ago

Looks great, reminds me a lil of Vigilante 8.

bullen|3 years ago

What engine are you using. Did you go for tick based and/or deterministic physics?

piinecone|3 years ago

I'm using a fork of Unreal Engine 4.20, and I'm using the substepped physics that UE ships with. I have a fixed timestep PR simmering for if and when it's time to implement a proper rewind/replay system for all vehicle movement.

I attempted the standard prediction/correction implementation used for deterministic movement systems and got it working for the deterministic aspects of the vehicle's movement system, but naturally couldn't make it work for the core, non-deterministic physics, as that will require fixing the timestep and probably doing other things I haven't thought about / don't understand yet.

For now, the system works like this:

- basic client vehicle movement is non-deterministic physx + deterministic overrides

- special moves are deterministic but client-predicted

- weapons systems are deterministic but client-predicted

- server-side anticheat model is derived from me moving around and generating believable movement curves so the server can check that any given client move it receives is appropriate given its history / state of the world

- server also (supposedly!) handles noclip and flying cheats (this was a fun month)

- clients predict hits, server authorizes them

- simulated proxies (other clients in your world) mostly move according to projective velocity blending[0], though there are special cases for some of the special moves (spins)

- collisions are blended between the replicated state of the world and the client's local simulation [1]

- probably most importantly, the server creates replay files during matches which the game coordinator/serving system scoops up and saves, so I can (at some point) generate useful statistics and review matches to detect and improve cheat handling

I would have loved to do the networked physics really right, like Rocket League did, but I couldn't quite pull it off (I'm one guy with kids and a job and just not enough brainpower!), so I opted for what I hope is "good enough" for a small project like this: give the client a great experience, put all vehicles and projectiles in mostly the same position at the same time in all worlds (since they're momentum-based entities latency-based predictions are usually quite accurate), run an anticheat model on the server, and save replays to find and review anomalies.

If the game does okay and people are enjoying it I will get that fixed timestep/rewind replay PR done.

I hope that was a good answer! Let me know if I can tell you anything else. Something I didn't mention here is the networked projectile movement, which was the most fun to work on. I plan to write about that, too, at some point.

[0]: https://www-inf.telecom-sudparis.eu/COURS/MultiplayerCourse/...

[1]: https://www.youtube.com/watch?v=LPRK5J5-3QQ&list=PLpE81hvqYF...

vicarrion|3 years ago

Keep going and you'll get there! Your game looks great!

prox|3 years ago

That is looking really fun for a casual game with friends!