I’ve just wrapped up a pretty nice bugfixing sprint. Besides the obvious of fixing bugs that needed to be fixed, I also got some things into place that will make it easier to implement some final features that are required to get to a closed beta!
Masteroid does a lot with dynamic coloring of graphics. Ships, weapons and other sprites are colored at runtime based on their faction, power and other factors. There was an issue where purchasing a new ship resulted in engines and turrets that were not colorized. Another bug where station menus were not showing accurate turret counts for ships turned out to all be related. I overhauled how the UI is updated based on the game state and it’s now much easier to see what’s going on.
While looking into a bug with purchasing ships not updating the saved game, I realized that players do not get the trade in value of their turreted weapons when selling their ship so I fixed that too.
I made major targeting improvements so that ship turrets now target a single point instead of just aiming in a direction. This means that AI (and player) ships with multiple weapons are now a lot more accurate.
The ship menu UI was showing bad icon images for ships. That’s now fixed and also resulted in a filed feature request with the creator of FlatRedBall and Gum (the engine and UI tools used in Masteroid). I still have some weird issues with the fonts on the ship menu being blurry but that is on the task list to fix.
I made some major improvements to how game data is loaded. This was a big step towards release because several of the features remaining are related to loading game data from a central server. This will allow me to add or tweak game content without forcing players to update the game.
Finally, I made huge improvements to how player death is detected and fixed a lot of generally goofy code. This led to docking improvements too. Ships now heal while docked and AI should not attack the player when they are docked.
Overall I had a some highly-productive code sessions and the Trello list to get to the beta is now mostly features instead of bugs!
As I move closer to the closed beta and work through my task list, I’m trying to make time to write some dev updates!
The most exciting thing that happened this week was a tweet, site and tumbler post by Alpha Beta Gamer. I got a lot of visits to the site and more signups to the closed beta. Nothing keeps me motivated like users wanting to check out the game!
Last night’s focus was improving the general ambiance of Sectors. I had a twitter conversation with indie aficianado Heiny Reimes recently and his main point of feedback was that space was visually boring. This was mainly because I hadn’t gotten to adding interesting art but it also made me put more thought into how to make Sectors distinct but also retain some elements of randomness. Space does change.
I created a Decor entity with some basic behaviors. I created a data model representing a decor object. I implemented the new data model into the Sector data model and started playing with game data to add decor elements into the Home Sector.
Another thing I did was experiment with aliased (hard-edged pixel art) vs anti-aliased. I originally intended for this game to have fairly high resolution but hard-edged pixels. But with the background art implemented, it looks way better to have nicely aliased, high-res art. This allows for blurry planets and stars that make space feel deeper.
Now that the majority of game features are in, I’m spending a lot of time tweaking art and content. The majority of my workload from here on out is really finishing the content creation. I need to define new weapons, ships and sectors that give the player a nice progression curve. I need to add some interesting art and more ships.
Unfortunately, I also have to do a lot of “boring” stuff like finish game menus, title screens, etc. I also have to do platform-specific stuff like game cursor and make sure it actually runs on non-dev machines!
I often create art but then wonder what it’ll look like with post processing effects such as Bloom. Bloom is not a single effect, it’s actually a stack of 3 effects in 4 passes. Here’s how Bloom is created:
Engine renders the scene to a buffer
A copy of the buffer is made and an “extract” filter is applied (pass #1). The extract filter makes the darks much darker and the highlights very bright, thus “extracting” the light parts of the scene.
The copy of the buffer is then gaussian blurred. The amount of blur determines how much light halo the bloom has. Blur is two passes, horizontal and vertical.
Finally, the copy is Additively blended with the original to produce the final scene. The opacity of the copy during this process determines how strong the bloom effect is
You can simulate this in Photoshop by:
Making a copy of your whole scene just like the game engine would:
CTRL + A to select all
CTRL + SHIFT + C to copy merged
CTRL + V to paste a new flattened layer
CTRL + L to open levels
Adjust both edges towards the middle until darks are very dark and lights are very light
A good friend of ours runs Go Slo Wyo, an apparel company focused on a “slow down and take it all in” lifestyle. Not only does she run a cool company, she also volunteers for Needs Inc, a local non-profit that helps provide the underprivileged with basic necessities.
Now she’s doing even more! She reached out to my wife and I late last year asking if we’d be interested in doing some art for her clothing with the profits to be donated to a charity of our choice. We created two designs that are now available at her shop.
Last year my good friend, Victor Chelaru had the idea to try to build a small video game in a single month. The goal was to create a game that was fun and polished, but also to identify and fix workflow problems and bugs that slow down the dev process.
We tabled the idea for a few weeks but resurrected it in December. On Dec 19 we committed our first rough ideas to github, determined to finish a small game by Jan 19. We wrapped it up on schedule! I’m proud of how it turned out. It looks neat, is fun to play and was accomplished in a very short amount of time.
This game is open source and uses the FlatRedBall game engine. It’s also a free starter project built into the FRB tools.