>>13444640I'm no physicist, but I think this may be close to what you want. Whether or not it's computationally feasible is another question.
Represent every dynamical aspect of your game's world in terms of a Hilbert space, and any potential transformations of it as a self-adjoint operator as a function of time. For example, electrical charge of objects, electrical resistance, magnetic properties, light, particle density of game objects (a factor of weight and hardness), heat, momentum... all of these are functions of time. You'll want to be time variant. Self-adjoint operators are transformations against any dynamical property, for instance, punching a wall involves transforming the momentum of your arm to increase in the direction of a pointed vector towards the wall. Your arm moves as a function of time, and its location at time t can be found in a subset in the matrix resulting from the calculation of momentum. The momentum of the wall would also be contained in the same Hilbert space, along separate dimensions. The two momentums would be dependent to account for the collision after enough time has passed, and your hand interacts with the wall's momentum. The momentum of each has parameters of properties such as density, hardness, mass, applied force, etc. What happens when your hand collides with the wall is determined by the same inner product calculation in the Hilbert space.
Anyways, you can chain together additional self-adjoint operators to "add superpowers" to the resulting calculation, which will be altered for each time frame. You can transform your hand to be incredibly dense, massive, and with a very large amount of force driving the momentum. This would result in, rather than the wall applying opposite force on your hand and your hand bouncing off of it, the (let's say concrete) wall would be shattered. Your fist would continue forward, lifting your body into the air, flying you forward and destroying all the walls in the building.
Good luck!