• Register

Hexterminate is a top-down shooter being developed for Windows, which puts the player in the role of an Imperial Captain with the mission of reclaiming a galaxy shattered by centuries of in-fighting.

Customise your ship to your liking, choosing from dozens of different modules, fight side by side with allied fleets and reunite the galaxy under Imperial rule.

  • View media
  • View media
  • View media
  • View media
  • View media
  • View media
Post article RSS Articles

Replacing Havok with Bullet


The issue

Most people involved in games development have likely heard of Havok Physics: a middleware solution which provides collision detection. HEXTERMINATE used Havok for a long time, as it was free for Windows even in commercial projects, as long as they didn’t sell over a certain threshold. However, the hobbyist version has stopped being distributed years ago and this caused some issues: more modern versions of Visual Studio weren’t supported (anything past VS2012) and most importantly, could the game still be shipped with it?

An open-source approach

The alternative chosen was to use the open-source library Bullet:

  • Conceptually similar: most of what HEXTERMINATE uses could be done in Bullet without massive refactoring.
  • Functionally equivalent: there were no holes in the feature list, everything I needed was present.
  • Permissive licence: the ZLIB licence puts essentially no restrictions on the game.
  • Source code available: I could republish the library binaries myself, getting me up and running in VS2017 quickly.
  • Linux support: although not something I have spent time on, Havok was the last library holding off multi-platform support.

Making it all work

Getting the basics up and running was fairly straightforward. What ended up taking up most of the time was that many places in the game’s code were using Havok’s maths library rather than GLM, which required some head scratching and debugging to make sure that it was all working. Most of it was fine, but swapped order of operations caught me off-guard a couple of times.

When a battle goes wrong, it can go really wrong.

In the end it was actually the smaller things that took the longest: getting callbacks with the required information for when two ships collide was non-trivial, as I needed information about which two modules were colliding, not just the parent “ships”. The other problem which took a while to figure out was that raycasts which return multiple results do not return results in an ordered fashion, so I was seeing odd behaviour with some weapons, e.g. a beam weapon being blocked by a shield but still damaging the module behind it.

Improved behaviour

Cylindrical shapes

In HEXTERMINATE, each ship is composed of a number of individual modules. Each module can be destroyed separately, so each ship’s physical hull is composed of a number of physics shapes. Historically these shapes have been spheres, as it is algorithmically much faster to calculate the collision between pairs of spheres than pairs of hexagons.

However, a problem that comes with the sphere approach is that it is possible for a projectile to go through two modules and hit the module behind them. It doesn’t happen very often, but because the outer modules are normally some sort of armour, when it does happen the player definitely notices.

The alternative was to use cylinders rather than spheres: still faster than hexagons and it prevents the frustrating projectile punch-through.

In red, the debug draw of the new collision shapes.

Bypassing shields

Shield modules generate the classic science-fiction bubble around a ship. Until the replacement of Havok with Bullet, the shield had to be disabled before the underlying ship took any damage. This had a few issues, such as making the choice of weapon less relevant, but more crucially this meant that the optimal way of building your ship was to put as many shield modules on it as you could.

Missiles now get through shields, so a missile interceptor might be a good choice.

A way to mitigate this was to make certain types of weapons to be able to bypass shields: missiles and torpedoes can now hit the underlying modules directly, making up for the fact that unlike other weapon types they can be intercepted. This worked very well and made some encounters more interesting after a few tweaks to the designs of certain ships.

No more ghost collisions

A long-standing bug had to do with the ships or projectiles colliding with something invisible. This was quite rare, but it was obvious that some of the physics collision shapes weren’t being properly deleted. Tiny memory leak aside, I was concerned this might lead to a memory stomp and crashes, as the parent ship no longer existed.

To help me track this down I’ve made use of Omar’s excellent imgui library to get some of required debug information on screen. In the end this was tracked down to the shields on ships: if the player left the sector, any ships which still had their shields up wouldn't remove the associated physics object correctly.

Other work

In addition to everything that was done to get the physics up and running, I've also received the assets for a some of the characters which the player will run into throughout the campaign:



Next steps

The game is now very much near completion. There are now two chunks of work remaining:

  1. Finish the campaign: the campaign leads the player through the galaxy, providing a direction to head towards without overly constraining the player’s liberty. It is about 80% completed, so the push is to finish the remaining couple of missions.
  2. Steam achievements: achievement support is already in place but not all achievements have been hooked yet, as some depend on the campaign.

You can find further updates in my own website ( pedro-nunes.net ) and in my Twitter.

Thanks for reading!

Devlog #14 - Trailer & Greenlight

Devlog #14 - Trailer & Greenlight

News 3 comments

HEXTERMINATE releases it's first trailer, showing both combat gameplay and ship construction. We've also landed on Steam Greenlight!

Devlog #13 - Ramming speed!

Devlog #13 - Ramming speed!

News 6 comments

Hexterminate is nearly feature complete for release! Today we take a look at some of the remaining perks as well as various improvements to the general...

Devlog #12 - Finish line in sight

Devlog #12 - Finish line in sight


It has been another busy month with Hexterminate, making good progress towards having a polished game for people to enjoy! We’re pretty much at the...

Devlog #11 - It's full of stars

Devlog #11 - It's full of stars


A look into the new dynamically generated stars, several final models for our modules and the brand new perk system. Several steps closer to release!

Comments  (0 - 10 of 18)

Hey its me again!

i just wondered, i currently only have a laptop and i wondered if the game will even run on it.

my System Specs(i know its no gaming hardware):

Operating system: Windows 10 64-bit

Prozessor: Intel Celeron N2940 at 1.83 GHz

RAM: 4 GB (3.88 usable)

Grafics Card: Intel HD Grafics Generation, 2015

Reply Good karma Bad karma+2 votes
PedroNunes Creator

Hey GhostTaker! Sorry for the incredibly slow reply, I keep forgetting I don't get notifications for posts on this section (for some reason...).

I think it will run, I can't guarantee it though. I've run it on a couple of laptops with Intel cards and have had some success. Between EA and full release I'm hoping to re-write a part of the renderer which should allow the game to run at a decent speed even on lower end hardware.


Reply Good karma+3 votes


Reply Good karma Bad karma+2 votes

looks awesome!

Reply Good karma Bad karma+2 votes
PedroNunes Creator

Thank you!

Reply Good karma+2 votes

wehn you first relise the game how much will it cost or will it be for free?

Reply Good karma Bad karma+1 vote
PedroNunes Creator

Hey GhostTaker! I haven't decided on the exact price point yet, but I'm looking at the £6-8 range :)

Reply Good karma+1 vote

i am sorry but waht is this symbol are these pounds?

Reply Good karma Bad karma+1 vote
PedroNunes Creator

Sorry, yes, British Pound. Looking at Google for conversion.. about 7 to 9 euros or 7.80 to 10.30 dollars :)

Reply Good karma+1 vote

ok thanks.

( i am german so we have Euro ;) )

Reply Good karma Bad karma+1 vote
Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.

Follow Profile
Send Message
Release date
Game watch
Community Rating



0 votes submitted.

You Say


Ratings closed.

Single Player

Latest tweets from @hextermination, @pnunes515

RT @MalwareJake: This is perhaps the most important tweet you'll read today. T.co

Jul 11 2020 by pnunes515

RT @nathanmhurst: Working for a living #SciFi #Art by Vladimir Somov #Space Industrial visions of Mars. T.co

Jul 10 2020 by pnunes515

RT @KGlasss: Hi Twitter, if you're in rent arrears, how soon can a landlord/collection agency issue a County Court Judgement?

Jul 8 2020 by pnunes515

RT @badtakeblake: T.co

Jul 7 2020 by pnunes515

I was momentarily tempted to write this function using template specialisations, but stepped away from the brink.

Jul 5 2020 by pnunes515

RT @Dream_Harvest: Aurora is the Founder and CEO of the Catena Star League (CSL) and Slicer SuperFan #NeuroSlicers #Cyberpunk. We're… T.co

Jul 5 2020 by pnunes515

Adding fog of war to @Hextermination . Basic algorithm is quite simple, but it certainly has massive implications f… T.co

Jul 5 2020 by pnunes515

The new antiproton cannons (white and black energy balls) can be blocked by a shield in the matching colour, but it… T.co

Jul 4 2020 by hextermination

Antiproton cannons working :) #indiedev T.co

Jul 3 2020 by hextermination

Got a basic, but functional procedural galaxy generation. Moving along nicely :)

Jul 1 2020 by hextermination

Embed Buttons
Link to HEXTERMINATE by selecting a button and using the embed code provided more...
Last Update
76 members
You may also like