Brass Watch Games

Shipyard Development News 8 August 2014

by on August 8, 2014

It’s been a while since I posted one of these, mainly because I’ve been working more on the Sooper Seecret Tank Project than on Shipyard over the last couple weeks. However, as Shipyard is still the primary focus of this site at the moment, I figured I had better share what I have done.


A close friend of mine, who also happens to be an aspiring game developer (you can find his work here), suggested that I add this. He thought the current mouse controls were clunky (I didn’t mind because I mostly use WASD), and proposed an auto-move or auto-path system to set your ship to move to the selected tile. So, that’s what I added. In version 0.8.1, if you hold shift and right click, your ship will automatically move to the selected tile taking as many turns as it needs to do so. You can also cancel auto-move before it’s finished by hitting space.

Toggleable Map Grid

Another suggestion from my friend, he said the grid in the navigation screen was visually distracting. However, I argued that it was useful to know exactly how far away objects are from your ship. So, the solution? Make it optional. From now on, it is off by default but can be toggled with F2. F1, by the way, takes screenshots while F12 opens the debug screen. Speaking of which…

Debug Commands

Currently, the debug window is only an output log used to see what the game is doing at any given time. However, I’ve added a new functionality for the coming version: commands. Most games have them in some form, and I figured that Shipyard would benefit from than as well. The current commands are as follows:

  • help — Lists available commands.
  • describe <string>  — Describes a specific command.
  • givecreds <int> — Gives the player credits equal to the given number.
  • givescrap <int> — Gives the player scrap equal to the given number.
  • tp <int> <int> — Teleports the player to the given tile. First number is X, second is Y coordinate.
  • warp <int> — Warps the player to the given sector by ID number.
  • repair — Repairs the player’s ship to max HP.
  • fillcrew — Fills the players crew to capacity, but does not allocate them to systems.

Size Limit

The size limit that I talked about a while ago in my outline for 0.8.1 has also been implemented. Now, while in the interior view of the shipbuilding screen, there is a border that dynamically adjusts whenever you add or remove systems, regardless of where in the 48×48 grid you start your ship. As stated in the outline, the Class 1 ships have a size limit of 16×16, Class 2 ships can go up to 32×32, and the soon-to-be-added Class 3 will be able to use the entire 48×48 grid.

Armor Types

With shuttles on the way (though still not currently functional), I decided to implement light and heavy armor types. All weapons have a preferred armor type, and will receive penalties for attacking the wrong type. Currently, only the Twin Autocannon prefers light armor, while every other weapon prefers heavy. Ships are classified as heavily armored, while shuttles will be lightly armored. This means that, due to type penalties, the Twin Autocannon is more effective at dealing with fighters than some weapons with higher base damage. It has also had its base damage doubled to 24, making it just as (in)effective against ships but giving it a purpose in dealing with enemy fighters.


As I’ve already said, shuttles are still in progress and are not functional in-game items yet. However, I have made the sprites for a couple of them:

tashuttle lfighter


On the left is the Trans-Atmospheric shuttle, which will be used to send away teams down to the surface of planets as it can function both as a spacecraft and an atmospheric craft. On the right is the Light Fighter, a basic attack vessel which prefers lightly-armored targets (see above), making it ideal for intercepting enemy shuttles and fighters.

Right now, I am continuing to work on shuttles and hopefully I’ll have something usable in-game for the next one of these development posts.

Sooper Seecret Project Preview #2

by 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 ( — Available under a Creative Commons license.

Sooper Seecret New Project?

by 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.


by 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 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 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 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 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 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 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 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}}


  • 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.scrn_2014_04_13_1397448414933


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.