Hey devs. I want to show off some of the technology under the hood of Gimbal. I'm quite proud of some of the tricks I used to make this game playable on modern computers, as a real time networked game.
This is an open thread. Ask me anything.
XNA for sound/graphics/input
DirectX for gamepad support
Lidgren for UDP networking
Visual Studio 2008 is my IDE
Paint Shop Pro 7 for art
Audacity for sound
Reaper for music
Lightworks for video editing
Some generally cool stuff...
Per-Pixel collision detection, optimized with bounding circles. All the parts of a ship affect the physics and handling. Ships are treated as rigid bodies, and collisions result in a semi-elastic response. For correct collision response, I calculate normals for all the outer surfaces.
Aerodynamics. Players can mount functional control surfaces to ships. Forces are calculated as a function of air velocity.
Custom GUI engine and widget kit. For typing input, I have to poll the keyboard. I had to implement word wrapping, which was a bit of a bear.
Motion blur on particle effects. This small effect adds a lot to the overall look. For Gimbal, I just stretch the sprites.
One aspect of the component-based physics engine: Missiles physically leave the launcher when fired, and free up some weight and drag on the parent ship.
Client-Server multiplayer network model. Clients send their input changes (deltas), and the server runs the simulation. Server sends regular vehicle state updates to the clients. I use the Lidgren networking library.
The physics engine is multithreaded and runs on N logical processors. I split the work across vehicles in the game world, which do not have direct dependencies on each other. When I calculate collisions, each thread computes a "pair" of possible colliding bodies.
There are more cool programming tricks in this game. I can speak to any part you are interested in.
ColinSharkMember Since 11 May 2011
Offline Last Active Nov 12 2012 08:27 AM
- Group Members
- Active Posts 3
- Profile Views 984
- Submitted Links 0
- Member Title Member
- Age Age Unknown
- Birthday Birthday Unknown
I make www.gimbalgame.com.
Lots of people are already playing. Check it out!