Jump to content

  • Log In with Google      Sign In   
  • Create Account

Brass Watch Games Development


nananananananana BOAT MATH! Surface-based shipbuilding game "tech demo?"

Posted by , 21 January 2017 - - - - - - · 393 views

This is a project I started in Unreal Engine 4 a while back, got fed up with, dropped for a few months, and finally came back to. The project began in a Discord channel of a role-playing group for a game called From the Depths. FtD had some good ideas, but it's clunky, unrealistic, and not very well balanced. Our group in particular found it unsuitable for the early 20th-century-style naval battles we wanted to simulate. This is my attempt to do better. Needless to say this is pre-pre-pre-alpha footage and there's a lot to be done before it's ready for public consumption, but I'm quite proud of what I have so far.



The major difference of this game versus every other 3D ship construction game I can think of is that it scraps the voxel system for what I'm calling a "surface" system, because it works by placing flat surfaces whose endpoints are on a grid. This has a few advantages that made it ideal for the kind of game I want to make:

  • Less performance drop with large constructions (a few large plates vs. thousands of small blocks in a voxel system)
  • More room for player creativity as you're not limited to a finite palette of blocks
  • Lends itself to realistic physics and damage models


Also, since the video went up I improved the texture mapping on the meshes and added a preview of the surface you're currently placing to the UI:
Posted Image
Posted Image


Here are some references I used for the math:
Per-triangle buoyancy that doesn't rely on knowing the volume
Equations to generate realistic waves
Implementation of the above in an Unreal Engine 4 shader

Best School Project Ever

Posted by , in Side Projects 16 February 2015 - - - - - - · 1,099 views

I recently took a C++ class at community college. As part of the final exam, each student was to create a “sampler project” showcasing what they had learned. I play both World of Tanks and War Thunder, and have watched Girls und Panzer more times than I care to mention. You might say I have a passing interest in tanks. This project gave me the perfect excuse to do something with that interest. It’s not much yet, but I have big plans for it.

You can read a little more about the project on my website.

Shipyard Pre-Alpha 0.8.1 Released!

Posted by , 22 November 2014 - - - - - - · 1,724 views

It's been more than five months since I started working on this update. I never intended it to go on this long, but trying to implement shuttles increased the development time drastically. Eventually, I decided to push shuttles back to another update and release the new version with the feature that are working. I'm not going to rewrite everything I've already said once, so if you want to read more about the update, you can see my blog post here.

To download the update go to the game's official page. You can either download the full game archive, the launcher which will automatically check for future updates.

NOTE: The increased file size of the new version caused problems with the old launcher, so I had to update that as well. If you get an error with the launcher saying "The files received from the server are corrupted," redownload the launcher and try again.

Shipyard Development News 8 August 2014

Posted by , 08 August 2014 - - - - - - · 835 views

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 my primary focus, 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. By the way, F1, 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:
Posted ImagePosted Image

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

Posted by , 25 July 2014 - - - - - - · 880 views

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 from Brass Watch Games

Posted by , 22 July 2014 - - - - - - · 717 views

Recently, I've been working on an up-to-now secret project in addition to Shipyard 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 yet, 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. The code is, at this point, cobbled together from various tutorials, but as I get more used to OpenGL, I find myself relying on them less and less. The next step will probably be to add some sort of simple game world and make the tank actually playable. I already have various plans for the finished product, but I'm going to keep those to myself until I'm certain I can actually make them happen.

Shipyard Combat Update Released!

Posted by , in Shipyard Development 06 June 2014 - - - - - - · 689 views

Shipyard version 0.8.0 or "The Combat Update" has just been released! As the largest update the game has ever seen, there is too much to discuss in one post. You can read the abbreviated version on the Brass Watch Games blog or see the full changelog at the bottom of the game's page.

If you already have the launcher, the uodate should be ready for download. Otherwise, you can get either the launcher or the full client archive from my website.

Posted Image
Posted Image

Progress Report #8 Now Live

Posted by , in Shipyard Development 06 April 2014 - - - - - - · 768 views

EDIT 7 April: The progress report post has been updated to include a few balance changes introduced after some personal testing. These include further increase of the ship destruction threshold and higher prices (both buying and selling) for scrap.

The combat update is still far from finished, but it's coming along nicely. Since last time, I have made a couple big changes including the addition of an entirely new resource: Scrap. Scrap is dropped by destroyed ships and is used for repairs or can be sold back to the shipyard. You can read more about it on my website.

Posted Image
Posted Image

New Progress Report on Website

Posted by , 01 April 2014 - - - - - - · 761 views

There's a new progress report posted on my website. The latest changes include crew repairing systems, improved crew and power distribution, and pirates which actually fight back. Expect to see more news over the next week, as school has gone on spring break meaning I actually have some free time to work on game development.

Posted Image
Posted Image
Posted Image

Shipyard: The Combat Update -- Video Preview

Posted by , 15 March 2014 - - - - - - · 735 views

Today, I worked on adding animations to ship combat in Shipyard. I only have two so far, but more are coming soon. Here's a video showing them, along with various other features of the update: