Gathering Knowledge

  • 39 Replies
  • 34326 Views
*

Offline Nifflas

  • 1532
  • 61
    • View Profile
Re: Gathering Knowledge
« Reply #15 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.

*

Offline LightningEagle

  • 242
  • 0
  • Who's the wacko, you say?
    • View Profile
Re: Gathering Knowledge
« Reply #16 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
« Last Edit: December 13, 2009, 19:08:49 by LightningEagle »

*

Offline Exp HP

  • 259
  • 2
  • 1 in 166 children
    • View Profile
Re: Gathering Knowledge
« Reply #17 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:
« Last Edit: December 14, 2009, 05:14:59 by Exp HP »
(secretly hoping nobody will mention the object compendium)
My stars:   :hiddenstar:(Object Compendium):hiddenstar:(By PM)
Check out my Youtube channel for some terrible Let's Plays by a socially inept nerd!

*

Offline SiamJai

  • 706
  • 31
    • View Profile
    • A gaming blog like no other.
Re: Gathering Knowledge
« Reply #18 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. ;)

*

Offline LightningEagle

  • 242
  • 0
  • Who's the wacko, you say?
    • View Profile
Re: Gathering Knowledge
« Reply #19 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.

:/

*

Offline Exp HP

  • 259
  • 2
  • 1 in 166 children
    • View Profile
Re: Gathering Knowledge
« Reply #20 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...
« Last Edit: December 14, 2009, 23:19:14 by Exp HP »
(secretly hoping nobody will mention the object compendium)
My stars:   :hiddenstar:(Object Compendium):hiddenstar:(By PM)
Check out my Youtube channel for some terrible Let's Plays by a socially inept nerd!

*

Offline LightningEagle

  • 242
  • 0
  • Who's the wacko, you say?
    • View Profile
Re: Gathering Knowledge
« Reply #21 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.

*

Offline Exp HP

  • 259
  • 2
  • 1 in 166 children
    • View Profile
Re: Gathering Knowledge
« Reply #22 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.
« Last Edit: December 14, 2009, 23:30:51 by Exp HP »
(secretly hoping nobody will mention the object compendium)
My stars:   :hiddenstar:(Object Compendium):hiddenstar:(By PM)
Check out my Youtube channel for some terrible Let's Plays by a socially inept nerd!

*

Offline LightningEagle

  • 242
  • 0
  • Who's the wacko, you say?
    • View Profile
Re: Gathering Knowledge
« Reply #23 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.
« Last Edit: December 15, 2009, 21:38:36 by LightningEagle »


*

Offline SiamJai

  • 706
  • 31
    • View Profile
    • A gaming blog like no other.
Re: Gathering Knowledge
« Reply #25 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.
« Last Edit: December 15, 2009, 11:45:58 by SiamJai »

*

Offline LightningEagle

  • 242
  • 0
  • Who's the wacko, you say?
    • View Profile
Re: Gathering Knowledge
« Reply #26 on: December 15, 2009, 11:41:19 »
Thanks, added your explanation  :)

*

Offline SiamJai

  • 706
  • 31
    • View Profile
    • A gaming blog like no other.
Re: Gathering Knowledge
« Reply #27 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...)

*

Offline LightningEagle

  • 242
  • 0
  • Who's the wacko, you say?
    • View Profile
Re: Gathering Knowledge
« Reply #28 on: December 15, 2009, 12:24:52 »
(btw, I added a bit more info about negative values...)

✔ Added  :D

*

Offline LightningEagle

  • 242
  • 0
  • Who's the wacko, you say?
    • View Profile
Re: Gathering Knowledge
« Reply #29 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...