Dev Blog




Another busy week!  Here's a quick update on our progress:

Fear the mighty MEGACOMBO!  This is a Carnage Item which you power up by collecting the Carnage created by doing cool moves and combos while fighting.  MegaCombo slows time and sends you into a super-flurry of 12 attacks on nearby enemies when activated.  In this clip, you can also see some prototype vivisection action on the dying mutants that we're experimenting with.  More to come on that in the future!

MegaCombo converting Carnage into...well, more Carnage.

The Bugzapper is another new item that has been created for all your shock treatment needs.  This Carnage Item plants a charged post in the ground which zaps nearby enemies for damage.  Mobs touching it directly are given a healthy jolt and walloped away, making it an excellent target to fling enemies into.

Bugzapper should help you deal with larger pests.

Several new bomb-based mutations were also added this week:

Breaching Charges - bombs are key, aren't they?

Breaching Charges - Your bombs/missiles/etc. will now unlock any locks within their explosion radius.  This includes chests, locked doors, spiked doors, you name it!  If it has a lock, it'll get opened.

Tar Bombs - Every time one of your bombs explode, it leaves a big pool of enemy-slowing tar where it went off.

A combinatorial note: These bomb mutations work with different standard bomb types (i.e. missile bombs), as well as any explosive projectiles you may create.  For instance, the Bomber mutation lets you blow up baddies by changing your projectiles to be bombs, and these are affected as well.  Yay, synergy!

A few other mutations that were added this week:

Longarms mutation in action.

Long Arms - Your arms (and thus melee range) grow to ginormous size.

Precognition - Reveals the bosses and quirks (NPC buffs, special rooms, etc.) of future levels.

Blood Famous - Now that picking up Carnage grants bonus viewers (you have been watching our Thursday 5pm PST streams, right?), this gives even more bonus viewers for cool moves and combos.  Groovy!

Adaptive - Future mutations picked up take effect twice, for good or for ill!  We'll probably have a version of this that just affects the next one to two mutations, which should make for some interesting strategical timing choices.

Genetic Tinkering - A repeatedly found mini-mutation located in areas like Medlabs.  They randomly give a stat up and a stat down.  Since these stat changes are visible before you acquire the mutation, it gives some agency in customizing your stats as you ascend.

And of course more!  We're Long Arms deep in creating all the creatures we'll need for Early Access later this year as well as grey-modelling our other tilesets, so not every level will look like a prison.  If you watch our weekly streams you can see hints of these in the Medlab, for instance. 

Things are moving fast!  As usual, we're happy to answer any questions you have on reddit, during our streams, or in the comments below - and thanks for the feedback so far, we thrive on it!



4.13.2018  -  IN DEPTH WITH DR. DEATH

Today we're going to dig into a Gone Viral boss fight! 

Our design goals for boss fights are:

  • Involve action unique to Gone Viral - It can't be the "same old stuff" to gamers, so things involving walloping, physics, synergies, or funky projectiles are great!
  • Rock a strong theme - It's better to have a set of attacks themed with the design and visuals of the boss rather than a random mishmash!
  • Challenge all builds - Whether your particular loadout is melee-only or almost entirely focused on projectiles, the fight needs to be a) winnable but not b) trivialized!
  • Work in any boss room - Bosses can strike in any one of a number of rooms, so their attacks can't depend on particular stuff existing in the area (unless it modifies the environment itself!)

With that in mind, let's dig into the boss currently hanging out on levels 2 and deeper - Dr. Death.

Dr. Death is a giant, crazy Medbot and he'd like nothing more than to inject you with some goodness!  Syringes are a commonly found item in game - some will heal you, others will have less pleasant effects.  Dr. Death fires these at you as part of giant projectile formations that come in a few flavors.

  • Acid - Causes damage and drips more acid on the ground for additional pain.
  • Tar - Slows struck folks and again, drips on the ground, making a sticky mess you may want to avoid.
  • Vortex - Injects the target with a vortex drug, causing all projectiles and wallops to spin around in circles. (This is similar to the frequently found Big Shot injector!)
  • Healing - Heals whatever is hit, be it friend or foe!  You'll want to get hit by these, but not the laser bullets that surround them.  It's also easy to accidentally deflect them into Dr. Death or his minions.

Did I forget to mention that these syringes are physical objects so you can knock them back via wallops into Dr. Death or his buddies? Sounds like a great way to use an acid syringe against them but be careful not to accidentally heal your foes faster than you can kill them.

Dr Death dispensing both positive and negative syringes

Since syringes are a key pickupable item in the game, all the synergies that work on syringes come into play during this fight.  For example, if you have the mutation Low Tolerance (doubles syringe effects) not only do the syringe bullets affect you twice as much, but any you wallop back will duplicate for double the fun!

The good doctor has more tricks up his sleeves.  He spawns a ton of surgical assistants (Mutant Choppers, blind in their VR headsets) in any room in which he spawns.  Start meleeing too much, and he has the ability to wallop YOU into any of the hazards in the room by smashing into the ground!  Finally, if the fight starts going against him, he's not above resurrecting his fallen Choppers to fight again.

Even in his current unpolished development form (he'll get impressive animations, particles, etc. down the road) he's still fun to fight.  Knocking syringes into his buddies can be quite amusing, and trying to get yourself healed mid-combat without eating a wallop or a face full of laser bullets adds extra challenge.

That ends the quick peek of this particular boss fight, so let's cover a few other developments from the last week:

  • We've worked on a slew of our deeper level NPCs.
  • We've streamlined the carnage and audience reward systems.
  • We've worked on some new mutations.
  • ...and more!

Check out our Twitch stream Thursday nights at 5pm PST and as always, feel free to comment or ask questions!




Hey Viralites!  This week, we address the burning question:  What's the BEST way to crush your enemies and drive them before you?

This week we're working on the mighty Pulverizer prototype - a giant hammer that lets you throw up enemies into the air, smash those thrown enemies so hard they fly through rocks, or smash the ground and unleash rocks falling from above.  Cool, right?  Well we'll see.  That's what prototyping is all about.  Let's dig in a little bit. 

The Pulverizer with AOE attack, lob/wallop combo, and raining missiles from the sky

What's a weapon imply for us?  Well, good question.  We're all about combinatorial goodness, as witnessed in our past bloggoriffic posts.  That is the art of making sure that when you pick up a cool mutation, it's very likely to change your gameplay.

You most often see combinatorialness blossom in "passive" items - ones that don't give you a new attack button to hit, but rather ones that layer on additional behavior to the attacks you already possess.  But what determines those attacks?

For us, the answer lies in your weapon.  Each weapon determines your basic primary and secondary attack (left and right button on your mouse if you're playing with a mouse).

For your starting sword, that's a basic wallop and a harpoon.  For a rocket launcher, primary fires a missile and secondary reloads (while knocking enemies back a little for breathing room).  Other weapons do radically different things.  The Pulverizer hammer does an AOE hit on a primary attack, while the secondary attack lobs lighter enemies up in the air.  Enemies that are flailing about in the air become extra vulnerable to your other attacks.

Powering up attacks is also possible.  Holding down the primary attack button generally lets you charge up for a megawallop that hits much farther than your standard wallop.  For the Pulverizer, it additionally unleashes a shock wave that drops rocks from the ceiling which you can knock around with your melee attacks into enemies - this replaces more standard projectiles.

Because of that whole combinatorial thing, each of these can be, well, mutated by mutations you pick up, which tend to affect weapon attacks in different but still related ways.  The Bomber mutation makes your sword harpoons into bombs normally - but for the Pulverizer it makes bombs rain from the sky instead of rocks. 

Orbit's effects on various weapon attacks

We try to have lots of interesting effects for a given mutation - Orbit makes your missile launcher shoot in circles (run!), makes walloped enemies loop around, and makes the Pulverizer force wave spin around and give you a nice close cluster of rocks to wallop at your enemies.  That's a good example of a single mutation having a good or bad effects depending on your other choices during a run. 

Stats matter too - they affect all these different attacks in different ways as well across the weapons.  Stats increase or decrease melee range, the speed projectiles, shockwaves, or walloped enemies travel at, how much damage happens, and many other things.  There's lots to consider on each run as your character develops.

We get asked sometimes - what kind of game is Gone Viral, anyways?  Well, with the right weapon, it's kind of a twin stick shooter.  With another weapon, it's almost a pure melee game (well, you might still be flinging enemies around like projectiles, but what the heck genre is that?) 

So you got us.  But the goal is simple:  Have fun through intelligible variety, and hopefully each run can have interesting* synergies over time.

Progress this week includes:

  • Work on prototyping the Pulverizer
  • Design work on our available bosses for Early Access
  • New level generation algorithms for some unique level maps
  • Projectile type stacking (i.e. Does Bomber have precedence in changing your projectiles to bombs or does Spikeballs take precedence in making them spiky?  Or does something else happen?)

Check out our weekly dev streams for more examples in action!  We stream Thursdays at 5pm PST, or check out our YouTube channel for the previous weeks' shows.  You'll see a weekly play-through, some showing off of recent progress, and then we'll generally do some implementation or go off on a bug hunt.  Join us!

* "interesting" does imply that some of these may kill you.  Hopefully in hilarious ways.





Above is a single basic room in Gone Viral (our upcoming indie action roguelite). To add to the variety and challenge, much of the game is randomly generated out of tiles. Yay!

Random generation does, however, make it harder to make rooms look as sexy as ones with custom-made decorations placed by a human artist. Getting from a bare set of individual tiles to a fully procedurally decorated room takes more steps than you might imagine - so in case it helps others, let's walk through the steps we take to decorate our rooms.

Let's focus on just the floor of the room since it acts as the background to the gameplay. Know that we do other randomly generated decorating for things like the greenery and lights on the walls!


Here's a floor with no decoration and a basic textured tile. It has some subtle color variation and internal tile lines in an attempt to limit that repetitive feeling you can get with big tiled floors, but the lack of variation and highlights adds up to blandness at best.

Mass spawning identical copies with no variation? Boo! Let's break up the repetitiveness...


First, even a small amount of variation helps. Let's mix in two more tile variations; a whole tile and a chipped tile. Now we will occasionally swap out the original art with one of the new looks (on a weighted basis since some tiles look distracting if they are too prevalent). Additionally, we'll rotate all tiles randomly to give them that little extra push towards feeling organically placed.

This breaks up that repetitive feel but has it gone too far? Now the floor has variance, but feels muddy and almost too random - not like it was a room built by people.


Adding clean and consistent border tiles, especially ones that connect together like these grating tiles, does a good job of placing the randomness inside an intentional frame. We have a quick algorithm to auto-place these around walls and around barriers, which can be overridden by a designer if they would like to hand-place gratings.

Not only does this reduce the randomness of the room as a whole but it also borders it and constrains it to a specific area. Now it feels a bit more room-y!


Adding a spotlight to the center of the room pushes the constructed feel of things even more.

It draws the eye to the center while giving an even and predictable drop off as your eye moves to the edges of the room. This softens the randomness without actually reducing it directly.

We also add floor clutter at random, although heavily biased towards the edges of the room. This helps break apart the incredibly regular border tiles just a bit while adding another layer of light randomness over everything, including tile boundaries.


Finally we're fully decorated - time to spawn in our gameplay objects like rocks, barrels, and crates! Generally these can either be hand-selected or spawned from "pools" of possible room contents.

When working on the tiles and backgrounds we're not using a lot of brightness or saturation, but as each room element type gets layered on top, we highlight things that are interactive or important to the player. Explosive barrels, destructible crates, and coin rewards stand out from less-interactive but still destructible rocks, which of course stand out from the background of the floor.

Now we can see and appreciate the floor doing what it was intended to do: Be a coherent background, while still directing attention to the important gameplay elements of the room.

Our game relies on random generation to continuously give the player new and interesting experiences each time they play and our visual goal is to have these spaces be visually interesting while not taking focus away from the action of the game. These methods of using and manipulating our art let us do that without sacrificing the visual style we want.

If you found this interesting, please follow or even wish list us on Steam! Thanks! It helps quite a lot.



3.15.2018  -  A DASH OF SYNERGY

Firewalker in action

This week, we'll follow up on some of our recent progress in mutations, which are the heart of the combinatorial goodness we're working on.  Those of you who are watching our Dev Streams (Thursday nights at 5 pm PST on the Skullbot Games Twitch channel) saw the beginning of the creation of Firewalker - a mutation that gives fire immunity as well as the sexy power of leaving behind a fire trail whenever you Dash.

Dash is one of those fundamentals we like to mutate in addition to the wallops and projectiles we talked about last week.  For mutations, the goal isn't so much to add new keystrokes or button sequences on the gamepad to memorize, but rather to add new goodness onto your fundamental ways of interacting with the game.  Weapons however, add new attacks and attack combos, while Carnage Items change the behavior of your  "Do A Cool Thing When I've Gained Enough Carnage" button.

Your basic Dash covers a lot of utility.  It's your basic key for "I wanna cross that pit" as well as a good closer during combat and a way to escape from enemy attacks heading your way.  It also does a small knock back to move enemies, barrels, or other movable objects around without causing them damage.  It can sometimes be very useful to position an explosive barrel or nudge an enemy to line up the perfect shot!

So any of these functional uses of Dash are fair game for us to mutate!  Sometimes we'll make it more useful in one way and slightly less useful in another, sometimes it will be a straight up rocking upgrade, and some mutations might be good for audience amusement but less good for, ya know, your own survival.

Firewalker straight up rocks, of course.  Leaving a trail of flames and getting fire immunity are a sexy combo.  On the utility front, Cash Dash adds coins whenever you collide with an enemy - why not make some money while incinerating your foes?

Either work especially well combined with the probably-too-similarly-named Dash Crash, which actually turns those gentle enemy nudges from your basic Dash into full damaging wallops.  This adds some great utility when you are using weapons like the Missile Launcher which have weak or non-damaging wallops themselves, meaning other great wallop synergies like Spike Strike or Acid Strike can now be used with those weapons!

Mildly OP Shotgun Mutants checking that projectile optimization went well

Anyhoo, we just wanted to give a little insight into recent mutation work.  This week has also seen the unsexy-but-critical implementation of optimizing projectiles which means we can now spawn hundreds of them with low overhead.  Fear our mighty test shotgunner firing 100 bullets per wave!  Sadly, he's gone back to his wimpy 3-unless-otherwise-mutated-shot version after his moment of glory.

We'll show more next week!  Check out the Dev Stream Thursdays at 5 pm as well for live updates and feel free to ask questions or give feedback either here in comments or then in Twitch chat!

Edit:  Further update after a reddit thread developed on the subject on the cute little shotgun mutant spam test gif above: 

Even more OP Shotgun Mutants shootin' death spirals

To push bullets to where it started breaking, I set seven of them to each shoot 101 bullets per burst, with each bullet .01s apart from the previous one, is where it knocked our FPS down to <30*.  That's actually not bad for being largely unoptimized IMO (though we tend to do optimization passes at least gently every few months). Go, Unreal Engine!

The next culprit looks like ProjectileMovementComponent ticking in the engine code, so we'll probs need to write a custom one of those at some point.  Since we're not really a bullet hell game (well we'll probably do a boss or two that way to mix it up) per se we might never need to do more TBH, but projectiles are usually one of the things you tend to optimize the heck out of over a project since there are lots of the little buggers.

*Caveats:  running in the editor, and while running OBS, and with non-nativized Blueprints, on a beefy but 3 year old machine.  The pedantic programmer in me can't resist giving context for pros and cons...