(7 replies, posted in General)


If you find any bugs in the wiki, please let me know.


(2 replies, posted in General)

There will be one.

At the moment you can check the height of the water using waterlevel().


(7 replies, posted in General)

G.E.R. wrote:

It is very good, that you are there. When you restore Wiki, can you write more information about Surge's level?

Many of these things will be changed. I will be releasing SurgeScript and, after that, I will reduce the number of levels. I'd suggest that you work on your MODs for the time being. Your mods are valuable not only to yourself, but to the community as a whole. Why not work on a prototype featuring Surge, where you develop concepts and prototype things?

To work on the official levels, there are two things that are needed at this stage. First, we need a decent brick template that covers many types of loops and a wide range of slopes. This is priority. It should cover everything. Second, we need decent art, as described in the Art Spec. Document (in the wiki). Then, for each level, we skin the brick template accordingly.


(7 replies, posted in General)

I haven't been able to reach the computer for a few days. The problem will be fixed. I'm on it.


(2 replies, posted in Off-topic)

hey, cool cool


(16 replies, posted in General)

svgmovement wrote:

By the way, was it just me, or was the forum shut down for a few days?

Websites hosted on sourceforge were offline for a few days.


(8 replies, posted in MODs)

G.E.R. wrote:

We can do even easier and creating technical object, which will teleport character on top. It will not be full loops in system, but will completely create a bottomless pit.

Good idea wink


(3 replies, posted in General)

Check the zipline script; see if you find anything smile


(8 replies, posted in MODs)

G.E.R. wrote:

I ripped bricks from levels maps and created levels. For this purpose, I used modify Gens emulator. Then, I ported it on Open Surge entitle. First, I writed characters scripts (thank you for help) and modify images of items and objects. I made it becaus I wanted that this mod was most executed in Sonic-3-style. "Signpost" and "DNA-doors" objects was created in its own script, becaus original objects working only with names Surge, Neon, Charge.
I withdrew Sounds from Sonic-2 and Sonic-3-Knuckles and font from Open Sonic 0.1.4.
Further, I wrote scripts of bosses, menu and other, with with regulars testing my work.
Base principle of work - from simple to complex. First - creating levels, then creating objects.

Also, there are some images from my real photos int this mod. So, background in CGZ-3 is panorama of Novorossiysk from mountain (Dec 2015), and ruins from Shakhan mountain in outkasts of Gelendzyck (Sep 2013).

Very interesting. How long did you take?

- There are uses a looping system on some sonic's games. When character reach very top (or bottom) on the map, he will reapperar on other side of map, where his path resumes. It allows make the effect of an endless fall or just confuse the player.

Yes, you'd need to compare the position of the player to a certain threshold. If it passes the threshold, you reposition the player.

For example, you can write an always_active script that does the repositioning. In your example, you just need to compare the y coordinate.

What you're doing is very interesting. Let us see how it goes smile

Are these levels created?



(8 replies, posted in MODs)

Hey G.E.R., this mod is awesome.

I haven't played the full mod yet, but Balloon Park Act 1 is my favorite level so far. I really like these kinds of levels, like Speed Slider from Knuckles Chaotix. I also appreciated how you ported Open Sonic's cooperative play into your mod and made it work well. smile

The angles of some bricks doesn't seem right (for example, in desert palace), mainly in loops, as the character falls out of place when the movement should be smooth.

You imagined and extended Sonic 3 competition in your own unique way. Looking forward to playing the rest of the mod. cool

Let me ask you: while making your mod, can you please describe your experience with the engine? What are your plans now?

How about using the command line? It's very fast smile

http://acamara.es/blog/2012/12/assembli … agemagick/

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.


(9 replies, posted in General)

Happy birthday.


(61 replies, posted in General)

aronthehedgehog wrote:

I'm sorry for butting in on the conversation (this should be in another section but...), Is it possible to set a custom fps for a Sprite via objects?

If it's not, that's ok, but I want to know if it's possible to do so. I want to play around with certain time variables and I want it to include sprite fps.

(I sped read the whole thing because I'm on time constraints right now, so if it's already an asked question I understand.)

Hi aronthehedgehog, welcome back. smile


In the API you're using, you can export data from objects using $_shared_variables (they start with a '_'). Eg: $_boss_x, $_boss_y.

See: http://opensnc.sourceforge.net/wiki/ind … ence#Scope

No problems, feel free to ask smile

Hi G.E.R.,

Please see the following commands: smile


(6 replies, posted in General)


Cool! smile

SGWaS wrote:

Is there a way that I could make the laser "invincible" where it would harm any object that collides with it?

You'll have to write a script, so your objects will be "harmable".

SGWaS wrote:

Can I also make the player vulnerable to any attack as well, even while jumping (I need this to make the dragon get hurt by enemies after flying off)?

I think KZR made something like that in Shinobi Densetsu; you might want to ask him.

Stop relying on the "enemy" decorator and write your own behaviors.
http://opensnc.sourceforge.net/wiki/ind … hit_player

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


(61 replies, posted in General)

Advanced features

A very nice feature of object-oriented programming languages is called a functor (or function object). It allows you to have objects that behave like functions.

In SurgeScript, you can do really powerful programming using functors. In the example below, we have an object called Benchmark that can measure the performance of any code/object that you provide:

// We'll measure the performance of the computation of the Fibonacci sequence using an exponential method
object "Application"
    benchmark = spawn("Benchmark");
    fib = spawn("Fibonacci");

    state "main"
        t  = benchmark(fib(1));
        t += benchmark(fib(5));
        t += benchmark(fib(10));
        t += benchmark(fib(25));
        t += benchmark(fib(32));
        Console.print("Total time: " + t + " seconds.");

In my computer, the output of this program is as follows:

Computing ExpFib(1) = 1          done in 0.000018 seconds.
Computing ExpFib(5) = 5          done in 0.000052 seconds.
Computing ExpFib(10) = 55          done in 0.000478 seconds.
Computing ExpFib(25) = 75025          done in 0.203170 seconds.
Computing ExpFib(32) = 2178309          done in 5.642050 seconds.
Total time: 5.845768 seconds.

Check out the full example!

Granted, it's an advanced feature. smile

Hey G.E.R., welcome to the forums. smile

Is this your first attempt at making levels? It's pretty good cool I particularly like the theme, and I see that you payed attention to detail.

Have you considered porting your work to Open Surge? You'll get more possibilities and an improved engine.

Hey SGWaS,

I already see a big improvement over your last project. Keep up the good work! wink

Suggestion: I think the brickset of the first level could get some more work (so you get smooth blocks, without holes in-between)

SGWaS wrote:

there will be a massive improvement from a design standpoint, at least in my opinion.

yes, give special attention to design. Your game will be great this way! cool


(3 replies, posted in General)

There is a way, sure. You already told us what the logic is: if there is not enough rings, get out of the stage (load some level). In other words, if not enough collectibles(), then load_level wink


(3 replies, posted in General)

Play it as a sample, rather than as a music.

It's simpler if you make your own object.


(1 replies, posted in Off-topic)

I read the goodbye letter from the guys at Vidme and they shared some insights about their market and their startup. They wanted a creator-friendly platform. One of their goals was to help video creators make money, so that they would be focused on making videos. Cool, but Google and Facebook pretty much control the online advertising market nowadays.