Difference between revisions of "Rayman Designer hacking"

From RayWiki, the Rayman wiki
Jump to navigation Jump to search
(some things about RD modding. more will come soon)
m
 
(32 intermediate revisions by 12 users not shown)
Line 1: Line 1:
{{Stub}}
+
'''''[[Rayman Designer]]'' hacking''' is the process of modifying the program files of the game in order to change the appearance and the behavior of in-game events and sceneries.
  
'''''[[Rayman Designer]]'' hacking''' is the process of modifying the program files of the game in order to change the appearance and the behaviour of in-game events and sceneries.
+
==Graphics==
  
 +
=== Tiles ===
 +
In every world-folder (for example "[[The Dream Forest|jungle]]" or "[[Band Land|music]]") of the game, there is a .PCX graphic file. It contains all the graphic tiles which are used by the Mapper and the levels created from it. Tiles can be changed and added, but the following should not be changed:
  
 +
*The color palette used in the file. This palette is additionally used for the background and event sprites, meaning they will change their colors too.
 +
*The first tile on the top-left corner, which is used to set the transparent color in the file.
 +
*The lowest row of tiles, which are reserved for the Mapper's "types mode".
 +
*The image size, otherwise the Mapper will not work.
  
==Events==
+
Also note that all custom maps will use the new graphics if the standard tiles are replaced. However, the 24 levels which come with the game have built-in graphics, and are not affected by PCX changes.
  
In every World-Folder of the game there is a file called eve.mlt. It contains all the codes of the events of the current world. You can edit it with notepad or some other text editor. To see them you must scroll down. We are not sure in which programming language the game is written, but the events are coded in this way (there is also a smiliar note written in the eve.mlt file itself :
+
=== Sprites ===
 +
All animated sprites of the game (for example, [[Rayman]] himself and enemies) are stored in the .DES files, short for ''dessin'', French for drawing. These files are packed in the .WLD, AllFix and BigRay files, which are stored in the "pcmap" folder. The .DES files contain the image data and animation information.
  
 +
ETA files, short for ''état'', French for state, are stored in the same files. They contain information about the event states, specified by Etat and SubEtat.
  
*œdef,eventname,DES.FILE,some number(?),
+
The file names for the .DES and .ETA files are only included in ''[[Rayman Designer]]'' and its spin-offs. In all previous games they are only refereed to by the index they're loaded into the game.
*ETA.FILE,
 
  
 +
==[[Event (Rayman Designer)|Events]]==
  
*specific event code
+
=== Editing events ===
 +
In every world-folder of the game, there is a file called EVE.MLT. It contains the manifest of the events of the current world and can be modified using a text editor. The manifest is written in an in-house engine command format. The events are structured in this way:
  
  
*33,255,
+
{| width="auto" align="center" style="border-style:dotted;border-width:1mm;border-color:green;text-align:left"
*main_X_pos, main_Y_pos,
+
|œdef,eventID,DES_FILE,z-index,
*etat, sub_etat,
+
FILE.ETA,
*Offset_BX, Offset_BY, Offset_HY,
 
*Follow_enabled, follow_sprite, hitpoints,
 
*obj_type , hit_sprite, group,
 
  
The meanings:
+
eventCommands
  
@def= define; this must come first
+
33,255,
eventname= name of the event, could be everything
 
DES.FILE= Name of the graphic file which should be used for gthe event
 
some number= unsure. It seems to have no effect.
 
ETA.FILE= Name of the ETA file which should be used. It gives the event some behaviours and oders the sprites in some way (we don't know what it stands exactly for)
 
specific event code= not every event has it. It tells the event in which way it should "walk" for example.
 
  
 +
main_X_pos, main_Y_pos,
  
 +
etat, sub_etat,
  
 +
Offset_BX, Offset_BY, Offset_HY,
  
 +
Follow_enabled, follow_sprite, hitpoints,
  
 +
obj_type , hit_sprite, group,
 +
|}
  
 +
'''Caption:'''
  
 +
*œdef = define; this must come first
 +
*eventID = the event ID. This is used to specify the event in the editor as well as to get the localized name.
 +
*DES_FILE = name of the graphic file which should be used for the event (without the extension ".DES")
 +
*z-index = the z-index, specifying the order the sprite should be drawn on screen (a value between 1-7)
 +
*FILE.ETA = name of the state file which should be used
 +
*eventCommands = the non-compiled event commands (these have to use local offsets due to not having been compiled with label offsets yet)
 +
*33,255 = the command termination (33 is invalid command with the argument 0xFF)
 +
*main_X_pos = main x coordinate of the event
 +
*main_Y_pos = main y coordinate of the event
 +
*etat = the primary event state
 +
*sub_etat = the secondary event state
 +
*Offset_BX = is the x coordinate of the point on the sprite on which Rayman can stand (if "Follow_enabled" is 1)
 +
*Offset_BY = is the y1 coordinate of the point on the sprite on which Rayman can stand (if "Follow_enabled" is 1)
 +
*Offset_HY = is the y2 coordinate of the point on the sprite on which Rayman can stand (if "Follow_enabled" is 1)
 +
*Follow_enabled = whether or not Rayman can stand on this event ("follow" its movement), either 0 or 1
 +
*follow_sprite = the sprite index which the player can stand on
 +
*hitpoints = for enemies like [[hunter]]s, how much [[resistance]] the event has. However, for many events this number has a different meaning, such as specifying if the sprite should appear flipped.
 +
*obj_type = this is the event object type. All types are hard-coded in the engine and specifies how the event should be treated.
 +
*hit_sprite = unsure
 +
*group = in which group the event can be found in the Events Editor. For example, the "Enemies" group is group 5.
  
 +
'''Event commands'''
  
==Image gallery==
+
The event commands will repeat themselves when they come to the end.
<gallery perrow="5">
+
 
Image:GiantLavaBall.png|A giant [[lava ball]]
+
*0, x, -> sprite moves right (x = time in milliseconds, max. 254)
Image:BetaClouds.png|[[Cloud]]s with a face
+
*1, x, -> sprite moves left (x = time in milliseconds, max. 254)
Image:SmallLivingstonePlum.png|A [[small livingstone]] on a [[plum]]
+
 
 +
*3, x, -> sprite moves up (x = time in milliseconds, max. 254)
 +
*4, x, -> sprite moves down (x = time in milliseconds, max. 254)
 +
*5, x -> change subetat (sprite coord. b ) to x
 +
*6, x, -> skip all code lines until line x
 +
 
 +
*8, x, -> change etat (sprite coord. a) to x
 +
 
 +
*11, x, -> label x
 +
*12, x, -> goto label x
 +
 
 +
*19, x, -> wait x seconds
 +
*20, t, x, y, -> sprite moves for t milliseconds (max. 254) with velocity given by x and y.
 +
 
 +
A complete list of the event commands can be found here:
 +
* https://github.com/Adsolution/Ray1Map/blob/master/Assets/Scripts/DataTypes/Common/Serializable/Events/EventCommand.cs
 +
 
 +
=== Unused events ===
 +
A bunch of unused events have been discovered. They can be added to the game by adding their code to the EVE.MLT file. A lot of these events are taken from [[Rayman 1|the original game]], such as a fully functioning [[Tarayzan]] and an unstable version of [[Rayman]] riding [[Bzzit]]. A lot of other events are however not used in the original game, although many can still be found in its files.
 +
 
 +
<gallery widths="316px" heights="200px" class="sprite">
 +
GiantLavaBall.png|A giant [[lava ball]], acting as scenery.
 +
BetaClouds.png|[[Cloud]]s with a face (known from the Atari Jaguar version). The ones to the right act like disappearing clouds.
 +
SmallLivingstonePlum.png|A [[small Livingstone]] on a bouncing [[plum]].
 +
Big rock.png|A giant [[rock]].
 +
Bouncing Mr. Sax obstacle.png|A [[wrong note]] from [[Mr Sax]]. Here it can be punched to move like a [[plum]].
 +
Clocks.png|The clocks from the [[continue]] screen, acting as scenery.
 +
Insta-kill events.png|Several red insta-kill events, previously seen in ''[[Rayman Junior]]''.
 +
Road signs.png|A bunch of colored road signs, acting as scenery.
 +
Tarayzan Designer.png|[[Tarayzan]] as a functioning event, except for the text not displaying when he gives [[Rayman]] the [[Magic seed|seed]].
 +
Music sign.png|An [[exit sign]] with a note.
 
</gallery>
 
</gallery>
 +
 +
== Map properties ==
 +
For each created map there's an configuration file, named MAP.INI with the basic map properties. Example:
 +
 +
{| width="auto" align="center" style="border-style:dotted;border-width:1mm;border-color:green;text-align:left"
 +
|[Map]<br />
 +
World=<br />
 +
Title=<br />
 +
Author=<br />
 +
Comment=<br />
 +
 +
[Game]<br />
 +
Level=<br />
 +
 +
[Power]<br />
 +
Hanging=<br />
 +
Fist=<br />
 +
Helico=<br />
 +
SuperHelico=<br />
 +
Run=<br />
 +
Seed=<br />
 +
 +
[LevelBackGround]<br />
 +
Filename=<br />
 +
 +
[CD]<br />
 +
Track=<br />
 +
|}
 +
Most values here can simply be changed using the Mapper program. However, the Mapper program only gives two options for the background and music, while in fact there are usually several ones which can be used. Setting the track to 3 will play the [[Bonus level (Rayman 1)|bonus level]] music.
 +
 +
 +
==The Extended ''Rayman Designer'' Editor==
 +
 +
This is an unofficial tool that makes ''[[Rayman Designer]]'' modding much easier. It also comes with a large content package which includes a great deal of content from ''[[Rayman 1|Rayman]]'' and ''[[Rayman Junior]]'' that was not available in ''Rayman Designer'', and also some new unofficial content.
 +
 +
*Download: http://www.rayman-fanpage.de/character/raymans_world_designer/RDeditor.exe
 +
 +
 +
==Trivia==
 +
Through some editing of the game, the following things have been discovered:
 +
 +
*If events are placed in groups beyond group 9, it is found that these groups have the same names as the game's levels. This reveals the names of six additional levels. It seems that they have been cut from the final game (or never been finished): "The Gates of the Jungle" ([[The Dream Forest]]), "Diabolical Tunes" ([[Band Land]]), "The Fire Avalanche" ([[The Blue Mountains]]), "Miniature Madness" ([[Picture City]]), "Cloud of Doom" ([[The Caves of Skops]]) and "Dessert Anyone?" ([[Candy Château]]).
 +
 +
*A sprite from [[Rayman 2 (2D prototype)|the 2D version of ''Rayman 2'']] could be found in the sprite files (a small platform that looks like a teleporter).
 +
 +
*The spritefiles also contain a considerable amount of content from the ''[[Rayman Junior]]'' (such as the world map icons) and some never-before-seen sprites.
 +
 +
[[Category:Other]]

Latest revision as of 10:57, 31 March 2020

Rayman Designer hacking is the process of modifying the program files of the game in order to change the appearance and the behavior of in-game events and sceneries.

Graphics

Tiles

In every world-folder (for example "jungle" or "music") of the game, there is a .PCX graphic file. It contains all the graphic tiles which are used by the Mapper and the levels created from it. Tiles can be changed and added, but the following should not be changed:

  • The color palette used in the file. This palette is additionally used for the background and event sprites, meaning they will change their colors too.
  • The first tile on the top-left corner, which is used to set the transparent color in the file.
  • The lowest row of tiles, which are reserved for the Mapper's "types mode".
  • The image size, otherwise the Mapper will not work.

Also note that all custom maps will use the new graphics if the standard tiles are replaced. However, the 24 levels which come with the game have built-in graphics, and are not affected by PCX changes.

Sprites

All animated sprites of the game (for example, Rayman himself and enemies) are stored in the .DES files, short for dessin, French for drawing. These files are packed in the .WLD, AllFix and BigRay files, which are stored in the "pcmap" folder. The .DES files contain the image data and animation information.

ETA files, short for état, French for state, are stored in the same files. They contain information about the event states, specified by Etat and SubEtat.

The file names for the .DES and .ETA files are only included in Rayman Designer and its spin-offs. In all previous games they are only refereed to by the index they're loaded into the game.

Events

Editing events

In every world-folder of the game, there is a file called EVE.MLT. It contains the manifest of the events of the current world and can be modified using a text editor. The manifest is written in an in-house engine command format. The events are structured in this way:


œdef,eventID,DES_FILE,z-index,

FILE.ETA,

eventCommands

33,255,

main_X_pos, main_Y_pos,

etat, sub_etat,

Offset_BX, Offset_BY, Offset_HY,

Follow_enabled, follow_sprite, hitpoints,

obj_type , hit_sprite, group,

Caption:

  • œdef = define; this must come first
  • eventID = the event ID. This is used to specify the event in the editor as well as to get the localized name.
  • DES_FILE = name of the graphic file which should be used for the event (without the extension ".DES")
  • z-index = the z-index, specifying the order the sprite should be drawn on screen (a value between 1-7)
  • FILE.ETA = name of the state file which should be used
  • eventCommands = the non-compiled event commands (these have to use local offsets due to not having been compiled with label offsets yet)
  • 33,255 = the command termination (33 is invalid command with the argument 0xFF)
  • main_X_pos = main x coordinate of the event
  • main_Y_pos = main y coordinate of the event
  • etat = the primary event state
  • sub_etat = the secondary event state
  • Offset_BX = is the x coordinate of the point on the sprite on which Rayman can stand (if "Follow_enabled" is 1)
  • Offset_BY = is the y1 coordinate of the point on the sprite on which Rayman can stand (if "Follow_enabled" is 1)
  • Offset_HY = is the y2 coordinate of the point on the sprite on which Rayman can stand (if "Follow_enabled" is 1)
  • Follow_enabled = whether or not Rayman can stand on this event ("follow" its movement), either 0 or 1
  • follow_sprite = the sprite index which the player can stand on
  • hitpoints = for enemies like hunters, how much resistance the event has. However, for many events this number has a different meaning, such as specifying if the sprite should appear flipped.
  • obj_type = this is the event object type. All types are hard-coded in the engine and specifies how the event should be treated.
  • hit_sprite = unsure
  • group = in which group the event can be found in the Events Editor. For example, the "Enemies" group is group 5.

Event commands

The event commands will repeat themselves when they come to the end.

  • 0, x, -> sprite moves right (x = time in milliseconds, max. 254)
  • 1, x, -> sprite moves left (x = time in milliseconds, max. 254)
  • 3, x, -> sprite moves up (x = time in milliseconds, max. 254)
  • 4, x, -> sprite moves down (x = time in milliseconds, max. 254)
  • 5, x -> change subetat (sprite coord. b ) to x
  • 6, x, -> skip all code lines until line x
  • 8, x, -> change etat (sprite coord. a) to x
  • 11, x, -> label x
  • 12, x, -> goto label x
  • 19, x, -> wait x seconds
  • 20, t, x, y, -> sprite moves for t milliseconds (max. 254) with velocity given by x and y.

A complete list of the event commands can be found here:

Unused events

A bunch of unused events have been discovered. They can be added to the game by adding their code to the EVE.MLT file. A lot of these events are taken from the original game, such as a fully functioning Tarayzan and an unstable version of Rayman riding Bzzit. A lot of other events are however not used in the original game, although many can still be found in its files.

Map properties

For each created map there's an configuration file, named MAP.INI with the basic map properties. Example:

[Map]

World=
Title=
Author=
Comment=

[Game]
Level=

[Power]
Hanging=
Fist=
Helico=
SuperHelico=
Run=
Seed=

[LevelBackGround]
Filename=

[CD]
Track=

Most values here can simply be changed using the Mapper program. However, the Mapper program only gives two options for the background and music, while in fact there are usually several ones which can be used. Setting the track to 3 will play the bonus level music.


The Extended Rayman Designer Editor

This is an unofficial tool that makes Rayman Designer modding much easier. It also comes with a large content package which includes a great deal of content from Rayman and Rayman Junior that was not available in Rayman Designer, and also some new unofficial content.


Trivia

Through some editing of the game, the following things have been discovered:

  • If events are placed in groups beyond group 9, it is found that these groups have the same names as the game's levels. This reveals the names of six additional levels. It seems that they have been cut from the final game (or never been finished): "The Gates of the Jungle" (The Dream Forest), "Diabolical Tunes" (Band Land), "The Fire Avalanche" (The Blue Mountains), "Miniature Madness" (Picture City), "Cloud of Doom" (The Caves of Skops) and "Dessert Anyone?" (Candy Château).
  • The spritefiles also contain a considerable amount of content from the Rayman Junior (such as the world map icons) and some never-before-seen sprites.