Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Author Topic: Invisible: A 0.50 Graphics Set template for Graphic Set Developers  (Read 7189 times)

mikekchar

  • Bay Watcher
    • View Profile

I present Invisible: https://github.com/mikekchar/df-invisible-gs

This is a graphics set template for helping graphics set developers make a graphics set for version 0.50.

All I did was copy the raw txt files out of premium DF and then make transparent PNGs of the correct name and size to correspond to those txt files.

NOTE: This is *not* a graphics set that you can play with.  Every single tile is completely transparent, so you won't be able to see anything.  I just made this so that people can start making graphics sets for the new version without having to do all the setup.

If I get enough motivation, I'll try to go through and document how the files should be structured and what sprites need to go into each file.  Most of it is pretty clear from the raws, but there are a few tricky bits that I haven't figured out.

If you start making a graphics set using this as a base, please leave me an issue in Github or email me at my user name at gmail and I will link to your project in the readme.  Building a graphics set for 0.50 is a *huge* job and I think it's a good idea to have good coordination so as to ease the burden.

If you have any questions or comments, please don't hesitate to ask.  I've tried to explain the whys and wherefores in the readme of the project, but I'm sure I've missed lots of stuff (this was just a Sunday afternoon hack, after all).
Logged

A_Curious_Cat

  • Bay Watcher
    • View Profile
Re: Invisible: A 0.50 Graphics Set template for Graphic Set Developers
« Reply #1 on: December 17, 2023, 09:22:33 am »

I present Invisible: https://github.com/mikekchar/df-invisible-gs

This is a graphics set template for helping graphics set developers make a graphics set for version 0.50.

All I did was copy the raw txt files out of premium DF and then make transparent PNGs of the correct name and size to correspond to those txt files.

NOTE: This is *not* a graphics set that you can play with.  Every single tile is completely transparent, so you won't be able to see anything.  I just made this so that people can start making graphics sets for the new version without having to do all the setup.

If I get enough motivation, I'll try to go through and document how the files should be structured and what sprites need to go into each file.  Most of it is pretty clear from the raws, but there are a few tricky bits that I haven't figured out.

If you start making a graphics set using this as a base, please leave me an issue in Github or email me at my user name at gmail and I will link to your project in the readme.  Building a graphics set for 0.50 is a *huge* job and I think it's a good idea to have good coordination so as to ease the burden.

If you have any questions or comments, please don't hesitate to ask.  I've tried to explain the whys and wherefores in the readme of the project, but I'm sure I've missed lots of stuff (this was just a Sunday afternoon hack, after all).

Have you seen this, and this?
Logged
Really hoping somebody puts this in their signature.

mikekchar

  • Bay Watcher
    • View Profile
Re: Invisible: A 0.50 Graphics Set template for Graphic Set Developers
« Reply #2 on: December 18, 2023, 01:05:23 am »

Thank you.  Those are very helpful.  It doesn't answer all of my questions, but it confirms one or two suspicions I had.  I don't know how much more time I'll have to work on this, but I'm starting to really want to build a graphics set composed completely of ASCII characters -- which is a bit strange, I know :-)  But it would allow me to have a 32x32 ASCII graphics set where the map elements scale differently than the UI elements of the screen.  I think it would also help people understand what they have to draw when they actually do a real graphics set.

Edit: I should also mention, I'm changing the transparent tiles to semi-transparent tiles with a checkerboard pattern as per a suggestion from Bumber in the FoTF thread.  It will help to show tiles that aren't implemented yet, but also give a grid for showing where to draw each item.  For now I'll make it a 2x2 gray and magenta checkerboard (each square will be 16 pixels wide and tall and so each tile will have 4 checkerboard squares).  I spent a couple of hours today reading the documentation for ImageMagick and it's not that hard to do (also, not hard to write scripts to output tiles with ASCII chars on them).
« Last Edit: December 18, 2023, 01:09:28 am by mikekchar »
Logged

mikekchar

  • Bay Watcher
    • View Profile
Re: Invisible: A 0.50 Graphics Set template for Graphic Set Developers
« Reply #3 on: December 19, 2023, 09:17:32 pm »

Update, I implemented the semi-transparent checkerboard pattern grid described in the previous message.  I have a feeling that I may have got the sizes wrong, so I'll check that when I get time.  The checkerboards are not square when I view them, but that may be because pixels are not actually square on the screen.  So it might be right.

Either way, it's hilarious.  The game is *actually playable* with just this tileset.  Because each sprite is being rendered on the screen individually, it places each checkerboard sprite with a different offset.  This means that you can basically see the individual sprites (mostly).  The shape of the map, etc, it clearly visible.  The UI buttons, etc are also clearly visible.  It's not good in any way, but you could totally play it this way if you were crazy.

It really makes me want to create a *really* minimal graphics set.  It's much, much easier than I ever imagined because it's not *that* bad if you don't make sprites for everything.  Probably if you made the interface tiles, map tiles and a few placeholder tiles, you would have a playable game.

Edit: My next TODO is to try to implement this as a mod.  It looks quite straight forward.  Hopefully it works.
« Last Edit: December 19, 2023, 10:39:10 pm by mikekchar »
Logged

A_Curious_Cat

  • Bay Watcher
    • View Profile
Re: Invisible: A 0.50 Graphics Set template for Graphic Set Developers
« Reply #4 on: December 19, 2023, 11:38:32 pm »

The checkerboards are not square when I view them, but that may be because pixels are not actually square on the screen.  So it might be right.

Did you read the part in the wiki page about tile pages (including the relationship between TILE_DIM and PAGE_DIM_PIXELS)?  Also, note the some of the building tile pages (at least) use PAGE_DIM instead of PAGE_DIM_PIXELS.  My theory is that PAGE_DIM_PIXELS directly specifies the dimensions of the tile page in pixels, while PAGE_DIM specifies the dimensions of the tile page as multiples of the dimensions given by TILE_DIM.

Also, do you have any ideas on how the TILE_GRAPHICS token works for buildings?  It appears to work differently for buildings than for creatures or items but there doesn’t seem to be any information on the wiki about it (and barely any information concerning items, either).
Logged
Really hoping somebody puts this in their signature.

mikekchar

  • Bay Watcher
    • View Profile
Re: Invisible: A 0.50 Graphics Set template for Graphic Set Developers
« Reply #5 on: December 20, 2023, 02:32:39 am »

Yes.  That's all working.  I'm just not sure that ImageMagick is setting the sizes correctly (mainly because I didn't check)  ;)

I have a pretty good idea how the buildings are working.  The only issue is that there seems to be a notation which I think is for animation (you can see it easily in the workshops and the wind mills).  I'm not 100% certain how it works.  I'm also suspecting that it's different for different buildings, but again not sure.

What I'm currently planning to do is to actually make a crappy graphics set so I can see how each one of those things work.  I wasn't really planning on putting this much work into this project, but I'm enjoying it, so as long as I do I'll keep plugging away slowly :-)
Logged

mikekchar

  • Bay Watcher
    • View Profile
Re: Invisible: A 0.50 Graphics Set template for Graphic Set Developers
« Reply #6 on: December 20, 2023, 08:10:16 pm »

News: Release of v0.01

So, indeed, there was a bug: The vertical size was twice what it should be.  With the fix, the built in tiles on the map actually get displayed, so this is actually surprisingly playable just like it is!  I'm vastly re-evaluating how difficult a task it is to build a useful graphics set.  You could definitely build the core pretty quickly and expand it over time.

The other change I've made is that it's now set up as a mod rather than replacing all of the vanilla files.  It wasn't too difficult as soon as I realised you actually have to select the mods in the world creation screen  :P (literally spent over an hour banging my head on that).

The other kind of mixed news is that it can't reasonably one mod.  It needs to be 8 mods.  The mod structure doesn't allow for a deep directory structure like the raws.  Each `info.txt` section needs to be a separate mod.  You *could* jam everything together to make it easier to install, but I think it's nice to allow people to pick and chose between the vanilla versions and new versions of each.  I'm going to continue with the 8 mod shape for now, anyway.  It's easy to use: you just copy the folders into the "mods" directory.

Anyway, I think this is actually good to start making graphics sets with.  If I have more energy (and it seems like I will), I'm going to try to either make a crappy graphics set myself *or* convert one of the popular old graphics sets to 0.50.  In the process, I'll try to discover and document all of the details of how the raws work.
Logged

A_Curious_Cat

  • Bay Watcher
    • View Profile
Re: Invisible: A 0.50 Graphics Set template for Graphic Set Developers
« Reply #7 on: December 27, 2023, 10:40:35 pm »

Ruby?
Logged
Really hoping somebody puts this in their signature.

mikekchar

  • Bay Watcher
    • View Profile
Re: Invisible: A 0.50 Graphics Set template for Graphic Set Developers
« Reply #8 on: December 29, 2023, 01:05:56 am »

Ha ha!  Yes.  That's my day job language.  Not exactly the best fit, but it got me to my end goal in the amount of time I had.

Picking a better language is not actually that straight forward.  I *only* have a Linux box and I don't want to get into multi-OS or multi-architecture builds of this simple tool.  So, a scripting language is useful.  Arguably lua or python would be better since DFHack people tend to use that, but I currently know neither of those languages.  It's not that I couldn't learn them, but... in the extremely limited time I have for this project, I'd rather write code.
Logged

DogsRNice

  • Bay Watcher
  • Urist Maclunky
    • View Profile
    • Steam profile
Re: Invisible: A 0.50 Graphics Set template for Graphic Set Developers
« Reply #9 on: March 25, 2024, 10:36:45 am »

I'm thinking about manually making a conversation of Phoebus as a proof of concept, I do have some experience with tedious texture replacement, I've worked on a few projects for Games Repainted, while that was basically replacing textures in games with random memes, actually creating them did involve lots of organization of large amounts of textures and figuring out where things went
Logged
I had an FB named Ned once.  I kept imagining a giant Ned Flanders...

Want an underground tree with green wood? Check out this tiny mod I made to add one

A_Curious_Cat

  • Bay Watcher
    • View Profile
Re: Invisible: A 0.50 Graphics Set template for Graphic Set Developers
« Reply #10 on: March 25, 2024, 06:20:19 pm »

I'm thinking about manually making a conversation of Phoebus as a proof of concept, I do have some experience with tedious texture replacement, I've worked on a few projects for Games Repainted, while that was basically replacing textures in games with random memes, actually creating them did involve lots of organization of large amounts of textures and figuring out where things went

So... You're going to talk about Phoebus?  How is that going to help anything?



Edit: Formatting…
« Last Edit: March 26, 2024, 11:54:32 pm by A_Curious_Cat »
Logged
Really hoping somebody puts this in their signature.

mikekchar

  • Bay Watcher
    • View Profile
Re: Invisible: A 0.50 Graphics Set template for Graphic Set Developers
« Reply #11 on: March 26, 2024, 08:51:52 am »

DogsRNice: Feel free to give me a shout via DM.  I can probably help get you started.  I've been meaning to do it myself, but I'm absolutely swamped at work lately.

A_Curious_Cat: I think they meant "conversion"  ;D It took me a long time to figure out what you were saying because I'm dyslexic and every time I looked at the word I saw "conversion"...
Logged

DogsRNice

  • Bay Watcher
  • Urist Maclunky
    • View Profile
    • Steam profile
Re: Invisible: A 0.50 Graphics Set template for Graphic Set Developers
« Reply #12 on: March 26, 2024, 10:04:34 pm »

I'm thinking about manually making a conversation of Phoebus as a proof of concept, I do have some experience with tedious texture replacement, I've worked on a few projects for Games Repainted, while that was basically replacing textures in games with random memes, actually creating them did involve lots of organization of large amounts of textures and figuring out where things went

So... You're going to talk about Phoebus?  How is that going to help anything?

Sorry I was half asleep when I wrote that and didn't notice the autocorrect, I meant I'd use this pack as the basis for making a conversion of Phoebus.
« Last Edit: March 27, 2024, 07:48:37 am by DogsRNice »
Logged
I had an FB named Ned once.  I kept imagining a giant Ned Flanders...

Want an underground tree with green wood? Check out this tiny mod I made to add one

Literaljoker99

  • Bay Watcher
    • View Profile
Re: Invisible: A 0.50 Graphics Set template for Graphic Set Developers
« Reply #13 on: May 17, 2024, 02:16:44 am »

Not sure how far you've got with the scripting, but perhaps it would be useful to know that Aseprite has a CLI for automating sprite work. I don't know what its capabilities are, but I suspect that for some things it's much easier than ImageMagick + Ruby, at least for figuring out a process before implementing it with your own code. The aseprite community also likely has knowledgeable people

Whene writing your program there might be something useful in the Aseprite source code whose mathematics you can translate if you get stuck(??) idk.

Thanks for even the smaller task of just making the image templates.
« Last Edit: May 17, 2024, 02:21:17 am by Literaljoker99 »
Logged
"I wish I could change my username"
    -Literaljoker99 Sanzarote

mikekchar

  • Bay Watcher
    • View Profile
Re: Invisible: A 0.50 Graphics Set template for Graphic Set Developers
« Reply #14 on: May 17, 2024, 10:40:35 pm »

Unfortunately, I've totally run out of time for this, so I've done nothing.  Hopefully I'll get some time later to look at it.  I'll definitely take a peek at Aseprite.  Thanks!
Logged