Before I explain what I did, to make your life a thousand times easier when editing importing/exporting sprites, download this plugin for Photoshop:
http://www.ardfry.com/png-plugin/
This plugin will allow you to preserve the essential metadata SLADE 3 embeds into a png upon exporting an image; Photoshop will intentionally erase this data if you just save as a png normally. This is important if you don't want to manually adjust sprite offsets in SLADE every time you import a new sprite.
Ok, so here is my process in Photoshop CS6 for anyone who is interested as to how I made these sprites:
- Open a sprite that is saved somewhere accessible in a folder called 'monster sprites' for example
-Create a new action (Window > Actions). Name it 'blood effect' for e.g and start recording
- Convert the image mode from indexed colour to RGB
- Duplicate monster sprite layer
- Convert the duplicate monster sprite layer to black and white (default)
-Make a new layer on top
- Fill that new layer - Edit > Fill... R 255 G 0 B 0 (Red) Use full red or a darker colour sampled from the Doom Palette.
- Set the fill colour layer blend mode to Dissolve
- Set the opacity of the dissolve layer to 20% or 50% - This is the IMPORTANT step. The blood amount for the monster is dependent on the opacity percentage. The dissolve effect will create a random pattern of pixels over the canvas.
-Create a clipping mask for the fill layer so that it masks around the black and white monster layer (alt +click the layer)
- Convert the fill layer to a smart object
-Set the fill layer blend mode to 'Multiply'
-Duplicate the fill layer
- Set the blend mode on the duplicate fill layer to 'Vivid Light'
-Set the opacity on the duplicate fill layer between 25% to 80%, depending on how bright you want the blood to be on the monster. I like to have at least some pixels full bright red as it coincides with the doom palette.
-Ctrl + click on the top fill layer so that you get a selection around the visible pixels
- While maintaining the selection, select all of the layers except for the bottom colour monster sprite and then merge them
-Select > Inverse
- Layer > Layer mask > Hide selection. This will temporarily mask the remaining black and white monster pixels.
-Now you've got two layers; one containing the blood fill + layer mask and the original monster colour sprite. Now merge these layers
- Save the file as a PNG. Save As > PNGOUT (not as a copy) overwriting any existing sprites with the same in the same location. A prompt will appear giving you extra options, click on Keep Chunks... click on keep all box then click ok and save. In the left hand panel, you should see the grAb chunk - this is the offset metadata. Make sure you have this otherwise the offsets will not be saved.
- Close the file and stop recording the action.
- Go to File > automate > Batch. Select the action to 'blood effect', the source as the 'monster sprites' folder and the destination to none and click OK. It should overwrite all of the existing sprites and commence a batch automation. If it all goes smoothly, all the sprites should now have a nice blood effect over them. The batch process might on occasion be interrupted by sporadic error messages asking you to continue or stop (for example, 'the command "Merge Layers" is not currently available). I am not 100% sure what causes these but from what I encountered:
1. Avoid selecting layers by using the magic brush tool; use ctrl + click on the layer instead.
2. Do not use the paint bucket tool to fill layers. Use Edit > fill instead.
3. Do not accidentally select layers you do not immediately intend to edit; make sure each step is planned ahead.
faslrn wrote:The amount of blood on the monster is quite high. I feel like the amount needs to be reduced by around half or so
Using my method, you can adjust the amount of blood by altering the opacity of the dissolve fill layer. Anything above 50% is excessive IMO. Be advised, the lower the opacity, the more speckled/smaller the blood becomes.
faslrn wrote: I think the blood needs to have opacity differences around the monster. ATM, it is all around the same opacity and it looks like it spread evenly across the monster's skin which looks a bit odd up close
I tried altering the blood opacity when I was experimenting with how to go about doing this whole thing, when I came up with the solution of creating a dummy black and white layer that can be used to blend full colour layers to get the blood to adhere to the lighting detail on each monster. By doing it this way, the blood will appear at it's brightest on lighter areas and darker on darker areas. Essentially, the blood should NOT have different OPACITY otherwise you will get a washed out look, but instead the dummy layer allows the blood to have lighter/darker VALUES. This is the reason why there is a secondary fill layer underneath that is set to 'multiply' blending.
You can actually mess around with the opacity settings for the fill layers to achieve brighter or darker blood, but I wanted to maintain the colours used in the doom palette as close as I could.
faslrn wrote:If possible, I think we need to group the blood particles instead of it being even. This may make the blood splatter seem a bit more realistic.
This is the crux of the problem and I don't have a solution other than manually painting blood splatters on each monster sprite, which is something I simply do not have time to do. I had to manually edit each Spider Mastermind sprite just to get the blood to appear on the head section.
I did it this way because the sprites are very low resolution - Idk if this method would work for higher resolution sprites, I went with the speckled look because some monsters like the zombies and revenant are already covered in blood and it might be redundant to paint blood splatters on them as they won't be as visible. To have a consistent blood effect on all of the monsters was paramount. Also doing inflicting and drawing region specific wounds for monsters appears the logical thing to do, but you can't really do that sort of thing with 2d sprites in game anyway, so creating an effect where blood has sprayed all over the monster was the next step (kind of like in the DOOM 2016 trailers where blood sprays all over monsters when they get chainsawed) Besides bullets, monsters can also be injured from explosions and misc. fragmentation damage so it stands to reason that blood would be visible all over the monster.
If you can come up with a more efficient method of applying blood wounds to monsters, then more power to you! And I hope the instructions are somewhat easy to understand. What you could try though is drawing a blood splatter texture and save it as an image; import it during the action recording process and play around with it's blending options. This would be a good option, however you would still have to manually edit sprites as the imported image will be superimposed on the monster sprites in the exact location, which is problematic when dealing with sprite rotations.
EDIT: I just tried the test version with the arachnotron and I have to say, you've implemented it beautifully. It's such a simple cosmetic concept but actually makes a world of difference, making the monsters feel more organic (not even Brutal Doom implements a system like this). With these current sprites the effect is also visible at a distance which is a plus. Now it's up to you to decide to implement a mechanic that makes the monsters more bloody, more aggressive or passive once they reach low health.