Enlighten your games with a dynamic lighting !

Index

Stats

10,220 visits, 31,380 views

Tools

How can I generate my normal maps ?

No matter the alternative that you will choose in this tutorial, you will need to generate one or several normal maps. First of all, you can create them yourself if you want to. In this case, you seriously need to understand how they work, and it’s not with my previous explanations that you will manage to do that.

You can find much better stuff here, there and here.

But this is for the most curious of you. I assume that the great majority will prefer to get their precious normal maps as fast as possible to continue their game project with awesome dynamic light effects. Is it possible ? Yes. Partially.

There are a bunch of tools which can generate normal maps from a basic picture, really, there are tons of these tools. I tested a large number of them this last semester. I will only cover those which are – in my own opinion – the more effective ones. Without any surprise, the best of them are not free.

Sprite Lamp : Because beauty takes time

Snake Hill Game’s baby, it will cost you 30$ or 84$ to make really convincing and effective normal maps. I got some of my best results with this tool. But.

And a really big but. If you want to be fast, you will be heavily disappointed. Indeed, Sprite lamp’s quality has a cost : you have to draw the shadows of your sprite(s) according to the various possible positions of your light…yourself.

The normal map generation is based on your several shadow drawings. So, it takes time and it implies that you have some artistic skills. Is it worth ? Yes, it is !

Result on Construct 2 using Sprite Lamp :

Sprite DLight : Because quality can be obtained quickly

We could almost consider this one an Easy Sprite Lamp. Sprite DLight is indeed the best available tool for generating your normal maps automatically, and they are almost as beautiful and convincing than the Sprite lamp’s ones.

Once again, almost. However, Sprite Dlight can deal with your animations, as it provides the possibility to generate your normal maps from your sprite sheet !

So yep, we have some pretty solid stuff right there. But. Yes, you don’t have to draw anything for hours like you do on Sprite Lamp, but it implies that you can’t really control the results, just edit them with several options in the menu on the right. These results are often great, but they can also be inaccurate.

Especially if your picture is really big.

Finally, Sprite DLight is not officially available yet. It was a successful Kickstarter project, and is now in beta testing. You can pre-order it and participate in beta testing for 45$ on the official site of 2Dee Game Art. Every future release will then be free for you.

Result on Construct 2 using Sprite DLight :

SpriteIlluminator : Because they couldn't find a shorter name

Another great CodeWeb’s creation ! This one is very similar to Sprite DLight, you can generate your normal maps from one single picture in JPG or PNG format and it can support your sprite sheet, thus you can work with light and animated objects with ease. Also, it gives you a lot of options to edit your sprite’s texture.

Now, based on my own tests, the results on SpriteIlluminator are sometimes upside down. Which is strange. Finally, we don’t have many possibilities to edit our normal map once it has been generated compared to Sprite DLight, and for those which are available, they are not as easy to use as DLight’s ones.

You can get SpriteIlluminator for 44$. You can try it for free for a week.

Result on Construct 2 using SpriteIlluminator :

GIMP : Because it's free

As far as I know, using GIMP is undoubtly the most effective free alternative for generating your normal map. Thanks to gimp-normalmap, a special plugin created by Shawn Kirst, you can create an average normal map for any 2D sprite.

The procedure to create your normal map is entiretly explained in this video.

(Warning : the author doesn’t precise it, but you must be in RGB mode)

As expected, it’s not as beautiful as Sprite Dlight, Sprite lamp and SpriteIlluminator, but it’s not ugly nor inaccurate. The job is done.

Result on Construct 2 using GIMP :

Njob : Because it's your last hope

Ok now, we’re definitely far from Great quality and almost as far from Ok quality, but if you can’t use GIMP for obscur reasons, you can use Njob. Please note that despite this previous dull depiction, Njob is not bad at all.

It’s a little tool, but it allows you to create your normal map and it's not the lowest quality of the whole universe. Open your diffuse image, use a filter to make a height map from it, then use another filter to convert this height map to a normal map.. You must keep the same configuration for the height map and for the normal map or you will end up with some ugly dark crap.

Result on Construct 2 using Njob :

Conclusion : I tested 12 or 18 different tools, but there is no sense in discussing every single one of them. I gave you my favorite’s ones, but please keep in mind that my opinion is subjective and they are not the only possibilities you can find and use. I didn’t talk about CrazyBump or ShaderMap, for instance.

If you know or discover any good free alternative, please mention it in the comments with the corresponding operating system. I shall update this tutorial by adding it. Starting now, I will consider that you have a sprite and its normal map.

  • 4 Comments

  • Order by
Want to leave a comment? Login or Register an account!
  • LeuNoeleeste I ask because with a tutorial like this it is difficult to follow along without video. Also, I think it said somewhere in this tutorial that there is a limitation on lights? So using Matriarxs extension you can only have 3 lights in a scene?

    • Hello Borixsticks, sorry for replying this late, I hope you managed to keep going since then. Now to properly answer you, this tutorial is getting old, I plan to rewrite it with waaaay less fluff. There is no need to read the whole thing, just focus on Matriax's effect and you're good to go as far as Construct 2 goes, it remains the best option so far, even to these days, as it seems.

      However, it does have a limit : It can only handle 3 light sources. I had plan to write my own version of this extension, allowing the user to add more sources. It's still somewhere in the back of my mind, but I never got the required time to do it. In the meantime, you'll have to work around the 3-sources limit to add this kind of lightning in your current project or study the extension itself to make it versatile.

      Finally, I don't think a video would be useful. I'll simply rewrite the damn thing this summer so it takes less than 3 pages. It's a painful read in its current state.

  • Just putting this out there in case someone is struggling to get Matriax's plugin to work properly and is reading the comments..

    Setting light to mouse coordinates wasn't working for me at first, so here's what I did to get it working as intended.

    Project Settings:

    -> Use High-DPI Display: NO

    In the events - Set X and Y resolution to WindowWidth and WindowHeight.

    Like this:

    Every Tick -> Maps_Obj_Family -> Set Effect Parameter:

    Parameter Number 44, Value: WindowWidth

    Parameter Number 55, Value: WindowHeight

    Now you can toggle fullscreen and use different scales without a problem.

  • LeuNoeleeste Is there a version of this tutorial in the form of a video?