E02 Sonic the Hedgehog Game Template v 11.01.01
Introduction
What's New
License
Points of Note
Frequently Asked Questions
Template File Structure
Introduction:
The files contained in this template are excerpts from the fileset for the E02 Fan-Game "Sonic the Hedgehog: Project Mettrix".
The template was created as a means by which other E02 users can create a similarlarly-functional Sonic the Hedgehog game, or a tool for or example of creating a relatively complex game project using E02.
Note: E02 is not a "Sonic the Hedgehog Engine". This template, also referred to as "Mettrix Engine", is a "Sonic the Hedgehog Engine" created using E02 Multi-Purpose Game Engine.
The Sonic the Hedgehog look and gameplay contained herein are created entirely by the scripts and data that make up "Mettrix Engine".
This template features the following:
- Simple and complex Script Command usage; many short and long functions using beginner and advanced Script Commands and techniques
- Table File usage
- One complex Player Character, demonstrating Character Common Functions, "Movement Modes", Player Input, and Player Animation -
- Fully-Featured Sonic 3-style Sonic the Hedgehog
- Many simple and complex Game-Global and Zone-Specific Game Objects available for use, demonstrating Scripted Animation, Collision, Debug Drawing, Debug Placement, and Movement -
- Global Sonic 3-style, Green Hill Zone, and Custom Objects
- Ttle Screen -
- An example Title Screen inspired by the original "Sonic the Hedgehog". Demonstrates title display prior to (and after) gameplay
- One playable level -
- Short, original level layout designed to demonstrate accurately-reproduced Sonic the Hedgehog physics
- Interactive Game Objects placed throughout as Enemies, Obstacles, and Items/Powerups
- Special displays such as TitleCard and HUD
- Triggerable proper level-end event
- Level "Sentry" Function that creates manually-controlled background movement and effects
- 3 "Tiled Level Objects" that are available from within "Debug Mode", which demonstrate successful level-style collision with these objects, both when stationary and when mobile. (Place the Object into the level, and optionally modify its "Plat_Type" "Extra Variable" setting from within the Object Editor)
- 5 "Status Objects" -
- Title Screen
- TitleCard
- In-level Heads Up Display (HUD)
- Level-Out Score Countdown Sequence
- "Game Over"/"Time Over" Event
What's New:
Some of the changes listed below do not necessarily apply to the gameplay content of this template, but rather to the underlying engine and the expanded functionality that can be made use of in derivative games.
* Release 11.01.01
- Updated in conjunction with Project Mettrix release 11.01.01
- As in the originals, jumping from spinning along the ground now disables horizontal input while in the air, unless a special move is performed
- Noted original game's "attracted ring" velocity values in contrast to Mettrix's looser "slingshot-style" values
- Fixed the "I forgot what this is..." comment. The section applies downhill gravity force when standing on a sloped surface
- Skidding deceleration value was half of what it should have been; it has been corrected
- The original Mettrix spindash only allowed 8 charges and did not lose strength over time. It now functions as in the originals; it can be charged more than 8 times (with a potential velocity cap), and slowly loses potential velocity while held. Two new "dashspd?.def" table files have been added along with this functionality, and are now noted in the "Template File Structure" section
- Lightning shield now flashes the underwater palette when it is taken away due to entering the water
- "Underwater Vertical Spring Function" flag has been implemented (velocity cap on water exit, or half-force vertical springs)
- The format of the "Points of Note" section of this text has been modified; each note is now preceded by a brief, bolded, descriptive header
- Two new "Points of Note" have been added to this text: Attracted Ring Velocities and Underwater Spring Force
*BugFixes*
- The underwater air timer was reset before its value was checked to determine whether or not the player had triggered the "drowning" music, causing the counter keeping track of the number of currently drowning players to be decreased every time the player left the water, rather than only when the music was actually triggered. This caused normal music playback not to be restored upon the cancellation of drowning state if a player had already entered and exited the water at least once. This has been fixed; the timers are managed correctly and the music is now restored as appropriate
- The water waves spawn function didn't keep track of and set the wave offset values properly, causing them not to span the length of the screen. The function now sets the appropriate offset for each wave object, and the water surface waves now run the entire length of the screen
* Release 10.12.09
- Initial release, based on updates to Project Mettrix release 10.11.16
License:
This template/game and its source materials are purely non-profit and must remain so as they are
based on copyrighted material. Player character and global Game Object source materials
based on content of the official Sonic the Hedgehog games may be used to create derivative
games using E02, however, all other materials remain property of the development team
producing "Project Mettrix", and are for exclusive use by those individuals in the
"Project Mettrix" game. These materials may not be otherwise used until such time that
their origin in "Project Mettrix" has been well-established, meaning that a period of no
less than 1 year must have passed since its completion, or a period of no less than 2
years since the most recent update, or statement of intent to update, unless either
stricter or more lenient terms are explicitly described for any individual content by
the content's author.
As the code is heavily documented, and a lot of work went into creating, revising, and making
readable this code, the conditions of use apply to anyone using "Mettrix Engine" as a reference
to create a completely separate project by completely separate means just as much as they apply
to anyone using "Mettrix Engine" directly to create a derivative Sonic the Hedgehog game for E02-
Any such projects must bear a label crediting the base scripts or original reference research and
development to "Stealth" of "Organized Chaos", and in some form mention "Mettrix Engine". This consideration will be much appreciated.
A similar condition applies to graphic and sound assets contained herein that were obtained from the original Sonic the Hedgehog game- please credit work in obtaining and original arrangement of these assets to "Stealth" of "Organized Chaos" and "Mettrix Engine".
This license does not cover the E02 program or any other E02 game. Please also read the
E02 license, and the individual license documents for each game, as the terms are different.
Points of Note:
This section lists a few points about successfully editing this template that aren't otherwise entirely obvious -
- Script Formatting
Please pay special attention to the formatting for each part of each Script type. Breaking this format can not only cause descriptive error reports, but can also cause hangups and crashes that display no such reports, because in many cases, it is impossible for E02 to tell that the Script wasn't written that way intentionally. This can be true of errors in Code Logic as well, although these errors can also simply cause undesired results. Test and backup frequently.
- Template as a new game
It is highly recommended that the template be duplicated as another "Game" before being edited, as if it is ever updated, downloading those updates could overwrite some local modifications. The template can be made into another "game" by copying the "Sonic" folder and renaming it, and also copying "sonic.gdf" in the "gdf" folder and renaming it. The renamed gdf must then be edited so that the word "sonic" on the "Path" line is changed to the name of the new Game folder. This will make the Game available in the "Installed Games" list. Also, both "stealth.hapisan.com" and "E02/Sonic/" should be replaced by the word "NONE" (note the capital letters), so that the new Game doesn't attempt to read the original template's update notices. The "Name" field may then be updated to give the new Game a unique name.
- Number of Tile Planes
"Test Zone" contains 7 Tile Planes as opposed to the usual 4, and as such, uses a special Function for spawning its Tile Planes (Function 0 in "zone00/zinit.def"), rather than the generic 4-plane Function included with this template as Function 1 of "funcs/mainfunc.def". When using it as a basis to create new levels, remember that each Tile Plane that's loaded from any Level Layout File requires that a Built-In Tile Plane Display Object be spawned for it during Level Init, but only after the Level Layout File is loaded.
- Specialized Background Control
During Level Init, "Test Zone" calls Functions 2 and 3 from "zone00/zinit.def" to run throughout level gameplay. These functions are responsible for creating the multiple-scroll effect used in this level's background, and would cause any normal level background to function improperly if not removed when a new level is created. Removing or disabling these functions will restore standard background scroll behavior.
- Fluctuating Act Number
The Act number in "Test Zone's" TitleCard fluctuates because the TitleCard uses User Register 0 to calculate the Act number to display (which is 1 greater than the internal Act number), but Function 3 in "zone00/zinit.def", one of the Functions responsible for "Test Zone's" special background effect, uses the same User Register to calculate background offsets. This effect was intentionally left in, but it can be removed by removing or disabling that Function, modifying Functions 2 and 3 of "zone00/zinit.def" to use a different Register for the offset calculation, or modifying Function 0 of "stats/tcard.def" to use a different Register for the Act number calculation.
- New Acts
Creating new usable Acts for existing Zones is as simple as creating the appropriate data files and Functions, and adding references to these files and Functions to the appropriate "zone.def" file by following the Act setup format described in the Zone Def Documentation. Existing files and data may be copied to the appropriate locations and modified piece by piece if desired. To cause the new level to come up during normal gameplay in this template, the game must be made to switch to this level by using the Set_Level Script Command with the appropriate Zone and Act IDs in the Boundary Event Function that handles the preceding Act's Level-Out event. For "Test Zone", this is Function 4 in "zone00/zinit.def". Obviously, the new Act will require a new Boundary Event and Function to handle its own Level-Out event.
- New Zones
Creating new usable Zones for existing games is as simple as creating a new "zone??" folder (where "??" is a number consisting of at least two digits that represents the Zone's ID), creating the appropriate data files and Functions, and creating or modifying a "zone.def" file by following the Zone setup format described in the Zone Def Documentation. Existing files and data may be copied to the appropriate locations and modified piece by piece if desired. To cause the new level to come up during normal gameplay in this template, the game must be made to switch to this level by using the Set_Level Script Command with the appropriate Zone and Act IDs in the Boundary Event Function that handles the Level-Out event for the final Act of the preceding Zone. For "Test Zone", this is Function 4 in "zone00/zinit.def". Obviously, the new Zone's Acts will require new Boundary Events and Functions to handle their own Level-Out events.
- Special Object Placement Properties
Some Objects, such as Rings, Monitors, and Springs, have special settings that can't be set by cycling through the Debug Objects List alone. In this template, these Objects use special Scripted Debug Drawing/Placement Functions that read an additional setting- the "Debug Value". The keys/buttons that control this value are listed in the Key Def Files and in-program key configuration interface as "ID Down" and "ID Up" in "Map 2: Control". Pressing these keys generally causes visible changes in the selected Object if it will respond to this value, such as a single Ring expanding into different patterns of multiple Rings, Monitors changing their content Icons, and Springs changing their pad color and bounce force. Some of these objects have more subtypes than are used in the layout for this template.
- Loops and Crossing Paths
Loops and other crossing paths are made possible by causing the Player to change the ID of the Level Tile Plane with which he will test for collision. This is generally accomplished by using "PlaneSwitch" Objects- a Built-in Collision type that will change the Player's "Player_Solid_Plane" Variable based on the direction in which he is moving, and the left/right Plane IDs given by the Object Constants settings in the definition for an Object Type using the Built-in "PlaneSwitch" Collision. In "Test Zone", the Primary Collision Plane is 5, and Plane 6 is used for secondary collision for crossing paths. The "PlaneSwitch" Objects that manage this are defined as Zone Objects 0 and 1 in "zone00/objects.def". This template also defines "PlaneSwitch" objects for standard 4-plane levels that switch between 2 (Primary) and 3 (Secondary) as Game Objects 3 and 4 in "objects.def". Remember that if other levels are created that use planes other than 2 and 3 for crossing-path collision, they will need their own special "PathSwitch" objects set up.
- Important Special Level Settings
To set Player Start Position, Primary Collision Plane ID, and the two Animal Object IDs that are chosen between randomly by defeated enemies for each level, this template uses special User Registers to write these values from each Act Init Function, which are in-turn read by the Game-Global generic setup Functions in "funcs/mainfunc.def" that are also called by these Act Init Functions, and are otherwise used by other Functions during level gameplay. These are User Registers 12-16, 123, and 124, and are among those listed in "game.def".
- Attracted Ring Velocities
As a matter of personal preference, Project Mettrix uses smaller values for looser attracted ring movement. In the unmodified template, the values used in Sonic 3 are listed as comments within the Attracted Ring Movement Function (Function 3 in "objects/objmv.def").
- Underwater Spring Force
As a matter of preference, Project Mettrix cuts the vertical velocity value applied by springs in half. The original games leave the value as-is and instead rely on a vertical velocity cap when leaving water to prevent the player from having too much upward momentum when exiting the water after hitting a spring. Bit 5 of User Register 24, "Game State Flags" will toggle between these two states. Setting the flag to (or leaving it at) 0 will cause the original games' spring/water behavior to be used. Setting the flag to 1 will enable Mettrix's spring/water behavior. This flag may be toggled on a per-level basis by setting/unsetting it during any level's Act Init function, or, for Mettrix behavior for the entire game, set it to 1 during any Function run during game init. If the original games' behavior is desired, nothing needs to be done, but if it is toggled on for only certain levels, don't forget to manually set the flag back to 0 for levels where "Mettrix" behavior is not desired.
- Registers Listing
"game.def" contains a listing of all User Registers used by this game.
- Object Types and Functions Listings
Each "objects.def" file contains a list of the Objects that they define that precedes the Object Definitions themselves, and listings of the Scripted Object Functions that they load immediately following the files that those functions are loaded from.
- Script Functions Listings
All files containing Script Functions contain a complete list of those Functions that precedes the Functions themselves.
- Object Variables Listing
Each Game Object Definition in each "objects.def" file contains a list of each "Extra Variable" that is defined for that Object Type.
- Player Constant/Variable Listings
"s3sonic.def" contains a list of each of the Custom Player Constants and Custom Active Player Variables that are used for the Character, as well as names and comments clarifying how each Movement Mode is used.
- Etc.
There may be some considerations that aren't listed here, in addition to extra functionality that exists but is not taken advantage of in this template's example gameplay.
Frequently Asked Questions:
This section lists answers to Frequently Asked Questions -
- "Didn't I see this level in Megamix?"
Yes, this is the same "Test Zone" that's "secretly"-accessible in the 2008 half-release of "Sonic Megamix". Stealth, the lead programmer, is the one that put it there just for the fun of it. He did this about two years after he first created the level for E02 Demonstration 6, released in 2006, following its parent- the original Sonic the Hedgehog test level for E02, which was first released with E02 Demonstration 2 in 2004 and featured the same graphics and similar layout structures.
Template File Structure:
This section is a complete listing of the folders and files included with this template, each with a brief description and reference links.
- /art - Art for game-global objects is stored here, as well as the global sprite palette. All of these, with the exception of "Animals.tga" and "globpal.tga", are loaded by "objects.def"
- animals.tga - These are graphics for the animals that fall out of destroyed enemies and bounce away. Because different levels only have two of these at a time, but they can be shared, this file is referenced by "objects.def" in each Zone Folder
- bigrng.tga - These are graphics for the Big Ring object that is used for Special Stage entry, as well as the flash that is caused when it's touched
- globpal.tga - This is the file where E02 expects to find the global sprite palette colors. The palette for this image contains these colors, but nothing else is stored here
- misc.tga - Art for miscellaneous global objects is stored here: Water Waves, Enemy/Item Explosion, Enemy Bonus Points, Springs, Spikes, Button, StarPost, Water Splash, Bubbles, Air Countdown Timer, Hidden Bonus Panels, Spindash Dust, and Skidding Dust
- monitors.tga - These are graphics for the Monitors/Item Boxes and their contents
- rings.tga - These are graphics for the normal Ring object and the sparkles that they leave behind after being collected
- shields.tga - These are graphics for the Sonic 2 Normal Shield, the Bubble Shield, and the Lightning Shield
- shields2.tga - These are graphics for the Fire Shield, the Insta-Shield, and Sonic 2/3-style invincibility
- shields3.tga - These are graphics for the Sonic 1 Normal Shield and Sonic 1-style invincibility. This file is currently unused
- sign.tga - These are graphics for a Sonic 3-style signpost and Sonic 3-style Capsule/Egg Prison
- /chars - Art data, Setup Scripts, and Script Functions for the Player Characters are stored here
- /dump - This is where E02 will store any "dump" output files when they are requested from within any of its editors
- (there is nothing here by default)
- /fonts - These files are the data for this game's implementation of the three required default fonts. They are: Font 0- 8x8 Unhighlighted alphanumeric+symbols, Font 1- 8x8 Highlighted alphanumeric+symbols, and Font 2- 4x6 "hex"
- /funcs - This is where the Game-Global Level Event/Sentry Functions are stored
- /music - This is where the Game-Global music files are stored. Each of these files is loaded by "music.def"
- boss1.wav - This is the first part of a two-part music file for the Zone Boss music, and functions as the pre-loop song intro
- boss2.wav - This is the second part of a two-part music file for the Zone Boss music, and functions as the looping section of the song
- drowning.wav - This is the music file that is played when a player is "drowning"
- emerald.wav - This is the music file that is played when a player collects a Chaos Emerald, but it is currently unused
- gameover.wav - This is the music file that is played when a player loses his last life, and the "Game Over" event occurs, or when the timer reaches 9:59 and a "Time Over" occurs
- invinc1.wav - This is the first part of a two-part music file for the Player Invincibility music, and functions as the pre-loop song intro
- invinc2.wav - This is the second part of a two-part music file for the Player Invincibility music, and functions as the looping section of the song
- levelend.wav - This is the music file that is played when a player triggers the end-of-level score counter event
- /objects - This is where the Game-Global Game Object Script Function files are stored
- /sfx - This is where the Game-Global sound effect files are stored. Each of these files is loaded by "sfx.def"
- 1up.wav - This is the sound effect file that is played when a Player earns an extra life (1up)
- airwarn.wav - This is the sound effect file that is played at regular intervals to warn that an underwater Player is running out of air
- alarm.wav - This is the sound effect file that is played as a warning when one player crosses the Signpost object in Competition mode
- bigring.wav - This is the sound effect file that is played when a Player enters or collects a Big Ring
- bonuspnl.wav - This is the sound effect file that is played when a Player activates an invisible score bonus panel (generally placed at the end of a level)
- bosshit.wav - This is the sound effect file that is played when a Player damages a boss
- break.wav - This is the sound effect file that is played when a Player triggers a collapsing platform
- breathe.wav - This is the sound effect file that is played when a Player breathes an air bubble
- bumper.wav - This is the sound effect file that is played when a Player collides with a star bumper. This sound is currently unused
- button.wav - This is the sound effect file that is played when a Player steps on and triggers a button/switch, and for each tick in the end-of-level score countdown
- cashreg.wav - This is the sound effect file that is played when the end-of-level score countdown is complete
- continue.wav - This is the sound effect file that is played when a Player earns a continue. This sound is currently unused
- dash.wav - This is the sound effect file that is played when a Player releases a charged Spindash
- dcharge.wav - This is the sound effect file that is played when a Player charges a Spindash
- drown.wav - This is the sound effect file that is played when a Player drowns
- fireball.wav - This is the sound effect file that is played when a fireball is launched. This sound is currently unused
- fsget.wav - This is the sound effect file that is played when a Player obtains a Fire Shield
- fsuse.wav - This is the sound effect file that is played when a Player activates the Fire Shield's Fire Dash
- gland.wav - This is the sound effect file that is played when a Player lands hard from falling out of a glide. This sound is currently unused
- grab.wav - This is the sound effect file that is played when a Player grabs something, such as Tails carrying another Player while flying, or Knuckles connecting to a wall for climbing
- gslide.wav - This is the sound effect file that is played when a Player hits the floor during a glide and begins sliding across. This sound is currently unused
- hurt.wav - This is the sound effect file that is played when a Player is hurt
- isuse.wav - This is the sound effect file that is played when a Player activates the Insta-Shield
- jump.wav - This is the sound effect file that is played when a Player jumps
- lamppost.wav - This is the sound effect file that is played when a Player triggers a LampPost/StarPost
- lring.wav - This is the sound effect file that is played when a Player spills rings when being hurt
- lsget.wav - This is the sound effect file that is played when a Player obtains a Lightning Shield
- lsuse.wav - This is the sound effect file that is played when a Player uses the Lightning Shield's Double-Jump
- nsget.wav - This is the sound effect file that is played when a Player obtains a Normal Shield
- poof.wav - This is the sound effect file that is played when an Enemy is defeated or an Item Box is destroyed
- ring.wav - This is the sound effect file that is played when a Player collects a ring
- rustle.wav - This is the sound effect file that is played when a Player collides with rustling leaves. This sound is currently unused
- sfx000.wav - This is a silent waveform suitable for loading as Game-Global sound effect 0
- signpost.wav - This is the sound effect file that is played when a Player spins an end-of-level SignPost
- skid.wav - This is the sound effect file that is played when a Player is skidding to a stop
- spike.wav - This is the sound effect file that is played when a Player is hurt by spikes
- spin.wav - This is the sound effect file that is played when a Player performs a Spin Attack
- splash.wav - This is the sound effect file that is played when a Player splashes into or out of water
- spring.wav - This is the sound effect file that is played when a Player is bounced from a Spring
- teleport.wav - This is the sound effect file that is played when a Player is teleported to the Special Stage. This sound is currently unused
- tfly.wav - This is the sound effect file that is played while Tails is flying, but not tired
- ttired.wav - This is the sound effect file that is played while Tails is flying, but is tired
- twinkle.wav - This is the sound effect file that is played when a Player bounces a falling end-of-level SignPost. This sound is currently unused
- usget.wav - This is the sound effect file that is played when a Player obtains ???. This sound is currently unused
- whistle.wav - This is the sound effect file that is played when a Player whistles. This sound is currently unused
- wsget.wav - This is the sound effect file that is played when a Player obtains a Bubble Shield
- wsuse.wav - This is the sound effect file that is played when a Player uses the Bubble Shield's Bubble Bounce to bounce down, and when he bounces back up from the ground
- /stats - This is where the Game-Global "Status Objects" are stored. Each of the ".def" files are loaded by "game.def"
- gtover.def - This Status Object is spawned to trigger the "Game Over" and "Time Over" events. It is responsible for displaying the moving text, playing the "Game Over" music, and exiting level gameplay after time has expired or any of the jump buttons are pressed
- hud.def - This Status Object is spawned during Level Init, and serves as a "Heads Up Display", showing the Player's Score, Rings Collected, Remaining Lives, and Level Timer during level gameplay
- hud.tga - This is the Status Script art file that contains the graphics for the HUD, the "Game Over" and "Time Over" events, and the Level-Out Score Countdown event. This file is loaded by "gtover.def", "hud.def", and "levout.def"
- levfont.fnt - This is the font setup script for the font used by the TitleCard. This file is loaded by "fonts.def" as Font 5
- levout.def - This Status Object is spawned by the SignPost and Capsule/Egg Prison objects to trigger the Level-Out Score Countdown event. It is responsible for displaying the moving text and counters, playing the "Level Out" music, and setting a flag to let the currently-active Boundary Event know that the Level-Out event is complete, and it should either fade out to or chain into the next level
- life.fnt - This is the font setup script for the font used by the lives counter portion of the HUD. This file is loaded by "fonts.def" as Font 4
- statfont.fnt - This is the font setup script for the font used by all counters on the HUD except for the lives counter. This file is loaded by "fonts.def" as Font 3
- tcard.def - This Status Object is spawned during Level Init as a "TitleCard". It is responsible for displaying the moving level name text, fading in the level, activating Player and other Object processing, activating Tile and Palette Animation, and scrolling the level name back out
- zlabel.tga - This is the Status Script art file that contains the graphic and Font art for the TitleCard. This file is loaded by "tcard.def", and also by "levfont.fnt"
- /tables - This is where the Game-Global Table Files are stored. Each of these files is loaded by "tables.def"
- bridge1.tbl - This Binary Table File is used by tension bridges
- bridge2.tbl - This Binary Table File is used by tension bridges
- bubbles.def - This Table Def File is used by Bubble Spawners to determine the order in which to spawn differently-sized bubbles
- bublbob.tbl - This Binary Table File is used Bubbles to calculate their horizontal swaying movement as they move upward
- bwaldir1.def - This Table Def File is used to apply velocities to leftward-flying pieces of Breakable Walls
- bwaldir2.def - This Table Def File is used to apply velocities to right-flying pieces of Breakable Walls
- bwallcpy.def - This Table Def File is used determine where each of the four tiles of each breakaway part of a Breakable Wall should obtain its Tile ID from the original Breakable Wall object
- bwalloff.def - This Table Def File is used determine where each of the breakaway parts of a Breakable Wall should be spawned
- dashspdn.def - This Table Def File is used upon spindash release to determine the velocity that should be applied to the player, based on his spindash charge level
- dashspds.def - This Table Def File is used upon spindash release to determine the velocity that should be applied to the player in "Super" state, based on his spindash charge level
- invani1.tbl - This Binary Table File is used to determine which animation frame each Sonic 3-style Invincibility Star should be displaying
- invani2.tbl - This Binary Table File is used to determine which animation frame each Sonic 3-style Invincibility Star should be displaying
- invani3.tbl - This Binary Table File is used to determine which animation frame each Sonic 3-style Invincibility Star should be displaying
- invani4.tbl - This Binary Table File is used to determine which animation frame each Sonic 3-style Invincibility Star should be displaying
- invani5.tbl - This Binary Table File is used to determine which animation frame each Sonic 3-style Invincibility Star should be displaying
- invani6.tbl - This Binary Table File is used to determine which animation frame each Sonic 3-style Invincibility Star should be displaying
- invani7.tbl - This Binary Table File is used to determine which animation frame each Sonic 3-style Invincibility Star should be displaying
- invani8.tbl - This Binary Table File is used to determine which animation frame each Sonic 3-style Invincibility Star should be displaying
- invoff.tbl - This Binary Table File is used to determine the offsets at which to place Sonic 3-style Invincibility Stars around their central positions for the rotating effect
- signsprk.tbl - This Binary Table File is used to determine at what offset from the SignPost object each of the post's sparkles should be spawned
- sine.tbl - This Binary Table File is a sine/cosine table for a circle split into 256-degrees. The values are fixed-point; they are multiplied by 256 (right-shifted by 8)
- timebonu.def - This Table Def File is used to determine which Time Bonus Score Amount to award to the player for the Level-Out Score Countdown based on the current Level Timer time
- /zone00 - This is where E02 expects to find the "zone.def" file that loads the data for for Zone 0, and contains all of that data as well. In this template, this is "Test Zone"
- 1.itm - This is the Object Layout File for "Test Zone". These files are created by E02 when Objects are saved using the Func_Save_Objects script command, usually in conjunction with Debug Mode, or from within the Object Editor. This is the file that spawns all of the Objects that appear in "Test Zone" that are not otherwise spawned manually by a Script Command. This file is loaded by the Func_Load_Objects Script Command in this level's init function
- 1.lev - This is the Level Layout File for "Test Zone". These files are created by E02 when level layouts are saved from within the Level Editor, or when the Level Ripper is used to convert PCX or TGA image data into E02 level and tile data. This is the file that contains the data for using the tiles to build all portions of the level displayed in this template. This file is loaded by the Func_Load_Level Script Command in this level's init function
- 1.til - This is the Tile File for "Test Zone". These files are created by E02 when tile graphic and property data are saved from within the Tile Editor, or when the Level Ripper is used to convert PCX or TGA image data into E02 level and tile data. This is the file that contains the graphic tiles that are used to build all portions of the level displayed in this template. This file is loaded by the Func_Load_Tiles Script Command in this level's init function
- 1.xm - This is the music file used as "Test Zone's" level music. This file is loaded by "zone00/music.def"
- music.def - This is the Zone Music Def file for "Test Zone". This file is loaded by "zone00/zone.def"
- objani.def - This is the Zone Scripted Object Animation Function File for "Test Zone". These are the functions that may be assigned to an object type to run as Animations and are primarily for setting the object's display frame(s), but may be made to perform other actions at the same time. This file is loaded by "zone00/objects.def"
- objdbp.def - This is the Zone Scripted Object Debug Placement Function File for "Test Zone". These are the functions that may be assigned to an object type to run immediately after an object of that type has been placed using Debug Mode, and are generally used to control modifiable settings on the newly-spawned object under varying circumstances, but may be used to modify other gameplay elements as well. This file is loaded by "zone00/objects.def"
- objects.def - This is the Zone Object Def file for "Test Zone". This file is loaded by "zone00/zone.def"
- objects.tga - This is the Zone Object art file for "Test Zone". This file is loaded by "zone00/objects.def"
- objmv.def - This is the Zone Scripted Object Movement Function File for "Test Zone". These are the functions that may be assigned to an object type to run during the Movement Phase, and are generally used to control the object's movement and other states throughout its existence during gameplay, but may be made to perform other actions at the same time. This file is loaded by "zone00/objects.def"
- zinit.def - This is the Zone Level Event/Sentry Function File for "Test Zone". These are the functions that can be used to initialize the level, perform actions when a boundary event occurs, or can be called by the level init or boundary event functions to run "in the background" for controlling persistent level events, general timers, etc. These functions may also be referenced by any part of the game by explicitly using a Func_Call/Run/Stop_Game_Function Script Command. This file is loaded by "zone00/zone.def"
- zone.def - This is the Zone Def file that E02 expects to find in the Zone's folder, which loads all Zone-Specific data
- /zone95 - This is where E02 expects to find the "zone.def" file that loads the data for for Zone 95, and contains all of that data as well. In this template, this is the Title Screen
- music.def - This is the Zone Music Def file for the Title Screen. This file is loaded by "zone95/zone.def"
- sonframe.tga - This is the Status Script art file that contains the giant Sonic frame graphics for the Title Screen. This file is loaded by "zone95/titlscrn.def"
- theme.wav - This is the music file for the music that is played during the Title Screen. This file is loaded by "zone05/music.def"
- title.tga - This is the Status Script art file that contains graphics for all Title Screen elements except for the giant Sonic and the background. This file is loaded by "zone95/titlscrn.def"
- titlfunc.def - This is the Zone Level Event/Sentry Function File for the Title Screen. These are the functions that can be used to initialize the level, perform actions when a boundary event occurs, or can be called by the level init or boundary event functions to run "in the background" for controlling persistent level events, general timers, etc. These functions may also be referenced by any part of the game by explicitly using a Func_Call/Run/Stop_Game_Function Script Command. This file is loaded by "zone95/zone.def"
- titlscrn.def - This Status Object is spawned during Level Init, and serves as a "Title Screen". It is responsible for displaying and controlling all Title Screen elements except for the background, but it is responsible for scrolling the background. This file is loaded by "zone95/zone.def"
- zone.def - This is the Zone Def file that E02 expects to find in the Zone's folder, which loads all Zone-Specific data
- fonts.def - This is an the Game-Global fonts listing file, which loads all of the fonts that should be made available to the entire game. This file is loaded by "game.def"
- game.def - This is the Game Def File that E02 expects to find in the Game Folder, which loads most game-global data
- Info.txt - This is the "Info" file for this game. It is displayed in the in-program interface when "Info" is selected while highlighting the selection for this game. It may contain any textual information, but each line must be no longer than 38 characters. Note the capital "I"
- keymap.def - This is the Key Map File that E02 expects to find in the Game Folder, which defines this game's key mappings for PC and Mac platforms
- keypsp.def - This is the Key Map File that E02 expects to find in the Game Folder, which defines this game's key mappings for PSP
- keywii.def - This is the Key Map File that E02 expects to find in the Game Folder, which defines this game's key mappings for Wii
- music.def - This is the Game-Global Music Def File, which loads all of the music files that should be made available to the entire game. This file is loaded by "game.def"
- objects.def - This is the Game-Global Object Def File, which defines all of the Game Objects that should be made available to the entire game. This file is loaded by "game.def"
- sfx.def - This is the Game-Global Sound Effect Def File, which loads all of the sound effect files that should be made available to the entire game. This file is loaded by "game.def"
- tables.def - This is the Table Def File that E02 expects to find if any Game-Global Table Files are to be loaded, and loads all of the Table Files that should be made available to the entire game. If no Table Files were being used, this file would have been omitted