To Parallax or Not to Parallax

I’ve always though it would be cool to use 2D parallax techniques in Solaroids, but I always had reservations.  Who doesn’t like stars whizzing by at light speed and the sense of depth that multiple layers of background elements can provide.

When I started developing Solaroids I knew I wanted nebula to provide some kind of “ground” for the player. Solaroids being an inertia based game, and having a larger than single screen playing area, I felt it was key to provide a stable background in order to maintain a sense of location. As the player thrusts and drifts a long in a heavily populated arena of moving asteroids, enemies, and hazards, how else are they going to keep track of their current velocity. It was for these reasons, the time it would take to try it out to confirm or debunk my theories, and only a few requests for it, that I didn’t until just recently set out to experiment with it.

Solaroids has 6 dedicated layers that make up the current visuals.

  1. Backdrop stars / distant gas clouds
  2. Sprite based stars
  3. Nebula’s, galaxies, planets
  4. Gameplay
  5. Energy
  6. Lens effects

If parallax was to be added it was going to be to layers 1-3 only.  So after a recent reminder from a dedicated player that it needed it, and recent completion of some higher priority features, I set out to experiment by incorporating parallax math into those three layers. This wouldn’t make individual elements (stars, nebula, etc) exist at there own simulated depth, but it would be able help prove out whether the technique would ruin gameplay or not, and also let me play with adjusting the amount. It ended up looking pretty good. Musing about with the ship, at moderate amounts it didn’t seem to affect my ability to play the game either.  At extreme amounts it did give more of a “floaty” sensation, and some might even experience a bit of nausea, so having a way to turn it off, or control the amount would definitely need to be in the final version. A quick check with a player on a restricted alpha branch, and it was confirmed it needed more!

Convinced that the parallax had merit now, and knowing it would be a user option, I set out to take those three layers and allow individual elements to have unique depths within the layer. This really took it to the next level, so I posted a preview video to YouTube and twitter (above).  Based on the feedback and response I got I was definitely on the right track.  Even my wife, when she saw it for the first time, said that I needed to redo my trailer with parallax as it looked so much better.

All would seem sunny and bright at this point, but of course there’s always something that doesn’t go smoothly.  For this feature, that was the Seamless Wrapping mode I had just got done putting in the game before Christmas.

Let’s go back a bit. Originally, Solaroids had a wrapping arena where traveling through one edge of the world would end up with the player ending up on the other side. Just like the original Asteroids.  The caveat to this is that you can’t see what’s on the other side because Solaroids plays out on a large scrolling arena.  Is it a feature or a bug?  Well many players felt it was disorienting while fighting enemy ships, especially in the corners, and they are right. So a feature dubbed Seamless Wrapping was introduced that when active would eliminate the edges, and instead allow the player to keep flying as if they hadn’t wrapped, even though they really had.

From the above video one would think it was plain and simple, but that was the final product. It ends up that seamless wrapping and parallax don’t really go well hand in hand, which makes some sense, since it’s kind of like folding space and not something that I don’t have a lot of personal experience with.

One way of creating parallax in background elements is to dampen the elements behind the gameplay layer which is scrolling by at the nominal rate. Imagine your flying along and the coordinates of you ship wrap around.  So at that moment when you cross over there is a discontinuity on any layer that isn’t at the nominal scroll rate. A star in the background can’t be offset appropriately for both sides of the wrap. This can be easily mitigated if each layer is a seamless texture, but I needed to be able to put actual objects and landmarks in the background.  I solve this by keeping track of the original unwrapped position of the camera, and then using that value to compute the amount of parallax offset to apply.

One caveat of this method, is that if you keep flying in the same direction, the background elements continue to shift.  This isn’t noticeable since the world is being seamlessly wrapped, but it does pose a challenge for position tracking of any elements in the background with respect to the game play layer.  In Solaroids a prime example of this is the sun.  The sun is in the background, but it is also tracked in the player reticle showing the direction to it. The perceived position of the sun, taking into account parallax, has to be computed (projected) from parallax space into game space in order to correctly find the direction to the sun.

So the lesson to be learned is: seemingly simple features by themselves can take on new complexity when combined together.

Solaroids is available via early access on Steam.


Winter is Coming!

Space is a cold, even frigid, place and a sinister plot has been hatched by unknown forces. Working against us, an alien presence has deployed the biggest snow machine known to man, or any other-worldly inhabitant for that matter, in the hopes of sneakily invading our little corner of the galaxy.

Battle the most fearsome and retaliatory snowflakes (and the slithery snowman) you’ve ever laid eyes on, in a deadly battle against what would appear on the surface as a winter wonderland.

Use your skills acquired playing… ahem… Solaroids, to defend our little home. Do you have what it takes? Do you even care enough to stand up and be counted among humanities last hope for survival?

Briefing Instructions to access the xmas game branch on Steam:

  1. Right-click on the game within the Steam client and select the Properties menu item at the bottom.
  2. From the Solaroids: Prologue – Properties dialog select the BETA tab.
  3. From the BETA tab pick xmas – Happy Holidays from the Select the beta you would like to opt into drop-down selector. You should immediately see an update queued.
  4. Close the properties window and prepare for battle!

Once you have either saved mankind or screamed in agony at defeat, you can return to your normally scheduled program by returning to the BETAS tab and picking NONE – Opt out of all beta programs from the drop-down selector.

Happy Holidays and merry X-Mas HO HO HO!


Early Access V1.1.1

Happy holidays everyone!

I present to you a small but significant update, as it has a few features that have been commonly requested. Now that I have an option menu in place it makes it much easier to surface some of these tweaks!

First, a very common request has been to eliminate the traditional “screen edge effect” that simulates the classic Asteroids wrapping from one side of the play area to the other. As Solaroids has a much larger playing field, this can be jarring (especially in the arena corners) and is unnecessary. So now the default is to use a Seamless Wrapping mode where there will be no discernible edge to the play area. The sun becomes a constant landmark to help re-orient yourself and is conveniently shown in the player reticle. While this is the new default, you can globally turn the mode on and off during gameplay from the video options.

Second, there are several options geared toward tweaking the visibility in the game. One is that the faster you are flying the more the camera will look ahead. This should give better visibility of what your heading towards, like a giant space centipede (Infiltrator). In addition, I’ve adjusted the default camera to be panned back just a little more, but you also can now adjust it even further (within reason) using the new Zoom video option.

Third, you may or may not have noticed that at the end of November I released a FREE DEMO, so if you can, please spread the word. The demo has a few limitations, one being you can only play for 15 minutes at a time or through level 4, whichever comes first. In addition, Free Play mode is locked, and Steam global leaderboards and achievements are unavailable. If the full game is purchased in-game, then these restrictions are lifted except for the global leaderboards and achievements. A restart is necessary to activate these Steam features.

I hope you enjoy the new additions, and I would love to hear any feedback you are willing to share via reviews or discussion threads. Thank you for your continued support, and happy blasting!!

New Features

  • Add seamless wrapping video option that eliminates the edge of screen transition at the edges of the arena. This is now the default.
  • Increase camera look ahead amount to allow seeing further ahead when moving.
  • Adjust default zoom level. It is zoomed out about 5% more than before.
  • Add Zoom Level option that allows some limited tweaking of the camera zoom level (80%-150%).
  • Change Controller Vibration player option to allow a percentage from Off to 100%.
  • Change Camera Shake player option to allow a percentage from Off to 200%.
  • Change bloom video setting to allow a percentage from Off to 200%.
  • The high scores for the steam account are highlighted.
  • A set of basic tips are deployed around the sun to quickly guide the new player instead of being mixed in with the other level tips that can be found.
  • Added 144fps to frame rate option.

Other

  • Improved memory efficiency.

Previously Released Patches

  • Limit the number of found power-ups to restrict the maximum number active to approximately 25.
  • Fix timing issue for frame rate limiter that would cause the target framerate to be slightly lower than the requested rate.
  • Fix Infiltrator boss (serpent) when running at greater than 60fps.
  • Reduce popping of large nebula.
  • Default Friendly Collisions to off.

Known issues

  • Borderless is only implemented for Windows right now.
  • Some options are English only.

Early Access V1.1.0

Hello everyone!! I’m happy to announce the V1.1.0 release of Solaroids.

This is a big update (at least for me) as it is one of my milestones to finally have proper option menus to control various typical game settings as well as a few extras for tweaking the mechanics of the game. I’m planning some additional options in the future, but this definitely feels like a good base.

A few of the other gameplay tweaks that are worth highlighting are that friendly fire and friendly collisions can now be turned off. While friendly fire was a specific design choice for the game to allow a co-op (or not) experience as well as a little extra danger, it has been a top requested feature. Note that these are available from the global options menu before starting a game; they are not available from the player-centric option menu in the pause screen. Similarly, there is also now the option to globally turn Auto-fire on/off for all players. When Auto-fire is on, you can still take control of the shots to fire bursts when things get intense and you need a little extra for a moment or two. This is the default for new installs.

Another tweak is the ability to control how many “credits/continues” are allowed per game session. Previously this was unlimited, which required discipline to not continue if you wanted to compete only on the “first credit” leaderboards. I’ve defaulted this to zero for new installs, but it can be changed from the option menu.

Also, this update provides a tip system to give a little coaching here and there. There are a lot of subtle/hidden details with how things interact in the game, so along with the typical instructional material to help clarify key game elements quicker, the tip system sheds light on many of these. Not all tips are available immediately, but they present themselves the further you progress. Similar to power-up prompts, they are not available in Free Play mode, so they are only available in the normal “campaign” mode. They can also be turned off via options once you’ve mastered them.

I hope you enjoy the new additions, and I would love to here any feedback you are willing to share via reviews or discussion threads. Thank you for your continued support, and happy blasting!!

New Features

  • Tips – New “Power-up” that provides tips and hints about the game. New tips become available as the game progresses.
  • Options, including controller/keyboard configurations for players are saved. Steam cloud is used to mirror settings between computers However, some settings are excluded from syncing such as (resolution, full-screen, border-less, frame rate, and vsync).
  • When changing an option, an icon now indicates if the option participate in steam cloud synchronization.
  • Added brief descriptions for menu items on the title screen (English only right now).
  • An icon indicating first credit or any credit is displayed next to the score showing what leaderboard it qualifies for. These icons are also shown in the high score listings.
  • The player name is now displayed in the player HUDs.
  • For the current game session the last and best scores are displayed under the player name for reference.
  • In the player HUD, when continuing, the number of remaining credits is displayed.
  • Turn Speed, Bullet Strength, and Bullet Speed power-ups now detach when your ship is lost, so you’ll have to retrieve them before someone else does.
  • A hint is now displayed on the option menus and credits page showing how to leave the page.
  • Adjusted player HUD layouts.
  • The location of the sun is now indicated in the player reticle as a solid yellow circle.
  • Changed bullet speed increase power up icon away from the too generic
  • Plus symbol; It is now a ball with speed lines.
  • The Bonus Points power-ups now show their approximate value instead of the misleading $ symbol.
  • Moved the Increase Cannon Strength Power-up to earlier levels so you can now begin to upgrade your main cannon sooner!
  • Various stability improvements.
  • Global Options:
    • Video
      • Common video options including Resolution, Fullscreen/Windowed, Borderless, Framerate, and VSync.
      • Bloom – Allows turning the bloom effect on/off which can help frame rate on some under-powered systems.
      • Language – Allows override of the current Steam language; the only way to access languages not supported by Steam such as Serbian.
      • Powerup Prompts – Allows turning off the pop-up prompts that display when collecting the various power-ups in campaign mode. Power-up prompts are always off in Free Play mode.
      • Tips – Allows turning off the tip “power-ups” that become available throughout the levels in campaign mode. Tips are always off in Free Play mode.
    • Audio – Master, Music, and Effects volume.
    • Gameplay
      • Credits/Continues – Allows restricting the number of credits/continues in a game session. Once a player runs out they can no longer re-join. Great for tournaments or simulating “death-match” until additional game modes are released.
      • Friendly Fire – Allows turning on/off the effects of bullets and other detonations between the local players.
      • Friendly Collisions – Allows turning on/off collisions with other local players.
      • Autofire – Allows holding down the primary weapon key/button for a nominal rate of fire. For extra bursts where needed, you can still manually control the fire rate for regular guns and attachments.
    • Miscellaneous
      • Logging – Allows turning on/off the diagnostics log that can be useful for bug reporting. The diagnostics log, when enabled, is in the game directory and is called diagnostics_<time>.html. A new one is created with a new timestamp on each launch.
      • Expire Anonymous Scores – Allows a schedule to be set for retaining local high scores under the Anonymous label.
      • Expire Extra Scores – Allows a schedule to be set for retaining local high scores by the same player name. The highest score for each player name is retained.
      • Clear Local Scores – Allows the clearing of the local high score listings.
      • Local Leaderboards Only – When turned on the steam account is no longer used for player 1, and it behaves the same as guest players. That is it defaults to a player name of Anonymous but allows the player to edit the name used to label the local high score.
  • Player Options:
    • Player
      • Camera Shake – Allows turning on/off the camera shake effect used when taking damage or near explosions.
    • Controls
      • Vibration – Allows turning on/off the controller vibration/rumble used when the player takes damage or is near explosions.
      • Controller Type – When a game controller is connected, allows the selection of the controller type used for button glyphs/layout. Currently Xbox 360/One and PlayStation Dualshock 3/4 are supported.
      • Layout – Allows adjustment to the buttons/keys used to control the ship.

Previously Released Patches

  • Fixed issue where the players shield was not blocking shock waves from some enemy types.
  • Stability improvements.

Known issues

  • Some previously supported languages are not fully supported at this time.
    These are still available from the language option and include the identifier “(partial)” next to the language to indicate which languages are not fully translated. In the cases where it is a partial translation, English is used for any missing translations. For most languages this is power-up prompts, tips, options, and menu items.
  • Borderless is only implemented for Windows right now.

Solaroids Demo Available!

A demo is now available on Steam.

Here are the current limitations/notes for the demo:

  • Free Play mode is unavailable
  • No global leaderboards
  • No steam stats/achievements
  • The demo period expires after 15 minutes or after level 4 is completed whichever comes first.
  • When the demo expires you have a chance to purchase it in-game to continue play without interruption. If you don’t purchase it a black hole will form in the middle of the map and game progress is halted. If the game is then unlocked, progress continues.
  • Note that Steam leaderboards and achievements will not become active until the game is restarted.

Early Access V1.0.9

New Features

  • Power-up prompts displayed on pickup. These include the icon, name, and description. Currently these are enabled in the English locale only.
  • Power-up prompts are displayed up to 10 times per game in campaign mode, and suppressed in Free Play mode.
  • Detonated mines will now also damage nearby enemies.
  • Enemies that detonate on destruction will now also damage other nearby enemies.
  • Turning speed power-ups are now visualized as lateral thrusters.
  • Upgraded main cannon (velocity and damage) now also applies to Primary Weapon power-ups in addition to the default weapon. You’ll also see a subtle increase in size of the bullets.
  • When a ship upgrade (turning, cannon velocity/damage) is maxed out you no longer can pick up additional upgrades leaving them for other players.
  • Ship upgrades (turning, cannon velocity/damage) persist until all lives are lost — that is they are reset at the start of the game and on each continue.

Gameplay Tweaks

  • Max turn speed increased by 10%.
  • Tweaks to previous/mini-boss spawning.
  • Terminator MK II now has a few extra surprises.
  • Mini-bosses are likely to grant a power-up, but not a 100% chance.

Previously Released Patches

  • Previous bosses during later levels were not deploying as they should, and this was corrected shortly after V1.0.8 was published.
  • Stability improvements.

Happy blasting!


Early Access V1.0.8

New Features

  • Infiltrator bosses now fight back.
  • Support OSX retina display.

Gameplay Tweaks

  • Reduced damage done by mines.
  • Adjust limits for mini-bosses.
  • Make mini-bosses vulnerable before destroying all turrets.
  • Improve enemy targeting systems during multiplayer.
  • Reintroduced previous bosses during levels.

Issues Addressed

  • Fix manual resizing of window in OSX/Linux.

Previously Released Patches

  • Fix failure to launch on certain retina enabled OSX devices.
  • Fix crash when language is set to some non-English languages (i.e. Russian).
  • Fix depth issue between bosses.
  • Several stability improvements.

Other

  • Update support libraries for OSX/Linux.

Happy blasting!


Early Access V1.0.7

There are a lot of small but significant changes in this update. Of special note is that you should find the early level progression quicker and with more to do than just mine asteroids for ammo/power-ups.

New Features

  • Previously owned (lost) power-ups will now stay in game for 5 minutes giving ample time to find and retrieve.
  • Previously owned (lost) power-ups now include a ring that is tinted with the primary ship color of who the previous owner was.
  • Picking up a power-up that replaces an existing one now detaches the existing one first.
  • If you have damaged outriders attached, picking up an outrider in better physical condition will now replace the more damaged one currently held.
  • Your first life in Free Play mode now grants you some extra weaponry to start out with a bang.
  • If your fighting more than 4 bosses, you now are given some extra weaponry when re-spawning.

Gameplay Tweaks

  • Reduced the percentage of asteroids/hazards that are necessary to clear in order to advance to the next level.
  • Increased number of asteroids/hazards for earlier levels, and slightly overall.
  • Increased number of enemies during regular play.
  • Increased brightness/saturation of alternate player ship colors.
  • Increased visibility of reticle indicators.
  • Increased chances of encountering “magnetic” asteroids.
  • Increased strength of “magnetic” asteroid shards.

Issues Addressed

  • Fixed issue where sometimes outriders would collide with their owners in what would look like a spontaneous explosion.
  • When no gamepads are connected, require that the keyboard be used for player one which is tied to the steam account.
  • Fixed a few potential crashes when playing for extended periods.

Happy blasting!


Early Access V1.0.6

Just a small update primarily to support Steam Music! There are also a few other small features and fixes.

New Features

  • Support Steam Music – When Steam Music is playing, or starts playing, in-game music is paused and volume is turned all the way down. Note that if you wish to return to in-game music you will have to continue to use the LeftShift+Plus hotkey to raise the volume until the option menu is completed.
  • You can now force a leaderboard refresh with LeftShift+R.
  • When in windowed mode, if the window is closed, a rudimentary pop-up message will confirm that you really wish to close the game. This is currently only supported for the Windows OS.

Issues Addressed

  • Fixed leaderboard visual glitch when toggling between full-screen/windowed on certain graphics cards.
  • Killing a mini-Terminator no longer gives you credit for killing the regular Terminator.

Happy blasting!


Early Access V1.0.5

New Features

  • Repair power-ups can now start repairing your attached outriders, if your ship has not been damaged, or is only mildly damaged.
  • Player reticle will show recently lost power-ups as color coded rings.
  • Attached outriders can now help pickup power-ups.
  • Attached shield now tinted to the player primary color.
  • Support Alt+Enter to toggle full-screen/windowed modes.
  • Support Alt+Tab to switch applications.
  • Updates to Russian translation.
  • Updates to Dutch translation.

Issues Addressed

  • The player tied to a steam account (player one) is no longer allowed to edit their name.
  • Fixed overlap of key images in HUD when ammo goes over 999.
  • Support rendering of TM character.
  • Show top X leaderboard entries when the steam player doesn’t have an entry yet.
  • Increase number of visible leaderboard entries from 20 to 30.
  • Increase number of characters displayed in leaderboards for player names.
  • Fix jitter transitioning from splash screen to title screen.

Gameplay Tweaks

  • Increased size of the power-up hit area by 50%.
  • More tweaks to end of level boss arrangements.
  • Increase the default strength of the player ship.
  • Decrease damage inflicted by some enemy bullets.
  • Increased the strength of the shield power-up by 25%.
  • Weaken smaller “mini-bosses”.
  • Bosses with missile ports now fire all missiles at the same time.
  • Increased the time where you see the missile port open (loaded or empty).
  • Increase strength of attached outriders.

Happy blasting!