I have a characterbody2d and I want to display the equipment being worn. So this equipment would need to be swapped around during game play.
I currently am using several sprites layered. How is best to handle this situation?
I have a characterbody2d and I want to display the equipment being worn. So this equipment would need to be swapped around during game play.
I currently am using several sprites layered. How is best to handle this situation?
@ICastFist @Fizz i see this is godot specific and I’m not 100% sure how godot handles it but the normal way to store your image data for sprites like this is to index them from a packed sprite sheet (there’s tons of sprite packers out there, lots of animation tools have them built in), so instead of each obj being a 1000x1000png to use your example you may have a 4000x4000png with 10 objects packed in it.
Most engines will handle this for you, you just have to pack the assets correctly for it.
If you pack 10 objects in a 4000x4000 picture, but it has like 500px margins on every side, you’re wasting memory for literally no reason, that’s the point I wanted to bring attention to. Unused image space consumes memory. A spritesheet that only goes to 600px horizontally, but the image file has 1200px, it’s wasting resources.
Thank you for the reply.
So this is similar to a tilemap in how you pick tiles based on their position on the map. I can draw sprites with just refernces to this sheet that sounds pretty good. I gotta look into this for when i spawn large groups of enemies with various gear.
For now on my main characters I’m sticking with the 10 sprite nodes stacked.
@Fizz similar but for games/engines that don’t use uniform tile maps you basically just have a metadata set alongside the image that indexes where each sub-image is located in it.
It doesn’t really change the end product, and as I said most engines already work like this for most 2d stuff, and many editors will pack for you if you tell them. You’re just indexing portions of a texture, but it uses an order of magnitude less memory/storage and loads faster even off slow storage or web streaming.
@Fizz from a quick look it seems there’s a quite popular open source one that specifically outputs formats for godot as well.
https://github.com/Donitzo/godot-universal-spritepacker