Hexterminate Replacing Havok with Bullet Date October 2, 2018 Views 173 Views Reading Time 4 Mins Read 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… Hexterminate HEXTERMINATE! Date January 29, 2017 Views 143 Views Reading Time < 1 Min Read Finally, the game that I have been working on during my spare time is ready for Steam Greenlight’s process! HEXTERMINATE is a space shooter written for PC, putting the player in the role of an Imperial Captain as part of a campaign to conquer the galaxy. Onwards to cutting the trailer and getting the game on Steam, then… Hexterminate September development highlights Date September 28, 2015 Views 169 Views Reading Time 2 Mins Read It has been a busy month in HEXTERMINATE’s universe. I’ve assembled a short trailer to showcase the game, backed as usual by =kontinue’s great sound track! Be sure to check it out. But lets take a look at the game’s development itself. Sound effects A game can’t be complete without sound effects, even if it is a space game and have to ignore little things like physics going “you’re aware there’s no sound in space, right?” Hogwash. Most of the sound effects are now in place, making use of FMOD’s positional audio which made it easy to implement automatic panning and volume rolloff based on distance. Overall I’m quite pleased with it and it makes battles sound far, far more alive. I’ve also written a small post on the the implementation gotchas that might be of use to other developers. Balancing pass Balancing a game’s is almost always tricky and HEXTERMINATE is no exception to this. The variety of factions, the kinds of ships they use and the large amount of modules that can be used make the task of balancing everything properly a fairly time consuming one. Overall the pace of the game has been slowed down as ships were exploding too quickly, which made it both difficult for the player to manage to pull successful, higher-risk raids into hostile sectors and fairly frustrating to try and keep a fleet’s losses manageable. Additionally, most ships of the Ascent and Iriani factions have been redesigned and made more specialised. The Iriani in particular remain, as before, terrifying: attacking their territory is not for the weak of heart or for those afraid of losing ships in the process. Of course that over the campaign you’ll have to conquer their homeworld but hey, no one said that the life of an Imperial captain was an easy one. Loading… Hexterminate Implementing 3D audio with FMOD Date September 9, 2015 Views 171 Views Reading Time 2 Mins Read One of the great things about FMOD is its ability to play sounds in 3D space, internally handling all the details of panning, volume rolloff and Doppler effects without requiring too much trouble from the developer’s side. I’ve recently started adding sound effects to Tannhauser and I’d like to share with other people some of the problems I’ve had – perhaps it will save someone a bit of time. Setting up the listener The listener is the player’s “head” in 3D space. It is setup by calling set3DListenerAttributes() and receives a position, a velocity, as well as a forward and up vectors. However, make sure that the forward and up vectors are normalised: due to a bug in my code the forward vector hadn’t been normalised and it was causing the sounds to always play at full volume from both speakers. 3D sounds are initially placed at the listener If a 3D sound is created without being set to start paused, it will begin playing at the listener’s location. Even if the sound’s 3D attributes are set immediately afterwards, you’ll likely still get a noticeable “pop” as the sound starts playing and gets relocated. To avoid this, create the sound as initially paused, set the attributes and then unpause it. Minimum sound instance distance Setting the minimum distance on a channel allows us to define how audible the sound is as you get further away from it. Something I am currently playing with, however, is having different minimum distances for the player and for other ships, making the player’s actions more noticeable in the chaos of battle. Too many active sounds There are explosions in Tannhausers. Lots of explosions. On a bad day, there are over fifteen ships all flinging large amounts of missiles, torpedoes and other fun things at… Hexterminate August development highlights Date August 25, 2015 Views 175 Views Reading Time 3 Mins Read With having to split time between programming the game, creating the art assets and trying to get the game out there while juggling a family and a full time job, time is a rare commodity these days! To try and make more progress in the actual game, I’m starting a monthly column of development highlights, showcasing the new stuff that is making its way into the game. Requisition system Until now, the player was always given three gunships to assist him, which was extremely useful in the beginning of the game as it provided a way to even the odds against hostile fleets. However, as a game progressed, the allied ships would become less as less useful as the player began tackling harder factions, the little gunships finding themselves turned into space dust without really contributing anything to the battle. The new requisition system targets this issue. As the player is part of a greater Empire, he can now request that the Imperial Headquarters provides additional ships to his fleet. This bringing a kind of currency to the game, Requisition Units, which can be earned both by conquering sectors and by keeping them under Imperial control. No longer constrained to gunships, the player can now bring Imperial battlecruisers and battleships to his fleet. Missile interceptors In Tannhauser there are several kinds of weapons but of all of them, missiles in their many variants can be some of the most difficult to counter. Particularly as the size of ships grows larger and armour gets heavier, dodging out of the way of torpedoes becomes as difficult as negotiating the Greek bailout. To assist a Captain who finds himself on the wrong side of missile barrages, the new missile interceptor module has been added, which will attempt to shoot down nearby missiles as long as there is enough… Hexterminate Gameplay video and hyperspace Date October 2, 2014 Views 171 Views Reading Time 2 Mins Read Hello and welcome to HEXTERMINATE’s third devlog. The last week has provided a big jump forward with the project. I’m now collaborating with kontinue for the game’s soundtrack and it is a very promising start which does make want to integrate FMOD right now so I can get these songs in. Do check his bandcamp and soundcloud. So, let us take a look at what’s new in-game… Hyperspace In the last week I’ve added a proper effect for visualisation for the hyperspace effect, which makes entering and leaving a normal sector much more interesting. It is particularly pleasant to see the hyperspace gate open when the player’s ship is being shot to pieces and desperately trying to fleet to safety. As it had been talked about in a previous devlog, the player is not the only one that makes use of hyperspace. While contesting a sector the galaxy does not stop dead in its tracks, so all the fleets in the galaxy keep doing what they were doing: contesting a sector of their own, travelling… or perhaps they’ll spot the player’s battle and decide to join in. This is something that works both ways, with both enemies and allies considering if this is a battle they have a stake on. This does add an extra layer to the game, as the player does should consider if a region of space is too “hot” to attack, as the risk of being caught off-guard by mid-fight reinforcements is quite real. This risk can be reduced by having a bridge with hyperspace sensors, which will provide an early warning. Further work Additionally, most items are now in-game and can be found as loot from the enemy ships. As expected, the quality of the loot is proportional to the kind of enemies the player is facing. It is… Load More Loading More… You’ve reached the end of the list
Hexterminate Replacing Havok with Bullet Date October 2, 2018 Views 173 Views Reading Time 4 Mins Read 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…
Hexterminate HEXTERMINATE! Date January 29, 2017 Views 143 Views Reading Time < 1 Min Read Finally, the game that I have been working on during my spare time is ready for Steam Greenlight’s process! HEXTERMINATE is a space shooter written for PC, putting the player in the role of an Imperial Captain as part of a campaign to conquer the galaxy. Onwards to cutting the trailer and getting the game on Steam, then…
Hexterminate September development highlights Date September 28, 2015 Views 169 Views Reading Time 2 Mins Read It has been a busy month in HEXTERMINATE’s universe. I’ve assembled a short trailer to showcase the game, backed as usual by =kontinue’s great sound track! Be sure to check it out. But lets take a look at the game’s development itself. Sound effects A game can’t be complete without sound effects, even if it is a space game and have to ignore little things like physics going “you’re aware there’s no sound in space, right?” Hogwash. Most of the sound effects are now in place, making use of FMOD’s positional audio which made it easy to implement automatic panning and volume rolloff based on distance. Overall I’m quite pleased with it and it makes battles sound far, far more alive. I’ve also written a small post on the the implementation gotchas that might be of use to other developers. Balancing pass Balancing a game’s is almost always tricky and HEXTERMINATE is no exception to this. The variety of factions, the kinds of ships they use and the large amount of modules that can be used make the task of balancing everything properly a fairly time consuming one. Overall the pace of the game has been slowed down as ships were exploding too quickly, which made it both difficult for the player to manage to pull successful, higher-risk raids into hostile sectors and fairly frustrating to try and keep a fleet’s losses manageable. Additionally, most ships of the Ascent and Iriani factions have been redesigned and made more specialised. The Iriani in particular remain, as before, terrifying: attacking their territory is not for the weak of heart or for those afraid of losing ships in the process. Of course that over the campaign you’ll have to conquer their homeworld but hey, no one said that the life of an Imperial captain was an easy one. Loading…
Hexterminate Implementing 3D audio with FMOD Date September 9, 2015 Views 171 Views Reading Time 2 Mins Read One of the great things about FMOD is its ability to play sounds in 3D space, internally handling all the details of panning, volume rolloff and Doppler effects without requiring too much trouble from the developer’s side. I’ve recently started adding sound effects to Tannhauser and I’d like to share with other people some of the problems I’ve had – perhaps it will save someone a bit of time. Setting up the listener The listener is the player’s “head” in 3D space. It is setup by calling set3DListenerAttributes() and receives a position, a velocity, as well as a forward and up vectors. However, make sure that the forward and up vectors are normalised: due to a bug in my code the forward vector hadn’t been normalised and it was causing the sounds to always play at full volume from both speakers. 3D sounds are initially placed at the listener If a 3D sound is created without being set to start paused, it will begin playing at the listener’s location. Even if the sound’s 3D attributes are set immediately afterwards, you’ll likely still get a noticeable “pop” as the sound starts playing and gets relocated. To avoid this, create the sound as initially paused, set the attributes and then unpause it. Minimum sound instance distance Setting the minimum distance on a channel allows us to define how audible the sound is as you get further away from it. Something I am currently playing with, however, is having different minimum distances for the player and for other ships, making the player’s actions more noticeable in the chaos of battle. Too many active sounds There are explosions in Tannhausers. Lots of explosions. On a bad day, there are over fifteen ships all flinging large amounts of missiles, torpedoes and other fun things at…
Hexterminate August development highlights Date August 25, 2015 Views 175 Views Reading Time 3 Mins Read With having to split time between programming the game, creating the art assets and trying to get the game out there while juggling a family and a full time job, time is a rare commodity these days! To try and make more progress in the actual game, I’m starting a monthly column of development highlights, showcasing the new stuff that is making its way into the game. Requisition system Until now, the player was always given three gunships to assist him, which was extremely useful in the beginning of the game as it provided a way to even the odds against hostile fleets. However, as a game progressed, the allied ships would become less as less useful as the player began tackling harder factions, the little gunships finding themselves turned into space dust without really contributing anything to the battle. The new requisition system targets this issue. As the player is part of a greater Empire, he can now request that the Imperial Headquarters provides additional ships to his fleet. This bringing a kind of currency to the game, Requisition Units, which can be earned both by conquering sectors and by keeping them under Imperial control. No longer constrained to gunships, the player can now bring Imperial battlecruisers and battleships to his fleet. Missile interceptors In Tannhauser there are several kinds of weapons but of all of them, missiles in their many variants can be some of the most difficult to counter. Particularly as the size of ships grows larger and armour gets heavier, dodging out of the way of torpedoes becomes as difficult as negotiating the Greek bailout. To assist a Captain who finds himself on the wrong side of missile barrages, the new missile interceptor module has been added, which will attempt to shoot down nearby missiles as long as there is enough…
Hexterminate Gameplay video and hyperspace Date October 2, 2014 Views 171 Views Reading Time 2 Mins Read Hello and welcome to HEXTERMINATE’s third devlog. The last week has provided a big jump forward with the project. I’m now collaborating with kontinue for the game’s soundtrack and it is a very promising start which does make want to integrate FMOD right now so I can get these songs in. Do check his bandcamp and soundcloud. So, let us take a look at what’s new in-game… Hyperspace In the last week I’ve added a proper effect for visualisation for the hyperspace effect, which makes entering and leaving a normal sector much more interesting. It is particularly pleasant to see the hyperspace gate open when the player’s ship is being shot to pieces and desperately trying to fleet to safety. As it had been talked about in a previous devlog, the player is not the only one that makes use of hyperspace. While contesting a sector the galaxy does not stop dead in its tracks, so all the fleets in the galaxy keep doing what they were doing: contesting a sector of their own, travelling… or perhaps they’ll spot the player’s battle and decide to join in. This is something that works both ways, with both enemies and allies considering if this is a battle they have a stake on. This does add an extra layer to the game, as the player does should consider if a region of space is too “hot” to attack, as the risk of being caught off-guard by mid-fight reinforcements is quite real. This risk can be reduced by having a bridge with hyperspace sensors, which will provide an early warning. Further work Additionally, most items are now in-game and can be found as loot from the enemy ships. As expected, the quality of the loot is proportional to the kind of enemies the player is facing. It is…