Vous êtes sur la page 1sur 10

Modding a game is fun and it can also teach you some important skills.

In this thread I'd like to


talk about modding Zuma Deluxe.

From this post, you can find out how to:

* Edit graphics of Zuma Deluxe

* Add extra covers to levels

* Change level specifications

* Create levels with three skulls

* Change ingame music

* Alter coin spwaning spots

* Determine player frog position on the screen

* Change level order in Adventure Mode and Gauntlet Mode

* Add more levels to choose in the Gauntlet mode

In the very beginning, you should make a backup copy of the whole Zuma Deluxe folder -
therefore if something goes wrong, you can bring back the original files.

Let's start with graphics. Images for levels are kept within the "levels" subfolder, whether all
other graphics are kept within the "images" subfolder. While editing them, you must pay lots of
attention to their formats (Zuma uses gif's, jpg's and png's). Also, note that almost every image
has its black and white equivalent - for example "SMALLFROGonpad.gif" and
"_SMALLFROGonpad.gif" (note the "_" in the beginning). The image without the "_" sign in the
beginning of its filename is the actual graphic of a given object. The image with the "_" sign in
the beginning of its filename defines which parts of the graphic are transparent. White - this is
visible in game. Black - this is invisible in the game. Gray - this is partially transparent in the
game. When editing graphics, you must remember to edit BOTH images, otherwise your graphics
won't look correctly ingame.

When editing graphics for levels, you can let your imagination run. However, there are certain
useful hints to know when doing so. For example, you can add covers to your levels or make
levels with many curves of balls. To do so, open the "levels.xml" file in the "levels" subfolder"
with a notepad. For every level, you will see similar description, as below:

<Graphics id="underover" curve="underover" image="underover" dispname="Mud Slide"


gx="334" gy="247">

<Cutout image="left" pri="1" x="0" y="118" />

<Cutout image="right" pri="1" x="311" y="0" />

<TreasurePoint x="76" y="431" dist1="32" />

<TreasurePoint x="590" y="437" dist1="50" />

<TreasurePoint x="584" y="100" dist1="60" />

</Graphics>

Let's discuss each part of this piece of code, from the very beginning:

Graphics id="underover"

The above indicates which level it refers to. Note that these names are different than those
displayed in-game, for example "underover" stands for the level "Mud Slide". You can find all
level names in the "levels" folder.

curve="underover"

The above determines the curves used in the level. Curve is the whole track that balls will take
and it always ends with a skull. You unfortunately can't edit the curves themselves. Sometimes
the level has two curves and this part of the code looks like this:

curve="blackswirley-1" curve2="blackswirley-2"

You can add up to three curves to a level. For example:

curve="space" curve2="spacee" curve3="spaceee"

The curve files must be all within level's folder. You may copy curve files from other levels to
another level and then change this part of the code, so that there are names of those curves
within quotation marks.
You level will then contain three curves. Cool, huh?

Let's look at the next part of the code:

image="underover"

This simply determines the image used as level's background. The image must be within the
given level's folder, obviously.

dispname="Mud Slide"

The above tells how the level will be named in-game.

gx="334" gy="247"

The above determines where the player frog will be positioned. The bigger the number in "gx"
the more the player frog will be positioned to the right. The bigger the number in "gy" the more
the player frog will be positioned to the lower part of the screen. The numbers determine the
exact pixel of the postion of frog's center. Maximum value for gx="640" and for "gy=480".

<Cutout image="left" pri="1" x="0" y="118" />

The above is optional and will only appear for level which have covers. You can always add a line
of code like this to any level.

Cutout image="left"

This determines the name of an image used as a cover. The image has to be in gif format and it
has to be in the shades of gray. And it's filename HAS to start with the "_" symbol which is to be
OMITTED in the code. The above example refers to an image called "_left.gif" even though in the
code it only says "left".

pri="1"

The above value can be either "0", "1" or "2" and determines a "layer", that is, which balls will go
under the cover and which will go above it. "0" means all balls go above the cover (therefore the
cover is technically non-existant, except that it can hide the skull). "1" means that balls in the
first half of the curve will go under the cover and balls in the second half of the curve will go
above it (this is clearly seen in a level like "Mud Slide"). "2" means all balls go under the cover.
x="0" y="118"

This determines the position of the cover image. The "x" determines the position of the
uppermost and leftmost pixel of your cover image on the horizontal axis. "y" does the same for
vertical axis. To avoid tedious search for the correct pixel, you can make you cover image full-
sized (640x480) and leave both those values at "0".

Now for the last part: location of coins.

<TreasurePoint x="76" y="431" dist1="32" />

The "x" determines the position of the coin on the horizontal axis and "y" determines the vertical
axis.

dist1="32" determines the percentage of curve that has to be full of balls to allow a coin appear
in the given spot. In the above example, the coin will only appear when the balls have reached
32% of the whole track. This is to avoid coins from spawning in too easy locations.

EDIT: Additional levels

Adding an extra level to the game is not difficult. In the levels.xml file you need to copy the
whole information of any level, for instance:

<Graphics id="underover" curve="underover" image="underover" dispname="Mud Slide"


gx="334" gy="247">

<Cutout image="left" pri="1" x="0" y="118" />

<Cutout image="right" pri="1" x="311" y="0" />

<TreasurePoint x="76" y="431" dist1="32" />

<TreasurePoint x="590" y="437" dist1="50" />

<TreasurePoint x="584" y="100" dist1="60" />

</Graphics>

Now, change Graphics id="underover" to anything you want, for example: Gaphics id="mylevel"

In the "levels" folder create a new subfolder with the selected name.
Your level may consist of tracks used in other levels (creating own tracks is not possible yet). You
can edit its code just as normal.

However, your level won't appear in the Gauntlet Mode until it has been unlocked via Adventure
Mode. Therefore, you need to scroll down the levels.xml file till you see: <StageProgression

Now, change:

stage1 = "spiral,claw,riverbed,targetglyph,blackswirley"

to:

stage1 = "mylevel,claw,riverbed,targetglyph,blackswirley"

Save the file and run the game. Start the first temple of adventure mode and you should see
your own level! It will be listed as the last level in Gauntlet Mode as well.

Now that you know how to edit properties of individual levels, we will look at the whole
sequence of levels. Scroll the "levels.xml" file till you see:

<LevelProgression

id="dual"

settings="dual1,dual2,dual3,dual4,dual5,dual6,dual7,dual8,dual9,dual10,dual11,dual12,dual13,
dual14,dual15,dual16,dual17,dual18,dual19,dual20,dual21,dual22,dual23,dual24"

difficulty="4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27"

/>

<LevelProgression

id="standard"
settings="level1,level2,level3,level4,level5,level6,level7,level8,level9,level10,level11,level12,level
13,level14,level15,level16,level17,level18,level19,level20,level21,level22,level23,level24,level25,
level26,level27,level28,level29,level30"

difficulty="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30"

/>

<Level graphics="spiral" progression="standard" />

<Level graphics="riverbed" progression="standard" />

<Level graphics="targetglyph" progression="standard" />

<Level graphics="tunnellevel" progression="standard" />

<Level graphics="groovefest" progression="standard" />

<Level graphics="blackswirley" progression="dual" />

<Level graphics="snakepit" progression="dual" />

<Level graphics="serpents" progression="dual" />

<Level graphics="longrange" progression="standard" />

<Level graphics="tiltspiral" progression="standard" />

<Level graphics="underover" progression="standard" />

<Level graphics="claw" progression="standard" />

<Level graphics="triangle" progression="standard" />

<Level graphics="inversespiral" progression="standard" />

<Level graphics="loopy"progression="standard" />

<Level graphics="turnaround" progression="standard" />

<Level graphics="squaresville" progression="standard" />

<Level graphics="warshak" progression="standard" />

<Level graphics="overunder" progression="standard" />


<Level graphics="spaceinvaders" progression="standard" />

<Level graphics="coaster" progression="standard" />

<Level graphics="space"progression="standard" />

<!--

L1 = spiral,claw,riverbed,targetglyph,blackswirley,turnaround,longrange

L2 = tiltspiral,underover,warshak,loopy,snakepit,groovefest,spaceinvaders

L3 = triangle,coaster,squaresville,tunnellevel,serpents,overunder,inversespiral

-->

<StageProgression

stage1 = "spiral,claw,riverbed,targetglyph,blackswirley"

diffi1 = "lvl11,lvl12,lvl13,lvl14,lvl15"

stage2 = "tiltspiral,underover,warshak,loopy,snakepit"

diffi2 = "lvl21,lvl22,lvl23,lvl24,lvl25"

stage3 = "triangle,coaster,squaresville,tunnellevel,serpents"

diffi3 = "lvl31,lvl32,lvl33,lvl34,lvl35"

stage4 = "spiral,claw,riverbed,targetglyph,blackswirley,turnaround"

diffi4 = "lvl41,lvl42,lvl43,lvl44,lvl45,lvl46"

stage5 = "tiltspiral,underover,warshak,loopy,snakepit,groovefest"

diffi5 = "lvl51,lvl52,lvl53,lvl54,lvl55,lvl56"

stage6 = "triangle,coaster,squaresville,tunnellevel,serpents,overunder"
diffi6 = "lvl61,lvl62,lvl63,lvl64,lvl65,lvl66"

stage7 = "spiral,claw,riverbed,targetglyph,blackswirley,turnaround,longrange"

diffi7 = "lvl71,lvl72,lvl73,lvl74,lvl75,lvl76,lvl77"

stage8 = "tiltspiral,underover,warshak,loopy,snakepit,groovefest,spaceinvaders"

diffi8 = "lvl81,lvl82,lvl83,lvl84,lvl85,lvl86,lvl87"

stage9 = "triangle,coaster,squaresville,tunnellevel,serpents,overunder,inversespiral"

diffi9 = "lvl91,lvl92,lvl93,lvl94,lvl95,lvl96,lvl97"

stage10 = "spiral,claw,riverbed,targetglyph,blackswirley,turnaround,longrange"

diffi10 = "lvl101,lvl102,lvl103,lvl104,lvl105,lvl106,lvl107"

stage11 = "tiltspiral,underover,warshak,loopy,snakepit,groovefest,spaceinvaders"

diffi11 = "lvl111,lvl112,lvl113,lvl114,lvl115,lvl116,lvl117"

stage12 = "triangle,coaster,squaresville,tunnellevel,serpents,overunder,inversespiral"

diffi12 = "lvl121,lvl122,lvl123,lvl124,lvl125,lvl126,lvl127"

stage13 = "space"

diffi13 = "lvl131"

/>

<!-- Easy Stage Progression -->

<!--

<StageProgression

stage1 = "spiral,claw,riverbed,targetglyph,blackswirley"

diffi1 = "1,1,1,1,1"
stage2 = "tiltspiral,underover,warshak,loopy,snakepit"

diffi2 = "2,2,2,2,3"

stage3 = "triangle,coaster,squaresville,tunnellevel,serpents"

diffi3 = "3,3,3,3,4"

stage4 = "spiral,claw,riverbed,targetglyph,blackswirley,turnaround"

diffi4 = "2,2,2,2,2,3"

stage5 = "tiltspiral,underover,warshak,loopy,snakepit,groovefest"

diffi5 = "3,3,3,3,3,4"

stage6 = "triangle,coaster,squaresville,tunnellevel,serpents,overunder"

diffi6 = "4,4,4,4,4,5"

stage7 = "spiral,claw,riverbed,targetglyph,blackswirley,turnaround,longrange"

diffi7 = "3,3,3,3,3,3,4"

stage8 = "tiltspiral,underover,warshak,loopy,snakepit,groovefest,spaceinvaders"

diffi8 = "4,4,4,4,4,4,5"

stage9 = "triangle,coaster,squaresville,tunnellevel,serpents,overunder,inversespiral"

diffi9 = "5,5,5,5,5,5,6"

/>

In here you are able to change the level progression to your own fancy. You can also add and
remove levels from stages. You can change their difficulty, points required to beat the level,
speed of balls, change between dual or standard progression (triple progression is not allowed;
for your triple levels just use dual progression) and play with many more specifications of the
levels. Most of them are self-explanatory, just play with different values to see the outcome. Just
make sure to create a backup copy the "levels.xml" file, so that if something goes wrong, you will
be able to reverse it.
Let's move on to the sound part. Firstly - music.

The most important thing to remember is that Zuma Deluxe uses mo3 file format for storing
music data. Which is quite unfortunate, as mo3 is not a common format and may require some
explanation. If you're struggling to use your own songs in Zuma Deluxe, I made an instruction on
this topic: spherematchers.proboards.com/thread/61/change-music-zuma-deluxe

Now for the soundeffects. In the game folder, you may find two subfolder with soundeffects:
"cached" and "sounds". You should ONLY replace soundeffects within the "sounds" folder - leave
the "cached" soundeffects intact! Then, you can replace existing ones with your own. Sometimes
conversion to a supported format may be necessary - do that if your soundeffect is not working
or if the game crashes upon you have changed a sound effect.

I think that's all for now. There's much more you can do, but I'm sure you'll find it out yourself ;)

Please make comments and if you find something unclear, ask questions below - I'll gladly
respond to them all. :)

Also, if you're looking for living examples of modded Zuma Deluxe versions, check out this
thread: spherematchers.proboards.com/thread/53/zuma-mods

You may also give my own mod a try - look it up here:


spherematchers.proboards.com/thread/38/zumaluxor-mod

Read more: http://spherematchers.proboards.com/thread/62/mod-zuma-deluxe?


page=2#ixzz4b4Tjlymu

Vous aimerez peut-être aussi