Difference between revisions of "Terrain Creation Guide"

From Worms Knowledge Base

Jump to: navigation, search
Line 144: Line 144:
 
  - You may also select individual assets to extract.
 
  - You may also select individual assets to extract.
 
  - The utility is buggy/incomplete, you may not be able to extract some files
 
  - The utility is buggy/incomplete, you may not be able to extract some files
 +
 +
== Tips ==
 +
 +
For better playability, ensure the terrain texture (text.img) can be easily distinguished from the background (back.spr) and the soil texture (soil.img).  Also check the 'fringe' colour held in 'grass.img' that is revealed as terrain and objects are damaged. This also needs to be distinguishable from the background and soil, particularly as the terrain gets destroyed leaving tiny bits of land, sometimes individual pixels.
 +
 +
If you find an object always appears too low (embedded) in the terrain, try increasing the height of the object canvas slightly (not the object itself), adding more transparency at the bottom of the image.  By increasing further you can make objects appear off the ground.
 +
 +
If using Photoshop to create the sky gradient, when indexing down to 17 colours use the 'Pattern' dither rather than 'Diffusion' dither, it produces smoother results.

Revision as of 14:54, 1 January 2021

[This page is a work in progress. New tools are in development that will likely replace Sprite Editor]


Background and Prerequisites

This guide will explain how to create your own terrain files using the WA Directory Editor utility (SpriteEditor.exe). You can then play your terrain just as you would other in-game terrains such as Forest, Cheese etc.

See the wkTerrain page for more info on how to play additional terrains.

Terrains are stored under the DATA\Level folder of your Worms install directory. Each terrain has its own folder containing 2 files: 'Level.dir' and 'TEXT.img'.

'TEXT.img' is a small icon representing the terrain in the in-game land generator. 'Level.dir' is an archive file (similar to a zip) that contains all of the terrain images and config files.

The image assets in Level.dir are in two formats that you can't edit directly; .IMG files for images, .SPR files for animated sprites. .SPR files are accompanied by a .SPD text file containing parameters for the .SPR file (frames, width, height etc).

The WA Directory Editor utility (https://worms2d.info/WA_directory_editor) (SpriteEditor.exe) is able to take your image assets (in .BMP [OS/2] format), convert them to .IMG/.SPR and then produce a Level.dir file usable in the game. It is also able to extract assets from existing level.dir files although the program is a bit buggy and some files wont extract.

Sprite Editor converts your BMP files to .IMG/.SPR files based on the filename. EG, 'soil.img.bmp' will convert to the IMG file 'soil.img'. 'debris.spr.bmp' will convert to the .SPR file 'debris.spr'.

Download and extract these terrain guide files to help you get started: https://www.tus-wa.com/files/file-2229 This has an 'EXAMPLE TERRAIN' folder containing examples of the core assets required for all terrains and 4 example custom objects. It also contains the standalone SpriteEditor.exe for convenience or you can download it from the link above.

Core Files (required)

File Name Info
text.img The main texture of your terrain. Dimensions: 256 x 256
soil.img The soil texture revealed when land is destroyed. Dimensions: 256 x 256
back.spr The background mountains image. Dimensions: 640 x 160. Other dimensions may work. Despite being an .SPR file, this is a single image and the background cannot be animated.
back.spd The sprite parameters file for back.spr. Edit width/height parameters as necessary.
bridge.img The flat part of the bridge. Dimensions: 64 x 19
bridge-l.img The left part of the bridge. Dimensions: 64 x 50
bridge-r.img The right part of the bridge. Dimensions: 64 x 49
debris.spr This is the animated falling debris. It's a single image containing all of the animation frames stacked vertically. Dimensions vary depending on content.
debris.spd The parameters file for debris.spr. Adjust frame width, height and number of frames accordingly. 'framerate' should be 0. 'flags' should be 1.
gradient.img The sky gradient image. Dimensions: 8 x 916. This is the only image asset to have a separate 17-colour palette. All other assets share 97 colours.
grass.img Contains the top and bottom grass and the fringe colour you see when objects and land are destroyed. Width is 136 pixels. Height can vary so experiment but it's typically 16 pixels.
Index.txt A list of the custom object filenames to be used on the terrain (excluding the above assets). No file extensions. Maximum of 32 objects. See 'Custom Object Files' below.
Level.dir.txt This is used by SpriteEditor.exe to compile the final Level.dir file. It's a simple list of all files to include. NOTE: .SPD files are not included. The utility uses the .SPD and .BMP to create the .SPR file

NOTE: For conveniance, there's a '_UPDATE INDEX AND LEVEL.DIR FILES.bat' script in the EXAMPLE TERRAIN folder which will automatically build the 'index.txt' and 'Level.dir.txt' files including your custom objects as you create them.

Custom Object Files

You need at least 1 object for the terrain to work and can have a maximum of 32 objects (excluding the core objects above).

There are 3 types of object placement in the game; floor, roof and side.

Your objects can have any file name but the name must end with '.img.bmp' (including file extension). EG, toaster.img.bmp. It's recommended to avoid spaces in the file name and if making a lot of objects it's a good idea to name them based on object type, eg, 'obj-floor-toaster.img.bmp', 'obj-roof-knife.img.bmp', 'obj-side-fork.img.bmp'.

Each custom object you create must be accompanied by an .INF file. EG, the object 'obj-floor-toaster.img.bmp' would have the .INF file 'obj-floor-toaster.inf'

The INF file contains a list of numbers representing internal parameters that describe the properties of your object, EG:

5
0
0
1
1
3

In order, this is what the values represent for each line :

eg_value Info
5 Can be 1 to 10. This value affects the chance of an object being placed and is relative to the values of other objects. EG, by setting all objects to 5, you can increase or decrease the values of objects that appear too much or too little (smaller objects or objects with a narrow base will typically have more places to appear in the terrain)
0 Specifies whether the object is in front or behind the terrain. 0 = behind, 1 = in front
0 Specifies whether the soil texture appears when the object is destroyed. 0 = none, 1 = soil
1 Enables or disables collision for the object. 1 = enabled. 0 = disabled
1 Specifies whether other objects can be placed onto this one. 1 = no
3 Location type of object. 0/1 = side of the terrain, 2 = ceiling, 3 = floor

Custom object dimensions can vary but the height and width values must be divisible by 4. This allows .IMG compression to be set in Sprite Editor reducing file size significantly. If dimensions aren't divisible by 4 and you have IMG compression enabled, the object will appear corrupt in-game.

All images must be saved in BMP (OS/2) format for SpriteEditor to convert, or you'll get an error.

Palette

Worms uses indexed palettes for all assets. The first colour must be black in all palettes to represent transparency.

All core and custom object image files, apart from 'gradient.img.bmp', must not take up more than 97 colours (including black for the 1st colour). It is recommended to index all of these assets down to the same 97 colour palette.

'gradient.img.bmp' has its own 17 colour palette (as always, the first must be black).

Creating the Level.dir File

When all of your BMP objects are saved, and all .INF and .SPD files have been created/updated, update the 'Index.txt' and 'Level.dir.txt' files either manually or by running the script.

You're then ready to create the final Level.dir file :

- Open SpriteEditor.exe
- Ensure "Compress .SPR files" and "Opaque .IMGs" are UNCHECKED (they are checked by default).
- Select "Reconstruct from log"
- Select your 'Level.dir.txt' file.
- The utility will convert all of your BMP assets into IMG's and .SPR's
- Select "Save-As" and save the file as Level.dir

Creating the Terrain Icon (TEXT.img)

This is stored in the TEXT.img file that accompanies your Level.dir file. It must be 64 x 64 and 17 colours (first colour black).

- In the ICON folder within the "EXAMPLE TERRAIN" folder you'll see an example 'TEXT.img.bmp' file. Save your icon with this file name.
- Open SpriteEditor.exe 
- Ensure "Compress .SPR files" and "Opaque .IMGs" are UNCHECKED (they are checked by default).
- Select "Reconstruct from log"
- Open the "icon.txt" file in the ICON folder. This will immediately create the corresponding TEXT.img file. 
- Close SpriteEditor

You now have the Level.dir and TEXT.img files for your terrain. Create a subfolder within 'DATA\Level' giving it the name of your terrain and copy over the 2 files. You can now play the terrain.

Extracting Assets from an existing Level.dir file

- Open SpriteEditor.exe
- Select Open and navigate to a Level.dir file
- Select 'Extract, convert, log' and select a folder to extract the contents to.
- You may also select individual assets to extract.
- The utility is buggy/incomplete, you may not be able to extract some files

Tips

For better playability, ensure the terrain texture (text.img) can be easily distinguished from the background (back.spr) and the soil texture (soil.img). Also check the 'fringe' colour held in 'grass.img' that is revealed as terrain and objects are damaged. This also needs to be distinguishable from the background and soil, particularly as the terrain gets destroyed leaving tiny bits of land, sometimes individual pixels.

If you find an object always appears too low (embedded) in the terrain, try increasing the height of the object canvas slightly (not the object itself), adding more transparency at the bottom of the image. By increasing further you can make objects appear off the ground.

If using Photoshop to create the sky gradient, when indexing down to 17 colours use the 'Pattern' dither rather than 'Diffusion' dither, it produces smoother results.