Tuesday, November 28, 2017

Cosmoteer 0.13.1 - Perimeter of Death!

Cosmoteer 0.13.1 has just been released! The majority of changes are bug fixes, but there are still a couple of nice other improvements:

First, this update adds to multiplayer a feature called the "Perimeter of Death". This is a giant circle around the battle area that will quickly damage and destroy any ships that stray outside of it. It is intended to reduce the effectiveness of "kiters" (ships with long-range weapons and lots of thrust that simply stay out of range of enemies) as well as prevent players from simply running away indefinitely.


The other feature is something that a lot of players have been asking for: a "sort" function for the Ship Library. Now, players can sort their ships by name (the default), cost, crew, or date modified.


Sunday, November 12, 2017

Cosmoteer 0.13.0 - Multiplayer!!!

Given the lack of updates for the past couple of months, you'd be forgiven for thinking that I had stopped working on Cosmoteer. Thankfully, you could not be more mistaken!

I've actually been working on one of the biggest new features in the history of Cosmoteer: Multiplayer!

Those of you who have been following Cosmoteer for a really long time probably know that the original prototype versions had support for multiplayer in which players could design ships and battle them with their friends. But I realized that having to support multiplayer was dramatically slowing down the development of Cosmoteer, including development of singleplayer-only features. And so I removed multiplayer support from the game's code, hoping (but not expecting) that one day I would be able to bring it back.

Well, that day has arrived! I am incredibly proud and excited to announce that multiplayer is returning to Cosmoteer!

In this first version, multiplayer is a simple team-versus-team battle of up to 8 players spread across two teams. Each team has a certain amount of money (configured by the host) to spend on a fleet of up to 5 ships per player (or fewer, as configured by the host). Then the game starts and the players control their own ships, attempting to destroy the other team's fleet. The game ends and one team is declared the winner when either the other team's fleet is sufficiently destroyed or the timer runs out.


You can play with anyone on the same LAN (Local Area Network) as you, and you can also play with a friend anywhere else in the world by typing in the host computer's I.P. address. (There is not yet a public online list of games, but I hope to add that soon.)


This is just the beginning! This first version lays the coding foundation for more improvements to come. In the long term, I may add entirely different game modes, such as multiplayer co-op and creative modes. In the near future, I plan to add:
  • A.I. players in multiplayer battles
  • Observers (for streaming tournaments)
  • More than two teams & free-for-all battles
  • Some sort of boundary around the playing area to prevent people from being able to run away indefinitely
  • Limit price per-ship and not just total price per fleet
There's lots more details and plenty of other fixes and improvements in the full changelog.

Technical Implementation

You may be wondering why I've chosen to bring back multiplayer given the fact that I originally removed it because it was slowing down development too much. Wouldn't bringing back multiplayer cause all future development to become a lot slower?

Thankfully, the answer to that is mostly "no", and the reason for that is that I've taken an entirely different approach to implementing the multiplayer code.

The original implementation of the multiplayer code required that every single change in the state of the game (such as a ship firing a weapon, a ship moving a millimeter, a crew person walking a foot, or a bullet hitting an enemy) be synchronized among all players by sending packets over the internet. This was a huge problem for two very important reasons:
  1. In a game as complex as Cosmoteer with potentially dozens of ships and thousands of crew, that's a potentially huge amount data that needs to be transferred over the internet between all the players. We're talking megabytes per second of data for a large battle, which made the game really only playable on LAN or very-high-speed internet connections.
  2. The code for anything that could affect gameplay even in the slightest became way more complicated due to the need to send those aforementioned internet packets. For example, if I wanted a bullet to inflict 1000 damage on an enemy ship, I couldn't just call the TakeDamage(1000) function; I first had to construct a network packet with all the needed information and send it to all other players. This made working on gameplay code far more time-consuming that it would've been without having to send all those packets.
The new multiplayer code uses an entirely different approach that's called "deterministic lockstep". Essentially, this approach requires that two computers running the same version of the game with the same initial battle setup and same player inputs will simulate the game in exactly the same way. (Not even off by a millimeter, or else the butterfly effect will cause bigger and bigger errors until the game desyncs.) There are two big advantages to using deterministic lockstep:
  1. Only player inputs (commands issued to the ship) need to be turned into packets and sent over the internet. Everything else (physics, weapons, damage, etc...) will happen exactly the same way on every computer by virtue of them running completely deterministic game simulations. This saves massively on bandwidth, so much so that Cosmoteer now only uses a few KB of bandwidth per second.
  2. Code that affects gameplay no longer needs to be synchronized using packets sent over the internet, so long as the gameplay code can be written to be 100% deterministic. Writing deterministic gameplay code isn't very hard as long as you know what kinds of things to avoid (primarily code whose outcome could change based on framerate).
There are, however, some important disadvantages to using deterministic lockstep:
  1. The gameplay really does have to be 100% deterministic. 99% deterministic is not good enough. And non-determinism bugs can be very tricky to track down. I have written myself some pretty nice tools for debugging determinism issues, but it still took me several weeks to comb through the whole Cosmoteer codebase and convert everything to be deterministic.
  2. Games that use deterministic lockstep typically have more latency than other types of games. You may notice that when playing multiplayer Cosmoteer (and most RTS games) that there's a small delay after assigning a ship an order and before you see it actually respond. That's because it has to wait for the other computers to receive the order before it can process it. In action games like first-person-shooters, this would be a huge problem, but in slower games like Cosmoteer, it's not a big issue.
  3. Differences in how different CPUs compute floating-point (fractional) numbers can cause an otherwise 100% deterministic simulation to become only 99% deterministic, which due to the butterfly effect will ultimately lead to desyncs. In practice, this means that players running on 64-bit operating systems can't play with players on 32-bit operating systems. (Although there is a mode to force the game into 32-bits so that friends on different operating systems can play with each other.)
While these downsides are significant, none of them are deal-breaking, and are certainly preferable than the problems caused by the original way I implemented the multiplayer code.

All in all, getting multiplayer working again was a pretty huge undertaking -- one that I wasn't even sure I could pull off -- but in the end I think it has proven to be well worth it. And I'm looking forward to playing a ton of Cosmoteer multiplayer as a result!

Tuesday, September 19, 2017

Cosmoteer 0.12.12 - Balance improvements and bug fixes

Cosmoteer 0.12.12 is out! And while it's not as huge as 0.12.11 or 0.12.10, it's still got some nice stuff in it. Specifically, thanks to some great work by the community crunching some numbers, I have done a pass over all of the weapons to adjust their damage, rate of fire, and ammo usage, to make them more balanced. (Standard Cannons are no longer the clear best weapon as measured by DPS.) There's also a bunch of other improvements and bug fixes, which you can read about in the changelog.

Monday, September 11, 2017

Cosmoteer 0.12.11 - Difficulty levels, new game options, and balance changes

Cosmoteer 0.12.11 is out! And if you thought that 0.12.10 had a lot of improvements, then you will not be disappointed by 0.12.11!

The biggest and most obvious improvement can be seen when starting a new game:


When starting a new Bounty Hunter game, you are now given several options to customize your play experience...

First up, there are three difficulty levels that you can choose from: "Ensign" (easy), "Captain" (standard), and "Admiral" (hard). Each difficulty level affects what kinds of enemy ships spawn, the intelligence of their A.I., how much money you start the game with, and how much money you earn as a reward for destroying enemies. The "Captain" difficulty is the closest to the single difficulty level that's been available until now.

Second, you can also customize the size of the galaxy, which simply determines how many solar systems will be in it. "Standard" is the closest to the single size that was available until now, but you can play with a huge galaxy if you want a really long game or a small galaxy if you want a shorter experience.

And lastly, you can now choose between three different starting ships, each with its own advantages and disadvantages. Or if you don't like any of them, you can even start the game with your own design. The amount of funds you'll start the game with will depend on how expensive your starting ship is -- the more expensive it is, the fewer funds you'll start the game with.

Another big change to Bounty Hunter is the presence of enemy "fleets". Now, in some cases when a single enemy would have spawned in older versions, in 0.12.11 that single enemy will be replaced with 2 or more smaller enemies that will work together as a single fleet. This means that you'll have to design your own ship(s) to be able to combat multiple enemies at once. The chance of enemy fleets spawning depends on the difficulty level selected.

This update also has a ton of big balance changes that I hope will make ship design more strategic. These include a nerf to Point Defenses (to make them less effective versus swarms of missiles), an area-of-effect buff to missiles themselves (to make them a possible counter against parts placed directly in front of shield generators), cannons now have a random "spread" (to make them less effective at sniping specific enemy parts), and Electro-Bolts can now penetrate through shields (meaning they can drain from multiple overlapping shields).

Lastly, players complained a lot about how moving parts of ships to different locations cost money to move, and so I made a change that allows you to move a part from one location to another without losing any money. Basically, if you pick up or remove a part, you'll only get a 75% refund, but then if you place the same kind of part somewhere else, you'll only pay 75% of the base cost. Once your ship fights a battle or makes an FTL jump, you'll lose the 25% discount for any parts you've removed but not re-added and you'll have to pay the full 100% price.

There are a whole ton of other improvements and bug fixes in this update, which you can read about in the changelog.

Wednesday, August 16, 2017

Cosmoteer 0.12.10 - Formations

Cosmoteer 0.12.10 is out! And it has a pretty nice new feature: Formations!

When multiple ships are selected, a new "Formations" button will appear, and clicking on it will let you pick from one of three pre-defined formations: Line, Wedge, and Claw.


Additionally, you can create your own formations by selecting a ship, right-clicking on another ship it should follow, holding the mouse button, and dragging the mouse cursor to where the selected ship should position itself relative to the "lead" ship. You can then save the custom formation to be used later.


And by default, when you issue a command to a group of ships that aren't already in formation, the game will automatically create an "ad hoc" formation, causing the ships to stay in their same relative positions and move at the same speed.

This update has a huge number of other improvements and fixes (possibly the largest number of individual changes in the history of Cosmoteer updates), which you can read about in the detailed changelog.

Wednesday, July 26, 2017

Cosmoteer 0.12.9 - A ton of bug fixes!

These past few weeks have seen an absolutely massive increase in the number of people playing Cosmoteer! There used to be less than a hundred players per day, but now there are more than ten thousand! That's amazing!

What's not so amazing are all the bugs that people are now finding in the game. (It turns out that when ten thousand people play your game, they find all the bugs...)

And so I present to you Cosmoteer version 0.12.9, which is just chock full of fixes for many of those bugs that people have found in the past couple of weeks.

Also, the number of bugs that have been caused by new updates has convinced me that from now on I should do more testing before I release updates to everyone. To that end, I am planning, for most updates, to first release what I'm calling "unstable release candidates" that any interested players can opt-in to playing, with the understanding that these unstable versions are likely to be more buggy than the "official" stable updates. As 0.12.9 you can opt-in to unstable updates in the settings under the "Misc" tab. Hopefully this extra testing by the community will make the official updates much more stable.

Sunday, July 16, 2017

Cosmoteer 0.12.8 - Bug fixed and balance tweaks

Cosmoteer 0.12.8 is out! This update has a ton of important bug fixes, but it also makes a few balance changes, including making FTL jumps use less fuel and reducing the effectiveness of Electro-Bolts. You can read the full changelog here.

Tuesday, July 11, 2017

Cosmoteer 0.12.7

Cosmoteer 0.12.7 has been released with a variety of unrelated improvements.

The most important change that everyone should know about is that the location in which saved games and ships are stored has been moved from Saved Games\Cosmoteer (the old location) to Documents\My Games\Cosmoteer (the new location). I made this change because some players for some reason didn't have a Saved Games folder on their computer and thus were unable to play the game. When you run Cosmoteer for the first time after updating to 0.12.7, the game will attempt to automatically move all of your existing saved games and ships to the new location, but if that fails for some reason then you'll have to move them manually.

0.12.7 also has a few balance changes, most notably being a "fix" to a deliberate flaw in the ship A.I. that prevented it from properly staying at the desired distance from the enemy. This has the effect of making "kiter" ships (ships with long-range weapons like missiles and a lot of reverse thrust) much more viable. I'm not sure that's actually a good thing for the game's current balance, but the proper counter to kiters certainly should not be a gimped A.I. (I'm considering adding tractor beams as a way of countering fast ships.)

Lastly, I have paid off the "internet mafia" (my word, not theirs) to get what's called a "digital signing certificate" that I can use to "prove" to Windows that I, a real person named Walter Destler, am the author of Cosmoteer. So now, when you run the installer, you'll get a dialog prompt that looks something like this:


The real reason for doing this is that, in theory, anti-virus programs are more trusting of applications that have digital signatures. I'm hoping this will reduce the number of problems that overly-aggressive anti-virus programs cause with Cosmoteer. Only time will tell!

Monday, July 10, 2017

Cosmoteer 0.12.6 - Balance and bug fixes

I just released version 0.12.6 of Cosmoteer. It's mostly bug fixes, but it does reduce the cost of the FTL Drive to 10,000 (to make sure players can afford to buy one after completing the first sector) and tweaks missile balance and physics.

See the changelog to get the full details.

Friday, July 7, 2017

Cosmoteer 0.12.5 - A.I. tweaks and bug fixes

Cosmoteer 0.12.5 has been released. This is a minor update that makes the A.I. smarter about choosing which targets to attack and also has a handful of bug fixes.

The full changelog is available here.

Thursday, July 6, 2017

Cosmoteer 0.12.4 - Harder A.I.

Cosmoteer 0.12.4 is out!

The big feature is a much smarter version of the "BountyBrain" ship A.I. (called "BountyBrainHard") that will actually target and focus its fire on specific enemy weapons and systems. This A.I. will be used for all enemy ships in Bounty Hunter except for the enemies in Amateur sectors.

This release also has a bunch of bug and crash fixes, and it also reduces memory usage significantly (by about 150-200 MB).

The full changelog is available here.

Sunday, July 2, 2017

Cosmoteer 0.12.3 - A.I. tweaks and bug fixes.

Cosmoteer 0.12.3 has been released! It has several improvements to the ship A.I. that should make A.I. versus A.I. battles and tournaments more competitive. It also has a variety of bug and crash fixes.

Read the full changelog to get all the details.

Tuesday, June 27, 2017

Cosmoteer 0.12.2 - Critical Bug Fix

Cosmoteer version 0.12.2 has been released to fix a nasty crash bug that was introduced in 0.12.1. I strongly recommend that all players update to avoid crashes.

Monday, June 26, 2017

Cosmoteer 0.12.1 - Balance Improvements

Cosmoteer version 0.12.1 has been released! This is a minor update that contains mostly balance changes and bug fixes. The biggest balance change is a dramatic reduction in how much fuel is used when making an FTL jump, but there are also some balance changes to Point Defenses and Electro-Bolts, as well as a handful of ship and crew A.I. tweaks.

The full changelog lists all of the updates included in this release.

Friday, June 23, 2017

Cosmoteer 0.12.0 -- Missiles, Fires, and more!

This past Wednesday I released live to the world version 0.12.0 of Cosmoteer, and oh boy was this a big release! It's got new weapons, new defenses, a new game mechanic, and some great user interface improvements.

Missiles

Probably the most exciting new feature is missiles. Missiles are long-range homing weapons that do high damage in an area-of-effect wherever they hit.




Unlike the other weapons, which require line-of-sight to their target, missile launchers can be safely tucked away on the sides of ships, thanks to the missiles' own homing and obstacle detection systems.

Similar to the cannons, missile launchers require their own kind of munitions -- that is, "missile parts". These missile parts are manufactured in a "missile factory" and then each missile part is hand-carried by the crew to the missile launcher.


Each individual missile is made out of four individual missile parts, and each crewmember can only carry one missile part, so it takes a lot longer to load a missile launcher than it does to load a cannon.

If you take a close look at the missile launcher itself, you might notice that there are only two possible locations for doors, and they're on the sides of the launcher instead of in the rear as one might expect. The "in-fiction" justification for this is because crew have to be able to reach the missile tubes to load them and therefore the only place the control panel could go was against the back wall. But there's a also a game design reason for this: I like to make different ship modules have various different sizes and door access locations so that you, the player, have to think more about the layout of your ship. I want designing a good ship to be a lot like solving a jigsaw puzzle, trying to get all the pieces to fit right. If all modules were the same size, it would be a lot easier to design a perfect ship.

Point Defense Systems

While very powerful, there is one major disadvantage of missiles: They can be shot down by the new "Point Defense Systems" that were also added in 0.12.0.



Point Defense Systems (PDS) are tiny automated gun turrets. They can't damage enemy ships, but, unlike other weapons, they can shoot down incoming missiles that come too close to them. PDS fire rapidly but are fairly inaccurate, and so it is often a good idea to cluster several PDS together to create a "wall" of gunfire which can shoot down almost all incoming missiles.

A ship without any PDS will be very susceptible to long-range missile fire from enemy ships.

Electro-Bolt

The missile launcher isn't the only new weapon in 0.12.0 -- it also adds the "Electro-Bolt". This is a short-range weapon that fires bolts of electricity. While this electricity does little damage to enemy ships, any systems that get hit by an electro-bolt will be drained of some of their power. As such, electro-bolts are an effective counter against enemy energy weapons (laser blasters, ion beams, and other electro-bolts) and shields (when the electro-bolt hits the energy field it's treated as-if it hit the shield generator itself), but not effective against projectile weapons like cannons and missile launchers.


Fire

Version 0.11.4 added a feature where reactors and some other modules would cause collateral area-of-effect damage when destroyed. 0.12.0 extends this feature such that these modules also often start fires on the ship when they are destroyed. Additionally, cannons can also cause fires when their super-heated ammunition rounds are able to penetrate inside enemy ships.


Once a fire starts, it will continue burning until the module that is on fire is destroyed or the fire is put out. While crew can still walk through fiery areas, they do so much slower than normal and, worse yet, have a chance of being killed.

If a fire is not put out quickly, it is likely to spread to neighboring rooms. Fire spreads through open interior spaces and doors, but it cannot spread through walls or armor, or over exterior structure. Because fire will spread through doors but not walls, it may not be such a hot idea (pun intended) to put doors everywhere you can, because you will be helping fires spread faster.

In order for your crew to put out a fire, your ship must have a Fire Extinguisher, preferably one close by to the fire.


Your crew will automatically go pick up a fire extinguisher, bring it to the fire, and use it to put out the fire. Fire extinguishers only have limited use, so it can help to have several fire extinguishers handy to put out big fires.



Conveyor Belt

A Conveyor Belt is a transportation system that helps crew move around large ships more rapidly. The conveyor belt moves only in one direction, and as long as a crewmember walks in the same direction as the conveyor belt, they will move 50% faster than normal. But if the crewmember walks in any other direction, they will go at only 1/4 their normal speed.


Because a conveyor belt only helps movement in one particular direction, it is not generally advisable to put them in 1-wide corridors, because any crew returning down the corridor will be slowed down to 1/4 speed, as well as impeding the speed of everyone else trying to go the "correct" direction. Conveyor belts are however often great for ships that are large enough for double-wide corridors, so that one side can travel in one direction and the other side can travel in the opposite. Crew are generally pretty smart about pathfinding and will almost always use the correct side of a double-wide corridor.

Because crew are pretty smart about picking the fastest path to get from point A to point B, you can also use corridors as a form of "indirect control", influencing the paths that crew will choose to take to and from their destinations.

Aesthetic Armor Pieces

For the past six months or so, Cosmoteer has had a little 1x1 triangular half-sized armor piece. Since it's half the size of regular armor, it doesn't have great protective value, but it's nice when, for aesthetic reasons, you want to make a ship with semi-rounded corners or diagonal edges. Version 0.12.0 adds several new shapes of armor to give even more aesthetic variety to ship shapes:


The first of these is an even-smaller quarter-sized triangular armor piece that's useful for adding details or for when you want a pointy tip on the front of an odd-width symmetrical ship.

The other two are both 1x2 triangular armor pieces (which are mirrors of each other) that are useful for making gentler or sharper slopes than the 1x1 triangular armor. There's two of them because, unlike the 1x1 triangle, there's no way to rotate a 1x2 triangle so that it looks "flipped" either horizontally or vertically.

Mirror Mode

For a long time, players have been asking for an easier way to create symmetrical ships, generally a "Mirror Mode" that would cause any changes on one side of the ship to be reflected on the other side as well. I'd been somewhat resistant to this idea, simply because the game already had a "copy & paste" feature that supported mirroring when pasting. However, watching videos of the game Navalia, which does have a mirror mode, convinced me that it was a feature worth spending a couple days to make work. And so 0.12.0 adds a mirror mode to Cosmoteer's ship designer, which works with all ship construction tools (including copy & paste!) and is available in both the floorplan designer and the exterior painter.



Mods

Lastly, I want to mention that Cosmoteer now has official support for "mod packages". This isn't actually a new feature of 0.12.0 (it was launched in 0.11.7), but I haven't talked about it yet.

Cosmoteer stores all of its game data inside easy-to-edit text files in its "Data" folder. These text files allow almost all game rules to be tweaked and for new ship modules and weapons to be added. However, until mods were introduced, player-created additions to the game required destructively editing the files in the Data folder. This made it hard to install (and uninstall) mods, and any game updates would erase any changes made by mods.

The "mod packages" introduced in 0.11.7 solved both of these problems. Mod packages are self-contained folders that contain special code to "edit" the base text files in-memory after the game is loaded without actually modifying the files on-disc. Since each mod has its own folder, and the text files in the base game aren't ever actually modified, it's very easy to install and uninstall mods.

Cosmoteer even has its own "Mods Manager" for installing and uninstalling mods and turning them on and off:


Monday, May 8, 2017

Cosmoteer 0.11.4 - A Universe of Particles!

Last week, I released version 0.11.4 of Cosmoteer. Despite only being a minor bump in version number, this release has lots of new stuff! The changelog lists all of the many improvements and bug fixes in this version, but the ones I want to talk about here are the greatly improved visual and particle effects.

In order to realize my vision for how I wanted the visual effects to look, I knew that I would first need to completely rewrite Cosmoteer's particle code, because the existing particle code was both slow and too inflexible. By using some very low-level C# code (utilizing some great new C# 7 features), I was able to create a new particle system that is not only more flexible than the previous version, but it is also much, much faster. The new particle system can handle about 100 times the number of particles as the old system while maintaining the same framerate.

The new particle system has allowed me to create much more interesting and exciting visual effects for weapons, thrusters, and explosions.

The first visual effect I upgraded was for the thrusters:


This is a pretty big improvement from the previous thrusters, which for performance reasons had far fewer particles. (The quality of these GIFs aren't great -- you should load up the latest version of Cosmoteer to check out all the new effects for yourself!)

Then, I upgraded the visual effects for when the various weapons fire:




It's hard to see in the above GIFs, but the appearance of the laser and bullet projectiles has also received a significant upgrade.

Lastly, I upgraded all the various weapon impact and part explosion effects:




(You may notice in that last GIF that, when the reactor is destroyed, the explosion also destroys much of the surrounding ship parts. This "collateral damage" is a new gameplay mechanic intended to make you think more carefully about where you place reactors, ammo factories, and cannons, all of which cause collateral damage when destroyed.)

If you're worried that your computer can't handle all the new particle effects, then fear not, I have a trick up my sleeve! Most of the particles you see above are actually "pre-rendered" as simple sprite frame animations. The sprite animation serves as the "core" of the effect, providing most of the visual punch. On top of the core sprite animation, extra particles (such as debris pieces and smoke clouds) are created to give it more visual interest and variety. But these extra particle are entirely optional and can be turned off by disabling the "Fancy Particles" option in the game settings. With this option turned off, Cosmoteer actually renders fewer particles than in previous versions while still looking significantly better.

Thursday, April 6, 2017

Cosmoteer 0.11.0 -- Fog of War & U.I. Improvements

Last week I released version 0.11.0 of Cosmoteer. It, and version 0.10.7 before it, add some significant new features and improvements to the game's user interface.

The most important new feature in 0.11.0 is the "Fog of War":


If you play RTS games, you are likely already familiar with the basic concept. Your ships can only "see" so far away, and anything farther than your ships' sight range is hidden in the "fog of war". In the above screenshot, the darkened areas of the background indicate areas that are too far from your ships to see.

Currently, the locations enemy ships that are outside of your own ships' sight will still be indicated with pulsing red dots, which you can see in the lower-right corner. These tell you where you need to go to find something to fight, but offer no additional details such as the size or armaments of the enemy.

The Fog of War changes gameplay, because now there's some risk involved in choosing to fight an enemy. It may turn out that the enemy is too powerful for you to defeat, and you'll need to run away. Occasionally needing to run away also has the added effect of making fast and maneuverable ships more important.

Version 0.10.7 also added a "Minimap":


The minimap is a long-requested feature that provides a simple overview of the locations of friendly and enemy ships. Unlike most RTS games which are played on a fixed-size battlefield, the playing area in Cosmoteer has no walls or borders and is infinite for all practical purposes. Therefore, the minimap automatically adjusts to show an area containing all of the ships in the game. The grid in the background always maintains the same spatial distance between lines, and so you can use the grid to estimate distances between ships.

Version 0.10.7 also added what I call the "Miniview":


The miniview is basically a "picture-in-picture" view of a single ship, allowing you to view one ship in the main view and another ship in the miniview at the same time. My hope is that it solves one of the biggest usability problems that Cosmoteer has had up to now, which is that during combat you can't watch both your ship and the enemy ship at the same time without zooming out and losing a lot of the important simulation details.

The miniview also isn't just for show, either -- you can also hover the mouse cursor over ship parts to see their health and right-click on them to target, all without having to move the main camera.

The miniview is customizable, but by default, it is automatically displayed during combat and will show either your ship or the enemy ship -- whichever one you're not looking at in the main view. When displayed, the miniview replaces the minimap, which is generally less useful during combat anyway. Both the miniview and the minimap can be resized as desired to take up more or less space on your screen.

Monday, April 3, 2017

Cosmoteer Gameplay Trailer

Today I made a little gameplay trailer for Cosmoteer! Pretty much my first time putting together a trailer, so the editing and footage is a little rough.


Sunday, February 26, 2017

Cosmoteer 0.10.5 -- User Interface Refresh

Cosmoteer 0.10.5 is out! While there aren't any major new gameplay features per se, the changelist is still among the longest to date!

The biggest and most obvious change is that the user interface has received a complete visual overhaul -- gone are the boring gray boxes, replaced with a spacey blue-and-green theme complete with sound effects and animations.

Before
After
Aside from the visual changes, there are also some small-but-important changes to the actual functionality of the user interface.

First, the player can no longer (by default, although this can be reverted in the settings) simply click on or drag a box around specific parts to select them -- the player must now hold the Ctrl key while clicking. This is because my playtesting showed that many new players would accidentally click on parts of their ship and then be unable to give their ship orders, which was confusing and frustrating for them. By requiring the Ctrl key be held, it's now almost impossible to accidentally select parts without meaning to.

Second, because you can't upgrade your ship until you repair it, the game now only shows either the repair button or the build button, never both at the same time. (When your ship needs repairs, the repair button is shown in the place of the build button.) In some playtests, players got confused about why they couldn't press the build button, and so this change should hopefully make that more obvious.

Lastly, turning on "blueprints mode" is no longer a strange toggle that appears next to the build button after pressing it -- it is now a simple checkbox item in the '...' menu, and the game now remembers your preference.

Saturday, January 28, 2017

Cosmoteer 0.10.0 -- Bounty Hunter 2.0 and FTL Drives

Yesterday, I released Cosmoteer 0.10.0.

This is a big release, and it features a ton of little improvements along with two big, related features: a revamped "2.0" Bounty Hunter game mode, and F.T.L. Drives for ships.

Bounty Hunter 2.0

For about the past year, the standard mode of play, "Bounty Hunter", has been pretty simplistic. You, the player, start with a single ship and destroy enemy ships in the immediate vicinity to earn money which can then be used to upgrade your own ship or purchase additional ships. As you destroy enemy ships, additional enemies spawn nearby, and as your own ship or fleet increases in power, the larger, more powerful enemies swill spawn as well.

This simple kill-reward-upgrade-repeat loop has been fine for testing and iterating on the core ship construction and combat gameplay mechanics, but it honestly wasn't very engaging for the player. Killing an endless stream of ships over-and-over again in the same location with little choice gets repetitive really fast.

Bounty Hunter 2.0, while not solving all of the issues of Bounty Hunter 1.0, seeks to create a much stronger foundation upon which further improvements can be built. Instead of playing in a single location with an unlimited supply of respawning enemies, the game is now played across a large galactic map:


Each location in the galaxy map (the green icons) has only a handful of enemies, and they don't respawn as you destroy them. Instead, once the player destroys all of the enemies in a location, they must move on to another location. Each location has a small colored "shield" icon that indicates the strength of enemies present there:


In Bounty Hunter 1.0, the game itself determined the difficulty of enemies that the player would face, which meant that for many players the enemies were either too easy or too difficult. This new system gives the player a degree of choice in what strengths of enemies they will face, and lets the player pace their own difficulty curve.

More importantly, this new galaxy map now provides a strong foundation on which more gameplay can be added. In the future, as the player explores the galaxy, they will encounter space stations to trade with, pirate bases, asteroids to mine, vessels in distress, and more. These features will be added to the game over time as they are developed.

The galaxy map itself is procedurally generated, usually with 4-6 solar systems full of planets and moons. Each location is "attached" to a nearby planet or moon, which then appears in the background during gameplay to give visual variety and a better sense of location. The planets, moons, and stars themselves are procedurally generated using Perlin Noise. Blue, red, and yellow nebulas also abound in the galaxies, which determine the color of the background during gameplay.

F.T.L. Drives

In order to move from location to location within the galaxy, the player must construct at least one F.T.L. (Faster Than Light) Drive on their ship. Once constructed, the FTL drive allows the player to perform jumps to other locations.



Jumping, however, is not free. F.T.L. Drives use a new kind of "fuel" resource. Like credits, fuel is earned from destroying enemy ships, and then it is spent to perform an F.T.L. jump. The amount of fuel spent is determined by the distance of the jump, the size of the ship(s) making the jump, and the efficiency of the ship's F.T.L. Drives.

Efficiency is a new concept in Cosmoteer that determines how much fuel is used when an F.T.L. jump is performed, and its gameplay purpose is to make the number and placement of F.T.L. Drives on a ship a strategically important decision. When adding an F.T.L. drive to a ship, the game displays a green/yellow/red overlay indicating which areas of the ship are close to an F.T.L. drive (green) compared to which areas are far from one (red).


The farther (more red) areas greatly increase the amount of fuel need to perform an F.T.L. jump. And so to minimize the amount of fuel used, the player will want to place multiple F.T.L. drives around their ship in a variety of locations, making as much of the ship green as possible.

If the player ever runs out of F.T.L. fuel, they can purchase additional fuel for credits, but doing so is extremely expensive, and so it is almost always preferable to improve the efficiency of one's ship.

Because the amount of F.T.L. fuel earned from destroying enemies depends on the size of the enemy ship, as your own ship(s) grow in size, it becomes much less cost-effective to battle enemies that are smaller and weaker than yourself. (If you spend fuel to jump a very large ship to a location with small enemies, it is unlikely that you will earn enough fuel to recoup the fuel that you spent getting there.) My intent when balancing fuel costs vs rewards is that a ship with 75+% efficiency that fights ships its own size will generally break even on fuel.