Basic simulation and evaluation
MadKnight
3,650 views
Overview
Simulation of a pod's movement consists of 3 steps:
- game action is applied
- 1 game second of physics being simulated
- friction is applied
Applying a game action
Since a game action is just some angle and thrust, we just need to add move's angle to the pod's rotation, multiply pod's facing vector by thrust and add it to the velocity vector:
this.angle += move.angle; this.velocity += new Vector(Math.Cos(this.angle), Math.Sin(this.angle)) * move.thrust;
Simulating physics of a single pod
A pod's physics is only static movement, so we just need to "apply" velocity:
this.position += this.velocity*time;
We need to multiply velocity by time to be able to simulate less than 1 game second for collision simulation
Applying friction
Friction just takes 15% of velocity:
this.velocity -= this.velocity*0.15;
Or simpler:
this.velocity *= (1 - 0.15);
Basic pod class
1
2
3
4
class Pod
{
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Writing functions for movement simulation.
1
2
3
class Pod
{
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Create your playground on Tech.io
This playground was created on Tech.io, our hands-on, knowledge-sharing platform for developers.
Join the CodinGame community on Discord to chat about puzzle contributions, challenges, streams, blog articles - all that good stuff!
JOIN US ON DISCORD Online Participants