The Siege and The Sandfox - A Stealthvania set in an ancient desert kingdom


*A shining city lies besieged in the heart of a vast desert. As the moon rises over the royal palace, a notorious thief watches the king die at a traitor’s hand. Discovered, falsely accused, and thrown into the dungeon, our thief must make their escape before the siege breaks.

Master acrobatic abilities and traverse the cavernous depths of an ancient underground prison, evade detection by your captors and discover a greater evil stirs in the sands below. Fight for your city – foil the enemy’s attempt to strike at the heart of the kingdom.*

The Siege and the Sandfox is what we have termed a ‘Stealthvania’. By infusing stealth into the typical Metroidvania experience we’re creating a unique twist on the ever-popular genre.


  • Deep, acrobatic control system - Wall running, grappling, swinging and more.
  • Metroidvania style open world - Gain new abilities to help you explore the ancient fortress.
  • Stealth focused - Systemic stealth inspired by *Thief *and Mark of The Ninja.
  • Narrative driven - Deep lore to be discovered through ambient story telling.
  • Pixel Art - Authentic feeling art style, combined with UE4’s modern lighting and particle systems.

  • First Pass on character controller + movement. Includes sneaking, jumping, mantling, slides, wall jumps.
  • First Pass camera system implemented.
  • Tilemaps for all biomes created.
  • Tilemap markup + collision system implemented.

Hi Guys,

Thought it was long overdue for us to say hello to the official Unreal Engine forums. From now on, we’ll try and keep this thread up to date with whatever we’re working on.

In the mean time, if you’ve got any questions or comments, we’d love to hear them!

Looks really nice,

The swipe animation looks cool, but it feels strange to have such a heavy motion blur on the arm and almost nothing on the torch.

Totally love the pixel art art style and animations, can’t wait to see some more! Plus I utterly love the pixel-version of the Unreal Engine logo at the start of your video :smiley:

Thanks, !

The artists are rightly proud of the work they put into it :slight_smile:

Hey, I’m one of the pixel pushing art types on Siege and the Sandfox, thanks for the nice words!

After some internal review we decided that the lights in the game just weren’t quite in keeping with the pixel art aesthetic, bit too much gradient/inner glow use and therefore too many colours so I went back and redrew the flames to be more cartoon-ish and energetic as well as reduce them to a six colour count. They lose a bit of their majesty without the particle effects and lighting on top from Unreal but the new flame still turned out nice in my opinion and looks more fitting in the game now than the old one did.

  • Original - New -
    7ssQh6u.gif dF4vvq0.gif

Next up is the smoke effects, they are a bit too busy and distracting and as such need a rethink, maybe ribbon particles for a simpler, more anime inspired look…

I remember seeing you guys showing this off at GDC, great to see it on the forums finally!

Thanks , hope we gave a good impression despite being rather overwhelmed by the response!

Very nice! I’m loving the art and the direction this is going in general! Keep hammering away!!


My next job is to get cracking on the AI for the game.

It’s no secret that we’re all fans of immersive sim and stealth games like thief, and so I’m looking to take a similar approach ourselves. Obviously things are a bit easier as we’re only dealing with 2 dimensions!
The AI will use the AI Perception system and behaviour trees, as I’ve come to really like them while messing around with other projects. It may seem like overkill now, but it should pay off later when things get more complex.

I’ve broken down my tasks into 3 sections - Navigation, perception, suspicion.


This is the most straightforward part! All our tiles project out collision in 3d space, and then we can just place a nav mesh volume over this.

Things started off bad:


But got better by the end:


As you can see, we had to work out a few issues with the nav mesh agent heights and so on, but our Engineer soon wrangled it into shape.


As said, we’re using the AI perception system here. It provides pretty much everything we need in a handy module, and plays nice with behaviour trees. At the moment I’m just using to check if a player can be seen in a very basic manner.



The suspicion system is what turns this from an action game into stealth. This is the system that makes the guards go ‘huh?’, investigate things and generally be interesting. Creating this ‘stretched second’ where you’re just about to be spotted is essential.
For now, there’s just one global suspicion value on the character, which ticks up whenever the player is in sight. It’s scaled by distance (it goes up quicker if the player is closer), but doesn’t take into account anything else just yet.

This value ties to 3 states:

  • Not suspicious - Continue patrolling
  • Suspicious - stop and look in the direction of the suspicion
  • Pursue - Move towards the source of the suspicion

This value decays whenever the player isn’t in it sight, and the tree structure means the AI gracefully drops back down to the previous behaviour.

Putting it together

Coming Soon! Have a bunch of non-Sandfox tasks to get rid of, but I’ll make sure to post up how I get on asap. I’ll make sure to include a lot more pictures too :slight_smile:

Just a quick post to show a response to the criticism raised in the original post. Subtle tweaks have been made to the Torch bearing guard’s Attack animation, adding a more recognizable tail to the flame as it follows the swing of the arm. Proof (if it was ever needed) that Leonardo da Vinci was correct.
“Art is never finished, only abandoned.”

We are not abandoning this yet though!


The polishing continues

With the teams desire to try and be more faithful to the 16 bit era and use less, if not any, obvious transparent effects. This meant ditching the smoke effects we have and trying to come up with something more in keeping with our aesthetic. Ribbon particles seemed to be a cool way forward and so I have thrown something together and am quite happy with the result for now. The video is not the greatest quality unfortunately, Youtube Fu is not my strong point…

Cheeky yawn from our hero, not as impressed as I am with the new effects!

We are rolling with particle effects still as hand animating everything is going to take a very long time and has the added problem of always looking exactly the same, the chaos of a particle system is much more natural. We could get around that a bit (and have done with other animated items such as wall torches) by giving each instance a random start frame so if we have multiple torches in one scene, they aren’t all flickering in time with each other!

Other items to receive a bit of a buff are the doors. We felt they looked a bit too slim, unreadable to the player and when open didn’t have any sense of depth as they kept the same ‘lighting’ as they opened or shut. At 8 frames, opening and shutting also felt a bit snappy when in reality, our hero would probably open and shut doors with a bit of care so as not to be discovered.

I went back, basically binned the entire animation for each door (always hurts to do that!) in each environment and redrew them, giving the door more vibrant, brighter colours when shut (and therefore appearing closer to the camera) as well as being twice as thick. I then “painted it into the background” with darker colours as it opened up, giving much more sense of depth so the player didn’t feel like it may still block their progress. I also extended both open and shut animations by 50% so more frames had to be drawn and added secondary motion such as the handle “chases the door” as its opened or shut and rattles as the door ends its swing open.

siUROpC.gif eEgceV5.gif
Old Palace Door | New Palace Door

Up next is probably making the night sky a bit more dynamic, as the dawn and sunset shots make it feels very flat and dull right now but that will be something for another post. Any feedback or criticism is appreciated!

I finally managed to spend a bit of time working on the AI today.

I had to make some changes to some related systems to allow everything to run properly in simulation mode. A few things relied on their being a controlled pawn within the world, so this was a good chance to clean that up. It feels much better to be able to play with the AI in simulation mode rather than having to navigate the player around to test things. For simple interactions I can just drag the player character around and check the AI response. I also set-up some basic way points to allow the AI to patrol:


You can also see what I like to call the ‘perception biscuit’ as part of the gameplay debugging tool. As it’s designed primarily for 3d games it’s of limited use from the perspective, and the following image might give you a better idea of what’s going on:


Next on the list is getting the classification system working again. This is what takes the raw perception data, decides it’s an enemy and if they should investigate. I’m hoping to get through some of that tomorrow, and I’ll share any progress I make on here.

This looks amazing.

I got one question though, how did you made the lighting so good on the characters? Is there any way to use normal maps for Paper2D sprites/flipbooks?

Thank you and keep up the good work! :slight_smile:

This looks amazing indeed. Glad to see these paper2d projects coming up! We need more paper2d in the engine. When can we expect to play this beauty?

We need more paper2d in the engine. For our game, was have been using sprite dlight to get our normal maps, then we add them to our sprites. We haven’t messed with lighting too much in our game, but it does work.

That looks great!, One question are those debugging tools custom mode or came with the engine ( mostly speaking about the ones used in the AI the text displaying the controller name, behavior etc )

We are looking at some time next year. Plenty more to do, but we’ll share as much as we can along the way.

These debugging tools are part of the Gameplay Debugger. It can be a little tricky to get it to display, but it’s very useful as you can see. Let me know if you have an trouble as I made myself a cheat sheet to get it running.

Hey Achilleon, thanks for the kind words. All the sprites in the game are just your standard, non emissive materials and accept the standard lighting of the engine, no normal maps here. The ‘lighting’ I assume you are referring to is just what our character artist has painted into the hero and guards to help give a sense of depth. No real easy way around that other than just handpainting each character frame by frame. Old school pixel art basically. :wink:

You can use normal maps with sprites very easily, as they just use the standard Unreal material system setup. Tilemaps are set up differently for some reason and call in textures, not materials, so using normal maps there probably needs more thought. As we decided to not use normal maps (see below) I haven’t looked much more closely into how I could use normal maps on tilemaps.

I’ve not actually used SpriteLamp in anger, only seen the website and various videos so this may be me getting some wires crossed, but what I took away from it was the user is basically drawing the RGB channels of the normal map for SpriteLamp and it just combines them together? I might as well just make the normal map myself in Photoshop and then pass a normalise filter over it via the Nvidia Photoshop plugin? It can do other stuff I assume such as make AO maps or allow dynamic adjutsment of the created normal with embosses and the like, akin to NDo, but I normally get those from the highpoly (obviously not really that applicable in a pixel art 2D game!) or use something like NDo or CrazyBump.

We played around with the idea of normal mapping very early on in development and, whilst the results were quite nice, we always felt it removed something of the purity of the pixel art aesthetic for only a very subtle effect. There are some indie titles out there such as Megasphere and Dungeon of the Endless, that use normal mapped pixel art very well but ultimately it tends to work best on clean looking, hard edged “surfaces” (such as sci-fi environments, see MS and DotE examples linked) and our game has quite an old weathered look to most of the environment so it quickly just made the scene “noisy”. It’s also quite a lot of work for only a very subtle effect so the team decided against it.

Oh wow, the gameplay debugger looks extreamly useful for the AI work i have been doing, I managed to get it to show up But im sort of confused on how to get it to show up the Information about a specific Pawn / AIController in the world, As well extending it to display custom informaion inside said AIController and Pawn

Thank you. I tried to make the normal look work but failed. I will probably ask for help later from you, but very later! ^-^ No need to derail the thread about my problem though so ending it here!

I see now. I worked on some tests and it seems that my culprit was the transluceny acting reeeeeeally weird when it interracts with any lighting around. Anyhow thank you and good luck with the project, we definitely need more of these! :slight_smile: