• Advertisement


  • Content count

  • Joined

  • Last visited

Community Reputation

118 Neutral

About ColinShark

  • Rank
  1. The Tech of Gimbal

    I just released a patch that takes care of some of the connection bugs by updating to the newest build of Lidgren (my network library). And for the next 4 days, Gimbal is being featured on [url="https://indiegamestand.com/"]IndieGameStand.com[/url]. It's Pay-What-You-Want, which people seem to like.
  2. The Tech of Gimbal

    [quote name='Slig Commando' timestamp='1351214436' post='4993994'] Very cool. Im voting to greenlight it on steam. [/quote] Thanks, dude! It is apparently "58%" of the way to Greenlight, whatever that actually means, and very slowing rising.
  3. Hey devs. I want to show off some of the technology under the hood of [url="http://www.gimbalgame.com"]Gimbal[/url]. 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. [img]http://www.gimbalgame.com/screens/email_triscreens.jpg[/img] [b]APIs[/b] C# codebase XNA for sound/graphics/input DirectX for gamepad support Lidgren for UDP networking [b]Tools[/b] Visual Studio 2008 is my IDE Paint Shop Pro 7 for art Audacity for sound Reaper for music Lightworks for video editing [b]Some generally cool stuff...[/b] 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. [img]http://www.gimbalgame.com/screens/tech/hit_detect.png[/img] Aerodynamics. Players can mount functional control surfaces to ships. Forces are calculated as a function of air velocity. [img]http://www.gimbalgame.com/screens/tech/aero.png[/img] 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. [img]http://www.gimbalgame.com/screens/tech/gui.png[/img] Motion blur on particle effects. This small effect adds a lot to the overall look. For Gimbal, I just stretch the sprites. [img]http://www.gimbalgame.com/screens/tech/blur.png[/img] 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. [img]http://www.gimbalgame.com/screens/tech/missiles.png[/img] 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.
  • Advertisement