Topic: Endless Mine Zone - Full-fledged level from Sonic-3

I like Endless Mine Zone and I wanted to play it on full-fledged level. I propose my mod for Open Sonic 0.1.4.

Act 1 is usualy Sonic's level with varios routes, secret places and traps.
Act 2 is quest.
Act 3 is battle with many enemies.

https://img-fotki.yandex.ru/get/3800/159624077.2/0_1962ee_9316c2ac_orighttps://img-fotki.yandex.ru/get/104403/159624077.2/0_1962ef_8da3472d_orig
https://img-fotki.yandex.ru/get/3800/159624077.2/0_1962f0_9a062497_orighttps://img-fotki.yandex.ru/get/369434/159624077.2/0_1962f1_53fcfd19_orig

Download mod: https://yadi.sk/d/hhXbNXnX3Qvey9 .
For install this mod, you should copy files from this folder in folder with Open Sonic game on your computer. Files from EMZ_MOD\images should be placed in folder Open Sonic\images, files from EMZ_MOD\levels should be placed in Open Sonic\levels etc.

Open "opensonic.exe", select "Extras", then select "Endless Mine Zone".

If you finded bugs, glitches or if you have wishes and advice, then you can posted comment on this page.

I wish you a pleasant game!


I ran into problems:
1. I could not created a boss. I do not know how to do it.
2. I could not realised working loops: character rests against the wall and "Loop -->"  "Loop OFF" blocks doesn't worked. How to properly place them?

Re: Endless Mine Zone - Full-fledged level from Sonic-3

Hi G.E.R., welcome to the forum!

The level design here is decent; I noticed that it's a maze-type level, which I picture Endless Mine as.

As for proper placement of loop "identifiers", take note of how other loops in the default levels do it. There's also problems with slopes in the level as well.

I highly recommend using version 0.2.0 instead of 0.1.4 for your project. It is much more customizable, and allows you to work with more things like variables.

Here's a page on the wiki telling how to make a simple boss object in 0.2.0: http://opensnc.sourceforge.net/wiki/ind … ustom_Boss

Cheers!

-SGWaS

Re: Endless Mine Zone - Full-fledged level from Sonic-3

SGWaS, thank you for your feedback!

Yes, this level is linear level with maze-type zone, you can see it on level map (Act 2):
https://img-fotki.yandex.ru/get/3609/159624077.2/0_19618b_55d2846e_XL.png

I wanted to created act 1 as linear level and act 2 as quest with maze sectors. And I think that I can realize other levels from "Competetion mode Sonic 3" with bosses in version 0.2.0. Thank you for help!

Re: Endless Mine Zone - Full-fledged level from Sonic-3

I working over the rest levels from Sonic-3-Competetion. So, I created Azure Lake and Chrome Gadget Zones, they has various textures in my mod. Azure Lake has are day and night levels. Chrome Gadget Act 2 has railway themes. Also, there are underwater and underground places in levels from my mod. When I completed all 5 Zones, I will be porting levels on Open Surge and publish on this forum.

https://img-fotki.yandex.ru/get/893194/159624077.2/0_196e2b_1f00426d_orig

Re: Endless Mine Zone - Full-fledged level from Sonic-3

Since you are doing your stuff in 0.1.4, you can make the bosses simply as:

state "hit1"
{
    //move the boss doing its stuff
    //if receives a hit by Sonic, change to state hit2
}

state "hit2"
{
     //This function is exactly the same as hit1, but leads to hit3 when hitted
}

state "hit3"
{
    //Same as hit1 and hit2, but leads to hit4... and so on.
}

In the last hit, you simply destroy your object. However, for future projects, consider switching to 0.2.0. If you want to have Sonic & Co there, simply copy the Sonic sprites, as well as the files that define the images in 0.1.4 to the correspondent folder in 0.2.0. Tails and Knuckles will lose their skills, but you can find scripts here in the forum. Moreover, in 0.2.0 you can customize the characters with different stats such as jump height, speed, etc.

For boss stuff, in 0.2.0 you can use variables,  so making a boss becomes easier:

hits = 8 //Or whatever the syntax is for declaring variables, I don't remember now.
state "do_stuff"
{
      //here comes the stuff done by boss
     //If boss gets a hit, make hits = hits - 1
      //If hits = 0, then kill the boss
}

Sorry for the pseudoscripts, but last time I did stuff in Open Surge was a pair of years ago I remember nothing about the syntax. roll

Piece of cake...!

Re: Endless Mine Zone - Full-fledged level from Sonic-3

Tails and Knuckles will lose their skills, but you can find scripts here in the forum.

Thank you for Tails andKnuckles scripts.

But I have a problem. I need that Knuckles can walking on the wall. Through what command to implement it?
My script:

on_right_wall_collision "Wall"

<...>

    state "Wall" // Collision with a wall
    {
        set_player_animation "SD_KNUCKLES" 22
        set_player_yspeed 0
        set_player_xspeed 0
        on_button_pressed "up" "Wall_up"
        on_button_pressed "down" "Wall_down"
    }
   
    state "Wall_up" // Knuckles go up
    {
        set_player_animation "SD_KNUCKLES" 17
        set_player_yspeed -20
        on_button_pressed "up" "Wall_up"
        on_button_pressed "down" "Wall_down"
        change_state "Wall_stop"
    }
    state "Wall_down" // Knuckles go down
    {
        set_player_animation "SD_KNUCKLES" 17
        set_player_yspeed 20
        on_button_pressed "up" "Wall_up"
        on_button_pressed "down" "Wall_down"
// ? ? ? on_wall_down "falling" ? ? ?  // Knuckles reached the bottob of the wall and falling
        change_state "Wall"
    }

    state "Wall_top" // Knuckles reached the top of the wall
    {
        set_player_animation "SD_KNUCKLES" 16
        set_player_yspeed -20
        set_player_xspeed 10
        change_state "main"
    }

But it is dont working. Can you help me?

So, I need that Tails can flying and carried Sonic and I don't know how to do it. But this is not so important, if I can't made it, I can add moving platforms on my level.

Re: Endless Mine Zone - Full-fledged level from Sonic-3

G.E.R. wrote:

// ? ? ? on_wall_down "falling" ? ? ?  // Knuckles reached the bottob of the wall and falling

What if you implemented a collision detector instead of relying on on_right_wall_collision? smile You have more control over collisions that way. Then whenever Knuckles gets off the wall, you restore its regular movement.

Make sure you're also using disable_player_movement when wall climbing, otherwise Knuckles will be affected by gravity and regular user input, and it won't work this way.

G.E.R. wrote:

So, I need that Tails can flying and carried Sonic and I don't know how to do it. But this is not so important, if I can't made it, I can add moving platforms on my level.

Use set_player_position & set_absolute_position and it will work smile

Re: Endless Mine Zone - Full-fledged level from Sonic-3

Thank you for link on API, this article gave a lot of useful information on programming

Re: Endless Mine Zone - Full-fledged level from Sonic-3

I can not do anything.

1. I used brick_exists(offset_x, offset_y) on Knukles_climbing script, but it value = 1 always, in any situation.

If "obstacle_exists(50,0) = 1" "Wall"

Also, when he lands on the floor, he should slide 1 second, but there are working jump in my script and I don't know how deactivate jump on this state. On_floor_collision don't working.

state "planning"
    {
<...>
        on_player_walk "slide"
<...>
    }

  state "slide"
    {
        set_player_animation "SD_KNUCKLES" 19
        on_timeout 1.2 "main"
    }

2. Knuckles have other ability. When he is suitable for the Breakable-brick, this bricks destroying automatically. Is it possible to implement it through a script?

3. For carryng Sonic/Knuckles, I wrote a script, but I don't understand how to do the interaction between the characters. how to get coordinates from another script?

object ".coordinates"
{
    requires 0.2.0
    always_active

    state "main"
    {
        hide
        observe_player "Sonic"
        let "$_sonic_xpos = player_xpos()"
        let "$_sonic_ypos = player_ypos()"
    }

    state "carry"
    {
        hide
        observe_player "Sonic"       
        set_player_position "$_tails_xpos" "$_tails_ypos + 50"
        set_player_animation "SD_SONIC" "25"
    }
}


    state "fly"
    {
        gravity
        let "$_tails_xpos = player_xpos()"
        let "$_tails_ypos = player_ypos()"
        If "$_sonic_ypos = $_tails_ypos + 200" "sonic_carring"
<...>
    }

    state "sonic_carring"
    {
        set_player_animation "SD_TAILS" 16
        let "$_tails_xpos = player_xpos()"
        let "$_tails_ypos = player_ypos()"

        on_player_run "main"
        on_player_walk "main"

        set_player_yspeed -100
        play_sample "samples/Tails_Fly_1.wav"

        change_child_state ".coordinates" "carry"

        on_timeout 10 "fall"

    }

Re: Endless Mine Zone - Full-fledged level from Sonic-3

Let's approach one thing at a time.

The thing to do to get the position of the players is to associate an object to them, and make the sharing of the position its sole purpose. The position is not exported in states; you have an object that does that and only that.

One solution would be: make an object, write observe_player "Character Name", use attach_to_player 0 0, and then export the position of the object. Make an object for each of the characters, changing only the character name.

Then in your other scripts, you use the exported variable.

G.E.R. wrote:

1. I used brick_exists(offset_x, offset_y) on Knukles_climbing script, but it value = 1 always, in any situation.
If "obstacle_exists(50,0) = 1" "Wall"

Rather than obstacle_exists(50,0) = 1, try obstacle_exists(50,0) == 1. '==' is the comparison operator.

Re: Endless Mine Zone - Full-fledged level from Sonic-3

try obstacle_exists(50,0) == 1

I did't know it. I worked only with Basic, Pascal and JavaScript, and I working with C# scripts for the first time. I thinked than C# syntax is similar to Delphi's syntax, but I was wrong.

Re: Endless Mine Zone - Full-fledged level from Sonic-3

Alexandre, can I determine the behavior of brick (fall or breakable) and destroy this brick if it is breackable?