Shadowdancer Asset Resources

Here are all the assets we used to create Shadowdancer. Some of them we purchased, others were available for free. We put all of the necessary credits into our game, that you can access from the main menu by clicking on the Credits button.

Full disclosure: Some of the links below are affiliate links, which means if you choose to make a purchase, I will earn a commission. This commission comes at no additional cost to you. Please understand that I have experience with all of these assets and publishers, and I recommend them because they are helpful and useful, not because of the small commissions I make if you decide to buy something. Please do not spend any money on these products unless you feel you need them or that they will help you achieve your goals.

Game Base

We used these assets to build the core of the game, such as character controllers, damage system, etc.

3D Game Kit

Unity Technologies

A free starter kit by Unity Technologies for 3D Games. We relied heavily on the character controller, trigger functionality, interactions, enemy behavior, and more.

Shadow Detect

GloomyGlow Studio

The core of Shadowdancer’s ability is to know if you are in shadow or not. We expanded the capability of this asset to handle real-time shadows from multiple sources and occlusion.


While we used our own characters, we had to use these assets and tools to truly bring them to life:

Mixamo Animations


We needed sneaking animation, and luckily we found an acceptable quality. We gave a try to the Auto rigger tool too, but it turned out that Rigify for Blender yielded a better result.

Longsword AnimSet


The enemy character’s swordplay and attack behavior were based on Kubold’s animation set. This package is no longer available, but the publisher has several other packages that are worth buying.


All of the environment in Shadowdancer was made by us, some of them were already at hand, while other models (tents, puzzle room props, ruins) were made for this specific game.

Poly Environment

These are our cheery, low-poly natural environment model packs. All of them contains small dwellings and a few everyday objects too.

VFX and Particles

We needed special effects for Shadowdancer’s tranformation, as well as the shadow jump abilty marke. We also used effects from this pack in the mountainside particles and the puzzle room.

Magic Arsenal

Archanor VFX

This effects pack has a huge library of colorful magical and elemental effects complete with sounds. It is a simple and good source for kitbashing too.


We used a few ambient sounds and effects in the game, here are our sources:

Game Audio GDC 2019

Sonniss is a proud sponsor of GDC and they generously shared a vast library of sound samples  during the event. We used some effects from their library.


Music Technology Group

We used some Creative Commons licenced ambient sounds from for outdoor and indoor environments, as well as some sound effects such as falling rocks.


All images are from their respective asset store page or website.

Work In Progress – Traps Collection

The Inspiration

There could be no proper dungeons or ancient burial sites without some deadly traps in any fantasy or adventure game! Our biggest art pack Dark Fantasy Kit sadly missed this handy feature to keep unwanted visitors/looters out.  So I decided that the next batch of models would be mechanical dungeon traps.

Since I am a huge adventure game fan, I have plenty of experience with dungeon traps of any sorts. I remember how much I liked traversing through the trap-filled corridors in Tomb Raider, or jumping surprised when a spiked grate smashed poor Dragonborn in Skyrim. I also found unique the disable device mechanics in Dungeons & Dragons Online, where a rogue or similar character can search, find, and disarm traps in the dungeon to help his party members moving forward.

Traversing across traps in Tomb Raider Anniversary
Sneaking around and trying to spot traps in Skyrim
Blazing fire traps in Dungeons & Dragons Online.

My aim with this pack is threefold:

  • To create standalone, drag-and-drop traps for Unity, complete with particles, animation, sound, and triggers
  • Improve my modeling and texturing skills
  • Advance my knowledge on Unity triggers & events system.

Planning forward

Usually, before I jump into a project like this, I like to organize my thoughts, references, and estimate roughly how long it will take. I pop up a spreadsheet and fill out a few details about the models – how many models I want, are there any variants, what resources I’ll need. I also create a reference folder where I gather photos from Google. After that, I make a separate progress sheet or create a Trello board to track my progress. I like to mark finished items with green, in-progress with orange, and problematic elements with red.


While working on Shadowdancer, I learned the importance of prototyping. I try to incorporate good habits into other fields of my profession, such as asset creation.

In about 4-5 hours, I created the first draft from one of the traps – I choose a flying spear trap, one of my favorites. I don’t aim to be perfect this time, just want to know the estimated complexity and time for one piece, so I can see the scope of the whole work.

This was a good opportunity to expand my knowledge about glTF2 format and real-time rendering in browsers. So I uploaded the animated spear trap with a dungeon wall to Sketchfab. As you can see, this didn’t go perfectly – some of the material colors are off, audio is missing, and Sketchfab doesn’t support particles and trails. At this point, this is not a problem, since I use Sketchfab for static 3D presentation only. This made me decide that I definitely need detailed videos showing all the features and effects.

This is how the Spear Trap is set up in the editor

External resources

Since I want this pack to be an out-of-the-box solution, I will need some additional resources that I’m not proficient with- scripts and sounds. The traps need to react to player characters with trigger zones. I could achieve this with the 3D Game Kit, and I probably will do a demo with that solution too. I’m sure Adam will gladly help me deal with custom scripts, such as controlling the trap animations and synchronize effects.

About sounds – it is unclear what would work best. I want the sounds to be a similar style and more importantly, similar quality. There are several options to solve this: one is to dig around online sound marketplaces such as, Soundsnap, Soundcloud, and buy sound effects individually. I’m not sure if this is the best solution since these are stock sounds, their format and compression might not be suitable for game engines.

Another option is to team up with a freelancer or a professional sound designer and custom order the effects – usually, multiple formats and compression are provided, at a reasonable price and high quality.

Lastly, I could search for a suitable sound package on the Asset store and create a dependency in my project. Sound effect packs are numerous. Dungeon traps are a specific theme, and I probably won’t need more than a dozen effects for this pack to stay light and affordable. 

Time scale - when will it be ready?

This prototype helped me to estimate the time I need for the whole collection. I finished one particular trap model in 4-5 hours, and another couple hours for setting up the animations, and prefab variants. This means I can be ready with the static models in about 1-2 weeks, then I can move to set up animations, particles, and sound, and creating the prefabs.

Image source:

Deadly Dungeon Traps

This asset is a collection of high-quality 3d PBR traps. With them, you can give your players deadly hazards to overcome. Our plan with this package is to give you a full solution for traps, that you can just drop into your project.

Learn More »

Shadowdancer Devblog #9

Welcome back! Last week I promised I’ll show some major visual changes in the game. Let’s see what we have here!

Finally Sneaky! Moonlight environment

One of our dear playtesters during the course pointed out that the overall style is cheery and bright. Too bright for a stealth game, actually. I glanced at our favorite stealth games and immediately noticed that this has to change before the first playable release.

Originally we planned that Shadowdancer will travel through various locations, including forest outskirts, natural caves, ruins, and underground. With the limitations I mentioned earlier, we made this demo in a forest/mountainside environment. We both loved the real-time lighting, post effects, and soft colors, and it stayed that way for the whole 8 weeks, as we were focusing on refining the gameplay and the interactions.

During the next few days, I copied the original level and rebuilt the lighting for a night environment. The procedural Sky and the toned down global illumination did the trick! But now the scene was overly dark, with only Shadowdancer’s tattoos and runes glowing. To resolve this, I added torches to the scene to highlight important areas and create counterpoints for the dark evening sky.

In this short video you can see how darkness changed the whole mood of the game.

Main Menu and Title Screen

I finally took time and started learning how to use Cinemachine and Timeline. I aimed to create an animated title screen. For this, I choose the windy cliff near the temple.

I put a few additional rocks, ruins, and a campfire into the scene. Then I set up animation, just an “idle” loop, for now. Finally, I created a Cinemachine dolly track and set the camera to look at the character. The camera will slowly rotate around, while the menu elements stay on the left.

What comes next?

We upload the current version, and you can try it out! Any kind of constructive feedback is welcome. Please keep in mind that this is a learning project, and it is at a very early stage. In the following weeks, we are planning to do some minor fixes, and a bit of further project management to see how we can expand the game with more levels.

Thank you for reading, I hope you enjoyed this post.
See you soon!

Shadowdancer Devblog Week 8 and beyond

With this post, I would like to show some progress we made on the 8th week and tell what are our plans after that. My name is Dotti, and my role in this project was creating visuals – environments, characters, mood, and a little bit of level design.

In the USC+Unity course, we had several milestones and deliverables over the 8 weeks. We had to upload documents, spreadsheets, and playable demo. We were able to create a vertical slice with all the gameplay features ready for the last week, and we were able to create a stylized level environment and characters with our resources. After the 8th week, we won’t be able to work on this game full-time anymore, but this doesn’t mean we abandon Shadowdancer. We will upload, and update the latest build and release it for playtesting purposes.

Let’s see what we get done this week!

Fixing Shadow Jump issues

I noticed while testing the shadow jump ability that sometimes the character bounces off from ledges during the dash. It seemed that wall detection was faulty when hitting a thin edge. Adam added an offset to the ground ray cast and replaced it with a Spere cast to find landing spots more accurate. Shadow dash landing is now more stable.

Refine UI: add dash info and help icons

There was insufficient information on the screen about the jump and shadow jump. I added a status marker and key hint to the UI. I wanted to keep it simple and readable for now.

I also updated the Help info panel with icons. Unfortunately, while fiddling with UI element positioning settings, I broke the Objective tracker and got it off the screen. I need to fix that with the next update.

The Help panel is now more readable and will help players distinguish between character modes

Decorating and the Puzzle Room

The Puzzle Room still felt a little empty, so I dressed it up with more crumbling walls, floating dust particles, and added hover beams instead of columns to the rotating puzzle tables. This way the columns won’t block the view and will not cast confusing shadows to the seal.

I also implemented the Light Entity to break free of his prison after Shadowdancer activates the seal. This will mark the end of the demo.

Setting up trigger zones and interactables in Unity

Checkpoint Issues

One of our friends sent us videos of the gameplay recently. It was interesting to see how she played the game – back then there were no shadow runes to show the right path, so she wandered around in the valley, and missed checkpoints.

I aimed to fix that, so I adjusted the checkpoints in a way that the player will always hit them, no matter which way he chooses. I marked the trail to the Shadow Gate with glowing runes. 

We also added enemy overhead awareness markers.

End of Week 8: taking a break

After we uploaded the Vertical slice to USC course’s site, we had to have a break. These 8 weeks were fairly intensive for us, we learned so much and achieved a playable demo for the game! Now we have to return to our usual schedule, to keep Runemark Studio fresh and updated.

Thanks for your attention, and I hope you enjoyed this article! In the next blog post, I will reveal a surprising event about the game mood and visuals! See you next time!

25GB+ High Quality Sound Effects for FREE

SONNISS.COM giving away more than 25GB of royalty-free and commercially useable high-quality sound effects as a celebration of GDC 2019.

The package contains about 1000 audio files in a wide range of topics: nature sounds, manipulating everyday objects, explosions etc. You can check the complete tracklist HERE.

About was launched in 2014, nowadays they have more than 300.000 sound effects from city ambiance to futuristic weapons. All of them are high-quality, and the company has a strict quality control procedure to assure it stays that way.

Their sounds have been used in Emmy-award winning films, world-renowned TV shows, high-budget AAA games, indie productions, and popular apps.

Simple texture atlas creation

In this guide, I want to show how I worked on update 1.1 of our 3D, cartoon-style “Poly” environment packs. I go through the process using our freely downloadable Poly Desert Pack.

Why use a texture atlas?

In the previous version (1.0) I used Material colors only. Modifying the color is straightforward and can be achieved in the Inspector or during runtime. But it also means that I have one Material for each color present. This is not a problem when you have a small scene, but can cause performance issues in densely populated areas with high triangle count.

One Material for each color present in the PolyDesert Pack.

How to create a basic color texture atlas

Step 1: Create meshes, and set material colors

In this older article, I write about how I created the basic meshes for PolyDesert package. I set up individual material slots according to colors.

At this stage, every color is represented with a material slot.

Step 2: UV unwrap and arrangement

When unwrapping, I tend to keep the UV shell number as low and undistorted as possible. This is especially important on large objects such as cliffs – they should be ready for lightmapping. From a texturing point of view, it is allowed to create overlapping UVs, for example, all the thorn’s UVs can share the same place. Unity can take care on creating lightmap UVs for these objects if needed.

Step 3: Create a color texture atlas

The Material Combiner add-on creates texture atlases for each selected object.

Here comes the magic! The traditional way for creating a color atlas is to gather your textures and lay them out in an image editing software. Then adjust the UVs in Blender to match those textures.

I recently found a cool add-on to automate the color palette creation and material combining. With MaterialCombiner, I select all the meshes I want to share an atlas, set the image size to Power of 2, then hit the Combine button.

The add-on adjusts UVs according to materials and creates an atlas with the colors of each one, and changes the material slot on all models. Because of this, it is advised to create a backup before combining.

Step 4: Check Material slots and UVs

This step is for making sure that everything looks like it should be. To view how the models would look in the game engine, change the render type to Game and 3D View shading to Texture. I search for culling and normal facing issues this way.

Some of the flower's face normals are flipped here, they will be culled in the game engine unless fixed.

Step 5: Export models to Unity

I exported the models in OBJ format, with a single material slot. Then I imported them to Unity and added the color palette texture to the material. You can speed up the export/import process if you are saving the models directly into the Unity projects folders.

In the Mobile version, each mesh now uses a single Material and a 256x256 color texture atlas.

Thanks for reading, I hope some of you will benefit from this guide.

If you have questions or suggestions on this topic, you can share your thoughts in the comments section below!

My 5 favorite
Blender add-ons

Using open-source tools such as Blender means that anyone can contribute to the software’s features in the form of add-ons and extensions. Today I would like to share with you my favorite Blender add-ons that I use regularly.

Blender has many features, and since the introduction of version 2.8, it looks like, it is going to catch up with the industry standard software, such as Maya. Because 2.8 is still in beta, I collected these add-ons for the last stable version (Blender 2.79b).

1. Multi UV editor

I use this tool every time I want to create texture atlases for multiple separate meshes. It is quite simple to use, you just select all the meshes that should share UV space, then press the Multi-Object UV Editing button on the T shelf > Tools menu. 

It is important to note that the UV changes don’t apply if you edit the mesh itself (like delete or add, or move vertices). In Blender 2.8, this feature is built-in already.


2. TexTools

This one is a very feature-rich add-on and has many options that are missing from the default Blender tools. I want to name my most used features: Rectify, Align and Sort functions. 

With this tool, you can straighten curved UV shells (such as beveled cylinder edge strips or pipes), align UV shells and pack them together in nice orderly rows or columns to maximize UV space usage. 

TexTools is also capable of baking high-quality normal, ambient occlusion, etc. maps by using the Cycles engine. My personal opinion is that this one is a solid choice for every Blender user, let it be beginner or expert.


3. MeasureIt

When modeling real-world scale objects, you have to be precise, sometimes up to 1-millimeter scale. With this tool, you can measure and display the length, area or arc in increments of your World settings.


4. Manuel Bastioni Lab

This add-on is a character creation tool. Possibly the best free solution… You can design original humanoid characters in various styles (humans by races, and cartoon or anime characters), with basic armature for animation. 

I use this add-on for generating base meshes for characters, then customize and edit them to my needs. Great tool if you don’t have access to standalone character creation tools (such as iClone – Character Creator).


5. FBX Bundle

From the same author as TexTools, this add-on helps export mesh batches to game engines. You can set the file format to FBX for Unity or for Unreal, to glTF, or to Collada. It has batch modifier tools, such as LOD, collider, vertex AO and so on. 

Worth trying it if you are dealing with a large amount of game-ready objects!


These were my favorite and frequently used add-ons for Blender 2.79. I hope you found it interesting and useful! Do you have another favorite Blender add-on?  Share it in the comment section below!

These add-ons are free to download, but the production and maintenance take time and effort from the creators. Consider a donation to support their work!

PBR Materials for Unity


PBR stands for Physically Based Rendering, which means in a nutshell that with the aid of  different texture maps, the engine can simulate the interaction between light and materials with different color, metalness, smoothness and bumpiness. Unity Standard Shader is no exception and can handle rendering most natural and artificial materials.

In this post, I would like to briefly introduce how to merge different maps into one texture file and use it in Unity.


Channel Mapping

Channel mapping is the process when we get two or more grayscale images and pack them together in an RGB image. We can do this in a photo editing application manually, but many texturing tools have these functions built-in and need only a little tweaking.

Most color images you use as textures have 4 channels – Red, Green, Blue and Alpha. The shader can use one, or all of these channels at once for different purposes. We can take advantage of the fact that PBR Materials usually have 2 colored images (Albedo and Normal) and the rest is grayscale (Roughness, Metallic, Height, Opacity). A realistic looking PBR Material can have up to 7 different texture maps, and managing (and later in the game engine, computing with) these maps can be time-consuming.


How to convert a standard PBR Material to use with Unity Standard Shader

Note: I write down the process and the basics. You can find links on the bottom of this article for specific image editing applications.

Albedo: Base Color uses all RGB channels by default. Copy the Opacity (Transparency) mask (if there is any) to Alpha. If you have an Alpha channel, in Unity use one of the non-opaque rendering methods (for example, Cutout) from the dropdown list.

Normal: Unity uses OpenGL format normal maps. If your source texture appears flipped (DirectX format) in Unity, you should edit the Green channel and invert it.

Smoothness/Metallic: Invert your grayscale Roughness map, this will be your Smoothness map. Copy it to the Alpha Channel. Copy the grayscale Metallic map to Red channel.

Height: Uses a single grayscale image in sRGB format. The shader uses only the Green channel, so you can pack it into the Smoothness/Metallic if you need.

Occlusion: a grayscale sRGB format Ambient Occlusion map goes here. If you don’t need a Heightmap, consider packing this texture map into the Green channel of your Smoothness/metallic map.

Emission: Here goes either a black and white mask or a full-color RGB material.

Quick Cheat Sheet for Unity Standard Shader:

Channel Distribution for Unity Standard Shader. Texture names in (brackets) are optional.

Useful Links

Using the Channels Dialog in GIMP

Editing channels with Photoshop

Editing channels with Krita

Thanks for reading, I hope you found it useful!

Header Image Credit:

Creating game assets in low-poly style – Part II.

Welcome back and thank you for visiting again! In the second part of this little series, I would like to tell you about POLYJungle, my first attempt in making a fully detailed polygonal environment scene and models.

Jungle environments in games were always very popular – we all have a mental image of lush, diverse green vegetation, thriving animal populations and remains of ancient civilizations or small, secluded native villages hiding in the shadows of the world’s largest trees.

Jungles are home both to natural beauty and mystery, and in video games, this makes them a perfect setting, let it be platformer-style, adventure or survival game. 

Inspired by great games

Jungles are one of my favorite game settings from way early on – the first video game I ever played was Rayman by Ubisoft, released in 1995. 

The story starts right in the middle of a colorful, magical rainforest, thriving with dangerous inhabitants and collectible shinies, all drawn in a very distinctive cartoon style. 

Luckily, Ubisoft carried this jungle theme forward when they created more and more of Rayman’s world.

Exploring the jungle in Rayman 2

When I start to create a new environment pack, I always look first to reference and write a list about what are the key features of the scene.

In the case of the Jungle environment, I started to collect names and pictures of the most common jungle and rainforest trees, shrubs and smaller plants, as well as flowers.

I noted their size, color, and different parts (like leaves, flowers and separate branches) and decided which parts need to be separate for creating variety, and which parts should stay together in one mesh.

It was very delighting to browse beautiful orchids pictures and decide which ones should be included in the Jungle package.

Orchids growing on a branch

Then I moved on to artificial objects. I choose tribal village with small palm huts, similar to some Amazonian dwellings. I created the hut to be medium-degree modular, which means you can have an early building stage hut, a half-built hut, and a full hut. 

Of course, the future inhabitants on the jungle village will need some personal belongings, so I added a straw sleeping mat and clay jugs, as well as a few tribal masks to show their pride and individuality.

Scene building tricks

After everything was finished, I set up the Materials in Unity and built a little valley with the huts. I created this scene for showcase purposes only, so it shows its best from one angle, but with a little more work it could be expanded to be more immersive.

A little trick I made with the demoscene, is the light shafts – also known as volumetric lighting. I used a rather old-school method to achieve the light shafts and made a cone mesh, and textured it with a semi-transparent shaft texture, and set material rendering to Particles/Additive. 

Of course, there are more advanced tools to create volumetric light effects, such as using a Spotlight with a light cookie (this creates the illusion of the light shining through something, like a canopy). 

There are also numerous excellent volumetric effects solutions in the Asset Store, such as Aura.

I used Cinemachine virtual camera system and Unity’s built-in Post process stack to create the promo art images. With this tool, I can set up multiple virtual cameras with the same – or if needed, different – camera settings and post-process stack in different angles in the scene. 

I can cycle through them and snap high-resolution images easily. 

I asked Adam to write a custom Camera script for taking hi-res screenshots. With his help, I can set the desired resolution, a path to save the images, and a button (for example, “P”) to take a screenshot while in Play mode.

I hope you liked this little behind-the-scenes article and will be interested in the next article, which will feature our POLY Arctic package! 

Export in FBX from Blender to Unity

Exporting from Blender to Unity is a recurring question I meet all the time in various forums and Facebook groups related to modeling and Unity.

I would like to share with you my exporting workflow, which I use almost daily when I create 3D models for Unity projects. I will show the steps to export simple textured models, then move on to more complex cases with sub-meshes and PBR materials.

Common Problems

  • Object rotation is different: While Blender uses Y for depth, Z to height and X to width, Unity uses Z for depth and Y for height. This means all models exported from Blender with default settings will be rotated around the X axis by 90°.
  • Object Scale is different: Although Blender and Unity both use meters as base units, the FBX exporter measures units in centimeters by default. As a result, your model will be 100 times smaller in Unity than you intended if you use the default settings for the export.
  • Child object rotation problem: If you use more than two levels of submesh, you possibly encounter the problem with the rotation of the child objects.
  • Textures are not included in the FBX file.

The Solution

Step 1 – Center the mesh: set the 3D Cursor to the origin (Shift+S, Cursor to Origin), then select the mesh, press Shift+S and choose Selection to Cursor.

Step 2 – Check the Rotation and the Scale: make sure all your models have their rotation set to zero and scale set to 1. If not, apply the desired rotation and scale by pressing Ctrl+A, and selecting Rotation and Scale from the menu.

Step 3 – Set parents correctly: If you have an object with multiple sub-meshes, set them as a child of the main object by selecting first the child, then the parent and press Ctrl+P, then choose Object from the menu. Avoid multiple levels of sub-meshes.

A great example of this is a desk with drawers as child submeshes. If you have a separate submesh for the handle, that should be the sibling of the drawer instead. You can fix the hierarchy later in Unity.

Step 4 – Embed Textures: On the object’s Texture tab, under Image setting, choose your texture. Then click on the yellow box under the source field. This will pack the image file into the blend file.

Step 5 – Export with the following settings

Step 6 – Import to Unity. Check the official documentation for the Unity FBX importer.

Useful Blender add-ons

If you have a larger amount of models, don’t panic! You don’t have to export them one-by-one. I would like to mention one of my favorite Blender add-onsFBXBundle. This add-on was published in winter 2018, developed by Hendrik-Jan Schoenmaker. It has a wonderfully simple and intuitive interface, detailed instructions and Unity support. (Currently available for version 2.79).

Did you like this post? Share it with your friends! 

We post weekly new content, subscribe to our newsletter and stay updated!