TIGSource Forums

Community => DevLogs => Topic started by: samloeschen on June 27, 2016, 12:06:11 PM



Title: Silent Earth - a mysterious missile defense game
Post by: samloeschen on June 27, 2016, 12:06:11 PM
(http://i.imgur.com/OtYD91z.png)


Silent Earth is a vertical missile defense game where you defend a city from waves of enemies with weapons that you can modify for wildly varying effects and playstyles. It's largely a game about simulations, and how we perceive reality through them.

Latest Update: Performance Optimization (https://forums.tigsource.com/index.php?topic=56651.msg1291972#msg1291972)


Hey all - I'm Sam, the programmer and artist for our two man studio, Remote Games (http://remote-games.com/). We're currently finishing Silent Earth, our first game together. Silent Earth is a mobile missile defense game that we will be releasing in winter 2016/2017.

(http://i.imgur.com/nr3voNm.gif)




(http://i.imgur.com/rB8StTz.gif)


Development Status

Currently, we're somewhere in the last half of development. The game is super playable and stable, and runs great on most modern phones. We've got all of the weapons designed (two of them currently in progress) and we are principally working on the game's bosses, story, and audio. As a developer, I'm highly focused on polish, so I'll likely be tidying up animations and general feel throughout as we wrap up development. We're hoping to release in early fall on at least iOS and Android, likely accompanied by an Itch and Steam PC/Mac release as well.

We are building the game in Unity with C#. 90% of the art is procedurally generated, and the game will also feature a randomly generated soundtrack.



About Us

Remote Games is currently Sam Loeschen (me) of Richmond, VA, and Thomas Hoey of Bristol, UK. The company was pretty much born when I realized I needed custom audio for Silent Earth. I found Thomas through a post on r/gameaudio, and after awhile we realized we worked really well together. We have a website (http://remote-games.com/), which I update from time to time (most recently a blog post about how Silent Earth's dithering shader works).

I'll probably be updating this pretty often as Silent Earth's features are really starting to pull together. Thanks for reading :)









Title: Re: Silent Earth - a missile defense client from the future
Post by: Mark Mayers on June 27, 2016, 12:24:57 PM
Those are some pretty cool looking gifs :cavestory:

Good luck with development! Looking forward to reading more about the game.


Title: Re: Silent Earth - a missile defense game about failure
Post by: TonyNowak on June 27, 2016, 01:12:00 PM
Look fantastic, as does everything you guy's put out. :)


Title: Re: Silent Earth
Post by: samloeschen on June 27, 2016, 02:22:30 PM
Aw shucks, thanks guys. I'm gonna do an update with the new missile type probably tomorrow morning


Title: Re: Silent Earth
Post by: mgrilec2 on June 28, 2016, 03:57:46 AM
Love the glitches!

I'd love to buy a procedurally generated soundtrack? :P


Title: Re: Silent Earth
Post by: samloeschen on June 28, 2016, 04:32:58 PM
Hey everyone! I have some fairly substantial updates today to show you all. Today, I focused mainly on two new weapons - a horizontal-spread missile, and a force-effector missile.

Here's the physics-push in action:

(http://i.imgur.com/WwyJoaC.gif)

The basic idea here is a quick and impulsive attack that rather than targeting enemies directly, pushes chained explosions into enemies that wouldn't otherwise hit them. Ideally it will be a more efficient tool than the standard attack because it's a) instantaneous, b) recharges quickly, and c) makes massive chains, which bolster your progress bar (more on that later). I haven't even explored all of the potential ways to use it - I want it to have a lot of interplay with the other weapons and I think it's going to fit that position nicely. Currently there's no slick aiming animation for it, something I'll probably add tomorrow. I'm also probably going to make explosions from destroyed enemies inherit the velocity of the explosion that destroyed them, too.


Next up is the horizontal spread:

(http://imgur.com/ody4m0J.gif)


It's essentially a big, slow attack that you can use to either save yourself if overwhelmed, or combine with the physics push to make a shotgun:


(http://imgur.com/VUJ5NII.gif)


If anyone has a tip or two on making that thin horizontal line more juicy, I'd love to hear it! Not quite capturing the feeling I'd like with it currently. (more katana slash pls)

I'm feel pretty good about the two missiles so far, although I'm starting to think that the physics push is going to be the hardest to balance. I'm not yet sure if it should be a special missile with difficult execution but a big payoff, or if it should be more of a tool that players routinely use to shape the detonation cloud to play most efficiently.

I'm also at the point now where I have to decide whether to keep collectible ammo in the game. Previous builds of the game used an ammo crate that would descend from the sky like an enemy, and shooting it rewarded the player with two "clips" of ammunition. This was a really easy way to balance the missile types we used to have, but at some point I ended up making the standard missile have infinite ammo with a cool-down/recharge instead, and people responded really well.

In my opinion, ammo drops are really just a cool-down mechanic, the only difference is that the cool-down is execution based. That in mind, why not treat all the weapons like "skills" in an RPG instead of weapons that take ammunition? I think the only main sacrifice there is that I can't use ammunition as a reward (large ammunition dump after defeating a boss, for example). With the exception of survival shooters like Resident Evil or TLoE, I don't think I've ever had a moment in any fast-paced shooter where I've had fun being out of ammo or hunting for ammunition for my weapon.

Either way, if you guys have got any salient points on the new weapons or shooter/action design in general, I'd love to hear them!


Title: Re: Silent Earth
Post by: JamesRossi on June 28, 2016, 05:38:07 PM
For the horizontal bomb explosion line, perhaps have it so an initial blast occurs in the middle, then have the successive bombs ripple outward over the course of a moment or two, so in both directions bombs explode in quick succession. Connecting those explosions could be something like a jet contrail that forms and then dissipates quickly. I'm essentially imagining something like 2 jets shooting out horizontally at a fast speed, from the initial blast, as they then drop and detonate bombs behind them.


Title: Re: Silent Earth
Post by: samloeschen on June 28, 2016, 06:20:49 PM
@JamesRossi that's really not a bad idea actually! I'd really like to get an effect similar to this line attack from Katana ZERO (https://forums.tigsource.com/index.php?topic=51871.0):

(http://www.katanazero.com/images/screens/screen1.gif)


Title: Re: Silent Earth
Post by: JamesRossi on June 28, 2016, 06:47:18 PM
Yeah, that slash looks super good. It'd be great to draw from for that effect.


Title: Re: Silent Earth
Post by: Mark Mayers on July 01, 2016, 11:45:30 AM
(http://imgur.com/ody4m0J.gif)

Have you thought about doing arbitrary shapes for the explosions rather than just circles?
Could look really interesting visually and diversify the weapons, but also provide some gameplay value.

Ex. that horizontal attack would be a dynamic polygon rather than a set of circles.
Maybe similar to horizontal lightning or something?

(http://i.imgur.com/dFgAi1j.jpg)


Title: Re: Silent Earth
Post by: samloeschen on July 12, 2016, 10:56:18 AM
Quote
Have you thought about doing arbitrary shapes for the explosions rather than just circles?

Mark, I actually hadn't! Generating random polygons would actually be really simple. I might give it a try. I think my initial love of circles is that mechanically, they are very predictable. The circle explosions do tend to look really nice in a chain at the moment, so it would probably have to be more round shapes.


Title: Re: Silent Earth
Post by: samloeschen on July 12, 2016, 11:39:37 AM
Hey all, sorry for being quiet on here the last two weeks. Been very busy keeping up with contract work, and had to go through several iterations of the newest weapon before I felt comfortable putting it out for feedback.

Today I present the (mostly) finished force-push!


(http://i.imgur.com/oxRhC4e.gif)

As you can see, I'm still very much polishing up some things like preventing explosions from descending into the UI, and further tuning/polishing of the physics, but the results are spectacular!

The idea behind it is simple. There's an "autopilot" that shoots missiles for you (but not with perfect accuracy), and you tap/click to connect the explosions to enemies and build chains. Originally, the weapon couldn't do any direct damage - it was only used to push explosions around that you had created with the other weapons. I realized pretty early on that the decision path of fire -> switch weapons -> force push -> switch back was absolutely not the path of least resistance players would take. It's simply far too much work for the modest reward of having a nicer chain and conserving ammunition, even if it is really fun to use. You can still do combos with other weapons, but the force push needed to stand independently on its own as a damage-dealing weapon.


To make the targeting system more apparent, I added a tracker/lock on reticle that tells you the next missile the autopilot will target. Here it is in action:

(http://i.imgur.com/E5mfGBU.gif)


To control the radius and strength of the push, you can hold instead of tapping. Here's an example of some big pushes:


(http://i.imgur.com/oLWaVoK.gif)

There's also an overheat bar at the bottom. While the limit is generous, it's basically there to keep players from abusing the physics and adds more risk/reward to doing extremely big pushes, which can overheat up to 70%.

I'm strongly considering making the force-push the first weapon that new players have access to when starting the game for the first time. There are two reasons for this - One, it teaches the timing and chaining mechanics of the game without the player having to learn them completely on their own, and two, it's immensely fun to use which will make it a good initial hook for new players.

I'm pretty happy with the results right now, and it plays amazingly on a phone. I still need to tweak the physics quite a bit and balance it with the other weapons a bit more. Also, if anyone has recommendations for improving it's god-awful icon, I'd love to hear them :)



Title: Re: Silent Earth
Post by: samloeschen on July 19, 2016, 03:08:14 PM
Just wanted to post a quick update of some things I've been working on over the past two days. First up, I created a shockwave - distortion effect for the force push weapon. Really pleased with the results! I basically just edited Unity's default glass shader to work with an orthographic camera, so I'll attach it at the end of this post for anyone to use.

Here it is in action:
(http://i.imgur.com/v4JzYzR.gif)

Next up, I started putting together a new boss for the game. I've decided that having 3D low-poly bosses instead of sprites would look amazing, so I pulled open Blender for the first time in what feels like forever and made this clamshell-laser guy:

(http://i.imgur.com/4jINW4Q.png)


The model might seem a bit too aggressively low-poly, but this is intentional. I'll be writing a lit version of the dithering shader used on the mountains and sky that will go on the boss, so I want to keep topological details as minimal as possible so that the dithering won't look too noisy.

That's it for today. I'll probably post another update once I have the boss animated and moving around. Thanks for reading!


Oh - before I forget. Here's that shader if anyone wants to use it. Just give it a normal map for whatever you want the distortion to look like and it should work!

Code:
Shader "Sam Loeschen/ShockwaveDistort" {
Properties{
_MainTex("MainTex", 2D) = "white" {}
_BumpAmt("Distortion", range(0,128)) = 10
_BumpMap("Normalmap", 2D) = "bump" {}
}

Category{

Tags { "Queue" = "Transparent" "RenderType" = "Opaque"}
Lighting Off Cull Off ZTest Always ZWrite Off Fog { Mode Off }

SubShader {

GrabPass {
Name "BASE"
}

Pass {
Name "BASE"

CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_fog
#include "UnityCG.cginc"

struct appdata_t {
float4 vertex : POSITION;
float2 texcoord: TEXCOORD0;
};

struct v2f {
float4 vertex : SV_POSITION;
float4 uvgrab : TEXCOORD0;
float2 uvbump : TEXCOORD1;
float2 uvmain : TEXCOORD2;
};

float _BumpAmt;
float4 _BumpMap_ST;
float4 _MainTex_ST;

v2f vert(appdata_t v)
{
v2f o;
o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
#if UNITY_UV_STARTS_AT_TOP
float scale = -1.0;
#else
float scale = 1.0;
#endif
o.uvgrab.xy = (float2(o.vertex.x, o.vertex.y*scale) + o.vertex.w) * 0.5;
o.uvgrab.zw = o.vertex.zw;
o.uvbump = TRANSFORM_TEX(v.texcoord, _BumpMap);
o.uvmain = TRANSFORM_TEX(v.texcoord, _MainTex);
return o;
}

sampler2D _GrabTexture;
float4 _GrabTexture_TexelSize;
sampler2D _BumpMap;

half4 frag(v2f i) : SV_Target
{
// calculate perturbed coordinates
half2 bump = UnpackNormal(tex2D(_BumpMap, i.uvbump)).rg;
float offset = bump.xy * _BumpAmt * _GrabTexture_TexelSize.xy;
i.uvgrab.xy = offset * 1.0f + i.uvgrab.xy;
half4 col = tex2Dproj(_GrabTexture, UNITY_PROJ_COORD(i.uvgrab));
return col;
}

ENDCG
}
}
}
}


Title: Re: Silent Earth
Post by: JWest on July 20, 2016, 01:25:46 AM
This looks incredible!  I'm posting so I can get notified for any updates in the future, looking forward to seeeing the results!


Title: Re: Silent Earth
Post by: Mark Mayers on July 21, 2016, 06:32:03 AM
That physics pushing of explosions looks really cool, adds a lot of depth to the gameplay!


Title: Re: Silent Earth
Post by: samloeschen on July 21, 2016, 08:12:23 AM
Mark, thanks dude! it works really well. I think it will be a good second weapon for players to unlock.


JWest, thank you as well! We're going to shoot a live action trailer for the game soon, and I'll probably do a series of posts on that.


Title: Re: Silent Earth
Post by: samloeschen on July 22, 2016, 08:09:51 AM
I made a lit version of the dithering shader for the boss!

(http://i.imgur.com/ml9asf0.gif)

This was actually really simple to set up. It's still using the same dithering algorithm in an unlit fragment shader, but I added a light vector to simulate really simple half-lambert lighting. The math is pretty simple:

Code:
float light = dot(FragmentWorldNormal, LightDir) * 0.5f + 0.5f;

Seriously, that's all there is to simple lambert lighting! Multiplying and adding 0.5f makes it "half lambert", like the character shader in TF2. The light value is then multiplied into the dithering pattern algorithm I already have in place for the other objects.

You might notice that the back faces inside the boss's shell get the same lighting as the corresponding front face - this is just an unfortunate side effect of having ultra simple (ultra fast) lighting like this. No shadows or luminosity or emission of any kind. This is fine for me, since so far the only things that will have "lighting" are the bosses - I have no plans to dynamically light anything else. Being that they'll be moving around a lot and the dithering actually adds a lot of implied detail at a distance, I don't think it will be noticeable. It might actually look better than a surface shader!

I'll post again when I have the boss up and running :)



Title: Re: Silent Earth
Post by: TheWanderingBen on July 24, 2016, 08:49:14 AM
I love the art direction! The shading drew me into the concept, and now I'm curious to see the game evolve further. I'd love to hear the audio, since I bet some tunes could go really well with this retro theme.

Posting to follow, continued luck! :toastR:

P.S.: If you're still looking at giving the Horizontal Spread more oomph, have you considered making the line thicker, then disappear much more quickly? It seems that's the main difference between your effect and the one in Katana ZERO. Otherwise, I'd also try a screen shake effect. Since you're already jiggling the screen during gameplay, a larger shake wouldn't be too bothersome and could really give that line some impact.


Title: Re: Silent Earth
Post by: samloeschen on July 24, 2016, 12:56:43 PM
TheWanderingBen: Glad you like how it's looking so far. Audio is a huge part of this game, and we'll definitely be talking much more about it very soon. Right now we're working on a very analog-synth heavy soundtrack with some procedurally generated parts. We also plan on releasing a remix EP alongside the game!

 I'm going to try your recommendation for the horizontal spread, seems like it might work nicely.


Title: Re: Silent Earth
Post by: samloeschen on July 24, 2016, 12:59:16 PM

Almost forgot - I put together an entrance animation for the boss:

(http://i.imgur.com/FAl0d1M.gif)



Title: Re: Silent Earth
Post by: JamesRossi on July 27, 2016, 07:16:46 AM
With the relative simplicity of the rest of the art, that boss strolling in makes it look really damn serious. It's a great contrast while also staying within the current artistic style.


Title: Re: Silent Earth
Post by: samloeschen on August 01, 2016, 07:25:48 AM
So I'm really busy with work this week but I thought it would be really cool to get some unlockable palettes from the community. So I made instructions! Send me your best palette :)

(http://i.imgur.com/Yw3GZxP.png)


Title: Re: Silent Earth
Post by: Mark Mayers on August 01, 2016, 07:36:30 AM
Looks like you've made a ton of progress since I last saw you at IndieCade.

Keep up the great work :)


Title: Re: Silent Earth
Post by: samloeschen on August 01, 2016, 07:41:35 AM
@Mark: Thanks man, It's definitely coming along. Very happy with the results of this summer. Desolus is looking incredible as well :)


Title: Re: Silent Earth
Post by: samloeschen on August 04, 2016, 05:51:01 PM
This week I've been making some pretty substantial mechanical/core gameplay improvements. The biggest change of these is unifying health and weapon cooldown/ammo into one mechanic, the Energy Bar. In essence, you now pay health to use your weapons, but get health back by scoring large explosions chains. Here's a simple example:


(http://i.imgur.com/SKeySB1.gif)

Your energy also replenishes itself, albeit very slowly, and damage is directly expressed as depleted energy. I've intentionally made it so that it costs a little more to shoot a missile than you get back from a single kill, which serves to provide further incentive to plan chains and carefully choose shots. The new system has a ton of advantages:

• Adds lots of drama to gameplay, especially to the beginning of a session which was previously a bit boring
• Chaining, which is probably the most fun mechanic in the game, is now heavily rewarded
• It unifies all the weapons - the force push no longer needs an awkward special overheat bar
• Provides risk/reward balance to weapons. If it's a more powerful weapon, you have to burn more life to use it
• Health is now meaningful. Previously you would just play until you ran out of health, which is dull
• No longer need an ammunition system. Personally, I find keeping track of ammo quantities kind of tedious/boring


Here's a gif of the energy system working with the force push:
 
(http://i.imgur.com/1TtgKGw.gif)

There are a few small disadvantages to this new system. One, the game's drama feels a lot more centered on the player, instead of the city they are protecting. This is probably just a narrative detail I can find some way to lampshade or iron out. Two, I had to throw out the cool auto-targeting system I made for the force push - it was really obnoxious having the weapon automatically consume the player's energy while they were using it, even if it wasn't advantageous for it to do so. Three, it is currently possible to kill yourself by using up all your energy, and I haven't yet decided if I want to keep that in the game or not.

I did make some other small changes - player explosions are now a bit smaller, requiring more careful placement of shots, and I drastically shortened the time it took to switch between weapons.

All in all, Silent Earth is now far more exciting to play than ever before. I still have a lot of balancing work to do with this new system, but it definitely feels like a good move.




Title: Re: Silent Earth
Post by: TheWanderingBen on August 05, 2016, 12:11:05 AM
I love the universal energy versus individual weapon ammo. Seems like an excellent simplification!

Regarding two of your complaints with the system:

One, the game's drama feels a lot more centered on the player, instead of the city they are protecting... Three, it is currently possible to kill yourself by using up all your energy, and I haven't yet decided if I want to keep that in the game or not.

Might I suggest Energy not being Health, but still just Ammo? So then, if Energy is just universal Ammo, what would Health be? Well, instead of having a bar, just make the "Health" the representation of the city itself. You're already showing the city as buildings that are destroyed when missiles hit them. Why not make it so that, once all of the city is destroyed, the player loses? That way the player can't directly kill themselves by overusing energy, either.

Taking a look at your early screenshots, that's what I thought the initial gameplay was. It makes intuitive sense and doesn't require extra HUD elements. Of course, maybe that is what it was and you changed the gameplay for a reason -- if that's the case, sorry for wasting this post ;) But I think it could be interesting to go to universal Ammo and static Health


Title: Re: Silent Earth
Post by: samloeschen on August 10, 2016, 07:36:29 AM
Taking feedback from TheWanderingBen, Mark Mayers, and others into account, I've come up with a final health/energy system I'm really happy with! I've added a shield that also draws power from the energy bar, and made the city a representation of persistent/static health.


(http://i.imgur.com/RQwmgr4.png)


The end result is a health/shield system that works quite a lot like Halo 1, with the caveat that the weapons and shield share the same energy pool. This means that shooting reduces the number of hits the shield can take:


(http://i.imgur.com/0EuWSDm.gif)


and vice versa:


(http://i.imgur.com/kopHuhc.gif)

Currently, the shield completely shuts off when energy is reduced beneath 1/3 of the total, and the city beneath it is exposed to taking direct damage from enemy missiles.

Again, there are a lot of nice benefits here:

• The shield adds a lot more strategy and depth to the energy management mechanic
• It encourages the player to play higher on the screen, and make more difficult, high-anticipation shots
• It introduces some really cool narrative opportunities
• Looks wicked

I still have a lot of balancing to do to make all of this feel nice and tidy, but I'm very happy with the extra depth the new health system has added.

Next up, I'll be writing a post about the enemy formation system I've been working on!






Title: Re: Silent Earth
Post by: samloeschen on August 23, 2016, 08:08:33 AM
Alright, sorry for the slightly-longer-than-usual lapse in updates. I've been working on what is (probably) the last big gameplay tweak I'll be making before finishing the rest of the game's content and story.

Previously, Silent Earth featured different weapons with varying properties/styles that you would switch between during combat. To select different weapons, you would use buttons placed at the bottom of the screen, sort of like the dock icons on a phone. The idea is that you switch weapons during play to create powerful emergent attacks (shooting with the horizontal line and then switching to the force push creates a shotgun, for example). While it was a cool concept in theory, I noticed that people really had trouble switching between weapons during the game, even when I tweaked other mechanics to provide more incentive to do so. They would typically try them out in the beginning of the game, and stick with whatever they were last using when the game's difficulty increased. No matter how good or fun a weapon was to use, Silent Earth's gameplay is too fast/reactionary to ask players to figure out what weapon would be best for them to use at the moment rather than just shooting with whatever is convenient.

I looked at a few possible solutions; special enemies requiring the player to switch like in Devil May Cry, automatic switching over time/enemies killed, or simply slowing the game down, but I ended up simply removing the weapon switching entirely. Instead, I  replaced it with an upgrade/modification system that is somewhere between the perk system in Downwell, and the ugprade system common in many shmups. Here's a gif showing the basics:

(http://i.imgur.com/OxQ6wee.gif)

You'll notice that instead of the usual weapon buttons at the bottom of the screen, there are two modification slots instead. Dragging a weapon mod into one of these slots adds a new aiming reticle and explosion effect to the basic missile weapon. In the gif, I first add the line mod which adds a quick horizontal beam that destroys anything at that height across the screen. After that I add the force mod, which of course adds the force push effect to the explosion.

To be clear, this will most likely not be a task that you have to deal with during the defense gameplay. I plan on splitting up the enemies into soft waves or phases, between which you'll be given a new mod or two and a short time with which to assign them to your slots. The old mods you aren't using will disappear when the next phase begins. Bosses will likely give you several mods to pick from.

I am currently unsure if I should keep the draggable mods as being represented by icons, or have something more descriptive. In Metal Slug, weapons drops are described by a short abbreviation, usually one letter (S for Shotgun). I think that might work well but I need to test it!

I like this system because it really, really simplifies the gameplay without removing depth. There's only one input now, which obviously is tapping the sky to shoot missiles. In addition, I can create many more unique mods than I can dedicated weapons, both because there is a much larger possibility space for mods than weapons (they don't have to be as powerful as a dedicated weapon) and the fact that I don't have to fit all of them on screen at once. I'm very excited to make a bunch of different mods and try out various combinations! I already have a lot of ideas for them.

Other things I've been working on include:

• Juice-ifying animations for everything - all of the explosions now have a 2-frame black -> white silhouette that flashes when the explosion is created. Next up is the UI

• More palettes!

• Various performance and shader optimizations, the game currently gets right at 60 FPS on a Galaxy S4  :handthumbsupL:

• A live-action trailer! More on that very soon after I get the new upgrade/mod system more presentable :)


Title: Re: Silent Earth - a mysterious missile defense game
Post by: samloeschen on September 08, 2016, 07:44:44 AM
And two weeks later, we have this shiny new menu!

(http://i.imgur.com/YcWn87c.gif)


The main concept here is that this menu expands in between phases of enemies. The phases are "soft", in that a phase will continue until a certain quota (currently 20) of enemies are killed by the player. So if you're not killing anything or taking a lot of hits on the shield, the phase will last longer. Currently there is no indicator of the player's progress through a phase, but that's on the way.

This screen took awhile because I wanted the icons to function almost like Facebook Messenger chat heads, and in general make interacting with them as pleasant and joyous as possible. On mobile, you can flick them around and bounce them off of each other.

Just like all the other interface elements in Silent Earth, everything here is rendered and animated programmatically using quads and lines drawn with Vectrosity. I still need to fix some small things like the kerning on the text, and make the touch/flicking input on mobile a tad more fluid, but the menu works really well on the whole.

Over the next week or so I'll be working on the first boss' gameplay, and possibly some more weapon mods if I have time. Cheers, and thanks for reading!



Title: Re: Silent Earth - a mysterious missile defense game
Post by: Enrique Ponce on September 08, 2016, 08:48:56 AM
I have absolutely been enjoying every update with this game. The aesthetics of the game alone would be enough to get me hooked on this. Congratulations!  :toastL:


Title: Re: Silent Earth - a mysterious missile defense game
Post by: samloeschen on September 09, 2016, 02:45:16 PM
I have absolutely been enjoying every update with this game. The aesthetics of the game alone would be enough to get me hooked on this. Congratulations!  :toastL:

Hey thanks! Thomas and I greatly appreciate it :)


Title: Re: Silent Earth - a mysterious missile defense game
Post by: samloeschen on September 14, 2016, 09:13:28 AM
Quick update - the past few days I've been working on mechanical balance and performance optimizations. Missiles are now a bit more expensive, and the shield a bit more forgiving for when it goes down (just a little over 1/3rd of the energy bar). So far people are feeling pretty good about it.

I also added this fancy masking effect to the explosions to make the chaining effect a little more apparent:

(http://i.imgur.com/eqEENuB.gif)

This pretty much just works by drawing all the explosions on a separate camera, along with a mask shader, which is just an unlit shader that only writes to the z-buffer. These are combined with some manipulation of the z-buffer where newer objects are pushed back to overlap explosions and masks.

Next, I'll be making a polish/juice pass on the game, and starting to delve into narrative territory. As always, thanks for reading!


Title: Re: Silent Earth - a mysterious missile defense game
Post by: digitallava on September 15, 2016, 04:14:32 AM
Been lurkin on this for a long while. Love how much effort is being put into the visuals, I've spent way to long just staring at every gif. Really looks like something special.

From a purely visual perspective I think the explosions look better without the masking, though it does make it more readable so I suppose that should win out.


Title: Re: Silent Earth - a mysterious missile defense game
Post by: samloeschen on September 29, 2016, 07:38:16 AM
Big update today!

I've been super busy sending out builds and preparing for/tabling at a few conventions. Most recently I've added an attract mode like you'd find on an arcade machine (crucial for showing off the game to people, especially at conventions), and fixed a ton of bugs and general optimizations. We also have sound back in the game, which pretty much warrants a whole post on its own where I'll cover our sound design and integration techniques.

Most interestingly though, I've started up again on fleshing out Silent Earth's content. I've been trying to explore enemies that don't directly attack the city, but still either make it more difficult for the player to kill enemies that do, or to make it easier for other enemies to reach the ground. I also plan on working on enemies that exploit the shield mechanic as well, but more on that later! The first new enemy is this guy, which I came up with yesterday:


(http://i.imgur.com/jOv3MVr.gif)

It's another geometric robot (expect a lot more of those, I think) that drops down into the game and releases a beam that neutralizes your missiles and any explosions it touches. So, if you fire a missile at it and the missile hit the beam, the missile cancels, like this:

(http://i.imgur.com/Amb1qOC.gif)

Since it doesn't actually attack the city, it takes two hits directly to its body to kill it. Being that it takes up such a large amount of the playable area of the screen, I'm spawning them pretty rarely right now, maybe twice in a round at high difficulty. It also takes two hits to kill. As such, it almost feels like a mini-boss, even though they don't do any direct damage. I might nerf or make it smaller so that I can spawn more at a time, but currently they are quite fun and add a lot of spice to the gameplay.

I am very interested in coming up with a lot more technical or "puzzley" enemies like this one, or at least enemies that augment or play off the strengths of others to make gameplay more varied. It might also be nice to do "themed" waves, such as a wave of few but very fast enemies, or a wave with lots of technical enemies like the one above.

You may have also noticed that there are now four missiles instead of five - at Makerfest RVA I got a really good response to completely unlimited ammo (you can keep firing when out of energy), and increased missile energy cost + increased energy back from chains. The shield now represents the entire energy bar, and only goes down when you've completely emptied it. In other words, the game plays very similarly, but a higher emphasis is now placed on energy management, and the relationship between firing and the shield is a whole lot clearer, especially for new players.

In other news, I'm very happy to say we have made it past round one of selection for the Magfest Indie VideoGame Showcase! We're making a big content push to get a build together for round two, so expect a lot more updates in the next two weeks as I'll actually have interesting new stuff to talk about and make gifs of. As always, thanks for reading!

Signing off for now,

Sam




Title: Re: Silent Earth - a mysterious missile defense game
Post by: samloeschen on October 05, 2016, 07:57:45 AM
Yesterday I added another new enemy - this one releases an EMP that will knock out your shield in one hit, but he doesn't do any direct damage. He also boggles your screen a bit:

(http://i.imgur.com/MkU7c8W.gif)

I figured he would be a good variation on the normal missile enemies for later levels. Tying a lot of this stuff up today, so I'll have some full gameplay gifs for you guys later this week!


Title: Re: Silent Earth - a mysterious missile defense game
Post by: samloeschen on October 11, 2016, 08:07:47 AM

Silent Earth's first boss is up and running, along with a bunch of other new features!

Here's a gif of the boss in action:


(http://i.imgur.com/nr3voNm.gif)



He has three stages of varying aggressiveness/difficulty. In this gif, he's in the second stage where he's at his most aggressive - he'll try and shoot at you while drifting into position, and focus the beam for longer than the other stages. The first stage is the least difficult so the player can learn how to fight him, and the last stage he plays much more cautiously, trying to outwit the player by dodging frequently and taking pot shots. Currently it takes 12 direct hits to kill him.

At the moment I don't have any kind of health bar or special UI for the boss, but I'm almost okay with the boss' health bars just being their own behavior, because the stages are (to me) quite distinct. This also fits into the narrative in that the software you're using wasn't designed for fighting against these guys, which might make them more interesting/scary if I play that up. On the other hand, going full blown UI with a boss title-card and all could be an epic homage to the boss fights I loved/feared as a kid.

The laser beam does need a bit more work - I can't have collisions on the blast circles for performance reasons, so it's doing a pretty basic (fast) circle line check to see if it intersects any of them. To make it feel more fair, it adds half of the current width of the laser beam to each circle's radius when it does the calculation which is what makes it stop short and clip like that. Basically, I just need to think of a cool effect to put on the end of the beam that will mask the clipping, and tweak the animation values some more.

Silent earth also has a dynamic difficulty system now! At Makerfest, before I had even considered adding the feature, a lot of people who played asked me if it had one already. It's very soft (it doesn't completely change the game's behaviour like in Left 4 Dead) but it does seem to do a good job of helping players stay in a flow state, and keeps them from getting too bored. The current metrics it evaluates difficulty on are:

The delta of the player's health this wave, taking damage means the game gets slightly easier

The average height the player is killing enemies at (which is weighted - very high is positive difficulty, very low is negative difficulty)

Shot efficiency (how many things chained off of this shot)

Shot accuracy (how many shots are wasted)

And of course, their overall progress through the round.


I've also been working on modifying the spawning system to include more varied waves and make room for more authorship on my part, but the details there are pretty in-depth so I'll save that for the next post. Thanks for reading!

ALSO, I'll be sending out a round of feedback builds next week, so if you'd like to test out the game, just send me a PM with your platform of choice! (Currently supporting Android/PC/Mac)




Title: Re: Silent Earth - a mysterious missile defense game
Post by: samloeschen on October 24, 2016, 06:23:51 AM
Hey everyone! I've just spent a week and a half optimizing the game from the ground up. It's very fast now, and likely won't require any further polish in this area if I continue to be mindful about performance while adding extra content.

(https://puu.sh/rTWU0/cb5c77bd76.png)

Currently the game idles about 23 batches, and peaks at about 35 when fighting a boss. This is down from about 35 - 70 respectively - a massive improvement in that area.

There are two other big optimizations that made a significant impact. The first was removing all palette code from the shaders themselves, and instead replacing it with a scripted callback that manually updates the colors on each material when the palette changes. This means that stuff like the GUI labels and mountains are the only things in the scene that require a tex2D() call in their shaders, which drastically reduced VRAM consumed by the game. I also consolidated most of the game's materials (this helped with batching, obviously) down to 6 materials, not including the boss (which uses 4 by itself).

The other big optimization was with Vectrosity, the plugin that handles all of Silent Earth's line rendering (literally all of it, including the GUI) - I had overlooked the fact that if you use Vectrosity's standard material for lines instead of a custom material, it will draw all the lines in the scene, regardless of poly count or color, in one draw call. Silent Earth is super mega line heavy, so naturally taking advantage of this improved performance drastically.

Finally, I've also got the game's garbage collection down to near-zero. I'm certainly very proud to say that none of my code generates any garbage (!!!), but unfortunately there is still some unavoidable garbage generated by FMOD, our audio middleware. I could probably go and mess with their source code to try and alleviate it, but currently it peaks about 83B/frame which is probably in the realm of minutae. This didn't yield as much of a performance increase, but it did make garbage collection much, much easier to conceal from the player, as I now trigger it manually after each wave.


So, all in all, the game is probably over 50% faster now! Even under stress I cannot make the game dip beneath 60 fps on my 2014 Moto X, and it gets a modest (but still remarkable) 40 fps on an ancient Galaxy S3 Mini. It's starting to feel like something releasable :)

In the next week or so I hope to be fleshing out some of the game's narrative, so make sure to check back soon if you want to hear our plans on telling Silent Earth's story :)