Difference between revisions of "NMLTutorial/Graphic files"

From TTWiki
Jump to navigationJump to search
(using palettes in GIMP)
(Move image editor instructions to Save paletted image files)
Line 2: Line 2:
   
 
You can use any graphics file format as long as it's supported by the [http://www.pythonware.com/products/pil/ Python Image Library] and as long the graphics file has one of the TTD palettes applied.
 
You can use any graphics file format as long as it's supported by the [http://www.pythonware.com/products/pil/ Python Image Library] and as long the graphics file has one of the TTD palettes applied.
  +
   
 
== What image files should I use? ==
 
== What image files should I use? ==
 
If you're unsure about what file format to use, take PNG as a safe bet. It can work with palettes and has the added advantage that it can be viewed by browsers and as such you can just upload your sprite files to the forums if you want to show them. PNG files are also widely supported by graphics editors.
 
If you're unsure about what file format to use, take PNG as a safe bet. It can work with palettes and has the added advantage that it can be viewed by browsers and as such you can just upload your sprite files to the forums if you want to show them. PNG files are also widely supported by graphics editors.
   
<!-- content below should eventually be moved to a separate tutorial about drawing sprites -->
 
   
 
== What's this palette business? ==
 
== What's this palette business? ==
Line 15: Line 15:
 
Make sure to actually save the graphics files with a palette applied, or NML will complain that you don't have one. If you don't have this palette, you can extract it from any decoded grf file or [http://newgrf-specs.tt-wiki.net/wiki/NML:Graphic_files download] a premade palette file.
 
Make sure to actually save the graphics files with a palette applied, or NML will complain that you don't have one. If you don't have this palette, you can extract it from any decoded grf file or [http://newgrf-specs.tt-wiki.net/wiki/NML:Graphic_files download] a premade palette file.
   
  +
See [[Save paletted image files]] for how to create image files with the correct pallete applied.
== Using palettes ==
 
This section covers how to apply a palette to a graphics file in several graphics editor. If you're editor is not listed here and you know how to work with palettes using it, please add it here.
 
 
=== Adobe Photoshop ===
 
[[Image:Photoshop palette window with windows ttd palette.png|thumb|50%|Fig. 1: Photoshop palette window showing in this case the Windows palette]]
 
[[Image:Photoshop indexed color window.png|thumb|50%|Fig. 2: Photoshop indexed color window]]
 
 
In this subsection it is explained how to create a palette file and how to apply it using Adobe Photoshop (CS5 is used here, but identical or similar procedures apply in other versions of Photoshop). It is assumed that you have a clue about working with Photoshop.
 
 
==== Retreiving a palette file ====
 
You can use an existing graphics file that has the correct palette applied to retrieve the palette and save it to a separate file. This palette can then be applied to graphics files that don't have a palette. You can skip this part if you have downloaded a premade palette file.
 
 
# Open a graphics file of which you know it has the correct palette in Photoshop. Decoded NewGRFs (using GRFCodec) surely will have the correct palette applied.
 
# Go to Image > Mode > Color Table... The window from Fig. 1 will appear.
 
# Click Save... and store the palette file (*.act) somewhere on your computer.
 
 
==== Applying a palette from file ====
 
The Windows or DOS TTD palette must be applied to your graphics file for them to work in GRFCodec and NML. For the next steps we assume that you have a palette file (*.act) with the palette of your choice stored somewhere on your computer.
 
 
# Open a graphics file in Photoshop.
 
# Go to Image > Mode and check if RGB Color is checked. Select it if that is not the case, which will convert your graphics file to full-colour, maintaining the colours as they appear.
 
# Go to Image > Mode > Indexed Color... The window from Fig. 2 will appear.
 
# From the Palette drop-down, select Custom... The palette window (see Fig. 1) appears.
 
# Click Load... and browse the palette file. Click OK to close the palette window.
 
# In the indexed color window, you may select your choise of Dither. The dither will convert all colours that are in the graphics file but not in the palette to the palette colours. Either use the Diffusion dither (with preserving exact colors) or the Noise dither. Play around with the settings using the Preview to see the result and pick whatever looks best. If the sprites in the image file were drawn properly (using only palette colours), you should see no difference.
 
# Click OK to apply the palette file (and dither) to this image file. Note that this will flatten all layers (if any) in your graphics file.
 
# Save the file as (preferrably) a PNG image.
 
 
==== Important note on PCX files in Photoshop ====
 
Photoshop has a quirk in which palettes from PCX files are read and written backwards. This is no problem is you stay with pcx, but it is if you convert from pcx to png (and the other way round). Any such conversion will have the palette stored backwards in the target file, making it unusable by GRFCodec or NML. Note:
 
* You cannot use the palette file saved from a PCX file for a PNG file;
 
* You cannot use the palette file saved from a PNG file for a PCX file;
 
* When converting PCX <-> PNG, you must convert to RGB Color first and then back to Indexed Color, applying the palette file of your target file format (e.g. when converting to PNG, apply the palette retrieved from a PNG file).
 
 
=== GIMP ===
 
[[Image:GIMP palette window.png|thumb|50%|Fig. 3: GIMP palette window]]
 
[[Image:GIMP import palette window.png|thumb|50%|Fig. 4: GIMP import pallete window showing the TTD Windows palette]]
 
[[Image:GIMP indexed color conversion window.png|thumb|50%|Fig. 5: GIMP indexed color conversion window]]
 
 
In this subsection it is explained how to create a palette file and how to apply it using the GNU Image Manipulation Program (2.6 is used here, but identical or similar procedures should apply in other versions). It is assumed that you have a clue about working with GIMP.
 
 
==== Import a palette file ====
 
Before you can use a palette in GIMP you must import it. You can import a palette form a file that has the correct palette applied or import a downloaded palette (*.gpl) file.
 
 
# Open a graphics file of which you know it has the correct palette in GIMP if you want to get the palette from that file (otherwise go to the next step). Decoded NewGRFs (using GRFCodec) surely will have the correct palette applied.
 
# Go to Windows > Dockable Dialogs > Palettes... The window from Fig. 3 with a list of builtin palettes will appear.
 
# Rightclick anywhere in the list with palettes and click Import Palette... from the context menu. The window from Fig 4. will appear.
 
# Now choose if you want to retrieve the palette from the opened image or if you want to import a palette from a palette file.
 
## Select Image below Select Source to get the palette from the current image file.
 
## Select Palette file below Select Source and browse to a *.gpl palette file to get the palette from that file.
 
# The palette will be shown. Give the palette a name and click Import. The TTD palette will now be added to the list of palettes.
 
 
==== Applying a palette ====
 
Make sure the palette you want to use is imported in GIMP (see above).
 
 
# Open a graphics file in GIMP.
 
# Go to Image > Mode and check if RGB is selected. Select it if that is not the case, which will convert your graphics file to full-colour, maintaining the colours as they appear.
 
# Go to Image > Mode > Indexed... The window from Fig. 5 will appear.
 
# Select Use custom palette and then select the TTD palette from the palette list (click on the button showing a palette).
 
# Make sure to '''uncheck''' Remove unused colors from colormap.
 
# In the same window, you may select your choise of Dithering. The dither will convert all colours that are in the graphics file but not in the palette to the palette colours. Play around with the settings to find the best result. If the sprites in the image file were drawn properly (using only palette colours), you should see no difference.
 
# Click Convert to apply the palette (and dither) to this image file.
 
# Save the file as (preferrably) a PNG image.
 
 
==== Saving a palette to file ====
 
If you want to share your imported palette, you must have a palette file.
 
 
# Exit GIMP to automatically save your palette(s).
 
# Reopen GIMP (and the palette window via Windows > Dockable Dialogs > Palettes if this is closed).
 
# Rightclick your palette in the palette window and choose Copy Palette Location. This copies the path to the palette file to the clipboard
 
# With GIMP open, get the clipboard contents and browse to the specified folder (usualy ~/.gimp-2.6/palettes).
 
# Copy or upload the *.gpl file with the palette from there.
 
 
Surely there must be an easier way to do this, but I haven't found that so far.
 
 
 
 
   
 
{{NMLTutorialNavbar|Installation|Language files}}
 
{{NMLTutorialNavbar|Installation|Language files}}

Revision as of 20:52, 28 August 2011

You can use any graphics file format as long as it's supported by the Python Image Library and as long the graphics file has one of the TTD palettes applied.


What image files should I use?

If you're unsure about what file format to use, take PNG as a safe bet. It can work with palettes and has the added advantage that it can be viewed by browsers and as such you can just upload your sprite files to the forums if you want to show them. PNG files are also widely supported by graphics editors.


What's this palette business?

Graphics for TTD can only use a limited set of colours (OpenTTD 32bpp graphics are an exception to this; while NML can handle these for you, it is not covered in this tutorial). Check the NewGRF Specs for what these palettes are and which colours are available to use. The DOS palette has a few more colours, so if you're still in the position to choose, go for that.

In theory you can draw in full-colour and then convert your result to the TTD palette, but that usually doesn't work out too well. It's best to only use the colours from the palette in the first place. Each sprite should get a blue background, for which you use the blue from index 0 (indicated as "Transparent" on the page of the link above, or hex colour #0000FF).

Make sure to actually save the graphics files with a palette applied, or NML will complain that you don't have one. If you don't have this palette, you can extract it from any decoded grf file or download a premade palette file.

See Save paletted image files for how to create image files with the correct pallete applied.


NML Tutorial: Graphic files