a texture tutorial

with the current expansions in 2025 petz, i have started playing around with textures more; with palettes and transparency, textures are even more useful than ever when it comes to making intricate patterns and details without gruelling over tiny 1px paintballs.

this tutorial comes in two parts - how i make my own textures that can be easily palette swapped, and how to make and use transparent textures. i am no texture messiah and my words are not gospel but this is just how i personally do texture-y things.

another note - transparency is still in beta, so is a little more ‘different strokes for different folks’, i’ve included some troubleshooting at the end but obviously it’s not all-encompassing. i will aim to keep this updated if there are any big changes etc.


things you will need

part one - setting up & making your own textures

open up your art program. for the sake of those new or unfamiliar with paint tool sai 2, i’ve included screenshots of how i have my sai set up below, and also the settings for the binary pen brush. i know art software is horrifying when you’re not familiar with it so consider this a ‘quick start’ guide.



(the sidebars can be moved around - i moved mine so they’re both next to eachother on the left, but it does not matter where they are lmao)



my window settings



binary pen settings! this makes it sharp and crispy, just how petz and it’s finicky indexing likes it

now load in the images of the petz palette, the palette you want to use, and a blank canvas for your texture. i use 64x64 with a transparent background for my blank canvas; most internal textures are 8x8, 16x16, 32x32, 64x64,128x128 or 256x256, so any of these are ‘safe’ bets, and the transparent background is just because it provides nice little 8x8 cubes in the background which i can use as a grid. for non-transparent textures, like the one i’m making here, it needs to be seamless and tilable, so a grid is really helpful!

your images will appear in seperate windows/tabs along the bottom, like so:



(i am using jem’s twilight-sun-up palette for this texture!)

now for a very important part - LAYERS! anyone who makes digital art will be familiar with layers. here is our layer toolbar in paint tool sai 2. highlighted are it’s most important features for this tutorial!



in blue we have the new layer button - this does what it says, adds a new blank layer to your image.
in yellow we have the ‘lock opacity’ button which becomes important later - this allows us to quickly change the colour of each layer.

NOW FOR SOMETHING IMPORTANT
for every new colour, you need a new layer. one colour per layer. pay close attention to which layer is selected and therefore which layer you are working on so you don’t have to redo a bunch of work! the selected layer in sai is highlighted in blue - in the above image, you can see that i am on layer 1.

NAME YOUR LAYERS. you can rename your layers in sai by double-clicking them and entering the name into the box that pops up. name your layers the palette number of the colour you used on that layer. for instance, if i have a layer where i used colour 40, i’ll name that layer 40. the actual colour (whether it's cream, or blue, or brown) does not matter - just the number/index it is on the palette.

now for the fun part - drawing/making the texture. i fancy something cloudy, so i’m going to make a new layer and make a sketch on top of that. this sketch won’t form part of the final .bmp so it doesn’t really matter what the layer is called but i’m going to not be lazy and call it ‘sketch’. the colours also do not matter here!



remember a ‘full’ texture like this is going to tile so it needs to be seamless. to check this with my 64x64 texture, i can make a new 128x128 canvas and copy and paste my sketch over 4 times and move them to each corner to make sure the edges line up.



once you’re happy with your sketch, save it! i am saving it with the file extension .sai2, as this supports layers. i recommend saving a .sai2 (or .psd, or any layer-supporting file format) alongside your eventual .bmp, as this will preserve the layer information so you can easily open it again and edit it, or swap palettes



a note - i am pixelling this texture completely from scratch, but nothing is stopping you from finding a texture/image you like on the internet and using that. copy/paste it onto a layer, set the opacity to 50% or so, and pixel over it. the important part is really just making sure each colour is on a separate layer.

after my sketch is done and dusted, i can start getting the colours on. each colour i eyedrop from the palette of my choice, in this case, twilight-sun-up. i like to expand the canvas of the palette so i can put down blobs and colour numbers of my chosen colours next to it, like a palette inside a palette - it helps me see if the colours i’m picking work together/have the right hue, saturation, lightness, etc etc. not a compulsory step!



A NOTE ON THE ERASER TOOL - sai’s is shit for pixel work. it essentially just reduces the opacity bit by bit rather than properly erases the pixel. using the eraser tool will most likely result in extra colour values that are not within your palette which we do not want! so instead of using it, if i can’t just undo the pixel(s) with a cheeky ctrl+z, i use the square select tool to select the pixel, and then the move tool to just move it under where i’ve already placed a pixel on that layer, essentially hiding it or ‘erasing’ it. you can also select the pixel and go absolutely ham with the eraser tool over it, as the eraser tool will only work in that selected area. go ham though - make sure any stray pixels are obliterated!



these are the tools i mentioned above for faux erasing/error correction! pretty self explanatory but the square is select and the arrow thing is move. you'll find these on the toolbar below your colour wheel and above your brushes

here’s a look at how i’m building up the layers (60 is incorrectly labelled - it is in fact 69. i fix this later lmao)



and here’s my finished texture, as i want it to appear in game. look at all of those layers! some of the colours are used on multiple layers where i wanted to go back in and add more of that colour on top. this is fine, as long as all layers only have one colour value on them, and are labelled with the correct colour number, all is good!



save it when you're happy! i also like to save a .png copy at this point so i have a reference for what the texture is supposed to look like. i also fill the background layer in with a contrasting colour so i can make sure i haven’t left any gaps - i had one gap in this texture up near the top, so i went back in and filled it in, picking which colour i wanted it to be and making sure i filled it in on that colour’s layer.

now for the part that makes it ugly. delete, or make invisible (using the eye button next to that layer) your sketch and background. we don’t need those, or to change them anymore.

one by one, i’m going to go into each layer and change the colour to the one with the same index number that is on the petz palette. so, for my layer called 69, i’ll eyedrop the colour 69 from the petz palette (it’s in the dark orange ramp), click the ‘lock opacity’ button with that layer selected (a little lock icon will appear on that layer!), whack my binary pen to size 100, and scribble all over. this will change what was the darkest blue (69) on my texture, to the dark orange that is petz 69.



for every layer i am going to do this - basically swapping each colour out for its petz palette equivalent. i work up the layers, locking them one by one, just so i can keep track of where i am.

here is our new, petzified texture! i have saved this as a .bmp. remember to keep saving your sai2 file as well to preserve all of the layer information.



looks unsavoury.



now this next step, i have no clue if it actually does anything, but i do it for peace of mind. i load the unsavoury petz version of the .bmp into libresprite, change the colour mode to ‘indexed (no dithering)’ then re-export it as a .bmp. i usually let it overwrite the .bmp i saved from sai.

now to test it in game! see here again for hash’s tutorial on how to load palettes into petz. for my example i am going to use a great dane. load her up and in! i set it to argument 0 as i want it to appear as-is, with no transparent parts. i find that textures can look different depending on the colour of the ball underneath, even when they’re not transparent atall like ours, so it’s a good rule of thumb to make sure all the balls with our texture on are the same colour. lighter colours tend to work best, so i’m going with 15. my texture list looks like this; you can load the file up in PWS after and getting slapping down the colours and textures etc.



now for something i always like to do for textures like this, but is optional, is to add a section in LNZ for ‘Z Shade Slope’ like so:



this essentially disables the shader on the pet, so the texture remains -as is- and doesn’t end up with petz weirdly shading it. here’s a side by side of a dog with [Z Shade Slope] set to -110, and a dog without:



both of these are actually passable, but it varies from texture-to-texture (for example, my mermaid scales on the dog in the header looked Not Good without Z Shade Slope -110). on a whole though, i often find that petz shaders flatten the texture (you can see how flat the light blue shade is on the knee on the dog on the right!) but it’s up to you to decide which you prefer! i will carry on using the dog on the left with the Z Shade Slope -110 on/used.

another optional section is [No Texture Rotate] - you just slam this in LNZ and add the ball numbers underneath on separate rows for the balls where you don’t want the texture to rotate. for the example i’ll add all of the ball numbers on which i’ve plopped the texture on, but if you’re using your texture on paintballs, you’ll probably want to add the ball numbers that those paintballs are on, too.



here’s a side by side of a dog with [No Texture Rotate] applied to our textured balls, and one without. once again it’s a matter of personal preference - ‘no texture rotate’ just keeps everything in place, which i like, and makes the texture less ‘unpredictable’ and more uniform.



and here is the finished result! my texture with both the optional sections above (Z Shade Slope and No Texture Rotate) added into the file. i also add these sections into the puppy part of the LNZ… once again for peace of mind, i don’t know if you have to do that.



the beauty of this aswell is that you still have the file (in my case, .sai2) saved with all of the layer information preserved. so say if i want this texture for use on a different palette now, all i need to do is recolour it how i want in this different palette, following the steps earlier for locking the layer opacity and recolouring the layers individually, but this time also changing the name of the layer to the number of the colour used off the new palette. then once everything is fully recoloured and renamed, it can be recoloured back into the petz palette and saved as a .bmp/indexed as done above.

part two - transparent textures

first of all, take this magenta. neocities won't let me upload it for free because it's a bitmap, so google drive it is. this is the ~magic petz magenta~ that now works as a transparent background thanks to prism’s petza. think of it like a normal transparent background, petz bitmap style.

i’m going to be working similarly as i did above; creating my texture/’tattoo’ in the twilight-sun-up palette, and then changing the colours to match the indexes of the petz palette.

size becomes something that requires more thought with transparent textures, in particular ones that will look like tattoos, like the one i’m about to make (like the wedding rings on the honker in the header), versus ones that are intended to repeat like a pattern (like the petals and flowers on the honker in the header). i find 64x64 once again, to be perfect for a tattoo that’s going to sit on a paintball on a normal-sized pet. if you want to make a fuckoff massive wing or have tolstoy’s war and peace appended to your petz ass, size accordingly. but two things remain the same:

i’m going to make a balloon cause it kind of matches the cloud/sky theme. left is what i want it to look like in game, right is it in the petz palette.



now i load it into LNZ. the argument for transparent textures is always 0! you will also want to add the dimensions of your texture to it’s line in the texture list too - this is so it centres itself correctly. my texture is 64x64, so i need to add 64 64. the result should look something like:
(yourtexturepathandnamehere).bmp 0 64 64

i’m going to start by demonstrating a transparent texture on a paintball, on the dog’s belly ball. the magenta will be gone, and the belly ball, and any texture or other paintballs on it, will be visible underneath. it’s just a normal textured paintball, really, and will layer like paintballs usually do.

remember [No Texture Rotate] from earlier? if it isn’t already a section in the breedfile, add it, and add whatever ball you are putting the paintball on to that list. same goes if you apply the texture direct to a whole ball or addball - add that ball’s number to No Texture Rotate. otherwise they move around and won’t always appear as you want them to. furthermore, whatever you are texturing with your transparent texture, whether it be a full ball or paintball, it still needs to be a colour within petz’ texturable range - that is, from 10-149.

all the relevant sections are smooshed together in the image below:



highlighted from left to right in the paintballs section are: now let’s have a look at this in game.



not bad! position and size can be tweaked as much as you like.

adding a transparent texture to balls is very much the same, but i’ll demonstrate it below. there’s a lot more trial and error with regards to placement, but the fundamentals are the same! here’s the LNZ for me looking to plonk the balloon on the dog’s head via an add ball



now in game:



a floating balloon! i would reposition it, but for tutorial purposes, it is fine.

aaaand.... that’s all there really is to it! if sending a tatted and tex’ed up pet to someone, you will need to send along the .bmps, as well as make sure that the recipient has prism’s latest BETA RELEASE petza.

TROUBLESHOOTING

transparency for petz is still in beta. if you are having issues, i recommend running through this checklist thanks to! you can grab the two textures i made for this tutorial here if you so wish! i have also included the .sai2 files in the zip for you to recolour them as you wish. remember in their current state, they are made to work and show up 'correctly' with jem's twilight-sun-up palette.



thank you for reading, and i hope this tutorial has been useful to you in some way!

go back to perfume