So, how come GlobalClock.getDt() works?

The title is strange, but when I think about it, getDt really does leave me pretty confused. It gives you the time that has passed since the last frame was drawn. So suppose I’ve got a number of vehicles whose position is updated, one vehicle at a time. I suppose that means, if enough processing is involved, that the dt values could be a bit different for different vehicles. Shouldn’t that skew the balance of the game? I mean, if the last vehicle regularly sees a dt value which is twice the size of that seen by the first vehicle, wouldn’t it move twice as fast?

Does Panda assume that the vast majority of the work performed is in actually drawing frames, perhaps? Or am I looking at getDt wrong?

GlobalClock.getDt() is just a method, witch a defined semantic. How you use this method is up to you.
In your case you want to do some kind of stepped simulation work, and thus need the time of the simulation step. I think you can go two ways:

1.) Each vehicle has it’s own task for updating. The tasks for different vehicles won’t get called at exactly the same time. So if invoking GlobalClock.getDt() in different tasks it would yield different results for different vehicles. You found this out already. What you need is the elapsed time since a task was called the last time. Just get the absolute time and store it in a local variable, then use this time to compute the “delta” time. Or use task.getDt() to get the time elapsed since the task was invoked the last time.

2.) There is only one task which updates all vehicles, that is it calls an method like “vehicle.update(dt)” for each vehicle. This means that all vehicles adavance for exactly the same amount of time each frame.

All in all, the only thing which matters is that the summed of all timesteps (the total simulation time) is about the same for all vehicles.