Step method performs 10 iterations, then another 10, and so on, until either reaching the stopping threshold, or exceeding 15ms. This is because for most of the intended applications in Grasshopper, the aim is to reach equilibrium quickly, with a reasonable frame-rate for on screen updates to allow interactivity, but not requiring a perfectly fixed frame-rate, as you might want in a game. This means the frame rate will vary according to the complexity of the simulation, and also during simulation may vary slightly due to the varying workload on the CPU.
There is also another method available called
SimpleStep, which performs exactly 1 iteration. I guess if you use a script with its own timer you could use this to maintain a steady frame rate (provided that 1 iteration always takes less than the duration of a frame).
It would help me to help you better if you can give some sort of overview of how you want to use Kangaroo. It differs in several ways from a typical game physics engine, because the priorities are different. I’m still confused about whether you are trying to make a game that actually runs in Rhino, or just use Rhino for the level design.