Physics for Game Developers: Science, math, and code for realistic effects