At which level of instruction abstraction would you deem it to be someone's creation?
You could argue anything high level is not someone's creation (e.g, the use of other people's libraries, compiler, machine language etc.)
You are not just going up an abstraction. Whether you are using Python, C, Assembly, you are still engineering because you are writing the specific instructions that make the software work. In this case, you are more like a manager than an engineer that is managing something to engineer for you.
Calling scipy.spatial.Delaunay feels about the same level of abstraction as telling an LLM "write me a routine to calculate Delauny triangulation", except the LLM can do it in any language, and I can trivially tweak the algorithm if I need to. If anything, using LLMs to generate code feels like going down a level, because I can now be bothered implementing things from scratch where previously I would simply have used a library.
You can't convince me that shepherding an LLM to re-implement a library function involves less "engineering" than just... calling the function.
I consider it at the point I didn't build it with my hands. If I'm placing the girders, I built the building. If I'm instructing someone to place the girders, I didn't. In that case, the best I can get is "we" built the building.
Thank you. I agree, Box3D is great! Maybe Erin will even add rollback determinism at some point. That would be a huge step forward for network physics rollback!
Hey Glenn, what do you mean by 'rollback determinism'? Is there some particular thing missing from Box3D now that makes it difficult to synchronize with solely the inputs?
My reading of Box3D's docs is that it has 'cross platform determinism', and 'recording/replay'? Isn't that sufficient?
Synchronize inputs, determine if inputs were 'mispredicted', if so, rollback the physics world, apply the changed inputs and resimulate?
Just for context: I implemented state-sync netcode into box2d in 2018 and shipped multiple real games using it - and I work on netcode professionally.
I'm planning on adding full netcode support for box3d and releasing it as part of a larger framework.
Physics engines like Box3D have a significant amount of internal state and caching, like contact caching, and other things to speed things up.
I've talked to Erin a lot about stuff like: "Hey, what if I want to do an FPS or a vehicle, but I want to roll back only the character or vehicle, like in an FPS?"
From these discussions (and many other inputs I'm sure) Erin has had a big think about determinism, and come up with his own determinism and replay stuff.
In the article he uses the term "rollback determinism" to mean you'd be able to synchronize (or at least invalidate) any of this caching so that it doesn't affect the way the simulation replays if you were to rollback the simulation fully and then change the state only for a few objects.
For example, if you were to rewind and replay a physics simulation just for say the player predicted object like a vehicle and any objects that it happens to touch, expanding these objects out recursively as they touch other things.
Or if you were to do rollback on the player controller like we normally do in FPS, and the player started predicting a physically simulated door they push into, and then any other object the door pushes and so on, this sort of thing.
This should not affect you if you only step the physics simulation ahead with inputs, and do the GGPO thing where you copy fork, and step that sim ahead with predicted inputs, throw away, copy fork and predict again... that's already deterministic today.
Thank you for your time. I respect you deeply and have valued your work.
For box2d, in the past I added a function to delete the entire contact cache and then I experimented with either calling that every single frame on both client and server, or only during a rollback.
In one game, I did the former and in most others, I did that latter.
In those box2d games, the entire world was predicted/resimulated, including remote players. A smart smoothing technique was used on remote players to dampen network artifacts. It worked well, even sniper rifles worked well. (The player movement had a certain flavor)
I am currently building something custom on top of Jolt, but will experiment with box3d.
The smart detection of what needs to be resimulated is something I'm just about to start on.
My mind is turning on how partial resimulation could be done on top of box3d's 'keyframe' recording system....
OK I chatted with Erin, he says Box3D doesn't have the ability to clone a world yet, but he does plan to add it. So maybe reach out to him. I think you'll need the clone a world functionality to do the rollback properly GGPO style.
Awesome, thanks for engaging with me and talking to Erin about it.
I hacked together world cloning in box 2d and am confident I could do it in box 3d as well. Especially with the record/replay/validate system to help guide the implementation.
I'll find a way to send you and Erin my project when I get it working (or when I fail)
I recall in some interview that Rockstar never wants to show footage of the development process or have any "behind the scenes". Even video interviews at their office is rare (I know of only one). Their reason for it is that it would ruin the "magic" when you play the game.
Especially back in the day, you'd pop in the DVD in the PS2, and you'd get to see Liberty/Vice city or San Andreas quickly (— no install required).
You rarely see an interview of a producer/developer as well.
Honestly, for their current "modern" games, it is understandable. But almost 20 year old games? Come on.
What a weird position for them to take. I've A) never felt BTS stuff ruined "the magic" of a game, and B) found Rockstar's games all that "magical" (well, other than RDR). I mean, prior to GTA4, their games were a clunky mess.
GTA IV's tech was quite ahead of its time (2008), with the integration of Euphoria (which had to be integrated in-house by NaturalMotion engineers inside Rockstar's studio @ Edinburgh).
The other comment correctly pointed out that NaturalMotion was acquired by Zynga, who in turn got acquired by Take-Two (parent of Rockstar Games).. So who knows, perhaps we'll still see an updated version in the sixth major instalment of the franchise.
Euphoria was used for a subset of animations, for the most part traditional mocapped animations (and a lot of them) were used to drive character movements. I don’t know if motion matching was used on GTA4 but it was on other Rockstar games at the time and subsequently.
Characters blended to the hand written, custom, euphoria behaviors in certain situations… it handled falls, stumbles, deaths, etc. Generally it replaced ragdoll physics but wasn’t used during most character movement behaviors.