Nifflas' Support Forum

Level Editing Support => Saira Level Editing Support => Topic started by: LightningEagle on December 13, 2009, 01:14:34

Title: Gathering Knowledge
Post by: LightningEagle on December 13, 2009, 01:14:34
As Level editing in Saira appears to be just about as difficult as Nifflas told us I suppose we might as well begin to gather the information we learn about editing in order to establish a kind of knowledge base.

I guess...

Anyway, please add what you learn here.

This is assumptions based on the structure of the episode included with the game:

Episode Folder structuring
Spoiler: (click to show/hide)

Galaxy
Spoiler: (click to show/hide)

That's it for the Galaxy. And we haven't even come to the editor yet. Come on people, help me expand this.  :)

I might add to this tomorrow, after I've worked on my school assignment which I ditched today in order to play Saira  :).
Title: Re: Gathering Knowledge
Post by: Exp HP on December 13, 2009, 01:30:23
ARGH, you just posted all the stuff I was working on.  I too was looking at stuff in the root level of the episode folder (especially Credits.ini and Galaxy.ini).  Though I got beaten to the chase, I might as well share what work I did finish compiling.  It's not formatted, but I don't really care now that you already wrote about it.

This is my notes on Credits.ini.  They're pretty much complete.


CREDITS.INI NOTES

This file is pretty easy to figure out just by looking at it.  This file
controls the credits sequence, which is a series of scrolling lines.



[General]


End Delay=[[Integer]]
 Default: About 50
This corresponds to the amount of time the game will wait after the last
line of credits scrolls off the screen before returning to the main menu.
The number does not seem to be a number of milliseconds to wait, but rather
a number of additional rows of pixels to scroll.
If you set this to 0, the credits will not play.

Background=[[PNG FILE]]
 Default: No image
Set an image to use as a background for the credits.
Recommended image size is 1024x600 px.
If your image is not 1024x600, it will be stretched to fit.

Music=[[OGG FILE]]
 Default: No sound
A sound file to play during the credits.  It will play once, without looping.

Music Volume=[[INTEGER]]
 Default: 100
This doesn't seem to be at any particular scale.  All you can do is experiment
with this number until you get it right.
Make sure your actual sound file is pretty loud, because it will get a lot
quieter in-game. 100 seems to be the max value for Volume, and even that is
much quieter than the sound file's actual volume.




[Credit #]


Delay=[[Integer]]
 Default: 50
Increasing this number increases the length of whitespace above this credit
page.  Any zero or positive integer is accepted, but there is something to
note:  Unless the previous credit doesn't have any Names, there will always
be at least one full line of blank space, meaning values below the
height of one line of text (12?) will automatically be increased.

Title=[[String]]
 Default: (empty string)
The bold line of text at the top of a page of credits.

Name #=[[String]]
 Default: (STOP)
Standard-face lines of text that appear in the order defined under the title.
Start with Name 0 and then do Name 1, Name 2, etc.
If you skip a number, the numbers after it will not show at all.
(Meaning, if you define lines 0, 2, 1, 3, 6, and 7, lines 6 and 7 won't show).




There is something interesting to note about the behavior of Delay when
no Names have been defined in the previous credit:  You can set a Delay under
12 without the game automatically increasing it to 12.
The reason is presumeably to give you a method to have multiple bold lines
in a row.  See example.

Spoiler: Example (click to show/hide)
[/pre]

My work on Galaxy.ini (which is incomplete) is not worth sharing in it's current form, but I'll summarize what's in my notes that you don't have:


Music: This does loop (unlike music in the credits)

Volume:  Like for the Credits, this is a number 0 to 100 (with numbers above 100 making no difference)
  Unlike in the credits, music at volume 100 is a bit louder than the original file.

Background:  Like with credits, size is 1024x600, and it will be stretched to fit if it's any other size.


Also, here's a test that I did not yet add to my notes because I was in the middle of it when you posted this thread:
What I did:  Make a copy of Game.ccn with the name Gjkl.ccn, then add the line "Gjkl Label = Gjkl" to the bottom of Galaxy.ini.
What happened: Gjkl did not appear in the list of apps in the lower right corner of the Starmap.
What I think it means: You'll have to edit the starmap subapp in MMF2 to add new subapps to the list in the lower right of the starmap.


My notes on the Galaxy images is not worth sharing since it's pretty much the same conclusion you came to.

And last but not least, .ccn files are Macromedia Fusion 2 Subapplications.  If you want to change the puzzles or any of that stuff, you're going to need to have MMF2.  I don't.
Title: Re: Gathering Knowledge
Post by: LightningEagle on December 13, 2009, 01:47:26
This is great. I should mention that I haven't tested anything. I just assumed.  :oops:
Title: Re: Gathering Knowledge
Post by: Exp HP on December 13, 2009, 02:17:15
That makes me feel a bit better, because when I came here and saw this thread, I was thinking to myself "am I really that slow?"  Now that I'm looking it over, I see that our findings do complement each other rather than repeat or cancel each other out.  So I don't feel as upset now and I'm motivated to keep on "gathering knowledge". :)


Right now, I'm looking at the editor.  I'm not really looking at any specific part of it.  I'm just finding out how the editor works and how it can be used to work with layers, sprites, and objects in a regular, non-cutscene planet.  I'll tell what I find.
Title: Re: Gathering Knowledge
Post by: Exp HP on December 13, 2009, 03:01:55
Alright.  Here's some stuff about what you can edit with the Editor.  I didn't do a lot of experimenting with this.


There are three types of things you can edit in a screen in the Editor: Tiles, Objects, and Sprites.

Tiles should be a familiar concept.  Saira only has one layer of Tiles, and it is very similar in comparison to layer 3 in Knytt Stories:  It is a grid of tiles that are solid to the player.  I have not yet tested this, but I assume they have automatically-generated collision maps just like in KS.
All tiles are solid in this game.  No ifs, ands, buts, or BG tiles.

Objects are decorations.  They are not restricted to a grid, but rather they can be moved,* rotated and scaled with a high degree of precision.  In Object mode of the editor, all the switches and buttons and doohickeys at the bottom control the currently selected object on the screen.  There are 11 layers to put objects on.  The "layer" you put something on affects its Z display order and scrolling speed.
Looking through Objects.ini, I see something special called "controllers."  I want to look into these with more depth in a future update, but it seems that these apply graphical effects on the objects, such as fading transparency, smoke generation, or glow.

Sprites are special objects that affect the player.  Some are items (like Tape).  Some are enemies.  Some are entry points to a level.  Some are environmental things that affect the player, like water.  And some are invisible things you can interact with using "D" (those sprites are usually placed atop objects to give the illusion of interacting with them; for instance, puzzle sprites are usually put on top of computer objects).
Sprites are not too complicated themselves.  Their behaviors are defined by Sprites.ini, which is not too difficult to make sense of.... but that's because the more complicated ones implicitly call subapps, meaning you need MMF2 to change them.


* This is not obvious, but the way you create an object is by holding Control and clicking - this duplicates the selected item.  I found this by chance.
Use this method to move objects; hold control as you click the desired location to duplicate it, then delete the original.  If it's not quite in the spot you want, you can fine-tune its location to a limited extent by moving the target in the Offset box (the box in the lower left).
EDIT: Now that I've been messing around with controllers some, let me recommend that you not use the Offset box to fix the object's location if the object rotates, because by changing the offset you change the center point for rotation.


Nifflas wasn't kidding about cutscenes, by the way.  They really are just like regular planets.  I have not tested this fact yet, but after looking at how Sprites.ini initiates cutscenes (which it does by teleporting the player to a cutscene planet), I don't think it's required that cutscene planets be in a star called "_cutscenes".  I think they could be put in any star, just like regular planets.



I think I'm going to look at those "controller" things I noticed in Objects.ini next, because they sparked my interest.  I'm going to find out what types of controllers exist, what they do, how they're used, and what parameters they have. That will involve a lot of experiments and tests, though, so it will take a while...


EDIT: Small status update: Controllers. Are. Not. Fun.
But I'm making some progress.
EDIT: I'm done with my research, now I'm just writing it up.
Title: Re: Gathering Knowledge
Post by: AA on December 13, 2009, 09:18:12
Tiles should be a familiar concept.  Saira only has one layer of Tiles, and it is very similar in comparison to layer 3 in Knytt Stories:  It is a grid of tiles that are solid to the player.  I have not yet tested this, but I assume they have automatically-generated collision maps just like in KS.

I haven't tried the editor yet, but every tileset seems to have an associated mask file: is it generated automatically by the editor?
Title: Re: Gathering Knowledge
Post by: LightningEagle on December 13, 2009, 10:04:31
I haven't tried the editor yet, but every tileset seems to have an associated mask file: is it generated automatically by the editor?

I don't think so. I assume they are made manually both. The mask file is just the collision layer of the actual tileset.

If it works in that way, you wouldn't have to think about which tiles should be collision and which shouldn't. That setting would be defined by whether or not the tile have collision on the mask. Also, this will allow us to make rugged edges on the tiles while keeping their collision a smooth transition.

Additionally, if the mask was generated automatically, why would it be in the first place? It would just be the original tileset except it's in 2 colors. An automatic generation wouldn't be able to discriminate between what should be smooth and what should follow the original edges of the tileset.
In that case we would've been just as well off with just the actual tileset.
Title: Re: Gathering Knowledge
Post by: SiamJai on December 13, 2009, 11:05:08
I have not yet tested this, but I assume they have automatically-generated collision maps just like in KS.
When you change the terrain using the tileset in the editor, the collision map for that screen is automatically updated.

I tested this with the default Austra/Lomond level. When I added an extra hump to the first screen on that level and played the level, Saira was able to climb and stand on the extra terrain. Looking at the collision map from within the game also confirms this (see attachment).

I tend to agree with LightningEagle that the collision mask itself is made manually rather than automatically from the tileset. I also agree that this is a handy way to add smooth contact to rough-looking graphics. I guess there is only one way to find out for sure... ;)

* This is not obvious, but the way you create an object is by holding Control and clicking - this duplicates the selected item.  I found this by chance.
Use this method to move objects; hold control as you click the desired location to duplicate it, then delete the original. 


It's easier to move stuff by holding down the Shift button instead... ;)
Title: Re: Gathering Knowledge
Post by: AA on December 13, 2009, 11:07:01
Additionally, if the mask was generated automatically, why would it be in the first place?

Sorry, I meant it like there could be some function in the editor to automatically generate a tileset mask from a tileset's transparency mask, so that you could edit it afterwards to suit your needs (instead of starting from scratch). But I guess that, on second thought, any decent drawing application could do that already.
Title: Re: Gathering Knowledge
Post by: LightningEagle on December 13, 2009, 11:14:13
But I guess that, on second thought, any decent drawing application could do that already.

I guess the easiest is to create the tileset, make a copy, color the solid stuff in the copy and smooth the edges etc. etc.
This should be doable in any application, even mspaint. But I guess one with layers would be the best choice as you could place the original in the background as a reference.  :)
Title: Re: Gathering Knowledge
Post by: LightningEagle on December 13, 2009, 11:25:30
Sorry about double-post but this is a different subject, yet still related to the overall topic

As in Knytt Stories levels/episodes appear to be ordered alphabetically by the name of the folders. First I though, maybe the numbers, but I think they're meant to be specific to each level creator.

Meaning:
When creating a new level the folder you create should be named:
*Author name* - *episode number* - *episode name*

For instance:
Nifflas - 000 - Teleporters
LightningEagle - 000 - Playground
LightningEagle - 001 - Saira meets Winnie the Pooh
Lightni...

you get it...  ;)

Another approach could be to have the episodes related to each other have the same number. Actually I guess it's pretty open.
Say I did several episodes following each other, I don't think anything bad would happen if I did this:

Nifflas - 000 - Teleporters
LightningEagle - 000 - 00 - Playground
LightningEagle - 000 - 01 - Playground
LightningEagle - 000 - 02 - Playground
LightningEagle - 001 - Saira meets Winnie the Pooh
Lightni...

in that way the episodes related will be sorted next to each other.

Not possible.

Tested and found that:

Episodes are recognized by the sequence:
*something* - *something* - *something*

meaning 2 dashes and 3 areas in which you can write.
however, it appears that you are not limited as to what you can write in any of the areas.
Title: Re: Gathering Knowledge
Post by: LightningEagle on December 13, 2009, 15:57:43
Triple post, bear with me. I'll add this to my first post, when I find this piece satisfying.

Star systems/Solar systems
We've now browsed into one of the star-system-folders found in the root/galaxy directory of the episode in mind.

Files
Here we have several files once again. Let's split them into categories:


Folders
As mentioned above, folders are planets. More accurately they appear to be accessible planets.
This conclusion is derived from the fact that the planet Gass Lividus, which is the inaccessible planet in the Polvere star system, doesn't have any special parameters in the Star.ini file. Only parameter difference is "Note=You cannot land here!" which would be unlikely to do the trick.
Gass Lividus, however, doesn't have a folder unlike any other planet (or moon) in the games first released episode.

The folder of a planet (or moon) should have the exact same name as in the Star.ini file.

Star.ini
The Star.ini file is structured in the following way
Code: [Select]
[Location]
X Position=
Y Position=
[Orbit #]
Planet=
Note=
X Center=
Y Center=
Diameter=
Orbit Position=
Items=
Quote
Location
The location of the star in the galaxy overview map, I presume. This position is defined by x and y coordinates.
Quote
Orbit #
Orbit indicates planets in the star system. By giving # a number starting from 0 you can add several planets.
Quote
Planet=
This parameter sets the planets name. I suspect that this name is the one used to address all related files. That means the .png containing the visual of the planet in the star system overview and the possible folder containing the planets map-structure.
Quote
Note=
Based on the way it worked with Gass Lividus I assume that this parameter is a note which is shown when hovering the planet.
Quote
X Center= / Y Center=
The coordinates of the orbital center.
For planets this should be the same for all. They orbit around the same star after all.
For moons these coordinates are used to place the orbit around a planet.
Quote
Diameter=
Values range: 100-500
This is the orbital rings diameter. Values dividable by 100 have circles associated. My guess is that you can make your can maybe make you own circles and add you you want something in between. But I guess it isn't necessary.
Quote
Orbit Position=
Values range: 0-360.
The position of the planet in the orbit ring.
0 is 3 o'clock position. 90: 12 o'clock. 180: 9 o'clock. 270: 6 o'clock
Quote
Items=
The number of items to be found on the planet/moon/space station/whatever.
Note that the mechanism counting the things you've gathered on a planet doesn't care about this number and works somewhere else.

(http://img.photobucket.com/albums/v329/LightningEagle/Saira/planetarypositioning.png)

Parameters Note and Items can be left out if they're not used for anything.

Images

Quote
System Layer #.png
We have 3 layers, which when panning around the star system overview. move independently creating depth.
Quote
Layer 1:
The Background.
Quote
Layer 2:
A layer of stars which will appear closer as they move more when panning.
Quote
Layer 3:
The star of the star system is placed here in most cases.
Title: Re: Gathering Knowledge
Post by: AA on December 13, 2009, 16:15:16
  • Star Avatar.png, I don't know what the function of this picture is yet, as I don't remember it appearing in the game at any time.
  • Star Info.txt, This file appear to be a description of the star system and it's planets, which I don't remember seeing in the game either.

The Star Avatar.png and Star Info.txt files are both displayed in the Radio screen.
Title: Re: Gathering Knowledge
Post by: LightningEagle on December 13, 2009, 16:18:56
Ah, thank you  :)
Title: Re: Gathering Knowledge
Post by: Exp HP on December 13, 2009, 17:48:56
I have not yet tested this, but I assume they have automatically-generated collision maps just like in KS.
When you change the terrain using the tileset in the editor, the collision map for that screen is automatically updated.

[. . .]

I tend to agree with LightningEagle that the collision mask itself is made manually rather than automatically from the tileset.
I meant collision mask. XD  I'm sorry if anybody took my sentence to literally mean the screen's collision map.  :oops:
So I guess I was wrong about that, and that there is an external mask image file for each tileset.

I'm almost done with Controllers.  My work has had a lot of testing done, so I'm writing it in an authoritative voice (like a guide).
Title: Re: Gathering Knowledge
Post by: Nifflas on December 13, 2009, 18:22:26
I'll explain the .ccn files for you. Those are compiled Multimedia Fusion 2 sub-apps. The source files to them are the .mfa files included in the editor, you can only modify those files with Multimedia Fusion 2. You can do levels that are pretty much awesome even without them, but to modify puzzle devices, the PDA, or the functionality of the starmap, radio, or pinball game you need Multimedia Fusion 2.
Title: Re: Gathering Knowledge
Post by: LightningEagle on December 13, 2009, 18:38:46
I'll explain the .ccn files for you. Those are compiled Multimedia Fusion 2 sub-apps. The source files to them are the .mfa files included in the editor, you can only modify those files with Multimedia Fusion 2. You can do levels that are pretty much awesome even without them, but to modify puzzle devices, the PDA, or the functionality of the starmap, radio, or pinball game you need Multimedia Fusion 2.

Then a question regarding those .ccn files. Can I by using them integrate the already created puzzles?

My guess is that the puzzler.ccn file in a star system folder contains the puzzles for that star system, correct?
How are the objects on a planet bound to the puzzles within those files?

For instance on Lomond, the first puzzle, does "[Password Device]" (without quotation) from the object.ini file automatically specify the puzzle to be loaded when activated? Or...? Rephrasing.. just a sec

Let's take that again, on Lomond, the first puzzle, it refers to the Sprites.ini file entry:
[Learn to puzzle]
Type=Trigger Point
Image=..\..\..\Data\Sprites\Activate Button.png
Tile Width=24
Tile Height=24
Area Width=24
Area Height=24
Y Offset=48
Puzzle=1

I get that Puzzle=1 most likely tells the program that this is a puzzle. And Type=Trigger Point is probably what makes d activate this instead of the menu.
But what tells the program which puzzle to fetch? The title (Learn to Puzzle)?


... hmm.. I see... the Puzzle=1 refers to a certain puzzle?  :O That it does...  :D
Title: Re: Gathering Knowledge
Post by: Exp HP on December 13, 2009, 19:00:14
My notes on Controllers, compiled into a guide.


SAIRA OBJECT CONTROLLER NOTES


Controllers allow you to make objects move, turn, glow, and fade on
their own.  You give an object a controller with the following line
in Objects.ini of the pertinent planet:

Controller=

With the type of the controller after the equals sign.
You can only give an object one controller.
You can then customize your controller by adding Control parameters.  They
start with "(c)" and set up values of your controller.

I'm not including any examples here because there's hundreds of
them to be found in the Objects.ini files in the Teleportation episode.
If you're unsure how exactly your code should look, just look through
those files. It shouldn't be that tough to figure out.


Here are the types of controllers at your disposal.  There's only five:

Movement: Make an object move, spin, or both
Smoke: Make the object generate short-lived copies of itself
Sine Rotation: Make your object turn back and forth
Sine Transparency: Make your object fade in and out
Sine Scale: Make your object grow and shrink


Next up is the parameters list.

First of all, there are some things to note:

Some parameters can have extra random components.  I will indicate that with these notes:
Works with Random
This means you can do one of the following things:
(c) Parameter +Random=[[INTEGER]]
(c) Parameter +-Random=[[INTEGER]]
Upon entering a screen, a random number from 0 to the number you input
will be added/subtracted to the value.
Works with Invert
This means you can do the following:
(c) Parameter 50% Invert Chance=1
Upon entering a screen, the value for that variable has a 50% chance
of switching sign (+/-).

Positives:
Positive X is right
Positive Y is down
Positive angles are Counter-clockwise
A greater scale means larger than the original
Transparency is from 0 (opaque) to 128 (transparent)

And, last but not least, when a parameter appears
here with nothing after the = sign, you put
in any number you wish after it.  When a parameter
appears here that ends in =1, it has to be =1
for it to work, because it is a Boolean flag.

Movement Controller: Makes an object move, spin, or both.
(c) X Speed=             Sets horizontal movement speed.
                         Works with Random and Invert.
(c) Y Speed=             Sets vertical movement speed.
                         Works with Random and Invert.
(c) Rotation=            Sets rotation speed.
                         Works with Random and Invert.
Notes:  When an object moves off the edge of the room, it appears
        on the other side.

Smoke Controller: Makes your object an object generator.
(c) X Speed=             Sets horizontal movement speed of generated objects.
                         Works with Random and Invert.
(c) Y Speed=             Sets vertical movement speed of generated objects.
                         Works with Random and Invert.
(c) Rotation=            Makes the generated objects spin.
                         Works with Random and Invert.
(c) Cycle Time=          Sets lifetime of objects generated.
                         Works with Random.
Notes:  Only one copy of the object exists at a time.  Each one fades into
        view, lives for a short while, then fades away before the next
        one appears.

Sine Scale Controller: Grow, shrink, grow, shrink.
(c) From X Scale=        Sets the minimum x scale.
(c) To X Scale=          Sets the maximum x scale.
(c) From Y Scale=        Sets the minimum y scale.
(c) To Y Scale=          Sets the maximum y scale.
(c) Wavelength=          Sets the length of time each growth cycle takes.
                         Works with Random.
(c) Scale +Random=       Increases/drecreates From/To X/Y Scale all by
                         a random amount.

Sine Transparency Controller: Now you see it, now you don't.
(c) From Transparency=   Sets the minimum transparency.
                         Set this to a number less than 0 if you want
                         the object to stay fully opaque for period of time.
(c) To Transparency=     Sets the maximum transparency.
                         Set this to a number greater than 128 if you want
                         the object to stay invisible for period of time.
(c) Wavelength=          Sets the length of time each glow takes.
                         Works with Random.
(c) Randomize X=1        Changes X after each time the object disappears.
(c) Randomize Y=1        Changes Y after each time the object disappears.
(c) Transparency +Random=Increases/decreases From/To Transparency by
                         a random amount.

Sine Rotation Controller: Rocking on a hinge
(c) From Angle=          Sets minimum rotation angle
(c) To Angle=            Sets maximum rotation angle
(c) Wavelength=          Sets length of time each motion takes.
                         Works with Random.
(c) Angle +Random=       Increases/decreases From/To Angle all by a
                         random amount.

Once again, if you're unsure how the code should look, just take
a look in any Objects.ini file.

Claims I made that I'm not really sure of:
Scale +Random, Transparency +Random, and Angle +Random
  It appears that these three things create variations in the overall
  size/transparency/angle of the object, but I have no conclusive tests.
+Random doesn't work with individual parameters like "From Transparency"
  This I just assumed.  It's difficult to actually test this.  Well, it's not difficult, but
  I'm just too lazy to do it.  Maybe later.
Invert doesn't work with Scale
  It just doesn't seem like it would make sense... but it's not like I've actually tried it.

By the way, it's awesome watching trees and blocks of grass fly and spin out of control with movement controllers. :crazy: :nuts:
Title: Re: Gathering Knowledge
Post by: SiamJai on December 14, 2009, 04:42:12
Wow, that's great writeup and formatting there, Exp HP! Good thing I read it before I started figuring out how animation works here. ;)
Title: Re: Gathering Knowledge
Post by: LightningEagle on December 14, 2009, 17:34:15
I've been wondering.

It appears as though the battery chargers are regarded as puzzles. If that is true we can't really come around to making episodes with much travel unless we use .ccn files.

:/
Title: Re: Gathering Knowledge
Post by: Exp HP on December 14, 2009, 23:14:00
A successful test!

What I did:  I tried to play a cutscene that was placed in Austra (rather than _Cutscenes).
Spoiler: (In full) (click to show/hide)

What happened: The cutscene played like a cutscene.

What it means: Cutscenes don't have to be in the _Cutscenes star; there must be something else that makes them play as cutscenes...
Title: Re: Gathering Knowledge
Post by: LightningEagle on December 14, 2009, 23:24:56
A successful test!

[...]

What it means: Cutscenes don't have to be in the _Cutscenes star; there must be something else that makes them play as cutscenes...

Yup.. try opening a cutscene in the editor and click the "Screen Settings" button.
The arrows and such seem to be defined in there.
Title: Re: Gathering Knowledge
Post by: Exp HP on December 14, 2009, 23:27:59
Aha!  Here's what makes it a cutscene:

Simply don't place a Saira sprite on the screen, and also define these on each screen's settings:

[General]
Left Arrow=
Right Arrow=

Saira can be placed on a Cutscreen screen and then you'll be able to control her with any arrows you don't define (or that you set "=x", which means inactive), but that's generally a bad idea.  It's just a neat way to demonstrate how cutscenes really work.  :P

Pre-post edit: Oh, ninja'd.
Title: Re: Gathering Knowledge
Post by: LightningEagle on December 14, 2009, 23:38:07
Wrote a little on some of the sprites.

Sprites
Last change: December 15th, 2009
 * Added type=jumper
 * Added type=fly
 * Added type=wall walker
 * Added type=danger circle
 * Added Y Gravity= under type=player
 * Added "not working parameters" list to type=player
 * Added Enemy= to above mentioned list
 * Added Fly Sprite= under type=player
 * Added Step Sound=, Land Sound=, Jump Sound=
 * Added more unexplained parameters
 * Updated with type=player parameter explanation

Parameters

Type=     Player ✔ Basics covered
             - Missing: checking with other parameters.
             - Missing: Step Sound=, Land Sound=, Jump Sound= explained
             - Missing: Some more to-be-explored parameters
          Generator ✔ Basics covered
             - Missing: checking with other parameters.
          Particle (next up)
          Walker
          Static
          Jumper
          Fly
          Wall Walker
          Trigger Point
          Area
          Flag Hazard
          Tri Animation
          Danger Circle
          
Player    Image=          Targets one of the sprite sheets of Saira.
                          Default: ..\..\..\Data\Sprites\Player.png
                          
          Tile Width=     The width of the frames in the sprite sheet.
                          Default: 35
                          
          Tile Height=    The height of the frames in the sprite sheet.
                          Default: 56
                          
          Y Offset=       Y Offset determines the vertical distance
                          between the Player sprite and the collision map.
                          At the optimal value of 5, one could just barely see
                          Saira's feet, while at 0 those would disappear in
                          the grass in most places. At higher values, she's
                          walking on air, making it look like as if the entire
                          collision map was lifted by that amount. Actually the
                          map itself is not affected at all, only the sprite.

                          Negative values are also possible: these make Saira
                          'sink' into the ground. Kinda like wallswimming in KS,
                          but more easily controllable.

                          Default: 5

                          A big thanks to SiamJai for enlightening this  :D
                          
          Step Sprite=    A parameter which targets a sprite of the type
                          "Generator" with each step Saira takes.
                          Default: *sprite generator*
                          
          Step Sprite Materials=
                          Defines the material which Saira has to step on
                          in order for the Generator, specified in the
                          "Step Sprite" parameter, to activate.
                          This parameter cross references with the ASCII
                          mask for the tileset of the planet, this ASCII
                          mask is found in the Planet.ini file in the same
                          folder as the Sprites.ini
                          Therefore this parameter takes an ASCII char as
                          value and checks against the mask to see if the
                          tile Saira steps on is the right material.
                          Default: *ASCII char*

                          NOTE: Can take two chars (maybe more) to address
                          two different materials in the tileset.

          Fly Sprite=
                          Targets the particle which is generated in the player
                          sprites position when moving through air. Meaning,
                          by power+up.
                          
                          This particle is most often defined by these settings:

                          [Fly Trail]
                          Type=Particle
                          Image=..\..\..\Data\Sprites\Fly Trail.png
                          Tile Width=19
                          Tile Height=19
                          To Frame=35
                          Animation Loops=1
                          Animation Speed=1000
                          Lifetime=35
                          X Instability=3
                          Y Instability=3

          Y Gravity=
                          Sets the gravitational force the sprite is affected by.
                          
                          When not set I believe the value to be somewhere
                          between 30 and 40. Below 0 and you'll hover up.
                          Too low a value and you'll leap to the top of the
                          stratosphere. Use with caution.
                          
                          Remember, low gravity might enable some extreme
                          climbing possibilities.  :shifty:

          Y Jump Strength=
                          Defines the strength with which you take off when
                          you jump.
                          
                          Default is just about 500.

          X Acceleration Start=
                          The speed at which you gain momentum when
                          running.
                          
                          Default: I'm guessing around 30

          X Limit=
                          Speed limit. This defines the maximum velocity
                          when running.

                          Default: I'm gussing about 600, but could be
                          more. More thorough testing might be required.
                          
          X Air Acceleration=
                          The speed at which you can move around in air.
                          When jumping that is! I have no idea how this
                          behaves with fly.

                          Default: 12-15 I guess.

           Unexplained parameters

          Step Sound=
          Land Sound=
          Jump Sound=
                          I've yet to discover how these works. It appears that
                          they take 3 arguments. Like this:
                                 Step Sound=Footstep,0,20
                          Where as "Footstep" refers to the kind of sound, but I
                          figure the other 0 values. My guess is sound volume but
                          I can't seem to figure out what happens when I change
                          them.

                          If someone wants to try playing with these, they can be
                          found on Ninian -> Dragon Noir.

          
          
          Y Climb Gravity=
          Y Jump Hold Strength=
          Y Fall Limit=
          Y Wall Collision Boost=
          Y Wall Jump Strength=
                          I guess most of these are rather self explanatory but
                          I haven't had time to test them yet. I would be nice if
                          we could find which values seem to be "default".
                          I mean which value equals not setting the parameter.

                          These can be used to create the feeling of A) low
                          gravity or B) running in an other substance. i.e under
                          water?

           Parameters known to not work with type=player
                          
                          Enemy=
                          Run Speed=
                          Jump Strength=
                          
Generator Minimum X Offset=
                          Defines the minimum X coordinate at which the
                          Sprite created can spawn. This coordinate is
                          relative to the placement of the generator.
                          i.e if the generator is associated with the
                          Step Sprite= parameter the offset is from the
                          location of that sprite at the given time.
                          If the generator is placed somewhere in the
                          environment of the planet, the offset is relative
                          to the exact coordinate of the sprite indicator.
                          You can view the location of Sprite indicators in
                          the editor
                          Default: Could theoretically have any
                          number-value, but most common is negative as that
                          is left of the sprites center.
          
          Maximum X Offset=
                          See explanation for Minimum X Offset. This is just
                          maximum instead.
                          Default: Could theoretically have any
                          number-value, but most common is positive as that
                          is left of the sprites center.
                          
                          NOTE:
                          I'm not really sure what happens when you go for
                          a higher value in Minimum than in Maximum. I tried
                          it but it just looked weird.
                          For the same value i.e 30 in both every sprite
                          created will fall from a point 30 pixel to the
                          right of the generators position.
                          
                          If you leave these parameters out the generator
                          creates the sprites in its own coordinate by
                          default.

          
          Minimum Y Offset=
          Maximum Y Offset=
                          Follows the same basic guide lines as the X.
          
          Sprites Per Iteration=
                          This is the amount of sprites, which is created
                          when the generator is activated. These sprites
                          are spread out and spawned in the area specified
                          by the Minimum/Maximum X/Y Offset parameters.
                          Default: 1-3 would be a good amount, I guess.
                          Much more and less strong computers, such as mine,
                          will begin to experince slow downs.
          
          Number of Iterations=
                          Number of cycles the generator takes when
                          activated.
                          i.e if linked to the Step Sprite= parameter and
                          you take a step. The generator is activated and
                          (creates sprites as defined by the other
                          parameters). The sequence between the parenthesis
                          is repeated the number of times defined here.
                          Default: I'd say 1, remember you get:
                            SpI * NoI = Sprite amount
                          SpI = Sprites Per Iteration
                          NoI = Number of Iterations
                          Which can become an awefully lot very fast. Note
                          again that a high number of sprites WILL bring
                          slow down on some systems.
          
          Create Sprite=
                          Refers to another Sprite defined in the
                          Sprites.ini. The types could be:
                            * Particle
                            * Static
                            ... that what I've encountered so far.
                          This defines exactly what sprite is created when
                          the generator is activated.
                          Default: *targets a sprite*
                          
          Pre-Delay=
                          Takes +Random argument
                          The delay before the generator is activated upon
                          entering the area where the generator is placed.
                          
                          I don't think this can be used with generators
                          linked to the Step Sprite= parameter as they
                          activate by steps.
                          
                          Default: *any value I guess*, If this is not
                          defined I guess the value defaults to a delay of 0
          
          Time Between Iterations=
                          Takes +Random argument
                          The parameter created the delay between
                          iterations. You BETTER remember to set this one
                          or you'll have a waterfall of sprites generated in
                          such thickness and amount that any computer will
                          experince horrible slow down issues. I fear the
                          application might crash in time.
                          
                          NOTE: (to myself) Never outcomment this line again
                          
                          Default: I suggest something relatively high.
                          Maybe between 500 and 2-3000.

                          
          
More to work on still.
Next will be: Particles.
Title: Re: Gathering Knowledge
Post by: Salmoneous on December 15, 2009, 07:32:39
aw so fun to see that there is people on to this. Keep it up  :)
Title: Re: Gathering Knowledge
Post by: SiamJai on December 15, 2009, 11:35:44
Great job, LightningEagle! Looks like custom Saira levels are getting closer and closer to reality. ;)

Y Offset=       *function unknown to me*
Default: 5

Y Offset determines the vertical distance between the Player sprite and the collision map. At the optimal value of 5, one could just barely see Saira's feet, while at 0 those would disappear in the grass in most places. At higher values, she's walking on air, making it look like as if the entire collision map was lifted by that amount.

Negative values are also possible: these make Saira 'sink' into the ground. Kinda like wallswimming in KS, but more easily controllable.
Title: Re: Gathering Knowledge
Post by: LightningEagle on December 15, 2009, 11:41:19
Thanks, added your explanation  :)
Title: Re: Gathering Knowledge
Post by: SiamJai on December 15, 2009, 12:03:45
You're welcome... and a huge thanks to you and Exp HP, for uncovering all this useful knowledge! :)

(btw, I added a bit more info about negative values...)
Title: Re: Gathering Knowledge
Post by: LightningEagle on December 15, 2009, 12:24:52
(btw, I added a bit more info about negative values...)

✔ Added  :D
Title: Re: Gathering Knowledge
Post by: LightningEagle on December 15, 2009, 20:47:59
Would be awesome if someone with a good ear would try to test these sprite parameters for type=player
Step Sound=
Land Sound=
Jump Sound=

See here: http://nifflas.lpchip.nl/index.php?topic=2304.msg26063#msg26063
for some notes...
Title: Re: Gathering Knowledge
Post by: Ax on December 16, 2009, 04:28:26
I just wanted to add that you guys all rock.  I'm pretty sure I'll never make a custom level of my own, but I really appreciate all the work you're doing (and sharing) because it means some day I'll be playing even more Saira awesomeness.  I give you all virtual cookies...er, not the browser kind, the tasty crunchy filled with imaginary chocolate chip kind.  Keep it up and I'll even bake you a virtual cake.  It's like normal cake only made completely of virtual awesomeness.
Title: Re: Gathering Knowledge
Post by: SiamJai on December 16, 2009, 04:55:34
Would be awesome if someone with a good ear would try to test these sprite parameters for type=player
Step Sound=
Land Sound=
Jump Sound=

See here: http://nifflas.lpchip.nl/index.php?topic=2304.msg26063#msg26063
for some notes...

I've muted the music/ambiance on Dragon Noir and played around with these settings, but didn't find out much more yet. So far it appears that changing either one by a small amount doesn't introduce any noticeable change, while changing them drastically mutes the sound altogether.

Perhaps these affect the variation in volume, which would be nigh impossible to detect in smaller changes. I'll try it again after work.
Title: Re: Gathering Knowledge
Post by: LightningEagle on December 16, 2009, 09:26:35
I've muted the music/ambiance on Dragon Noir and played around with these settings, but didn't find out much more yet. So far it appears that changing either one by a small amount doesn't introduce any noticeable change, while changing them drastically mutes the sound altogether.

Perhaps these affect the variation in volume, which would be nigh impossible to detect in smaller changes. I'll try it again after work.

Thanks  :), I'll also take a look at them again when I finish the more physics related parameters.
Title: Re: Gathering Knowledge
Post by: smeagle on December 17, 2009, 11:51:38
HAH!
I finally found something you don't have!! :P
Not entirely useless!!

in the planet.ini

[Tileset 0]
Image=Tilesets\Toxic.png
Mask=Tilesets\Toxic Mask.png
Materials 0=X@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Materials 1=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Materials 2=@@@@@@@~~~@@@@@@@@@@@@@@@@@@@@@@
Materials 3=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Materials 4=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Materials 5=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Materials 6=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Materials 7=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

The different @s and ~s indicate what noise you make when you run on it.
If you look at the boromine tileset, you'll see that were each "block" is, there is a different symbol!
The ~~~ make the 3 tiles that are liquid make the water noise.
I will be looking into these different symbols and the noise they make!


~=water
@=?
X= no sound? (that is the delete block)


Or not  :sigh:
Title: Re: Gathering Knowledge
Post by: LightningEagle on December 17, 2009, 14:20:27
HAH!
I finally found something you don't have!! :P
Not entirely useless!!

in the planet.ini

[Tileset 0]
Image=Tilesets\Toxic.png
Mask=Tilesets\Toxic Mask.png
Materials 0=X@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Materials 1=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Materials 2=@@@@@@@~~~@@@@@@@@@@@@@@@@@@@@@@
Materials 3=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Materials 4=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Materials 5=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Materials 6=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Materials 7=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

The different @s and ~s indicate what noise you make when you run on it.
If you look at the boromine tileset, you'll see that were each "block" is, there is a different symbol!
The ~~~ make the 3 tiles that are liquid make the water noise.
I will be looking into these different symbols and the noise they make!


~=water
@=?
X= no sound? (that is the delete block)

hmm.. I mentioned this in my work on sprites.
This ASCII mask is also used to define which textures activate generators when stepping on them. If that makes sense. See my note on sprites
         Step Sprite=    A parameter which targets a sprite of the type
                          "Generator" with each step Saira takes.
                          Default: *sprite generator*
                          
          Step Sprite Materials=
                          Defines the material which Saira has to step on
                          in order for the Generator, specified in the
                          "Step Sprite" parameter, to activate.
                          This parameter cross references with the ASCII
                          mask for the tileset of the planet, this ASCII
                          mask is found in the Planet.ini file in the same
                          folder as the Sprites.ini
                          Therefore this parameter takes an ASCII char as
                          value and checks against the mask to see if the
                          tile Saira steps on is the right material.
                          Default: *ASCII char*

                          NOTE: Can take two chars (maybe more) to address
                          two different materials in the tileset.

Title: Re: Gathering Knowledge
Post by: LightningEagle on December 18, 2009, 14:37:48
Did a visual representation of the planet positioning parameters

(http://img.photobucket.com/albums/v329/LightningEagle/Saira/planetarypositioning.png)

Will add it to my prior post on the topic.
Title: Re: Gathering Knowledge
Post by: smeagle on December 21, 2009, 13:30:11
Editor, screen settings


------------------------------
[general]
Header=Your ship enables you to travel between stars in search for items. To interact with your ship, stand next to it and press {Use}.
Header Is Instruction=1
------------------------------
Shows that at the top of the screen
Choose if its counted as an instruction, ie to show if the person has no instructions.
{use} means it shows the use button
{Jump} is show jump button
{Fly} is for the fly button
I am assuming that there is one for escape as well
------------------------------
[general]
Background=Backgrounds\Sky.png
------------------------------
select a background that is in the backgrounds folder
------------------------------
[general]
Ambiance 0=..\..\..\Data\Ambiance\Forest Wind.ogg
Ambiance 0 Volume=40
Ambiance 1=Music\Percussion.ogg
Ambiance 1 Volume=0
Ambiance 1 Volume +Intensity=60
Ambiance 1 Volume +Timer=62
------------------------------
load ambiance
Ambiance number and volume
(only the songs are loaded in planet.ini)
it seems like you can also load music as ambiance?
you can load it in the same as backgrounds
They will play at the same time
intensity = ?
Timer = ?
-----------------------------
[Emitter 0]
Angle +-Random=180
Count=30
Layer=5
Layer +Random=4
Object=Grass Particle
Scale=200
Scale +-Random=25
Margin Top=-25
------------------------------
[Emitter X]-change number

Angle +-Random=180-
the controllers (see exp hp's brilliant post!)

Count=30-How many
Layer=5-what layer
Layer +Random=4-random layers?
Scale=200-how big the objects are
Scale +-Random=25-random sizing

margin top must mean how far from the top the objects come out, so -25 would be -25 pixels from the top (offscreen)

Object=Grass Particle-choose the image (loaded in objects.ini)
------------------------------
[Hazards]
Poison=46
-----------------------------
Set the poison rate (?) or poison amount.

More to come!
edit: added hazards
Edit2: added more ambiance

Title: Re: Gathering Knowledge
Post by: LightningEagle on December 21, 2009, 13:50:25
[general]
Background=Backgrounds\Sky.png
------------------------------
select a background that has been loaded in objects.ini
I'm pretty confident that this has nothing to do with the objects.ini file.
[Emitter 0]
Angle +-Random=180
Count=30
Layer=5
Layer +Random=4
Object=Grass Particle
Scale +-Random=25
------------------------------
[Emitter X]-change number

Angle +-Random=180
Count=30
Layer=5
Layer +Random=4
Scale +-Random=25- the controllers (see exp hp's brilliant post!)

Object=Grass Particle-choose the image (loaded in objects.ini)
What is this exactly? Can you explain what happens when you change the parameters?
What happens if you remove the part entirely?
Title: Re: Gathering Knowledge
Post by: smeagle on December 21, 2009, 13:54:51
qoute from objects.ini:
.....  :huh:  :ohnoes:
oops........  XD

ill edit it, it looks like it just....loads it
Title: Re: Gathering Knowledge
Post by: EdudDiputs on January 16, 2010, 18:51:33
I've been messing with Saira's player sprite sheet.
I've been able to figure out what sprites are played by what player actions.
Anyway, here are the sprites and actions, in case you plan on making a player sprite sheet manually.

I've listed the actions in the order they appear on the sprite sheet.
Format: <# of sprites for an action> - <action description>

Note that 2 of those animations will cycle/repeat:  The run and climb animations.

Some more notes:
Normally if you change directions, the game plays the normal "slow down run" and "warm up run" animations.
But *sometimes* if you are running into a wall and you change directions, you can stay in the "full speed" run animation cycle.
I do not think this phenomenon gives you a speed/acceleration boost.  It’s just a weird animation effect.


Also,
If you use the fly power to fly straight up and slightly sideways into a climbable wall, you can climb about 1/2 a screen higher with the momentum.


Anyway, thanks for the game.
>((http://nifflas.lpchip.nl/Themes/Nifflas/images/post/thumbup.gif)