Since I started BWG, I’ve been posting development videos to my personal YouTube account, where they get mixed in with all the Minecraft mods and random other crap that I post. However, I’ve finally decided to do the professional thing and make a separate, “official” channel for all BWG-related videos. There’s nothing on it yet, but I’ve been considering starting up a weekly development news video series. If that happens, it would likely replace the “whenever I feel like it” development blogs I have going right now, although I may post a text summary or additional “footnotes” here to accompany the videos. As usual, nothing is set in stone just yet, but thus far I’m liking the idea.
I’ve been doing a lot of work on Shipyard over the past few days, and although Alpha 1.0 is still a long way away, I’m making progress much faster than I expected.
First and foremost, I now have free-form versions of weapon controls, crew’s quarters, and cargo bays implemented. In the case of weapon controls, it’s still very clunky because I haven’t done anything about the crew and power interface yet. However, the visual aspect is in and working even better than expected. You can see all of the new free-form systems in this screenshot:
Second, even though it wasn’t on my official outline, I’ve begun the process of adding a greater variety of systems and weapons to play around with, including the first class 3 ship parts. I started, or course, with the class 3 bridge. At 6×6 tiles, 3000 credits, 8 mass, and a crew and power requirement of 11 and 12 respectively, it’s quite a hefty system. However, the advantage is that you can use the full 48×48 build space as well as any of the new class 3 parts currently in development.
As for weapons, I’ve been adding new weapons as well as going back and redesigning old ones. I’ve completed the gauss cannon set, with new textures for the existing small and medium variants, plus new large and “mega” versions. The mega version is 8 by 8 tiles in size, require 16 weapon control to fire, and deals 240 damage per shot. As such, it takes the crown of highest single-shot damage from the Railgun.
Additionally, I’ve added a turreted torpedo launcher. It does the same damage as the regular one, only it has a turret. In exchange, it has a higher complexity rating and it physically larger (5×5 as opposed to 3×3). It looks like this:
I’ve been spending a lot of time building ships with these new parts, but I’m quickly realizing the limitations of the current build screen. As such, the new ship-building screen is going to be high on my priority list over the next few days. I’ll also be expanding and revising the plasma cannon family, as well as adding some new weapons. One thing I’ve been considering is a set of non-turreted ballistic weapons which are smaller and less complex, in exchange for losing the turret. Far-future ships-of-the-line, anyone?
Okay, I’ll admit that I didn’t get straight to coding after I posted my outline for Alpha 1.0. That’s because, at the time, it was nearing the end of the school year and teachers were doing their very best to cram as much busywork as they could possibly into that last month and a half. Now, however, the school year is over, and I’ve got no shortage of free time–some of which has been spent working on Shipyard.
If you read–or even skimmed–my rambling, essay-length outline, you’ll know there’s a lot to get done before Shipyard is ready to go into alpha. So, I figured I’d start at the top with free-form systems. Before I wrote the first line of code, it took a lot of thinking and scratch work to figure out how I was going to implement it. I’ll spare you the details, but suffice it to say it took a several sketches in Paint.net and a considerable amount of math to nail down. Once that was done, I was ready to start coding. The first system to get the free-form makeover was the humble corridor. While not the most exciting system in the game, it is the simplest, which made it a good starting point to get the concept locked in.
Here’s a short video demonstration of the new free-form corridors:
So how do free-form systems work? Well, I’m glad you asked! Behind the scenes, free-form systems are actually discrete 1-by-1 systems, which change only in appearance when placed next to neighbors of the same type. This is especially easy for corridors, which have no stats, no hitpoints, and no crew or power requirement.
But what about systems that do have a crew and power requirement? Nobody wants to individually allocate one crew member or power unit to thirty separate tiles of the same system! The solution: tie crew and power to types of systems rather than individual tiles. Once implemented, this means you only have to allocate crew to weapons, engines, etc. in general, and the game will handle the rest.
Well, that’s it for today! Check back soon, because I plan to be doing a lot of work on the game this summer.
Now that I’ve fixed my server troubles (or, at the very least, delayed the inevitable), I can get back to work on proper, content-adding updates for Shipyard. I’ve been giving it some thought, and I feel like it’s ready to proceed from the “pre-alpha” stage into the “alpha” stage. In a tradition that I started with version 0.8.1, this post will serve as a general plan for the new features and content coming in Alpha 1.0. As always with these early plans, anything written here is subject to change.
WARNING: Wall of text inbound!
Free-Form Systems (And Related Changes)
Currently, all types of ship systems come in fixed sizes. This limits the amount of creativity you can have when building ships, for no real logical reason. Thus, for Alpha 1.0, many systems will be changed from fixed sizes to being free-form. Adjacent tiles of the same system will automatically merge into a single system. Stats will be calculated by some base value times the number of contiguous tiles. Crew’s quarters and weapon controls will definitely be changed to this mechanic. Bridges and engines will definitely remain fixed. Other types may or may not be changed to free-form depending on how the implementation takes shape. Cargo bays and corridors are already essentially free-form, and all they need are new textures. In order to make this work, however, some major changes will need to be made to several game mechanics.
Although I could, with the current system, simply make a 1×1 version of the weapon controls system, crew and power management would be a nightmare. You would have to manually allocate a single crew member to each individual tile. With the new free-form mode, crew will not be allocated to individual systems but rather types of systems (weapon controls, engines, etc.). In Alpha 1.0, crew assigned to a system will be considered to be “working” the system, meaning they are actually operating it rather than repairing it. Free crew will automatically repair all damaged systems evenly, and will not contribute to the effectiveness of the system. You will also be able to tell your free crew to “focus” on a particular system type if you want it repaired at a higher priority. There will be a cap on the maximum rate of crew repairs to prevent players from spamming crew’s quarters for invincibility.
Hitpoints and Weapon Damage
Another problem with simply having separate 1×1 systems is damage. Damage to a system when it already has 0 HP is wasted, and with small systems, weapons like the railgun would be a pointless waste of weapon control points. In the new system, damage will be dealt to individual tiles rather than whole connected systems, and extra damage will be spread out to adjacent tiles. The HP of a system type will be based on the combined HP of the individual tiles that comprise it. Crew damage will work similarly, with the total being calculated by some sort of population density formula. I don’t want to go into too much detail, but in general, more weapon base damage still means more crew damage.
Overhauled Ship Editor
The ship editor was literally the first part of Shipyard I developed, way back in summer of 2013. Back then, you couldn’t even save and load your designs, never mind actually build and use them in the game world. Despite the progress the game has made since then, the ship editor has remained largely unchanged aside from adding a few extra buttons. In my own personal experience playing the game, I have started to find it clunky and annoying to use. Now, I think we can all agree that if the developer finds their own game tedious to play, some changes are in order.
Problems with the Current System
- The viewport, at 16×16 tiles, is very small and annoying to work with when designing large ships.
- The system and weapon lists force you to hover over each item to see what it does, since they don’t show any stats. They’re also incredibly disorganized, listing things in the order they were added to the game rather than by any sensible system such as alphabetical by name, by minimum ship class, by stats provided, and so on.
- The exterior editor requires you to click on each tile you want to change, when quite often you want to cover a large area all at once.
- The stat panel to the right isn’t very useful. It’s just a big pile of numbers that eat up screen space but don’t have much relevance to gameplay.
- The save/load/build/etc. menu buttons also take up a lot of screen space. Surely they don’t need to be visible 100% of the time, considering how infrequently they’re used.
- The interior, exterior, and weapons view buttons are similarly much larger than they need to be.
- This only really affects me, but behind the scenes, the ship editor is coded like… well… like I coded it a year and a half ago. I’ve improved greatly as a programmer since then, but the ship editor remains an inefficient fossil of my less-experienced self.
Changes for Alpha 1.0
- The building grid will take up the majority of screen space, with other components being arranged to maximize the use of space.
- System and weapon lists will be organized to show items in some meaningful order. They might even allow you to change the order, similar to the way you can sort files in Windows Explorer.
- The exterior view will allow you to “paint” tiles by clicking and dragging, allowing you to edit large areas without giving yourself carpal tunnel syndrome.
- Stats will be moved to a separate tab alongside interior, exterior, and weapons. They will also be changed to be more relevant to the game in its current form.
- The save/load/build/etc. menu will be changed to a window that can be opened when you need it and closed when you don’t.
- The buttons to change between the interior, exterior, weapons, and now stats screens will be changed to a tabbed menu like the one in the ship overview window of the navigation screen.
- Everything will be rewritten from the ground up to be more efficient behind the scenes.
I mentioned in my outline for the last update that officers might be coming in 0.8.1. However, with all the problems with implementing shuttles eating my time, I never even got started on them. Now, I’ve decided to make them a possible feature of version Alpha 1.0. Officers are characters that act a bit like upgrade items, but with a few key differences.
- You can hire as many officers as you have Officer’s Quarters systems, similar to shuttle bays.
- Officers are people. People must be kept happy. Thus, if you want your officers to provide the best bonuses, you will need to keep them happy. Some might not take kindly to excessive violence. Sometimes two officers won’t get along with each other (for example, a pirate and an ex-space-cop). All of them, however, will need to be payed.
- The stat bonuses provided by officers will be generally better than those provided by upgrade items.
- Officers will be randomly generated, unlike items which are hard-coded.
- Officers will earn experience toward improving their stats, while items are fixed.
Shuttles for Real, Maybe
Shuttles didn’t make it into the last version due to unexpected troubles in their development. Finally, after five months, I decided to cut them from the update and release what features I had completed. With so many fresh, new features to work on for Alpha 1.0, I can’t promise they’ll make this update either. However, the progress I made is still there, just hidden, so anything’s possible.
Other Potential Features
Free-form systems and the new shipyard editor will be the main features of Alpha 1.0, but along with them I have some other ideas which I’ve been tossing around. These may or may not make it into the update depending on how much time they take.
- New items which are not available in stores, but instead must be crafted from scrap and other items. Because of the added difficulty of acquiring these items, they will be generally better than those easily purchasable in shops. One possible way to do this would be to have a “workshop” system, which would craft items faster the more crew and power were assigned to it.
- A second hotbar on the navigation screen, this time to the right of the HP gauge to make it symmetrical, to which items and shuttles can be assigned for quick access without having to go into the cargo hold and shuttle bay menus.
- Character skills for your character, making them essentially a free officer. This might involve some sort of skill tree and/or XP system–I haven’t thought too much about the finer details.
- Changes to the way the inventory system works, with each cargo bay storing one item as opposed to one kind or item.
- Changes to the way spaceship data is stored and saved to fix bugs like enemies spawning with less than full HP and reduce the size of ship data files.
- Sound effects. With the inclusion of Paul Lamb’s sound library, a solid framework for playing sound effects is already in place. All I need to do is add them.
- Exterior armor. This will allow you to make a system more resistant to damage, at the cost of increased weight (and therefore ship speed).
- Crew injury and medical bays. When a system is attacked, crew may be merely injured rather than killed. The medical bay will be a new system which can heal them after a certain number of turns.
First of all, congrats on making it this far through my wall of text. Unless, of course, you just scrolled down to the bottom. Don’t worry, I’d probably do the same. Either way, I’m excited to get to work on Alpha 1.0. As it will be a huge update with many changes, it will probably take a long time to complete. However, once released, the result will go a long way toward a finished game. I’ll keep posting here as I begin to implement the new features, but until then, happy building!
…dang that last bit sounded cheesy.
That’s right, folks! After five months, version 0.8.1a is finally ready to go! As always, it is available both as a full download and through the launcher. Despite the long wait time (which was at least partially my fault, as I’ll explain below), it is only a minor bugfix update to get rid of the crippling “negative crew” effect experienced by some players. Development of actual content updates will resume soon, and I already have some fresh new ideas for how to improve the game. Anyway, I feel I should explain what actually happened:
After several months, what was originally meant to be a “hotfix” is now a very, very cold fix. After doing a considerable amount of mucking around with FTP, it seems there is a sooper seecret limit on the file size that can be uploaded. When the music was added, I rather naively included in in full, uncompressed .wav format because it was the easiest to use from a coding standpoint.. However, this inflated the game size from a meager 790 kilobytes to over 100 megabytes. For those of you not familiar with nerd jargon, that’s almost 150 times larger. The limit just so happened to be large enough to allow me to upload one such file, but not two. While I can’t do anything about the storage limit, I can convert the music to a smaller file type. This will allow me to upload version 0.8.1a and subsequent versions. However, it isn’t entirely future proof, and there may come a time when the sooper seecret storage space quota comes back to bite us in the hind quarters once again. To help delay the inevitable, once version 0.8.1a is uploaded, version 0.8.1 will be deleted from the server. This shouldn’t be too much of an issue since 0.8.1’s bugginess is the reason for the new version to begin with.
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.
Unlike Shipyard and everything else I’ve made, I wrote this game in C++ rather than Java. I have continued to develop it even though the class ended months ago, with the most noticeable new feature being collisions between tanks and the grey blocks (tanks also collide with other tanks, but that is not demonstrated in the video). Unlike many 2D tank games, I went for some degree of realism. For example, each side of a tank has armor of a different thickness (based on historical data), and you can angle the tank to increase its effective thickness. If a shell hits but has less penetration than the effective thickness of the armor at the point of impact, no damage will be dealt. I even included the effects of drag on the shells, though the (currently) limited map size means this makes little difference.
Currently, this is about all there is to the game. The enemy AI could be rather generously referred to as “limited,” and the gameplay is, despite its novelty, not hugely exciting. That said, I have plans to expand it into a fully-fledged game. I want to include larger maps, more tanks, and perhaps more importantly a proper user interface. Once the basics are in, I want to add the ability to have preset scenarios and even entire campaigns, AI-controlled ally tanks, modding support, and maybe even (gasp!) online multiplayer.
The server problem which was preventing me from uploading Shipyard version 0.8.1a is, apparently, still an issue. I tried again to upload the update today (24 Jan. 2015) and it seems waiting for it to sort itself out isn’t going to help matters. It’s bad enough that this is occurring with a pure bug-fixing update like 0.8.1a, but it also means that I can’t release updates containing new content or entirely new projects. Right now I don’t have a fix for the problem, but I will look into various options.
Someone found a bug in 0.8.1 whereby enemy ships could kill nonexistent crew, thereby causing a system to have a negative number of crew inside. This, in turn, would cause the system to be “negative repaired” by five times the number of anti-crew per turn. This would cause systems to have negative hitpoints, making them exponentially more susceptible to crew damage. If crew were not manually reassigned, the negative HPs of the affected system would cause the ship’s overall HP to drop below the critical 40%, causing it to be destroyed.
I have fixed the bug, and the update to address it is uploading as I write this. It should be available for download
within a couple hours eventually (see below). The launcher will detect it automatically when it’s ready, but if you downloaded the full archive, you’ll have to manually reinstall.
EDIT: For reasons unknown to me, the server is rejecting the update every time I try to unload it. I will try again in a few hours and, if that fails, sometime tomorrow. Until then, unfortunately, you will have to put up with the bug.
EDIT #2: As of 25 November, the server is still rejecting the update. In the meantime, I have found that breaking contact with an enemy (moving >1 tile away so they can’t attack) and manually setting the crew in a negative-crew system back to zero will stop it from decaying. Then, repairing it by actual positive crew repairs, scrap, or at the shipyard can bring its HP back into the positive numbers.
After more than five months of development, I’ve decided to release version 0.8.1. I finally made the decision to push shuttles back to a future update, as holding back 0.8.1 until they were finished would have meant another month or more without an update. Nevertheless, version 0.8.1 has plenty of new material to keep you going in the meantime.
Downloads are on the Shipyard official webpage.
NOTE: The drastically increased file size of the new version has caused problems with the launcher. I have updated the launcher with a fix, but it will not be automatically installed. If you get a message saying “The files received from the server are corrupted,” redownload the launcher and try again.
Items are now usable, and are divided into two categories: consumables and upgrades. Consumables are once-use items which provide a temporary effect. Upgrades provide a permanent effect as long as they are installed. Technically, you are only allowed 8 upgrades at a time. However, there aren’t yet 8 upgrades in the game, and you can’t stack two of the same upgrade.
Some old items have been removed, and a few new ones have been added. I didn’t get as many as I would like, but since the code is in place, it’s only a matter of coming up with ideas for new items to be added in the future.
The cargo hold window has also been improved. Now, items are shown as a scrolling list which, unlike the fixed-size window of the previous version, allows for more types of item to be added to the game.
Improved Navigation Screen UI
The navigation screen has received a bit of a makeover on 0.8.1. Instead of the chunky buttons of the old version, your abilities are now available from a snazzy hotbar at the bottom left of the screen. Likewise, your ship’s hitpoints have been changed from a bit of text at the top of the screen to a visual gauge at the bottom. The gauge ignores the bottom 40% of your ship’s hitpoints, as 40% is the threshold for ship destruction (thus, the gauge will appear “empty” at 40% of your max HP and “half full” at 70%). Additionally, any active consumables you have will be displayed at the top of the screen, along with how many turns are left on each one.
Though non-functional at the moment, there is now a window where you can view your character and their personal skills. These skills have no effect yet, but will be implemented in a future update.
There is now background music for the game. Written by my good friend Jesse, there are currently three tracks. One is ambient and “spacey,” and plays in the navigation screen when there are no enemies visible. The second is the battle music, which plays in the navigation screen and battle screen when there are enemies visible. The third and final song plays in the Shipyard screen while editing your ship. This has also warranted the inclusion of an options menu to control the volume of the music and a credits screen because more than one person has worked on the game.
Ship Size Limit
Because a giant blob of tiny class 1 parts is just plain stupid, there is now a size limit on each class of ship. Class 1 ships can be no larger than 16×16 and class 2 are capped at 32×32,.When class 3 parts are eventually added, class 3 ships will get the full 48×48 workspace.
At the request of a friend of mine, I’ve added the ability to have your ship automatically move to the position of the mouse by shift + right clicking on the navigation screen. Later, it turned out that he didn’t realize you could just use WASD, but the feature was already implemented by then.
Balance and Bugfixes Galore
Plenty of smaller changes for game balance as well as bugfixes are also included in 0.8.1. There are too many and I am too lazy to list them all here, but you can read about them in the full changelog.
After going back over the features that still need to be completed for Shuttles to be ready to use, I’ve decided that there’s still a lot of work to do. I was hoping to have the update ready this weekend, but even if I worked around the clock to get shuttles implemented, the feature would still be rushed and buggy. Version 0.8.1 was never meant to be a massive update, and the fact that it’s taken five months already has led me to decide to push shuttles back to a future version. Shuttles were listed as a tentative feature from the very beginning, so as disappointing as it is, you can’t say I didn’t warn you. I would think that releasing an update without a single interesting feature is better than delaying every feature on account of it (hence the title of this post).
Version 0.8.1 will still contain all of the following:
- Debug commands
- Auto-path to selected tile with shift + right click
- Working items, including one-time consumables and permanent upgrades
- Some old items removed and some new ones added (though not as many as I was hoping for)
- Scanner range stat determined by crew and power in ship’s bridge
- Size limit of 16×16 for class 1, 32×32 for class 2, and 48×48 for class 3 (when implemented)
- Background music
- Options menu (currently, it only has volume options)
- Improved navigation screen UI
- Efficient world saving and loading
- Rebalanced crew damage
- A metric butt-ton of bug fixes and minor rebalances
I still have some finishing touches and clean-up work to do before releasing the update, but you can expect version 0.8.1 to be released sometime this weekend–maybe even later today if everything goes smoothly.