Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

thanks + questions + feature ideas :)

A topic by KuestenKeks created Mar 07, 2021 Views: 422 Replies: 22
Viewing posts 1 to 7
(1 edit)

Thank you for creating this handy tool! <3 Really makes it easy to apply different palettes to my GameBoy Camera pictures :)

What do the arrow buttons do? There are left/right buttons below the "Image" label and up/down buttons below the "Palette" label. They seemed to do nothing when I clicked them.

And I'll just leave a few feature ideas here, although some of them are maybe only useful for my specific use case ;)

  • being able to change the palette order would be nice. I imported a whole bunch of palettes and would have liked to rearrange them afterwards in order to put similar palettes next to each other.
  • I would have liked to set names for my palette mappings. The default name could be the palette's filename (without extension)
  • It would be great if instead of saving one big output picture, I had the option to save individual pictures for every palette in my project. The output filename could be "original-filename_palette-name.png".
  • if relative paths in the project file were used it would be more portable. (I have saved the project file in the same folder as my images).
  • on the right side all the images are in one vertical column. I imported 14 palettes and have to scroll up and down a lot. But there is a lot of unused space available that could be used to show all the images in multiple vertical columns

Kind regards! :)

Developer

Hi!  thanks for your kind words!!  So glad you are finding the tool useful.

I'll try to answer your questions and concerns as best I can.


> What do the arrow buttons do? There are left/right buttons below the "Image" label and up/down buttons below the "Palette" label.

These buttons are for scrolling through the available colors if the palette contains more colors than can fit on the screen at once.

I hadn't thought of it, but I guess it is funny that the 'Image' palette gets a left/right arrows and the 'Map' palette gets up/down arrows.  :)


> being able to change the palette order would be nice. I imported a whole bunch of palettes and would have liked to rearrange them afterwards in order to put similar palettes next to each other.

Colors within a palette can be re-arranged at any time by simply dragging the color squares around.

However, I think maybe we have our terminology a bit mixed up here.  So if it's ok, I'd like to define a few terms here to make sure we are talking about the same thing.

* The 'Image' palette is the list of colors in the source image.

* The 'Palette' or 'map' palette is the list of colors to use in the destination image.

* A 'Map' is a mapping from colors in the 'Image' palette to colors in the 'map' Palette.  

If I am guessing correctly, when you say 'palette' above, you mean what I have dubbed a 'map', is this correct?

If so, I think I see what you mean.   Currently, you can add, remove and clone 'maps' but you cannot re-order them.  Actually, I have often wanted this feature myself and for the reason you suggest, I create a bunch of maps and then want to re-arrange them a bit to put like ones near each other in the list.

I'll think about how to add a way to re-arrange the maps without adding too much clutter to the UI.  I'm sure it can be done.


> I would have liked to set names for my palette mappings.

I hadn't thought of this before, but that's also a really good idea.  Again, I'll think up a way to add this without complicating the UI too much.


> It would be great if instead of saving one big output picture, I had the option to save individual pictures for every palette in my project.

Another great idea.  I had only just recently added the ability to select between stacking the maps vertically or horizontally in the output picture.  I'll work on adding a third mode for saving them a series of separate images.


> if relative paths in the project file were used it would be more portable.

Hmm...  Sometimes I work out of a C: drive and sometimes out of a D: drive, so this is an issue I have encountered myself as well.   On the other hand, I can think of cases where absolute paths would be preferable.  For example, if the source image is in some arbitrary path not really related to where you palette or project files are located.  Still, let me think about this.   What you'd want would be paths that are relative to the project file, right?  

FYI, as a workaround until I get something working for this, the project files are all just plain text, so if you ever move things around, you can open the project file in any text editor and change the image and palette image paths manually.



> on the right side all the images are in one vertical column. I imported 14 palettes and have to scroll up and down a lot. But there is a lot of unused space available that could be used to show all the images in multiple vertical columns.


hmm.  I see what you mean.  Although, this does depend on the aspect ratio of the source image and the current zoom level.   For example, if the source image were very wide or you were zoomed in very closely, then you might not have as much free space.  Anyway,  I'll think about how to fit more maps into the preview area.

If it helps, you can switch to any map simply by clicking directly on it in the preview area.  This can help save some time vs. just using the map up/down buttons.


Thanks again for your nice words and your thoughtful, well written feedback.  I can't promise when I'll get to making any changes but you've actually caught me right at a lull between projects so hopefully I won't have to keep you waiting too long!  :)

ah, thanks for the arrow button explanation. I only worked with 4 colors so far ;)

about the reordering idea, I really explained it a bit confusing. But I think you got it exactly right. Changing the map order would also change the order of appearance of the preview pictures on the right that have the maps applied. This is really what this is about. It would allow me compare output images with similar mappings / map palettes applied more easily. (One implementation idea would be via drag 'n drop, by dragging and dropping the output images.)

>> It would be great if instead of saving one big output picture, I had the option to save individual pictures for every palette in my project.
> Another great idea.  I had only just recently added the ability to select between stacking the maps vertically or horizontally in the output picture.  I'll work on adding a third mode for saving them a series of separate images.

That's great! :) Since your tool also supports CLI mode, I already created a little PowerShell Script that creates separate images, but having this in the UI would be more comfortable :)

> What you'd want would be paths that are relative to the project file, right?

Exactly. Maybe the user could decide if he wants relative or absolute paths. Ideally the save dialogue would have a little checkbox for this. But I don't know if that's easily possible to add. This was just a minor idea though, since editing the text file is always possible, as you said ;)

About fitting more maps in the preview area: you're right, it depends very much on zoom and the source image dimensions if this is useful. But I don't think any smart logic would be necessary to determine a layout of the preview images. I'd be happy if I was able to edit the amount of vertical preview columns manually and this would keep things simple I think :)

Thanks for considering my feedback! I'll be eager to test any updates you release :)

Developer(+1)

Hi!   This took me a bit longer to get to than I was expecting, but some progress has been made.

Just posted a new build that adds the option to save maps as a series of separate images and the ability to re-order maps.

Hold shift and click map up/down buttons to the current map up/down in the map order.   Not quite as slick as dragging and dropping them in the preview window but it should give you something to work from until I can get time to code that bit of magic up.  :)

Image sequences are named 'selected_filenameXX.EXT' where XX is the map number and EXT is the file extension of the selected file (default is png).  Hope that works for you.

Thanks again for the feedback!

(1 edit)

Finally had some time to test your new release. Reordering the maps works fine. It's really neat that the Icon changes while pressing shift :)

When saving as a series of separate images there's a little bug: a number at the end of the file name is ignored. This caused me to overwrite some images. Here's what I did:

  • Loaded an image and 7 maps
  • Saved as separate images and typed "BeepBoop" as filename
  • BeepBoop01.png to BeepBoop07.png was created
  • Loaded a different image
  • tried to save as separate images again and typed "BeepBoop2" as filename
  • my previous pictures were overwritten without warning (even without this bug, I think a warning would be nice when files with the same name already exist)

And another bug: the tool crashes when I abort the save palette file dialogue. (The save button at the bottom left)

I'm really happy with these two new features, makes my scripted solution kind of obsolete I think, thank you :)

Developer

Oh no!  I hope you didn't loose any work due to these bugs!

I have fixed the crash bug and changed the format of the filenames when saving an image sequence.
It now names the files as:
'{selected_filename}_map_XX.EXT' where XX is the map number and EXT is the file extension of the selected file (default is png).

My hope is that by adding '_map_XX'  instead of just 'XX' there's less chance the sequence file names will conflict with other naming conventions you might be using.  Hope that works for you, if not, let me know and we can come up with something better.

no, I didn't loose anything, I was just testing ;)

Great, thanks for the quick fix :)

I don't really understand how you treat my entered file name though. Why don't just take the name exactly as the user entered it and append your suffix (e.g. _map_XX.EXT). It shouldn't matter what the user chose as a file name.

But well, it's not really that important, your fix should be sufficient :)

Developer

> no, I didn't loose anything, I was just testing ;)

that's a relief!

> I don't really understand how you treat my entered file name though.

If I coded it right, here's what it's supposed to do:

SPLIT {entered_filename} into: {filename} and {file_extension} (PNG, JPG, ETC)

IF {filename} ends with the pattern '_map_##'

      Remove '_map_##' from end of {filename}

FOREACH map

       SAVE map as {filename}_map_##.{file_extension}

  > Why don't just take the name exactly as the user entered it and append your suffix (e.g. _map_XX.EXT)

The idea is to allow you to save over an existing image sequence.

So if you've previously saved MyImage_map_01.png, MyImage_map_02.png, ...

You can select any image from that sequence in the file selector and the code will save over the existing sequence of images.

Otherwise, if you selected 'MyImage_map_02.png' from the file selector the code would end up creating a brand new sequence named: 'MyImage_map_02_map_01.png', 'MyImage_map_02_map_02.png', etc. etc.

So that's the idea.  It should generally do as you suggest, just take the filename you give it and add '_map_##' to it.  But the code does try to be smart and identify the case where you are trying to save over an existing sequence.

The problem with the way I did it before, is that instead of looking for the pattern '_map_##', the code was just stripping ANY AND ALL numbers off the end of the filename.   So when you gave it the user named file 'BeepBoop2.png' it wrongly assumed that this was part of a previously saved sequence.   My hope is that by using and specifically looking for a more unique pattern ('_map_##') the code can still be smart about guessing when you are trying to replace an existing sequence but have far less chance of getting confused by filenames that happen to contain numbers at the end of them.

ah, now I understand why this is intended behaviour, thanks for explaining :)

I still think there should be a warning before files are overwritten though. At least to me the intended behaviour wasn't intuitive. (you could also add a "don't ask again" checkbox to the warning message)

Cheers, have a nice weekend :)

Developer

Yeah, a warning message as it saves over each/any files is probably a good idea.  I'll look into implementing that.   Truth be told, a warning box like that should be easy if I was using Forms and all the other built-in GUI stuff in C#, but since the tool is written on top of my game engine, which uses SDL and OpenGL for everything, it's more  of a challenge.  But I'm sure I can get something to work.  Thanks again for all your feedback and suggestions!  I haven't forgotten your other ideas, they're all on the queue to work on when I get a chance.  :)

Greetings. First, I want to express my gratitude for your program, which has been of great help to me over the years.

However, due to my color blindness, it is difficult for me to recognize the colors of the palettes I import. Would it be possible to add a feature that allows images to be loaded directly as a color source? This would allow me to capture palettes from programs like YY-CHR or Photoshop for more familiar use.

In addition, it would be very useful to be able to create subpalettes mixing the real colors that I have selected, to generate fictitious colors based on “Dithering Bayer” type patterns. This would simplify the process when adapting artwork from one system to another and would avoid having to later recover details that are lost after color reduction.

Thank you for your time, and sorry to borrow this thread, I didn't want to bother creating another one, practically for the same purpose.

Developer

Hi!   Thanks for the kind words.  Great to hear the program has proved useful for you.  :)

> Would it be possible to add a feature that allows images to be loaded directly as a color source?

The 'Load Palette' feature should already allow you to load any PNG image as palette source.   The tool will just extract all the different colors from the image and use that as the palette.  Is that what you are asking for?  Or are you thinking something different?   Like instead of showing the actual colors for a palette, the tool would show icons or images of some sort?


> it would be very useful to be able to create subpalettes mixing the real colors that I have selected, to generate fictitious colors based on “Dithering Bayer” type patterns.


This is a very interesting idea.  It might be out of scope for this tool since dithering and color reduction are huge and complex tasks in their own right.    Still, I will give it some thought.  I could see this being a useful feature if I can puzzle out a way to add support for it without overly complicating the tool's UI.


First, thank you for considering my ideas, about your question, exactly, I was referring to loading a static image as the main color source, since when working with a considerable volume of colors, it can become confusing to manage.

For example, here you can see a comparison of how YY-CHR presents the colors, following a logical order, compared to the imported version, by its application, which although functional, is not as intuitive as the original.


Something that becomes more evident, when you need to change the color source constantly.

Developer

I see what you mean.   Perhaps simply being able to adjust the number of display rows for the palette would be enough.   If there was some kind of interface to set the number of rows and columns in the palette display.  In the case of your example, the palette is displayed on a 14x4 grid.    I could see this actually be a very useful feature when working with larger palettes.    I'll need to think about how to present it in the UI, but I think this can be done.    Thanks very much for the suggestion and I'll keep you posted on my progress with it!

I think it's a pretty elegant solution, although I would suggest complementing it with a button to increase or decrease the size of the color swatches; I mean, if I had to manage a palette of 216 colors, for example in 18 columns, that would give me 12 rows of colors, and with the current resolution, I would only be able to display approximately 4 rows.


By the way, I just realized that if you resize the screen with the cursor and then use the maximize screen button (the button in the upper right corner), the work area is bounded to the window without maximizing, greetings, and thanks for your dedication!😉

Developer


Just wanted to let you know that I put a little time into this today and it looks like this should be fairly easy to implement.   I already have it working in basic form, just need a little time to put a proper UI on it.   Will keep you posted on how it goes.   Thanks again for taking the time to write me with your feedback.  To be honest, I can tell already that this is a feature I am personally going to like and use a lot!    I'm already kicking myself for not thinking of it sooner.   It really does help make the palettes easier to view and work with.   :)


> if you resize the screen with the cursor and then use the maximize screen button (the button in the upper right corner), the work area is bounded to the window without maximizing


Are you able to re-produce this problem?   I tried a few times and couldn't get anything to trigger, but I do know the interaction between the app and Windows sometimes goes a bit wonky.

Developer

v1.94 has been released.   

It adds the ability to adjust the number of color swatches per row in the Map Palette.    

I don't  think it's exactly perfect.   Among other things, the UI for it is a bit clunky.   But it does work so I figured it was better to post the update than make you wait for me to figure out how to UI it all nice and clean.

Give it a go when you get a chance and let me know what you think.


Some things to note, the example palette you gave has a few duplicated colors.  Two of the grays IIRC.   This throws off their appearance in the tool because the tool simple scans input files for UNIQUE colors.   I went ahead and added a version of the palette with all unique colors to the set of sample palettes that are included with the tool.   Long term, I'd like to make the tool smarter about handling duplicate colors when loading from a file that is obviously a set of palette swatches (the current behavior is more designed around extracting the palette from an arbitrary image), but again I didn't want to make you wait while I figured out how to make that happen.   One work around would be to save the image in an indexed color format as the tool does support duplicate colors when importing from indexed files.

Thanks!

Great! I’ll download the application right away. Regarding duplicate colors, since color sets are something users will reuse daily, it’s easier for users to slightly modify those colors to make them unique before indexing them. Alternatively, on the programming side, you could consider adding something like “separators” to readjust their order.

As for ideas, if you plan to integrate support for indexed images, considering how practical PixelPaletteTool is for managing palettes, it would be fantastic to have the ability to export those palettes as PAL or ACT files.

Lastly, I understand if it’s not possible, but since you’ve asked for my opinion, I usually store my favorite toolkit in the cloud to work remotely. For that reason, I think it would be excellent to consider creating a portable version… Without further ado, I want to thank you again for your time, and I bid you farewell with a warm hug! 🤗

Developer

Cool, let me know what you think of the new features when you get a chance.

> integrate support for indexed images

The tool should load indexed images.  By support do you mean saving images in an indexed format?


> it would be fantastic to have the ability to export those palettes as PAL or ACT files.

This is something I've been meaning to do for ages, so thanks for prodding me on it!

Got this working for Microsoft PAL files today, will work on JASC PAL files also.

For PAL, do you mean the JASC PAL files (as supported by http://www.lowspec.com)?

For ACT do you mean the Adobe format described here https://www.online-convert.com/file-format/act ?


Hope to get loading and saving palettes in these formats working shortly and add support for Gimp (GPL) and Paint.Net (TXT) palette files as well just for good measure.  :)

▪ New features.
I don’t really think the way you’ve integrated the new features into the interface is bad. Perhaps it’s strange that it starts by loading all the colors stacked, but I don’t feel it’s a problem. Anyway, I’ve put together a small mockup to help you brainstorm ideas.


▪ Indexed images.

English isn’t my first language, so I misunderstood something you said earlier.

To provide better context, at that moment, I thought it would be great to be able to manipulate the palettes of images created with this tool as easily as color samples are rearranged.

(In the production of this type of graphics, it’s often necessary to respect a specific order in color entries, either to share a global palette or to identify the transparency mask color. But, as I mentioned, all of this arose from a mistaken assumption.)

▪ PAL or ACT files.

I must confess that I’m not familiar with the technical characteristics of these formats, so it wouldn’t be appropriate for me to provide an answer in this context. I apologize.

I am very glad to hear your news, about the error, I was a long time trying to replicate it without success, but from experience with the application, I guess it is related to this other problem, as you can see, sometimes the cursor does not transition correctly with the Windows cursor, not allowing to interact with the window, I hope you find this information useful, good luck! 😉


Developer

aah, thanks for the GIF.   I've definitely seen this issue before.  It seems to be a bug in the API I used for handing window stuff (SDL 1.0).  Hoping to fix it by switching to a newer version (a friend tells me the are on SDL 3 already!) someday.  For now, if you haven't already figured it out, the workaround is to click off the window, then click back on the window's title bar.  Not sure why, but that usually gets it responding again.   I'm guessing the other issue you saw is probably just another variation of the same bug.

ps

have the feature working, busy with some IRL stuff this week, hope to package up a new build sometime next week.  

Great, I never really found it an annoying problem, that's why I hadn't reported it, since knowing more or less how it happens, it's easy to avoid and when it happens, it's simple to fix, although I'm glad this information has been useful for you. I'll keep an eye on it, best regards! 😊