Fractal Softworks Forum

Please login or register.

Login with username, password and session length
Advanced search  


Starsector 0.95.1a is out! (12/10/21); Blog post: Hyperspace Topography (10/12/22)

Author Topic: Paint-Job Tutorial  (Read 18861 times)


  • Admiral
  • *****
  • Posts: 3517
  • MagicLab discord:
    • View Profile
Paint-Job Tutorial
« on: April 28, 2016, 05:09:10 PM »

   Making custom fancy paint-jobs for your ships is always fun: Who wouldn't want to fly a fleet where all ships sport your blazon across their hull to bring fear into you enemies' mind and inspire your crew. It is however not as straightforward to make as it sounds, at least not if you want to make something that looks a bit more sophisticated than a color layer on top of the original sprite.
   Here I'll try to explain a technique using nested masks that allows more control and easier adjustments than the direct painting method, plus a couple of tricks that will help obtaining what I think are better results. Note that it won't be quite as good as a full hand-painted skin, but even if you want to go that route it could still be used as a basis to polish manually.

   This is a Photoshop tutorial, but the general idea is applicable to any software. I also assume you have a working knowledge of adjustment layers, fusion modes, masks, etc. If not, there are plenty of tutorials available to cover those parts.

Some basic theory

You can't escape this part although it will be pretty short for the purpose of this tutorial.

   The first important rule is that light has trouble to reach the bottom of cavities making them appear darker (duh!) but also less saturated. This is important because several tools that change the luminosity of an image tend to increase the saturation of dark colors.

   The second rule, that conflicts a bit with the first because it wouldn't be fun otherwise, is that paint ages less in cavities. Meaning that the coating get scratched and weathered faster on exposed surfaces, particularly on the edges of a plate or the top of a sphere. This is partially compensated by the fact that cavities tend to accumulate dirt.

And that's it for the bare-bone absolute minimum necessary for our purpose. (See? I said it would be short) If you want to read a more extensive and VERY well done tutorial about general painting, I can only direct you toward the excellent Niklas Jansson.


   So lets get started. For this example, I'll make a XIVth battle-group Gryphon, because why the hell not! It's a good vanilla sprite that alternates busy areas with flat ones. That will come in handy to show the subtleties this technique offers.

   The gist of my technique is to use and abuse nested masks to be able to change the paint-job on a whim without having to redraw everything. Thus, we need to prepare them.

   And the first mask you'll need is the one that will keep unpainted parts clean. This is the only mask that usually needs to be painted by hand so there isn't many shortcuts to take here.

   I usually create a layer with a solid color clipped on top of the sprite, add a black mask, then paint it white to reveal the areas I need masked. Unlike painting directly this layer, this allows me to switch between black and white colors within the same brush tool by pressing a unique shortcut; instead of alternating between the brush and the eraser.

   The second required mask is the one that will isolate the most exposed surfaces of the ship. This will be the parts that will be the most painted, and the most saturated.

   It is actually very easy to make thanks to a little tool in Photoshop called Color Range, that you'll find it in the Select menu. What it does is that when you pick a color on the sprite, it will select all the pixels with a similar color.
   Unlike the Magic Wand however, it does a very good job at fading the selection the farther from the original color the pixels are. You can also change the range of the colors selected afterward instead of changing the wand tolerance and having to select your colors again.
   You can also accumulate different sample points with shift in one selection if the ship has more than one hull color.

It worked particularly well on the Gryphon given its uniform hull.

How much better is the Color Range compared to the Magic Wand? Well, that much:

Color Range

Magic Wand

   Depending on the sprite, it is sometimes more useful to isolate the cavities, or use both for different effects. Low tech ships for example have a lot of different hull colors. Those can be tricky to isolate while the space between plates are often closer in color and create better masks.

   Finally you'll need to create the nested folder hierarchy. This one works for all cases but depending on the effect you are looking for, some of those folders might not be needed, or the order changed.

   The "Ship Mask" is just a copy of the alpha of the base sprite. Remember to check if it has any holes or stray pixels as David's sprites are not always perfectly clean (insert death_stare gif here).

   The "Paintjob Mask" will be the mask you'll paint to create the actual paintjob, while everything inside will be applied to the whole sprite. You'll need one copy of these folders per color you want.

The Actual Paintjob

   Since the Gryphon shares the same hull style with the Eagle, I'll make a similar XIVth paint-job, thus let's start with the black and white parts:

(Click to enlarge)
   For simple darkening/brightening with little color change from the original hull, I try to not use anything but Curves and Hue/Saturation adjustment layers. The reason is that using a Color or Overlay layer completely crushes the color variations present on the sprite and usually destroy some of the contrast information. Additionally, adjustment layers are non-destructive and can be changed at any time.

   Here I started by de-saturating the entire hull (bottom yellow layer) and shifted the color toward something a tad orange. Then I darkened it via a Curve adjustment layer. In the cavities and exposed folders I did some minute adjustments to the colors and saturation to add more variety rather than having an uniform hull.

   The entire time I kept an eye on the Eagle, comparing the tints by boosting both ships' saturation and contrasts to ludicrous levels. You can also see that I used the (currently deactivated) paintjob mask to check both the painted and unpainted hull next to each other.

   The white part was done with the exact same setup, except instead of sticking to the same white as the Eagle, I decided to stay closer to the existing white part of the ship.

(Click to enlarge)
   Now the orange part of the Eagle skin is very saturated. As a matter of fact it the most saturated decently sized chunk of hull of any vanilla sprite. While shifting the color or de-saturating a sprite does not pose any issue, raising the saturation is another matter. All the small variations in hue will get exponentially more flagrant, creating a lot of unwanted color noise. This is the only case where I directly use a Color/Overlay layer, and even then I try to limit their impact.

   I started by shifting the color of the hull to the closest value and only slightly raised its saturation. I then color picked the exact tint of the Eagle and used that as layers in Color and Overlay fusion mode with low opacity. As mentioned before this is to keep some of the original color variations instead of getting a flat tint. This is also important in the case of the Overlay layer as it change the contrast quite a bit.

   Then I de-saturated the shadows and re-saturated the exposed surfaces. Again this is due to the way the Overlay works: it tend to saturate darker areas a lot more than bright ones, which is the opposite to what we want. I also added some slight color shifts between the two. This is the case where the cavity and exposed masks are the most useful.

   Note that I used an Overlay fusion mode for the orange layer to match the Eagle's specific aspect, but for my own paint-jobs I often prefer using the Soft-Light fusion mode that do not increase the saturation as much in the darker areas. More on that in the Tips and Tricks section to the bottom.

And now we have all three colors needed:


The Fun Part

(Click to enlarge)
    This is when the work done with the masks pays off. I started with the orange paint, drew the mask I wanted, and then using that as an exclusion selection, I painted the other two in seconds. I finished by adjusting the saturation of the engines nacelles that kept a bit of the over-saturation present on the original sprite.

   The trick now is that if I want to change the paintjob style, I can do that extremely fast given I only need to change a couple of masks that don't even require precise painting. Iterating on a style (or making something completely different) is now a breeze:

Polish Pass

   Despite trying to use only non destructive methods, the new sprite is usually cleaner than the original. Furthermore a XIVth variant is supposed to be an old ship that predates the collapse and saw countless battles since. This is time to apply the second part of the Theory bits: Adding dirt and scratches is usually done directly via a Normal layer on top of the paint-job layers, using a 1px round brush. Additionally each Paint-Job masks can be "dirtied" to leave unpainted spots, or areas where the new coat of paint was worn off and the original hull is starting to show. It doesn't need to be very visible, just a couple of scratches are enough to convey the idea.

Final Sprite and Techniques Comparison

   So here is the final result using nested masks. After some last minute fiddling the darker part contrast's has been brought closer to the original XIVth Eagle. Compared to it, it's not far off and the sprite has a nice life of its own (at least to me  ::) ); not bad for something that could be done in twenty minutes.


   But what are the benefits compared to more straightforward techniques.

Nested Masks

Direct Color

Flat Hue Shifts

   The Direct Color uses a couple of layers in Color fusion mode to shift the hull tint. While the hue matches exactly the one from the Eagle, the result is something that has no variations at all in the various color zones. In addition to that, given that each part is painted without mask, it is very difficult to alter if you want to try something slightly different. That also means it is quite handcrafted, and time consuming to do right.

   The Hue Shift uses some masks to shift the hull tint via Adjustment Layers rather than an opaque Color layer, that allows it to retain some original's color variations, especially on the white and dark areas. For the orange part however it had to fall back on Color+Overlay layers for a result almost uniform, like the Direct Color one. With some handiwork it could be improved to match the Layered Masks one, but would still be impractical to change.

   Again, the greatest strength of the Layered method is that while it takes a bit more time to put in place at first, then you can make an endless stream of different paint-jobs with very little effort:




Blue Angels

If you want to take a closer look at it, or have fun and make your own Gryphon paintjobs, here is the PSD with all three techniques.

Here is a timelapse video where I use that technique to make a bunch of Conquests paintjobs:

Tips and Tricks

- Refine Masks.

   I showed the not very well known Color Range tool, but there is another often overlooked tool in Photoshop that really shouldn't be: The Refine Mask in the Select menu. This allows you to combine smooth, blur, contrast, etc in a single tool rather than using several different ones one after another without any preview of the final result. The Smooth slider can be extremely handy against jagged lines when combined with a very small feather and contrast.

Color Range output

Refined mask

- 180 degrees color rotation.

    Sometimes you want to take a relatively highly saturated ship, and make a skin that is very far from it on the color wheel while maintaining the saturation. The issue is that while hue adjustment works really well for small-ish shifts, on larger offsets it changes the contrast and luminosity and sometimes even create artifacts (especially with jpeg compression, so not that much a problem on vanilla sprites but it can become one on ships kitbashed from another source). One solution would be to desaturate a bit the sprite, then create a Color layer to the hue you want, but as I showed before it completely kills all the color variations of the original sprite. Unless you are willing to hand-paint them back of course.

   But there is an easier solution to that: You can use a negative of the original sprite as a Color layer. Completely inverting the image will conserve all the small hue variations of the original sprite, but it won't change the relative contrast or create any artifact either since it is a simple math operation.


Hue Shift

Negative layer
in Color mode

Negative Layer

Here is a telling example based on a jpeg image:

Negative layer in Color mode, versus 180 degree Hue Shift.

- Color Noise.

   That one is mostly useful for sprite painting but can come handy for skins too. A recurrent problem with sprites that tries to emulate vanilla is that they often are too clean. They don't have gritty rough metal look because they lack noise and high level details. The often used solution is to add a layer of noise on top, but that is too uniform at best, completely artificial at worse. What I do however is setting up my brush to apply a very small color noise directly. That way I have a lot of control over the amount, frequency and the location of the noise: Low tech ship? 1px brush with 2% noise, plus I change the brush color a lot. High tech smoother ship? 1-3px brush with 1% noise and pen pressure-dependent opacity.

- Soft Light.

   One of the most commonly used fusion modes to colorize a sprite despite the obvious Color mode is Overlay. But as I mentioned earlier, it tend to increase a lot the saturation of darker areas. There is however a mode that almost does the same job while not changing the saturation so much, and that is the Soft Light mode.

100% opacity
   To the left a blue 100% opacity blue layer in Overlay, to the right the same layer in Soft Light. The Enforcer sprite has been almost completely desaturated to better show the issue. As you can see the contrast changed quite a bit on the left side compared to the right side. The color also got applied very unevenly depending on the area's saturation and luminosity. The two sides having a very different effect it might be difficult to judge though...

70% Overlay
2x50% Soft Light
   But even when scaling back the Overlay's opacity and using two Soft Light layers, the former still affects disproportionately darker areas than lighter ones compared to the latter. While I insist a lot on keeping the source's color variations, this is not the case here: the Overlay create new variations along the luminosity or the sprite while still crushing the existing ones.

   And the last thing to keep in mind is that Overlay affect more the colors that are already closer to the layer applied. Notice how the left side lets more red pass through. This can become a serious issue when using that fusion mode: if in this instance you want to change the color of those red-ish parts the same way the Soft Light layer does, the rest of the sprite will be solid blue and much more contrasted due to the layer needing to be more opaque.

   So I'm not against using Overlay, but the Soft Light fusion mode often yields better results. And if you really need to use it, it should be done tastefully while knowing its caveats.

- Cutting back on Opacity.

   If you are making a Paintjob without something to compare it to, your last step should always be to try reducing the opacity of your layers. When working on something for a long time, your eyes get accustomed to it and you'll tend to increase the saturation and contrast little by little without realizing it. Or you can get the desire to "show the effect" more than it is necessary to communicate your idea. There is also often the matter of contrast between the sprite and your work environment that can be very different from the background it will be displayed on in-game, changing the perception of your work. This is why it is a good idea to rest your eyes a few minutes before making the final adjustments. You can also look at your sprite flipped horizontally (or vertically if it is symmetrical, or turned 90 degrees on its side, etc): our brain is very much lateralized and just doing that will give you a whole new look on your work and help spot mistakes. As a rule of thumb, I often end up with my layers anywhere between 90% and 50% opacity on the final output.

   For example, in the tutorial a large part of the difference between those two comes from cutting the opacity of some layers in the second one.

« Last Edit: December 09, 2018, 08:58:11 AM by Tartiflette »


  • Admiral
  • *****
  • Posts: 714
    • View Profile
Re: Paint-Job Tutorial
« Reply #1 on: April 28, 2016, 05:28:49 PM »

Well, ***. I just learned something useful. Thanks.  :D

(also I've had good experiences with the "color dodge" layer mode in Krita)


  • Ensign
  • *
  • Posts: 44
    • View Profile
Re: Paint-Job Tutorial
« Reply #2 on: April 28, 2016, 08:01:39 PM »

Awesome! Thanks heaps for this tutorial Tarti. I've always been terrible at adding decent looking paint jobs to my sprites so this should help out a lot!


  • Admiral
  • *****
  • Posts: 3517
  • MagicLab discord:
    • View Profile
Re: Paint-Job Tutorial
« Reply #3 on: May 01, 2016, 05:03:33 AM »

Update! I added the Tips and Tricks section, as well as a link to grab the PSD of the Gryphon for those that want to take a closer look.


  • Purple Principle
  • Captain
  • ****
  • Posts: 405
  • Dancing like a boss.
    • View Profile
Re: Paint-Job Tutorial
« Reply #4 on: May 02, 2016, 01:39:36 AM »

OMG! It is so great! :o
My mods


  • Global Moderator
  • Admiral
  • *****
  • Posts: 723
    • View Profile
Re: Paint-Job Tutorial
« Reply #5 on: May 08, 2016, 08:19:20 PM »

Great tutorial. Way more disciplined an approach than I use, cough. (Should really set my ships up with proper masks for all this junk. Someday.)


  • Admiral
  • *****
  • Posts: 3517
  • MagicLab discord:
    • View Profile
Re: Paint-Job Tutorial
« Reply #6 on: May 08, 2016, 11:31:07 PM »

Thanks, I'd say it's very disciplined in part for the purpose of the tutorial. Although I more and more tend to copy the hierarchy of layers in every paintjobs I'm starting since it's quickly adaptable with a couple of mask changes, making the whole process even faster than a more direct approach. And it really comes in handy if you need more than one (non D) skin.