Actions

SCHG How-to

Difference between revisions of "Import art to SonED2"

From Sonic Retro

m (media'd)
m (Text replacement - "Thorn's" to "Thorn's")
 
(2 intermediate revisions by the same user not shown)
Line 152: Line 152:
 
Also of note in the project file text, are the entries for “Collision Index 1” and Collision Index 2.” Some levels have a primary and secondary collision file, others both use the primary index. This is important if you are planning to use two different solidity maps on the same block, for a loop with asymmetrical entry and exit points, for example. In a symmetrical loop, the collision is merely disabled where relevant, so the same solidity map is applied to both paths of every block, and only one collision index is necessary, since there is only one solidity map per block*. If you need to apply different solidity maps to the same block you will need to have a secondary collision index. If one is not already present for the level you have chosen, you need to do the following -
 
Also of note in the project file text, are the entries for “Collision Index 1” and Collision Index 2.” Some levels have a primary and secondary collision file, others both use the primary index. This is important if you are planning to use two different solidity maps on the same block, for a loop with asymmetrical entry and exit points, for example. In a symmetrical loop, the collision is merely disabled where relevant, so the same solidity map is applied to both paths of every block, and only one collision index is necessary, since there is only one solidity map per block*. If you need to apply different solidity maps to the same block you will need to have a secondary collision index. If one is not already present for the level you have chosen, you need to do the following -
  
''"duplicate the original collision index file and include the duplicate with a new label in the disassembly. Then change the secondary collision index pointer array (Off_ColS in sonic 2) so the level's array slot points to the new index instead of the primary one."'' '''- [[snkenjoi]]'''
+
''"duplicate the original collision index file and include the duplicate with a new label in the disassembly. Then change the secondary collision index pointer array (Off_ColS in sonic 2) so the level's array slot points to the new index instead of the primary one."'' '''- [[User:Snkenjoi|snkenjoi]]'''
  
 
*[[Image:Levelguide-loops.png]]
 
*[[Image:Levelguide-loops.png]]
Line 184: Line 184:
  
 
===Paths and Pathswappers===
 
===Paths and Pathswappers===
To start building more interesting architecture than merely using slopes and quarter pipes, chances are at some point or another, you are going to want to create that great Sonic staple – the loop. For this you will need to develop an understanding of paths, and pathswappers. To this end, grab [[Thorn|Thorn's]] object definitions (which can be found [[Media:Soned2-objdef.zip|here]]) These replace the standard question marks with path numbers. Pathswappers can also be used as planeswappers; red indicates that Sonic will be below high plane (his default position) and yellow indicates that he will be drawn above high plane. Mirroring a pathswapper will neuter its pathswapping properties but it will continue to act as a planeswapper. A good example of this in practice is to take a look at the helix in CPZ and study the ‘swappers and their arrangement.
+
To start building more interesting architecture than merely using slopes and quarter pipes, chances are at some point or another, you are going to want to create that great Sonic staple – the loop. For this you will need to develop an understanding of paths, and pathswappers. To this end, grab [[User:Thorn|Thorn]]'s object definitions (which can be found [[Media:Soned2-objdef.zip|here]]) These replace the standard question marks with path numbers. Pathswappers can also be used as planeswappers; red indicates that Sonic will be below high plane (his default position) and yellow indicates that he will be drawn above high plane. Mirroring a pathswapper will neuter its pathswapping properties but it will continue to act as a planeswapper. A good example of this in practice is to take a look at the helix in CPZ and study the ‘swappers and their arrangement.
  
 
Place pathswappers in the object editor (accessed by pressing O) by double clicking in the layout to create a new object, and using the A and Z keys to cycle the first two digits of the objects’ object ID shown in the top left to 03. Triple clicking will bring up a list which you can use to select from. 03 xx 0x is the object ID for a pathswapper and I've taken the liberty of putting together a reference guide for finding the object ID of the pathswapper you need.
 
Place pathswappers in the object editor (accessed by pressing O) by double clicking in the layout to create a new object, and using the A and Z keys to cycle the first two digits of the objects’ object ID shown in the top left to 03. Triple clicking will bring up a list which you can use to select from. 03 xx 0x is the object ID for a pathswapper and I've taken the liberty of putting together a reference guide for finding the object ID of the pathswapper you need.

Latest revision as of 19:29, 10 April 2018

(Original guide by iojnekns)

Introduction

Some of you may have been unlucky enough to read my previous attempt at trying to de-mystify SonED2. Written for the newcomer despite only just grasping the basics myself, every time I've read it since I've been horribly aware of its blatant inaccuracies, mistakes and inconsistencies. For this reason, rather than allow it to languish as a permanent unsightly blot on my record, I present to you this updated version with the hope that it might help me sleep at night through the constant, bitter shame of it all.

Frankly, there is no reason I can come up with for a guide of this nature to exist. The documentation which comes with SonED2 and a smattering of curiosity should be all you need to figure it out for yourself. Nevertheless, it is not something which you are going to be able to pick up in an afternoon. You will spend a lot of time performing repetitive tasks, making mistakes and staring at tiny pixels through bleeding eyes. The lazy and the easily frustrated need not apply.

“This is an advanced tool for advanced users, so less experienced users shouldn't expect to delve straight in without having a few problems. Reading and understanding all documentation is essential.” Stealth, SonED2 documentation

The shrewd will probably notice that more or less everything mentioned hereafter is a paraphrasing of Stealth's original documentation – this has not escaped my attention. For whatever reason, many people who seem to struggle with the program are struggling with things which are clearly explained in the help files, which they presumably haven't read. Perhaps those same people will avoid reading this guide too, making it somewhat redundant, but I want to make it clear – this guide is not an insult to the original documentation. What I do know from my own experience, is that things mentioned in the documentation seemed difficult to grasp at the time, but reading through them again having mastered that particular function, they seemed obvious, intuitive and clear. I guess hindsight is 20/20. Hopefully, this guide will mean you can spend more time getting down to the nitty gritty of putting together your new level and spend less learning how to use the tool.

Custom Art: Forethoughts to limitations and design

I can't draw for shit. I've never had any artistic inclinations in my life. I've never enjoyed painting or doodling or drawing in any form. I can't sprite or draw pixel art. I don't understand rules of colour or composition. I can see how it might seem like this might be a barrier to making a custom level complete with original art and its a fairly reasonable assumption. It is however, wrong. If you only take one thing from this entire guide, it is this – you do not need to be able to draw to make custom level art. Sounds pretty stupid, right? I have a feeling this is the barrier that keeps most people from trying in the first place.

To aid the lesson, I'm going to be drawing lots of examples and anecdotes from my own hack, Sonic Boom, partly through sheer narcissism, but mostly because it is impossible to be concise and clear when talking in the abstract about a hypothetical ‘your first level.’ Hopefully by outlining my experiences when designing a Zone for the first time, I can encourage you to try it yourself and illustrate how to go about it. Before Power Plant Zone, the opening level to the hack, I had never seriously attempted to draw anything in my life. I'd like to stress that it was the result of my first try. It did not undergo revisions, or re-drawings. It is a testament to how easy it can be to build up a fairly decent looking level from scratch with no prior knowledge or experience.

You will need an image editor – I use Paint Shop Pro 7, very easy to get hold of and I can't recommend it enough. It can save and load .pcx files and will retain the palette of any image exported from SonED2 which is very useful for making sure your image will import back into the program without a hitch. To this end, I usually make a palette in SonED2 first, export the chunks to a .pcx file and then blank out, resize and draw the new art in this file to ensure the palette is adhered to. It also has an adjustable grid, which is absolutely invaluable.

Some things which you need to know – you can only use the colours from one palette line per tile. You can draw the same tile using a different palette line in SonED2 (theoretically giving you 4 different tiles for the price of 1) but you cannot span multiple palette lines within the same tile. The key here is economy. You don't want to be using millions of blocks to make up a diverse level. You should be inclined to reuse the same blocks over and over again. Not only does it save space, it creates a uniform feel for the level and is quite a relief if drawing terrifies you. There are also limits on the number of unique tiles, blocks and chunks you can use in a level. It is reported by SonED2 as 800 tiles, 400 blocks, and 100 chunks although it is actually significantly less than this. Problems will start to occur after you use around 400 tiles, but even with this in mind, these limitations are easily manageable. If you construct your art around repeating patterns aligned with the grid, pieces will fit together easily. You also want to keep in mind the collision – there are a fixed number of solidity maps, so you can't bank on being able to make reams of new ones. For that reason its often a good idea to build the silhouette of any level furniture you might be drawing with existing height maps so that you can guarantee a tight fit. Sometimes, it might be necessary to draw some new height maps, but luckily there are a handful of unused entries which you can use if needed.

Starting out small

Initially, I was devoid of ideas on where exactly to begin with the art. I had a name – Power Plant, but no real ideas for scenery or motifs. So, I began by setting my grid to 16x16 and trying to draw a pipe. Any power plant worth its salt has got to have some pipes in there somewhere, right? It looked a bit weird and shit (it still does) but not bad for half an hours work from someone who cant draw. Undeterred, I tried to recreate the ventilation shaft from my favourite Counterstrike:Source level, cs_assault, keeping in mind that Sonic was three blocks tall and would run inside it. It was relatively straightforward, used only four colours, and was not very large. Once I'd drawn the first 3x3 (blocks) section, the rest drew itself out of what I had already together. Slightly more confident I threw in some simple variety for greater effect. Levelguide-boxes.jpg

From a distance it looked great, even though very little actual drawing had taken place. It was more like constructing a jigsaw puzzle than a piece of art – a few tiny sections of insultingly simple pixel art and a lot of copying and pasting. Why stop there? A bit more copying and pasting and I find myself experimenting with what else I can make without having to draw a load of new shit.

Levelguide-psp.png

Putting the pieces together

Okay, but who cares, I hear you say? (I don't hear anything – its a rhetoric device.) Woo fucking hoo iojnekns, you drew a bunch of shit and talked about yourself for about ten fucking paragraphs, but how is it relevant? Around this point I found myself out of ideas, so I decided to try my hand at putting together a loop. So I took a loop made up from a quarter pipe in chemical plant, observed how it was constructed, and recreated it. Suddenly the art I'd drawn up until now was incredibly useful. How can I fill that small, bland, blank looking section? Re-use the vent cover. What can I use to make up the border? Well that small block I've used a thousand times already seems to fit the bill. Suddenly everything seemed to fall into place. I've got a default ‘floor’ block, a standard look to work towards in other chunks, a format which I can imitate when making platforms or slopes.

Levelguide-cpzloop.pngLevelguide-ppzloop.png

The original CPZ loop and my own. Sure, mine looks bland in comparison, but that guy was getting paid, so who's the real winner? Still him.

Simply by following these ideas through to their logical conclusion, and a little experimentation when necessary, pretty soon I was looking at this –

Levelguide-pspexample.png

At the risk of sounding like a clithead – bloody nice for a few days work.

The point? Just get in there and have a go. You don't need to know how to draw, you don't need to know any art theory, you don't even need to practice for hours. All you need are a pair of eyes (and probably hands) and a couple of hours to mess around. Even if the individual parts are pretty simple, mundane and boring, the effect of them all together can be striking. I did not draw this level, I simply drew a few seeds and watched in amazement as they grew. I'm confident that absolutely anyone could put together something like this without too much toil and could most likely put my efforts to shame.

The Interface

From my experience, the most difficult part of trying to help those struggling with the program, is conveying which area of the screen you are telling them to operate, from behind a keyboard. To avoid ambiguity, I've tried to break things down using images, so it is clear what I'm referring to. Other than that, this is basically the contents of the “tile editor” help file provided with SonED2 anchored to some images. The original document is definitely required reading if you are serious about becoming proficient with the program.

Levelguide-chunkselect.png

This is the ‘tile editor’ screen, accessible by hitting the “I” key on your keyboard or the “editor” drop down menu. This is where most of the action goes down. Lets begin with some of the basics.

Layouts are build out of 128x128 squares of art called Chunks. These Chunks are made up of 16x16 squares of art called Blocks. Blocks are made up of 8x8 squares of art called Tiles.

“All game art is stored as 8x8 tiles, which are used by "mappings" to build larger images. In the case of level art, 8x8 tiles are mapped into 16x16Blocks, which are then mapped into the 128x128 (Sonic 2 type) or 256x256(Sonic 1 type) Chunks that make up the levels. The "mappings" contain the palette row identifier*, so a single tile may be reused several times with different palette rows to show the same form with different colors.”- Stealth, SonED2 documentation

  • they also contain identifiers for plane and draw direction.

The palette editor (1)

Levelguide-palette.png

The palette editor serves as both the color selection tool and the color editing tool. The currently-selected color is signified by a white box that surrounds it. A level may only display 64 colors at once (the top 4 rows), but the display shows 128 colors, with the bottom 4 rows being available for creating "underwater" colors, or a different kind of alternate palette.

Swap Palette - Left-clicking the "X" to the right of the palette will swap the two sections, displaying the level with the alternate palette. The palettes must be swapped back to their original positions before saving, otherwise, the wrong colors will be saved to the wrong files.

Change Color - The "R" "G" and "B" selections below list the Red, Green, and Blue component values that make up the selected color. Using the arrows beside them will change the value

Generate Alt Palette - The color to the right of the RGB options can be used to generate a type of "alpha blend" palette, useful for quickly creating "water" or other blend effects. Left-click the color to select it for editing, and then Right-Click it to generate an alternate palette based on the primary palette and the blend color

– Stealth, SonED2 documentation

Additionally, the T on the far left of each line indicates the colour of transparency, so bear it in mind when preparing any custom art, lest all of the areas you wanted to show up black actually show up as transparent. Generally speaking, the first palette line is used for Sonic and shouldn't be altered, the second line is used for objects and the third and fourth are used for the level proper. The transparency colour used for the third palette line dictates the background colour for the level (and consequently SonED2).

The tile editor (2)

Levelguide-selector.png

“The 8x8 tile editor is made up of a fat-bit grid, which is used for drawing to the tile, and the smaller tile view above it, which shows the tile in it's actual size. The tile is displayed using the palette row in which the currently-selected color resides. The "Tile ID" option shows the ID number of the currently-selected tile. The arrows can be used to select a different tile, or the "Tile Selector" option may be selected to cause the selection list at the right of the screen to display 8x8 tiles, which can be chosen by clicking on them. The "D" and "C" keys may also be used to select a Tile.” – Stealth, SonED2 documentation

The block editor (3)

Levelguide-blocktype.png

In this section of the screen, you can alter the properties of the currently selected block shown in the small window. Left clicking will paste a currently selected tile onto the block. Right clicking one of the four tiles in the small window brings up its properties on the right. Double right clicking will select the tile for editing in the tile editor. Using this area you can change the palette row, plane height, draw direction of each tile within the block as well as collision for the block as whole. These properties are for the current block only, and will not apply to every instance of a particular tile. You don't have to go to the trouble of selecting each tile individually by right clicking in order to alter the properties, you can simply hover over the tile and use the shortcut keys, which can save plenty of time if you are changing the properties of a large number of blocks at once.

1: Displays the block number. Can be changed using the arrows or S and X. They can also be selected from the selector list.


2: Changes whether the tile currently highlighted is drawn in front of or behind Sonic. Use the arrows or the G and B keys.

3: Changes which palette the currently selected tile is drawn with. Use the arrows or the H and N keys.

4: Changes the draw direction. Use the arrows or the J and M keys.

5: Assigns the currently selected solidity map to the currently selected block, by simply clicking the number itself. The left value is for path 0 and the right value is for path 1.

The chunk editor (4)

Levelguide-chunk.png

Very similar in nature to the block editor. Left clicking will paste the currently selected block onto the chunk, the number of which is given at the top of the menu. Right clicking will bring up the properties of a particular block, double right clicking will select the block in the block editor. Here you will alter the nature of the collision of each block for paths 1&2 and the draw direction of the block (the block itself will not be changed) within the chunk.

1: Displays the chunk number. Can be changed using the arrows or A and Z. They can also be selected from the selector list.

2: Alters how this specific instance of a selected block uses its solidity map for path 0*. Can be changed using the arrows or G and B

3: Alters how this specific instance of a selected block uses its solidity map for path 1*. Can be changed using the arrows or H and N

4: Alters the draw direction for this specific instance of a selected block. Can be changed using the arrows or J and M

“While Height Maps describe what parts of a Block are solid, they still need to be told in what direction the player or other objects can travel in without being stopped. The setting can allow the player to pass through in any direction, only from the left, right, or bottom (standing on top), or not at all (solid on all sides). Also, as a by product of the method used to store this data, the left, right, and bottom sides of the Block may be set as solid without setting the top.” – Stealth, SonED2 documentation

The selector list (5)

Levelguide-se2modes.png

I've taken the liberty of underlining in green, the buttons for the selector list on the main tile editor screen. Clicking the relevant text will bring up the entire list. Left clicking selects an item. Add an entry to the list with ctrl and A, remove from the list with ctrl and Z. If you are using the tile selector specifically, the tiles will be displayed using whatever palette line is currently selected. From this area you can also alter properties directly by hovering over the desired entry with the mouse and using the following shortcut keys:

Copy with ctrl and C

Paste with ctrl and P

Insert an entry mid-list with ctrl and I

Delete an entry mid-list with ctrl and D

Mirror with ctrl and M

Flip with ctrl and F

If you are to flip or mirror a block or tile here, it will not affect any instances of that block or tile in a chunk or block – SonED2 will automatically alter the draw direction so that the art appears the same, it will simply appear in the list in the new direction.

The solidity editor (6)

Levelguide-solidef.png

The graph shows the physical shape of the selected solid. Left clicking fills a column of the graph from the bottom, right clicking fills from the top. The X's are used if you do not wish to fill the column at all.

1: A solid can be selected from the selector list or scrolled through using the tiny arrows, or the F and Z keys.

2: The graph shows the shape of the solid and the angle dictates how Sonic will behave when traversing it. 0-360 degrees are represented in hex from 0-FF, although only even numbers can be used.

“The range of 360 degrees is represented by values between 00 and FF (256 values), with FF being 359 degrees, 00 being 0, and 40 being 90. Values starting at 00 and rising are used starting at the bottom of a circle and moving clockwise (left-side slopes use values between 0x00 and 3F from bottom-up, right side are FF to C0 from bottom-up).” – Stealth, SonED2 documentation

3: Pressing “show block” will put the graph against whatever block is currently selected in the block editor. These two are completely unrelated, and it does not indicate that the displayed block has been assigned with the displayed height map.

Importing Custom Art

First of all, you will need to choose an existing zone to overwrite with your new zone. This won't really make much difference unless you plan to use the badniks from a certain zone or intend to use the same boss. Of course, each level has minor differences for start position, level boundaries, Dynamic Level Events and that sort of thing so perhaps these will factor into your decision. Choosing to use CPZ for example, invariably means that you will encounter the rising water level in Act 2, and girder objects in the foreground, so if you aren't up to modifying those in ASM yourself and cannot persuade a friend to do it for you, it would not make the best choice. Locate the project file in your disassembly and open it using notepad. Use this to track down the individual files for the 8x8's, 16x16's, 128x128's, layout, objects and rings and delete them all. Open the project in SonED2 and it will create new blank files in their place. Feel free to colour in the single blank “X” tiles as you see fit. Deleting the very last tile will cause SonED2 to crash, so make sure you leave one. The zone should now be completely blank.

Also of note in the project file text, are the entries for “Collision Index 1” and Collision Index 2.” Some levels have a primary and secondary collision file, others both use the primary index. This is important if you are planning to use two different solidity maps on the same block, for a loop with asymmetrical entry and exit points, for example. In a symmetrical loop, the collision is merely disabled where relevant, so the same solidity map is applied to both paths of every block, and only one collision index is necessary, since there is only one solidity map per block*. If you need to apply different solidity maps to the same block you will need to have a secondary collision index. If one is not already present for the level you have chosen, you need to do the following -

"duplicate the original collision index file and include the duplicate with a new label in the disassembly. Then change the secondary collision index pointer array (Off_ColS in sonic 2) so the level's array slot points to the new index instead of the primary one." - snkenjoi

  • Levelguide-loops.png

With your now empty level, the next thing on your agenda should be matching the palette lines in SonED2 to the ones used in your art. For reference, SonED2 RGB values correspond to RGB values found in art editing programs such as PSP as follows - 2=32 4=64 6=96 8=128 A=160 C=192 E=224 I highly recommend exporting the blank level to a .pcx image (chunks,blocks, tiles, plane A or whatever, it doesn't matter) and copy the art into this file as the palette will be consistent between both programs. Rules mentioned earlier apply – individual tiles can only use colours from one palette line. If the same colour exists on two different palette lines and are are not vertically aligned, this may cause the art to import with unintended colours, so you may have to temporarily alter the surplus colours while you import the art. The image size should be trimmed down to a multiple of 128 and art lined up correctly on a 8x8 grid. When you are ready, import the art with File > Import from Image > Chunks.

Assigning palettes, Planes and Collision

Providing you have done everything correctly so far, your art should appear in its entirety in SonED2 at this point. In my experience however, of the entire process, it is this stage when people run into difficulties. A common issue is that of imported art using the wrong palette line which is a result of the way SonED2 determines which palette to use when importing art.

“When importing Blocks or Chunks, SonED2 will use the last pixel found within a tile to determine which palette row to assign it within the Block. If colors from different rows are used within the tile, they will become colors from the row assigned to the tile (the same row entry as in the row they were taken from). The very first color in the 64-color palette (entry 0) is safe to use anywhere in any tile to represent transparency, however.” - Stealth, SonED2 documentation

Editing the undesired palette choices is a simple case of selecting the blocks with offending tiles in the block editor, and changing which palette row is used by each individual tile. If you're dealing with a hefty amount of art, this might be a long task but sensible use of the shortcut keys cuts down the time spent on this considerably. You may find, despite my earlier warnings, that two identical colours which are not vertically aligned have caused your art to use your intended palette wrongly, in which case you will need to address the issue and import the art again. Another issue to be aware of is the tile, block and chunk count of your level. You cannot use more than $400 (that's 1024 to those of us who still think in decimal) tiles for level art, since the other $400 are reserved for sprites and things like that (or so I have been led to believe) and blocks use only ten bits for the tileID, they therefore cannot distinguish tiles over $400. All of which is fancy talk for ‘you cannot go over $400 tiles.’ So don't try. What you will find is that after having broken the limit, everything will look fine, but if saved and re-loaded (or built into the ROM) the art which uses the extra tiles will be garbled. To be on the safe side, I always double check after importing large amounts of art, that it still displays the same after SonED2 has been restarted. If you encounter this issue, but are confident that you were conservative when drawing the art, a common explanation is that your original .pcx art file is partially, or completely, misaligned with the 16x16 grid which would break up any repeating patterns or such-like and as a result, cause the unique tile count to sky rocket. In fact, with almost all issues encountered around this stage of the process, the source image is the best place to start looking.

Collision

Once you are happy that art is looking its best, you will want to turn your attention to collision. Applying collision uses a combination of the chunk editor, block editor and the solid editor. The easiest thing to do when starting out, is to focus on the blocks in your artwork that you intend to be completely solid, often this will include floors and walls, that sort of thing. Use the solid selector to choose the appropriate solidity map, which for full solid blocks is FF*. With the solidity map now in the solid editor, you can see its properties. Next, select the chunk you want to apply to collision to. Use the chunk editor to select a block in the block editor and apply your selected solidity map to each unique block that requires it in turn. Once you've done the solidity for one block, it will use it consistently wherever it appears. With this completed, use the chunk editor to draw your collision in the chunk for both paths. For a solid wall, use all solid, ledges which you can mount from below use top solid. l/r/b solid causes Sonic to fall through an area if approached from above, but is impassable from the sides or directly below. I think you should be able to figure out Not solid for yourself. When doing collision, the W and E keys are invaluable, as they allow you to view the collision for both paths. R toggles whether the angles are displayed and Q returns to normal view. All solid blocks show up black, white for top solid and yellow for l/r/b.

  • You might notice that there are other fully solid blocks inhabiting many of the slots prior to FF. These use identical height maps, but have different angles (they are sometimes used in slopes).

Use this same method of applying collision for. For a piece of level furniture which uses an angle outside of $00 and $40 (equal to 0-90 degrees – the bottom right corner of a loop, for example) you will need to manually flip and/or mirror the block using the block selector and orient it so that the solidity map will fit on it. Any instances of the block in art will remain drawn in the same direction, but the solidity will have been rotated to display the correct angle. To illustrate this I recommend building a loop. Because I'm such a thoughtful dude, I've got a template for four quarter pipes arranged in a circle you can use as a template for drawing loops, which you can download here in .pcx format, and this template to show the arrangement of the solidity maps show below.

Levelguide-loopcol.png

This pattern is repeated all 360 degrees, using the process described above. No doubt you will want to experiment with different slopes and loops, but the same process applies to implement with them. Try to draw your art for the collision so that when it gets to this part of the process, you are able to do it easily (and you should already know what solidity maps to use). Note that you are in no way restricted to only this shape of quarter pipe, but you will need to work out which solidity maps to use for different shapes and sizes. Looking at how the original team did it in Sonic 2 is a often a pretty good way of getting ideas. If you encounter an issue where Sonic ‘catches’ or ‘jams’ when traversing loops or slopes, details of this problem can be found here.

Paths and Pathswappers

To start building more interesting architecture than merely using slopes and quarter pipes, chances are at some point or another, you are going to want to create that great Sonic staple – the loop. For this you will need to develop an understanding of paths, and pathswappers. To this end, grab Thorn's object definitions (which can be found here) These replace the standard question marks with path numbers. Pathswappers can also be used as planeswappers; red indicates that Sonic will be below high plane (his default position) and yellow indicates that he will be drawn above high plane. Mirroring a pathswapper will neuter its pathswapping properties but it will continue to act as a planeswapper. A good example of this in practice is to take a look at the helix in CPZ and study the ‘swappers and their arrangement.

Place pathswappers in the object editor (accessed by pressing O) by double clicking in the layout to create a new object, and using the A and Z keys to cycle the first two digits of the objects’ object ID shown in the top left to 03. Triple clicking will bring up a list which you can use to select from. 03 xx 0x is the object ID for a pathswapper and I've taken the liberty of putting together a reference guide for finding the object ID of the pathswapper you need.

The following leave Sonic in his default plane (below high) and can be passed through in any state, whether running, jumping or whatever.

03 00 00 - 03 07 00 – Force path 0 in various sizes

03 08 00 – 03 17 00 – Swap between 0 and 1 in various sizes and directions

03 18 00 – 03 1F 00 – Force path 1 in various sizes

The following will only permit Sonic to pass through if he is walking, running, or rolling along the ground, and leave Sonic in his default plane (below high).

03 80 00 – 03 87 00 - Force path 0 in various sizes

03 88 00 – 03 97 00 – Swap between 0 and 1 in various sizes and directions

03 98 00 – 03 9F 00 - Force path 1 in various sizes

The following will force Sonic into the ‘above high’ plane and can be passed through in any state.

03 60 00 – 03 67 00 - Force path 0 in various sizes

03 68 00 – 03 77 00 - Swap between 0 and 1 in various sizes and directions

03 78 00 – 03 7F 00 - Force path 1 in various sizes

The following will force Sonic into the ‘above high’ plane and can only be passed through whilst walking, running or rolling.

03 E0 00 - 03 E7 00 - Force path 0 in various sizes

03 E8 00 - 03 F7 00 - Swap between 0 and 1 in various sizes and directions

03 F8 00 – 03 FF 00 - Force path 1 in various sizes

The following will change Sonic's plane from below to above high (from left to right) and can be passed through in any state.

03 20 00 - 03 27 00 - Force path 0 in various sizes

03 28 00 – 03 37 00 - Swap between 0 and 1 in various sizes and directions

03 38 00 – 03 3F 00 - Force path 1 in various sizes

The following will change Sonic's plane from below to above high (from left to right) and can be passed through only whilst walking, running or rolling.

03 A0 00 – 03 A7 00 - Force path 0 in various sizes

03 A8 00 - 03 B7 00 - Swap between 0 and 1 in various sizes and directions

03 B8 00 – 03 BF 00 - Force path 1 in various sizes

The following will change Sonic's plane from above to below high (from left to right) and can be passed through in any state. 03 40 00 – 03 47 00 - Force path 0 in various sizes

03 48 00 – 03 57 00 - Swap between 0 and 1 in various sizes and directions

03 58 00 – 03 5F 00 - Force path 1 in various sizes

The following will change Sonic's plane from above to below high (from left to right) and can be passed through only whilst walking, running or rolling.

03 C0 00 – 03 C7 00 - Force path 0 in various sizes

03 C8 00 – 03 D7 00 - Swap between 0 and 1 in various sizes and directions

03 D8 00 – 03 DF 00 - Force path 1 in various sizes

Its a good idea to trace Sonic's route through the level with your finger (or just your eyes) using the W and E keys as he crosses pathswappers, to ensure that he is in the appropriate paths at appropriate times, as shown below.

Levelguide-loops.png

The left window shows plane 0, whilst the right shows plane 1.

One thing to bear in mind when placing your pathswappers, is preventing Sonic from ‘escaping’ from your intended path, by somehow jumping or otherwise avoiding a pathswapper. To this end, I try to seal up my routes by placing them in corridors, or other areas where he is unable to leap over them. You should always playtest a sequence of pathswappers to be totally sure they work- you might find as I did, that placing a pathswapper too close to a loop, for example, causes him to jam, as though the pathswapper has not been properly triggered. Always make sure there is space on either side of the pathswapper for Sonic to swap unhindered. There is nothing to stop you making a ‘wall’ and ‘roof’ of pathswappers to prevent Sonic leaping over a pathswapper placed just after a loop. You should aim to make sure the path Sonic follows is non-negotiable, regardless of what the player does, to avoid the player being trapped, stranded or exploiting the level.

Planes

Using planeswappers is not the only way to get Sonic to move in front of and behind the art in his environment. Each block contains the properties for the planes of each tile. Low plane indicates that a tile will be drawn behind Sonic in all positions, and high plane will be drawn over Sonic, unless you have placed a planeswapper to draw Sonic above it. Altering these properties is similar to the method used for changing palettes. Use the Y and U keys to toggle whether or not low and high planes respectively, are displayed. Use the block editor to change the plane settings for each individual tile within a block. As with palettes, this property will not be duplicated for every instance of the tile, but rather, is a property of the block.

Layouts

I'm rather tired after all this writing, so I'll make this brief. All of the process up to this point has been building up to this stage, the layout. From here on out, there is no ‘right’ or ‘wrong’ answer. Putting together successful layouts is an art, so from here on you're on your own. Try to steer away from cheap shots, avoid bottomless pits and please, after all the effort of putting the art in, try not fuck them up.