Brass Watch Games

Shipyard Development News 9 Nov. 2014

by Jonah on November 9, 2014

I can finally say that I’ve actually made good progress on shuttles since my last post! I’m still far from finished, as I’ll explain below, but progress is actually happening. Here’s what I’ve done so far:

  • There is one type of shuttle implemented: the Light Fighter. It can be sent to attack an enemy ship. After it has completed its attack, it will turn around and make its way back to your ship.
  • Your ship can store a number of shuttles equal to the number of shuttle bay systems placed on it.
  • When saving and loading the world, your ship will save any shuttles currently stowed in the shuttle bay. Any of your shuttles that are deployed in the world will remember that they belong to your ship, so they can be reclaimed later.
  • If a shuttle runs out of fuel, it will be unable to move, and can only be reclaimed by ending your turn with your ship within one tile of it.
  • You may only leave your current sector if all of your shuttled are stowed aboard your ship.
  • Shuttles will check to make sure you have enough crew before launching.

Here’s what still needs to get done:

  • There is no GUI yet for viewing and launching shuttles. Right now, this is done with debug commands.
  • The shuttle shop is still non-functional. Giving shuttles to the player is also done with a debug command.
  • There is only one type of shuttle (the Light Fighter described above). I plan to have at least two more by the time the update is released.
  • The Light Fighter defaults to attacking the target ship’s bridge. There is no way to target another system at the moment.
  • Enemies cannot use shuttles, and even if they could, shuttle-to-shuttle combat is not implemented.
  • Ship-to-shuttle combat (that is, a full-size ship attacking an adjacent shuttle) is also not implemented.

EDIT: In addition to the progress on shuttles, I’ve also been working on improving the navigation screen. Here’s a screenshot:

scrn_2014_11_09_1415571302837

  • In the top left, just to the right of your credits and scrap, is a list of your currently active consumables and the number of turns remaining on each one.
  • On the bottom left is a hotbar, which replaces the giant, chunky buttons of the current version. From left to right, the icons are: Cargo Hold, Sector Map, Shuttle Bay, View Ship, and View Character.
  • In the bottom center is a hitpoint gauge. Since ships are destroyed at 40% of their maximum HP, the gauge will show “zero” at 40%.
  • I believe I’ve already shown this, but in case you missed it, the ring in the middle of the screen is your “scanner”. Objects that are within your scanner range will appear as color-coded arrows around the edge of the ring. In the new version, the scanner range stat is provided by your ship’s bridge, meaning there is now a reason to allocate crew and power to it.
  • For those of you like me whose brain goes crazy at the lack of symmetry with the hotbar only on the left of the HP gauge, don’t worry: I’m planning to have a second hotbar to which you can bind consumables and shuttles for quick use.

Shipyard Development News 16 Oct. 2014

by Jonah on October 17, 2014

It’s officially been ages since I last posted anything here, so I figured it was about time I posted something. I’m going to be honest here: update 0.8.1 is coming along much more slowly than I’d hoped due to a combination of factors. The first is that, with school butting its way back into my life uninvited, I have very little free time. Another is that the shuttle system, as I explained in an email to an inquisitive fan (is that the right term? It feels weird but I can’t think of a better one), is proving to be a real pain in the rear. Unlike items, systems, and weapons, which are essentially just lists of statistics, each shuttle has a unique behavior that warrants its own activation mechanic (e.g. targeting an enemy vs. targeting a planet) and AI behavior once in the world. As of yet, I’m still only laying the ground work so I don’t really have anything interesting to show you in that department. However, I do have a few smaller features to show off:

Dynamic World Loading

Until now, when you loaded up a previously-saved game, the world would read all of the data for every sector into memory, then not touch it again until you closed the game. This is fine right now while the game has very little content, but would only cause problems as it grew in scale. So, for version 0.8.1, I have altered the way world loading works such that only the current sector is kept in memory at any given time. When you warp to a new sector, the old one is saved and the new one is loaded in. This will prevent the game from becoming hogging more RAM than it deserves as it becomes more complex. The new system has, however, made the “Quit without saving” option obsolete, thus it has been removed from the pause menu.

Character Window

In the current version, after you initially create your character, you never see him or her again. Even though character skills and stats are not coming in version 0.8.1, I decided I’d add a character screen in anticipation of when they do. It’s pretty primitive at the moment: just a picture of your character and the one (non-functional) skill they get from the background you chose for them. It is accessible from the navigation screen.

Options Menu

I can’t remember if I mentioned this already, but it’s pretty important so I might as well make sure. The game now has an options menu, available currently only through the main menu. All it has at the moment is a slider to adjust the music volume, but I plan to include options such as resolution and full-screen mode in future updates.

Rebalanced Crew Damage and a New Item

In the current version, the crew damage formula makes energy weapons far too powerful. They’re supposed to do less crew damage than equivalent ballistic or explosive weapons, but because crew damage scales inversely with the target system’s HP, attacking a system at low enough health will, without fail, kill all crew inside of it. Because energy weapons do more HP damage, they are also the fastest way to get a system’s hit points down to zero, swinging the balance even more in their favor to the point where ballistic and explosive weapons (with the exception of the railgun solely due to its massive single-show damage) are almost completely obsolete. Additionally, because the AI allocates crew to the ship’s reactors before all other systems, attacking those even with weapons as weak as the Twin Autocannon will allow you to rapidly drain the crew from the enemy ship. When the ship runs out of crew members, it will be destroyed regardless of its remaining hit points. While this is an intended functionality, victory by this method is supposed to be much more difficult than it is. As such, a few big changes are being made to the system to try to deal these problems:

  • The crew damage formula is being tweaked to place a limit on the number of crew an attack will kill. Crew will still be more vulnerable in systems with less HP, but it won’t allow for the sort of disproportionate massacres that you get in 0.8.0.
  • A “crew survivability” stat has been added, allowing you to reduce the damage that can be done to your crew by various methods. One such method is a new item: Armored Uniforms. This upgrade, when equipped, will reduce the damage your crew takes from enemy weapons.
  • All weapon types are having their crew damage multiplier value drastically reduced. Explosive weapons now have 1.0 (from 2.0), ballistic weapons have 0.25 (from 1.0), and energy weapons have 0.05 (from 0.25). These numbers don’t mean much out of context, but you can at least see how relatively dramatic the changes are.

There’s more to it than that, but a majority of the other changes are boring, behind-the-scenes stuff that doesn’t make for a hugely interesting read. Additionally, I’d like to post this while it’s still technically October the 16th, as it’s getting rather late on my side of the world.

Shipyard Development News 8 August 2014

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

Auto-move

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.

Shuttles

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

scrn_2014_06_18_1403139780680

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.

scrn_2014_06_18_1403139789334

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