# Sooper Seecret Project Preview #2

by support@brasswatchgames.com on July 25, 2014

I know I really should be working more on Shipyard, but I’m just having too much fun with this tank.

The tank is now a real object with some degree of physics. It can be controlled with WASD, and the gun will aim at your mouse. The physics were done using JBullet, a Java port of the Bullet physics library (originally for C++). The mouse aim was done using what in professional circles is known as a giant heap of trig. I actually spent several hours trying to figure out why I wasn’t getting the right values from the formula, only to realize that I had forgotten to convert from degrees to radians and back again, as LWJGL uses degrees but Java’s Math class deals in radians. Earlier I had a ton of fun (the sarcasm is tangible) learning about quaternions and how to convert them to something recognizable to humans.

I realize now that it’s hard to see the grass texture as a point of reference, but trust me, the tank is really moving. It’s a lot clearer in-game, but the video rendering process made it blurry.

Music by Kevin MacLeod (http://incompetech.com/) — Available under a Creative Commons license.

# Sooper Seecret New Project?

by support@brasswatchgames.com on July 23, 2014

In my previous post, I hinted that, in addition to getting back to work on Shipyard, I had also started a “secret new project” that I would share if it went well. Well, thus far, that seems to be the case, so here’s a little sneak-peak of what I have so far:

I’m not going to give any details that would get people’s hopes up, as there is still potential for this to go beyond my current skill level, but I will explain what’s going on in the video. You are given a (currently untextured) 3D model of a tank, which you can fly around and look at. You can also control the turret rotation and gun elevation/depression using the arrow keys. It’s not much, I know; the important thing here is that it has 3D graphics — something I’ve never personally experimented much with until now.

Like Shipyard, the game runs in Java. However, rather than using Java’s built-in graphics API the way Shipyard does, this demo uses LWJGL, or “Lightweight Java Game Library” to render 3D objects in OpenGL. LWJGL is the same library Minecraft uses for its 3D rendering. I’m not entirely clear on the technical details, but generally speaking it handles rendering more efficiently than plain Java and thus allows for much more complex game design.

# I HAVE RETURNED!

by support@brasswatchgames.com on July 15, 2014

Two and a half weeks, nine US states, and countless hours of anime later, I have finally returned from my road trip! I’m actually writing this a few days after returning because I’m super lazy like that, but the important part is that I’m back. That means back to working on Shipyard, as well as a secret new project that you may or may not be seeing in the future depending on how well it turns out.

# Going on Vacation Today

by support@brasswatchgames.com on June 25, 2014

I a couple hours, my family will be leaving on vacation which will last between two and three weeks. During that time I will not be able to work on Shipyard, and so I will have no reason to post here. I will still be able to provide some degree of support for the game, on the off chance someone actually needs it (to this day, I have not received a single official bug report — I wish that was a testament to my mad coding skills but more likely it demonstrates my poor marketing of the game). Anyway, the point is that I will not be able to work on the game for the next couple weeks and so you won’t be seeing any development news during that time.

# Shipyard Development News 18 June 2014

by support@brasswatchgames.com on June 19, 2014

Since I posted my outline for version 0.8.1, a good friend of mine who I’d asked to write some music for Shipyard sent me what he’d come up with. This came as a surprise to me, as I hadn’t been expecting him to finish so quickly. This prompted me to implement a working audio system into the game. Luckily, it wasn’t too hard to cannibalize the audio system from a previous project (a platformer whose development came to a grinding halt due to a bug with collision detection), and I had something up and running pretty quickly. After that first, primitive attempt proved successful, I decided to flesh it out a bit, and what I came up with led me to the implementation of another feature: the ship’s scanner.

Previously, you could see enemy ships from all the way across the sector through he sector map screen. Now, the ship has a limited scanner range (currently provided by the bridge for lack of a dedicated scanner system), and only enemies within that range are shown. Stations, planets, etc. are still shown at any distance because they’re big and easy to spot. I also added a new UI element to the navigation screen which shows the relative direction of all objects within your scanner range. Scanner range receives the usual penalties for crew and power, meaning there is now a reason to allocate resources to your bridge.

The navigation screen now features a scanner readout. Objects within scanner range are shows as arrows around the white circle, and are color-coded the same was as on the sector map.

The scanner range is now shown on the sector map as well. Note how the only visible enemy is within the white circle.

In addition to being a game mechanic in and of itself, what this means for the music is that the game will switch between tracks depending on whether you are in combat (one or more enemies within scanner range) or not. Additionally, repairing at the shipyard and editing your ship will be off-limits while you are in combat. As for items and the stuff that was originally coming with the update, that’s being worked on as well. I’ve got an early version of the new inventory screen working, but not many items are implemented yet. The Advanced Engine Coolant works perfectly, and the Crawler Transport can be equipped but doesn’t do anything yet. A spromised, plenty of new items will be added, and old ones will be changed or removed as necessary.

# Shipyard: Outline for Pre-Alpha 0.8.1

by support@brasswatchgames.com on June 7, 2014

Even though version 0.8.0 has just been released, I’m already thinking about content for the next update. Nothing is set in stone as of yet, but my major plans are listed below:

• Working Items: Items will be usable and provide effects to your ship. Consumables will provide temporary effects and will be used up in the process, while upgrades will provide permanent effects as long as they are equipped. New items will be added, and some old items will be changed or removed to work with the new system.
• Improved Cargo Hold View: The current cargo hold view is primitive at best, and would not be sufficient to handle large numbers of items. Thus, an upgrade is in order. The new screen will display items as a list (including their name, type, and effects) rather than a grid, and items will be sorted into some meaningful order.
• Upgrades Tab: The upgrades tab in the ship overview window will be implemented to allow you to view your currently equipped upgrades and their effects.
• Ship Size Limit: Because having a ship which is a giant blob of class 1 parts is just silly, class-based size limits will be imposed on ships. Class 1 ships can be no larger than 16×16 tiles, 32×32 for class 2, and 48×48 for class 3.
• Shuttles: Shuttles will be added to the game, available for purchase at the shuttle shop that generates in every sector. Shuttles can be sent on missions independent of your own vessel, but each will have a limited flight range. They will also require free crew to operate them. Crew will be taken with the shuttle and returned to your ship upon its return. However, shuttles might be destroyed by enemy ships or lose crew in the course of their mission.
• Officers: Officers are hire-able characters that provide bonuses to your ship similar to upgrade items. They will be randomly generated and available for hire at academies. Each officer will require an officer’s quarters system, and may also have special requirements (for example, a pirate may refuse to work with an ex-military police officer and vice versa). To balance out the additional requirements, officers will generally provide better bonuses than upgrade items.

The last two plans are tentative, and may be pushed back to later updates. However, the first four are most likely going to be ready for 0.8.1.

# Combat Update Released!

by support@brasswatchgames.com on June 6, 2014

Shipyard version Pre-Alpha 0.8.0, or “The Combat Update,” is easily the largest update Shipyard has seen to date and has just been released! You can download the update on the Shipyard page or through the launcher. For those who haven’t been following its development, I’ll do my best to condense the massive amount of content that came with the update into as concise a format as possible:

Ship Combat

Obviously the major feature of the update, you can now fight with and destroy enemy ships. You can attack an enemy by selecting it in the navigation screen and choosing “Attack.” Doing this will take you to the combat screen, where you can select a weapon and a target spot on the enemy ship. Damaging individual systems will cause those systems to lose effectiveness in addition to killing the crew inside. When a ship’s total HP (sum of individual system HP) drops below 45% or all crew on board are dead, it will be destroyed. You can repair your ship for credits at a shipyard.

Firing a weapon will consume Weapon Control. Weapon Control (WC) is based on your weapon control systems: how many you have, how much crew and power are allotted to them, and how much damage they have sustained. WC is replenished at the beginning of each turn.

Weapons are divided into three attack types, as well as being either turreted or fixed. Ballistic weapons deal average damage across the board, energy weapons deal extra damage to systems but are less harmful to crew, and explosive weapons are the reverse of energy. Turret weapons can attack in any direction, but fixed weapons require you to turn your ship until they are facing the enemy.

Crew and Power Management

The old crew and power system, despite being introduced very recently, has already undergone a massive overhaul. The old crew and power tab is gone from the ship management window, and instead you can allocate resources to systems by selecting them in the overview tab. Damaged systems will be automatically repaired for HP proportional to the number of crew inside, and to allow for this systems can now be overcrewed. When a system has more crew than it needs, it receives no extra bonus to its stats, but it will be repaired faster. You can also allocate more power than is available to your ship, however all power-consuming systems will receive a debuff. Additionally, crew and power changes now take effect at the beginning of the following turn for balance purposes.

The Academy station now also allows you to hire crew, up to the maximum defined by your crew’s quarters systems. This is free in the current version, but will be changed to have a cost later on.

Scrap

Scrap is a new player resource, similar to credits. Scrap can be bought or sold at shipyards, but the main method of acquiring it is by destroying enemy ships and salvaging the debris field left behind. This creates a reliable source of player income. Additionally, scrap can be used to repair damaged systems. At 1 HP/scrap, it is much more expensive than repairing at a shipyard. However, you can do it at any time and the effect is instantaneous, making it useful for situations when waiting for your crew to repair a system isn’t an option.

Other Stuff

In addition to countless bugfixes and a few balance tweaks, there are several smaller features that don’t deserve an entire section. Rather than list them all here, you can read the full changelog if you’re interested.

# A Quick Update

by support@brasswatchgames.com on May 26, 2014

It’s been multiple weeks since I last posted here, so I figured I should at least tell everyone what’s been going on. School has just finished a six-week period of one test after another, during which time I took an unannounced break from coding due to lack of both free time and inspiration (the latter being unrelated to the testing). However, with that over, I plan to resume working on Shipyard, and I hope to have the combat update ready within the next few weeks. Most of the heavy lifting is done and all that’s really left is bugfixing and content generation (for example I still have a couple weapon projectile/damage effects to finish up), so with any luck the rest should be smooth sailing.

# Shipyard: The Combat Update — Progress Report #9

by support@brasswatchgames.com on April 14, 2014

Man, these progress reports are almost into the double digits. I wish I could say the update was somewhere close to ready, but in truth there’s still a long way to go. In addition to numerous bugs and balance problems that still need to be ironed out, I still have to finish implementing the crew system. This includes crew deaths from attacking systems and the ability to replace lost crew by hiring new ones. Both of these are partially implemented (see below), but they’re not complete yet. The ability to send boarding parties to the enemy ship is also planned, but this will be implemented at the same time as shuttles, as it will require a special “boarding shuttle” to break into the enemy ship. Anyway, the changes:

Shuttle Shop

Speaking of shuttles, there’s a new NPC station in town. It’s currently a placeholder, and will be fully implemented along with shuttles. With all this talk of shuttles, perhaps I should add them in the next update (0.8.1), but for now we have 0.8.0 to think about.

FUN FACT: The name “Shady Steve” comes from an inside joke between myself and a couple friends. We developed a minigame in Minecraft somewhat similar to Sethbling’s “Building Game,” except instead of separate builds you construct small adventure maps with each person building an addition to the story before rotating. There are several other differences, but that’s beside the point. Anyway, whenever one of us needs a shop for our section of the map, it’s always called “Shady Steve’s Discount <something> Emporium.” Sometimes Shady Steve is an actual character, in which case he talks in laconically in broken English, which is where the tooltip description came from.

Crew Damage

Now, when a system is attacked, some the crew inside may be killed as well. The formula for calculating this is as follows:

$\frac{D_{b}K_{crew}C_{rem}(H_{max} - 2H_{rem})}{(H_{rem}) ^ 2 C_{max}}$

Where:

• Db is the base damage of the weapon.
• Kcrew is the crew damage coefficient. This what makes explosive weapons more dangerous to crew and energy weapons less so.
• Crem is the remaining crew in the system.
• Cmax is the maximum crew of the system.
• Hrem is the system’s current remaining HP.
• Hmax is the maximum HP of the system.

The result is then rounded to the nearest integer. Additionally, if the result is negative, the crew damage is zero. If the denominator becomes 0, it is changed to 1 to prevent horrible universe-ending math errors.

For you non-math geeks, the basics you need to know are:

• If the system has more than half of its max HP remaining, the crew are completely safe.
• The more powerful the weapon, the more damage it does to the crew.
• Explosive weapons kill more crew than ballistic weapons with the same base damage, and ballistic weapons kill more crew than energy weapons with the same base damage. (The reverse is true of system damage, where: Energy > Ballistic > Explosive.)
• The more crew in the system, the more likely they are to be killed.
• The more HP the system has, the fewer crew will be killed.
• There are no random numbers involved.

Further Revisions to Crew and Power

I’ve also once again changed the crew and power mechanics. The once-per-turn thing wasn’t really working out, partially because it made mistakes annoying and partially because there were some bugs in the way I implemented it. Now, you can change it as often as you like, but the changes will take effect at the beginning of the following turn. This neatly solves most of the problems with the previous system.

Along the same lines, I have made it such that you can now use more power than your ship’s reactor(s) can provide. However, doing this will apply an across-the-board penalty to all systems until you reduce your power usage. I did this because previously, if your reactor was attacked or you moved crew out of it, power would be taken from essentially random systems until there was no overdraw. This was very annoying and prone to bugs. Now, rather than try (and fail) to fix the problem itself, the ship simply continues to distribute power evenly. Changes have been made to the ship management window accordingly:

New Pirates and Pirate Spawning Mechanics

Giving the pirates the Gazelle I was a temporary solution before I designed unique pirate ships. Because you also start with the Gazelle I, that made fighting pirates extremely costly, especially now that crew damage is implemented. Now, I’ve created two entirely new pirate ships to replace it. The Scout is a very tiny ship, with even less HP and firepower than the Gazelle. It can move at 2 tiles per turn. Then there is the larger Corsair, which can only go one tile per turn but as a class 2 ship, it packs a much bigger punch.

Additionally, pirate spawning mechanics have been altered. No longer does a pirate spawn as soon as you enter a sector. Instead, these is a 1 in 20 chance that one will spawn every turn. The number of pirates per sector is still capped at 3.

Now that crew can be lost in combat, there needed to be a way to replace them. Thus, the Academy now allows you to fill your crew to its maximum capacity. There is currently no cost for doing this, and that will likely stay the case until a future update. No real need for a screenshot; it’s pretty self-explanatory.

# Shipyard: The Combat Update — Progress Report #8 (Revised 7 April 2014)

by support@brasswatchgames.com on April 7, 2014

Spring break is, sadly, drawing to close, but in the meantime I have got a couple big changes to show you. As always, these changes are coming in the next update and are not in the current version of the game. Anyway, let’s get on with it:

Scrap

The biggest change since last time is that I have implemented a new resource: Scrap. When a ship is destroyed, it will now leave behind a debris field containing scrap equal to 1/10 of its maximum HP. This can be collected by moving within one tile of them, selecting them, and choosing “salvage.” Scrap can also be bought for 10 20* credits per unit at the shipyard. Scrap can be used to repair systems instantly and without having to transfer crew at a rate of 1 HP per unit of scrap. This makes it far more expensive than repairing at the shipyard, but the ability to use it in the heat of battle will make it invaluable as pirates get stronger in later updates. Alternatively, you can sell it back to the shipyard for 8 15* credits per unit. By hunting pirates and selling their scrap, the game’s economy is now effectively sustainable.

New as of 7 April: When your ship is destroyed, you will lose an amount of scrap equal to the value of your ship. If you do not have that much scrap, your ship will only drop as much scrap as you currently have. This is to stop exploitation by suiciding repeatedly with the free default ship, harvesting the scrap, and selling it.

As of 7 April, after some testing, I decided to rebalance scrap slightly. It is now less cost-effective to buy, but will also be more valuable to sell. This is because, in my testing, the original selling rate of 8 credits per scrap was far too little to make a difference. One of the pirates’ standard Gazelle I spaceships yielded just over 1100 credits, which means that to upgrade to a decent class 2 ship from your own Gazelle would have required you to hunt upwards of 10 pirates. I want the game to be a challenge, but this felt overly grindy, especially for an early version with not much to do besides fight pirates.

Credits and scrap are now displayed in the top left of the navigation screen.

Debris field of a destroyed pirate ship.

Systems can be repaired with scrap in the ship management window.

Scrap can be bought and sold at the shipyard.

Build Cost

Building a ship at the shipyard now costs credits. The cost is equal to the sum of the costs all all the ship’s systems. However, the cost is reduced by the trade-in value of your current-ship. This is calculated similarly, but also factors in the remaining HP of each system. I did not add a depreciation value to your current ship, meaning there is no penalty for, for example, accidentally building the same ship twice without changing anything.

Dialog box shows after building a new ship.

After starting a brand new world, this ship is too expensive to build without raising a bit of money.

Other Changes

I have increased the threshold for ship destruction to 20% 40%* of its maximum HP. This is because, in my personal testing, I found that battles even with the tiny pirate ships tended to drag on as I was forced to individually destroy cargo holds and other unimportant systems. This would have been particularly annoying once larger enemies are introduced, so I decided to double the threshold.

* As of 7 April, after some testing with much smaller player ships, I decided that 20% was still far too low and still caused battles to drag on. It was quick enough with a massive ship like the one I’ve been using, but with a smaller ship it took ages even with considerably more powerful weapons. Thus I once again doubled the destruction threshold to 40% to prevent the game from dragging on.

Additionally, pirates will now only follow the player if they are within a 32 tile radius of each other. Again, this will help when larger enemies are implemented as some pirates will be easier, at first, to outrun than to destroy.

Finally, because the economy is now sustainable, the player’s starting money has been reduced to 10,000 credits. This will not affect old worlds, as starting credits are only applied at the start of a new game, but it will make the game more balanced going forward.