return { tag = 'worldBasics', summary = 'Update the World.', description = [[ Updates the World, advancing the physics simulation forward in time and resolving collisions between colliders in the World. ]], arguments = { dt = { type = 'number', description = 'The amount of time to advance the simulation forward.' }, resolver = { type = 'function', arguments = { { name = 'world', type = 'World' } }, returns = {}, variants = { { arguments = { 'dt', 'resolver' }, returns = {} } }, default = 'nil', description = [[ The collision resolver function to use. This will be called before updating to allow for custom collision processing. If absent, a default will be used. ]] } }, returns = {}, variants = { { arguments = { 'dt', 'resolver' }, returns = {} } }, notes = [[ It is common to pass the `dt` variable from `lovr.update` into this function. The default collision resolver function is: function defaultResolver(world) world:computeOverlaps() for shapeA, shapeB in world:overlaps() do world:collide(shapeA, shapeB) end end Additional logic could be introduced to the collision resolver function to add custom collision behavior or to change the collision parameters (like friction and restitution) on a per-collision basis. > If possible, use a fixed timestep value for updating the World. It will greatly improve the > accuracy of the simulation and reduce bugs. For more information on implementing a fixed > timestep loop, see [this article](http://gafferongames.com/game-physics/fix-your-timestep/). ]], related = { 'World:computeOverlaps', 'World:overlaps', 'World:collide' } }