Development Resources


Nobel's Continuum Map Development Guide

Page Style Updated By: Aceflyer
Content Updated By: RiiStar

[ Old Skool Software / Tools ] -------------------------------------------------------------------------------------------------

These Tools are older, and most have been around since SubSpace's
time or when the Continuum Client was orginally released.
Although they are older, they are still fully usable and functional for use
in developing and creating arenas and events.

They are the basic tools that any developer should know how to use and
knowing these tools and how the more manual aspects of LVZ are handled
will increase your developer abilities far more than someone who does not have this knowlege...

Subspace Map Editor (SSME)
8 bit map editor for Subspace Continuum
Tileset Changer
Tool for applying tilesets to maps (supports 8, 16, 24, and 32 bit tilesets)
LVZToolKit
Tool for creating .lvz files
(v.38 contains major bug fixes - do not use earlier versions)
INICoordinator
Divides lvz.ini file screen and mapobject coordinates by 16.
Allows you to use SSME coordinates in lvz.ini without a calculator.
Helps position objects correctly.

Usage: Place SSME coordinates inside () in lvz.ini and when you are done execute "ic.exe lvz.ini".
Result will be saved to "output.ini" and all coordinates inside () are converted.

[ Software / Tools ] -------------------------------------------------------------------------------------------------

These Tools are Basicly All in one Editors for Maps and LVZ, making the above tools defunct.
But using and knowing how the manual usage of the tools above work especially for LVZ
will help you become a Power Developer...

  • Drake Continuum Map Editor (DCME)
    Newest MAP & LVZ editor for Subspace Continuum
  • CLT (Continuum (Map) And LVZ Tool)
    MAP & LVZ editor for Subspace Continuum

[ Maps ] -------------------------------------------------------------------------------------------------

Description

A map is a level file (.lvl file) for Subspace/Continuum. It contains layout and tiling of the arena. In Continuum, graphics can be extended with .lvz level extension files.

Creating a Map

Required Software

  • Subspace Map Editor (SSME) 0.81a
  • Continuum server, or access to one

Recommended Software

  • Paint program that supports .bmp files (Adobe Photoshop or Imageready recommended)
  • Tileset Changer

Step 1:
Get a tileset or create a customized one.

Step 2:
Create map with SSME.

Step 2.1:
Set hi-color tileset with Tileset Changer (Continuum 0.38+ only).

Step 3:
Upload map to arena.

[ Tileset ] -------------------------------------------------------------------------------------------------

A tileset contains all the graphics for tiles used in SSME. It is actually a 304 pixel wide and 160 pixel high .bmp file which is divided into 190 16 by 16 pixel images.

Creating a Tileset

Subspace and Continuum versions up to 0.37 use 8 bit colormap so if you draw the tileset from scratch you will probably end up with messed-up colors and ugly tiles while testing your map the first time. There are two ways to prevent this. The first and recommended way is to import the correct colortable to Adobe Photoshop. If you are unable to use this software you can use an existing tileset or a blank template and edit it with your favorite graphics editor. This way you can be sure that the correct colormap is in use from the beginning.

Continuum versions 0.38+ support 16, 24, and 32 bit colormaps and there are no limitations on the tileset. However currently all the map editors for Continuum support only 8 bit tilesets so for now you have to make two versions of your tilesets, one for the map editor and one for the release. After you have done the 8 bit map in SSME you can apply the 16, 24, or 32 bit tileset with Tileset Changer.

Step-by-step instuctions for Adobe Photoshop/Imageready 7.0 and Subspace/Continuum versions up to 0.37:

  • Open Imageready and click (File/New) -screenshot-
  • Enter name for your tileset, set width to 304 pixels, height to 160 pixels and contents of first layer to white. Click (OK) -screenshot-
  • Click (View/Create Guides) -screenshot-
  • Make sure that both Horizontal and Vertical guides have check marks in front of them. Enter value 16 to both Horizontal and Vertical guide slot 'pixels between guides'. Click (OK) -screenshot-
  • Click (File/Jump To/Adobe Photoshop 7.0) -screenshot-
  • Close Imageready
  • Click (View/Lock Guides) -screenshot-
  • Click (View/Snap To/Guides) -screenshot-
  • Click (Image/Mode/Indexed Color) -screenshot-
  • Choose 'Custom...' from pallette menu. -screenshot-
  • In Color Table window click (Load) -screenshot-
  • Locate colortable.act and click (Load) -screenshot-
  • Close Color Table window by clicking (OK) -screenshot-
  • Close Indexed Color window by clicking (OK) -screenshot-

Note: You can reload color table by any point by clicking (Image/Mode/Color Table). -screenshot-
  • Do your stuff. -screenshot-
  • Click (File/Save As...) -screenshot-
  • Select 'BMP (*BMP;*.RLE;*.DIB)' from the Format menu and give [name].bmp to your tileset. Click (Save) -screenshot-
  • The BMP options menu should pop up. Check that file format is 'Windows' and depth is '8 bit'. Check that 'Compress (RLE)' and 'Flip row order' are NOT checked. Click (OK). -screenshot-

Step-by-step instuctions for Adobe Photoshop/Imageready 7.0 and Subspace/Continuum versions 0.38+:
  • Open Imageready and click (File/New) -screenshot-
  • Enter name for your tileset, set width to 304 pixels, height to 160 pixels and contents of first layer to white. Click (OK) -screenshot-
  • Click (View/Create Guides) -screenshot-
  • Make sure that both Horizontal and Vertical guides have check marks in front of them. Enter value 16 to both Horizontal and Vertical guide slot 'pixels between guides'. Click (OK) -screenshot-
  • Click (File/Jump To/Adobe Photoshop 7.0) -screenshot-
  • Close Imageready
  • Click (View/Lock Guides) -screenshot-
  • Click (View/Snap To/Guides) -screenshot-
  • Do your stuff. -screenshot-
  • Click (File/Save As...) -screenshot-
  • Select 'BMP (*BMP;*.RLE;*.DIB)' from the Format menu and give [name].bmp to your hi-color tileset. Click (Save) -screenshot-
  • The BMP options menu should pop up. Check that file format is 'Windows' and depth is '16, 24, or 32 bits' (16 or 32 bits are recommended). Check that 'Flip row order' is NOT checked. Click (OK). -screenshot-

While writing this document all Continuum map editors supported only 8 bit tilesets. If you don't need 8 bit tileset you can skip the steps below.
  • Click (Image/Mode/Indexed Color) -screenshot-
  • Choose 'Custom...' from pallette menu. -screenshot-
  • In Color Table window click (Load) -screenshot-
  • Locate colortable.act and click (Load) -screenshot-
  • Close Color Table window by clicking (OK) -screenshot-
  • Close Indexed Color window by clicking (OK) -screenshot-
  • Click (File/Save As...) -screenshot-
  • Select 'BMP (*BMP;*.RLE;*.DIB)' from Format menu and give [name].bmp to your 8 bit tileset. Click (Save) -screenshot-
  • BMP options menu should pop up. Check that file format is 'Windows' and depth is '8 bit'. Check that 'Compress (RLE)' and 'Flip row order' are NOT checked. Click (OK). -screenshot-

Rows 2, 9 and 10 of the tileset contain some special tiles:
  • Row 2, tile 1 - Border tile
  • Row 9, tile 10 - Vertical warpgate (Mostly open)
  • Row 9, tile 11 - Vertical warpgate (Frequently open)
  • Row 9, tile 12 - Vertical warpgate (Frequently closed)
  • Row 9, tile 13 - Vertical warpgate (Mostly closed)
  • Row 9, tile 14 - Horizontal warpgate (Mostly open)
  • Row 9, tile 15 - Horizontal warpgate (Frequently open)
  • Row 9, tile 16 - Horizontal warpgate (Frequently closed)
  • Row 9, tile 17 - Horizontal warpgate (Mostly closed)
  • Row 9, tile 18 - Flag for turf
  • Row 9, tile 19 - Safezone
  • Row 10, tile 1 - Soccer goal (leave blank if you want)
  • Row 10, tile 2 - Flyover tile
  • Row 10, tile 3 - Flyover tile
  • Row 10, tile 4 - Flyover tile
  • Row 10, tile 5 - Flyunder (opaque) tile
  • Row 10, tile 6 - Flyunder (opaque) tile
  • Row 10, tile 7 - Flyunder (opaque) tile
  • Row 10, tile 8 - Flyunder (opaque) tile
  • Row 10, tile 9 - Flyunder (opaque) tile
  • Row 10, tile 10 - Flunder (opaque) tile
  • Row 10, tile 11 - Flyunder (opaque) tile
  • Row 10, tile 12 - Flyunder (opaque) tile
  • Row 10, tile 13 - Flyunder (black = transparent) tile
  • Row 10, tile 14 - Flyunder (black = transparent) tile
  • Row 10, tile 15 - Flyunder (black = transparent) tile
  • Row 10, tile 16 - Flyunder (black = transparent) tile
  • Row 10, tile 17 - Flyunder (black = transparent) tile
  • Row 10, tile 18 - Flyunder (black = transparent) tile
  • Row 10, tile 19 - Flyunder (black = transparent) tile

Black color (#000000) is transparent in game.
Tip: You can create 50% transparent tiles by drawing a black grid on top of them.

Download a Premade Tileset (Public)

tileset-vie1 - Original VIE tileset version 1

tileset-vie2 - Original VIE tileset version 2

tileset-nhk1 - Noblehawk's tileset version 1

tileset-nhk2 - Noblehawk's tileset version 2

[ Creating a Map ] -------------------------------------------------------------------------------------------------

Flagdrop Area

 

  • Flags will drop in any clear area whose size is at least 3 by 3 tiles.
  • Flags will drop under/over lvz mapobjects.
  • Flags will not drop next to a flyover/flyunder tile.

Warp Area

 

  • Ships can warp to any clear area whose size is at least 2 by 2 tiles.
  • Ships can warp under/over lvz mapobjects.
  • Flyover/flyunder tiles do not prevent warping.

[ Setting Hi-Color Tileset ] -------------------------------------------------------------------------------------------------

Tileset Changer is a tool for applying tilesets to maps. It supports 16, 24 and 32 bit tilesets so you can use it for applying hi-color tilesets to maps in Continuum versions 0.38+. Do not try to apply >8 bit tilesets for Subspace / Continuum versions up to 0.37 - it just won't work.

Step-by-step instuctions:

  • Run Tileset Changer.
  • Click (Load Map). -screenshot-
  • Select your level (.lvl) file. Click (Open). -screenshot-
  • Click (Load Tileset). -screenshot-
  • Select your tileset (.bmp). Click (Open). -screenshot-
  • Click (Apply). -screenshot-
  • Name your new level file (.lvl). Click (Save). -screenshot-

[ Uploading LVZ to Arena ] -------------------------------------------------------------------------------------------------

Description of Lvz

Lvz is level extension file for Continuum. It is used to transfer customized sounds, screen- and mapobjects from server to clients. Objects can be static, client-, or server-controlled, so you can customize almost everything you want.

Data stored to lvz is compressed. When client downloads the level, lvz will be saved to [Continuum_root]/zones/[zone name]/ directory and Continuum 0.38+ uses it directly without extracting the files anymore.

Creating Lvz Files

Required Software

  • LVZToolKit
  • Continuum server, or access to one
  • Text editor for creating/editing lvz.ini (Notepad would do fine)
  • Paint program that supports .bmp, .gif, .png, or .jpg files (Adobe Photoshop/Imageready recommended)
  • Sound editor that supports .wav files (Cool Edit recommended)

Recommended Software

  • Graphics editor that supports animated .gif files (Ulead GIF Animator recommended)
  • Software for converting animated .gif files to image-stripped .bmp, .gif, .png, or .jpg files (GIF Construction Set Professional recommended)

Step 1:
Create customized sounds, help files and graphics.

Step 2:
Create lvz.ini file(s).

  • Example lvz.ini.
  • [Objectimages] format.
  • [Mapobjects] format.
  • [Screenobjects] format.
  • Replacing original sounds or graphics.
  • Adding sounds (bongs).
  • Using more than one lvz file in arena.
  • Image, audio and help files loading order.
  • Optimizing level loading time.

Step 3:
Compile lvz.ini and objects to lvz.

Step 4:
Edit Continuum server.conf and copy lvz file(s) to server root.

[ Creating Customized Sounds, Helpfiles, and Graphics ] ----------------------------------------------------------------

Description of Lvz.ini

Lvz.ini contains all definitations to the custom objects like sounds, screen and map graphics. BuildLevel.exe compiles lvz.ini and objects to lvz.

Example Lvz.ini

; All lines beginning with ";" are comments and ignored by BuildLevel.

; OutFile specifies lvz file data is written into and it is overwritten if already present. Use only 8+3 characters compatible names ("sounds.lvz" is ok - "bombsounds.lvz" is not).

OutFile=example.lvz

; With File= you can specify files that are placed into [continuum_root]/zones/[zone name]/ directory or [continuum_root]/zones/[zone name]/[arena name]/ directory if lvz file is used in subarena. As Continuum looks for graphics and sound files from [continuum_root]/zones/[zone name]/, [continuum_root]/zones/[zone name]/[arena name]/ you can customize all graphics and sounds.

File=ships.bm2 File=bomb3.wa2 File=Subspace.hlp

; [objectimages] section specifies images used by [mapobjects] and [screenobjects] section later. Click me for [objectimages] format.

[objectimages] IMAGE0=ssshield.bm2,10,1,100 IMAGE1=b_ad0.bmp IMAGE2=medal.bm2

; [mapobjects] section specifies object locations on map. Click me for [mapobjects] format.

[mapobjects] 8192,8192,IMAGE0,AfterTiles,ServerControlled,500,1 0,0,IMAGE2,AfterTiles

; [screenobjects] section specifies object locations on user's screen. Click me for [screenobjects] format.

[screenobjects] 12,12,IMAGE0,AfterTiles,ServerControlled,100000,1000 C-146,29,IMAGE1,AfterChat,EnterZone,3000

Objectimages Format

[objectimages] section specifies images used by [mapobjects] and [screenobjects] section later. Syntax of image is following:
IMAGE[number]=[filename],[x tiles],[y tiles],[anim period]

[number] is 0-255

[x tiles],[y tiles] and [anim period] are optional parameters that are used to specify animated images. If [x tiles] and [y tiles] present, image file is treated as collection of x*y images. [anim period] is given in 1/100th seconds and determines speed of animation.

Examples GIF Preview BMP Image
IMAGE1=nhk-slot-left.bmp
IMAGE2=nhk-earth.bmp,20,1,200
IMAGE3=nhk-countdown-10-0.bmp,110,1,1100

Mapobjects Format

[mapobjects] section specifies object locations on map. Syntax of mapobject specification is following:
[x coord],[y coord],[image],[layer],[mode],[display time],[object id]

[x coord] and [y coord] are where upper left pixel of the image is placed on map. Center is 8192,8192, top left 0,0, bottom right 16384,16384. If you divide this by 16 you get the value of the position which SSME shows in status bar. You can use INICoordinator to convert the values.

[image] specifies what image is displayed from [objectimages] section and has format IMAGE[number].

[layer] is one of following: BelowAll, AfterBackground, AfterTiles, AfterWeapons, AfterShips, AfterGauges, AfterChat, TopMost and specifies when the image is displayed (i.e. if ships go behind or above it on user screen).

[mode] is one of following: ShowAlways, EnterZone, EnterArena, Kill, Death, ServerControlled and specifies when the object is displayed.

  • ShowAlways: is default and means that this object is visible.
  • EnterZone: object is displayed to players who enter zone for [display time]
  • EnterArena: object is displayed to players who enter arena for [display time]
  • Kill: object is displayed to players who kill somebody else for [display time]
  • Death: object is displayed to players who die else for [display time]
  • ServerControlled: object is displayed when moderator issues *objon for [display time]
    [display time] is given in 1/100th seconds

[object id] is optional number that specifies object id, so that object can be turned on and off with *objon and *objoff server command or moved around by bots.

Screenobjects Format

[screenobjects] section specifies object locations on user's screen. Syntax of screenobject specification is following:
[x coord],[y coord],[image],[layer],[mode],[display time],[object id]

[x coord] and [y coord] are coordinates on screen relative to reference points:

  • no prefix - upper left corner of screen (ex 100,100)
  • prefix C - screen center
  • prefix B - bottom-right corner
  • prefix S - stats box lower right corner
  • prefix E - below energy bar/spec data
  • prefix G - top right corner of specials
  • prefix F - bottom right corner of specials
  • prefix W - top left corner of weapons
  • prefix V - bottom left corner of weapons
  • prefix T - top left corner of chat
  • prefix R - top left corner of radar
  • prefix O - top left corner of radar text

Examples:
(100,150) means 100 pixels right and 150 down from upper left corner.
(B-50,B-100) means 50 pixels left and 100 up from bottom right corner.
(C50,B-100) means 50 pixels right from center and 100 pixels up from bottom.
Note that x and y can have different prefixes, R-10,B-10 for example.
See also refpoints.gif.

[image] specifies what image is displayed from [objectimages] section and has format IMAGE[number].

[layer] is one of following: BelowAll, AfterBackground, AfterTiles, AfterWeapons, AfterShips, AfterGauges, AfterChat, TopMost and specifies when the image is displayed (i.e. if ships go behind or above it on user screen).

[mode] is one of following: ShowAlways, EnterZone, EnterArena, Kill, Death, ServerControlled and specifies when the object is displayed.
  • ShowAlways: is default and means that this object is visible.
  • EnterZone: object is displayed to players who enter zone for [display time]
  • EnterArena: object is displayed to players who enter arena for [display time]
  • Kill: object is displayed to players who kill somebody else for [display time]
  • Death: object is displayed to players who die else for [display time]
  • ServerControlled: object is displayed when moderator issues *objon for [display time]
    [display time] is given in 1/100th seconds

[object id] is optional number that specifies object id, so that object can be turned on and off with *objon and *objoff server command or moved around by bots.

Image, Audio, and Help Files Loading Order

Continuum loads the files in the following order:

  1. [continuum_root]/zones/[zone name]/[arena name]/ *
  2. Active lvz files
  3. [continuum_root]/zones/[zone name]/
  4. [continuum_root]/graphics/ and [continuum_root]/sound/
  5. [continuum_root]/

*) Arena name (public) can be used for main spawn.

Optimizing Level Loading Times

While creating objects you should always remember that many clients still have slow connection. Try to make the lvz files as small you can. Using several smaller lvz files for different kind of objects is always a better choice than creating one huge lvz for everything, because if you update something people will only have to reload that particular smaller lvz.

[ Compiling Lvz.ini and Objects to Lvz ] -------------------------------------------------------------------

[ Setting Lvz Files to Server.conf ] -------------------------------------------------------------------------------------------------