Anti Puck by Arron Fowler
The first game I have ever made to completion.
Ratings
| Coolness | 7% | 68 |
| Overall | 2.50 | 366 |
| Audio | 2.77 | 134 |
| Fun | 2.23 | 361 |
| Graphics | 3.21 | 146 |
| Humor | 1.00 | 466 |
| Innovation | 3.21 | 143 |
| Theme | 1.92 | 465 |
| Coolness | 7% | 68 |
| Overall | 2.50 | 366 |
| Audio | 2.77 | 134 |
| Fun | 2.23 | 361 |
| Graphics | 3.21 | 146 |
| Humor | 1.00 | 466 |
| Innovation | 3.21 | 143 |
| Theme | 1.92 | 465 |
So the basic thing here is that it's good to have deceleration faster than acceleration, especially when acceleration is large (otherwise the player just loses control too quickly).
The question then is how you do this, when the player's velocity is in a completely different (and arbitrary) direction to the force the player controller is applying.
What you really want is:
force = min_force + (magic formula that makes it 1 when it's in the opposite direction of the current velocity, but 0 when it's in the same direction) * extra_force
That magic formula can be found using the dot product (http://www.euclideanspace.com/maths/algebra/vectors/index.htm - you might want to look at stuff on that page in general, it's a pretty good resource, you'll have to search for 'dot product' to find it there but it's there). You want to take vectors of your force and current velocity, get unit vectors of each of them (so they're both of length 1), and then do a dot product. You probably then need to do a ((result+1)/2) if memory serves me correctly.
Sorry that's such a quick overview, hopefully that website fills in the gaps (feel free to ask if your head is spinning/something is unclear - just tweet me so I know to check the thread again).