(23 replies, posted in MODs)

hey, cool. I see that you are using different bricksets now. Keep it up!

Try to polish your level design more if you can.


(1 replies, posted in General)

Yes. Make an object that will write the scrolling text to the screen using textout. Then you move your object in your main state.

tip: make it always_active, also.


(2 replies, posted in General)

Make two objects; one is the button, the other is the boss. The button will communicate the boss whenever it gets hit (say, via change_parent_state). The boss will animate itself when it gets hit. smile


(23 replies, posted in MODs)

hey, that's pretty fun. smile

Have you considered using other bricksets as well?


(23 replies, posted in MODs)

MatheusRRR wrote:

is as the exterminator said in his film:  install the vista, baby. big_smile roll
(In Portuguese the joke gets a lot better)



(9 replies, posted in General)

To anyone who might be interested, I compiled a zip featuring lots of jobro's music for indie developers. There's more than 300 MB of content for games that you can play around it. The package also brings a credits.txt file that contains proper attribution instructions. I think the best way to pay him a tribute is to use his music.


(2 replies, posted in Off-topic)

Hey SGWaS, welcome to the forums!

I commented about your game in the other thread. wink

If you have any questions about the engine, let us know.


(23 replies, posted in MODs)

Hey SGWaS,

You've come with a really creative story. I never thought I would see Vista as the hero in a game that is played in the Afterlife tongue I'm nowadays a Linux user, but when I first started using computers, I used Windows a lot. In fact, I started programming using Windows. smile

Regarding the game play: there's not much differentiation in the sprite. When I'm moving, I'm not sure whether I'm spinning, jumping or just moving. So when I touch an enemy, I don't know for sure whether the enemy will kill the hero or the hero will kill the enemy. I'd suggest adding some indication that the player is strong or not strong; perhaps the sprite could get colored?

Also, since it's not complete yet, the level design could get some work. There are parts in Heavenly Havoc (lol about the name lol) that an abyss appears out of nowhere and the player is not prepared to anticipate it. Also, it's aesthetically better if you avoid too thin platforms in my opinion

Is this your first mod? You've learned a lot so far.

Your game even features an instruction manual. Nice add on.


(61 replies, posted in General)

Attached objects

I said earlier that SurgeScript would enable a very easy way to make objects attached to each other (so that they follow each other). Let's see how it works.

One can spawn a child on any object. You can change the position of any object by changing its Transform2D component. All children will move accordingly. This means: the children are already attached!

The Transform2D component can be made available on any object; all you have to do is spawn it on the object of your choosing. A component is just another object.

On the demo below, we have two bees: the parent bee and the child bee. Each bee has its own Transform2D component, so we can move them individually. Wherever the parent moves, the child follows. However, the child may move without affecting the parent.

# Wherever the parent goes, the child follows.

step 1: both bees start at the origin (0,0)
The parent bee is at (0,0)
The child bee is at (0,0)
step 2: move the parent bee by (2,0) relative to its parent (the Application)
The parent bee is at (2,0)
The child bee is at (2,0)
step 3: move the parent bee by (0,1)
The parent bee is at (2,1)
The child bee is at (2,1)
step 4: set the child bee to be at (5,6) relative to its parent (the parent bee)
The parent bee is at (2,1)
The child bee is at (7,7)
step 5: move the parent bee by (-2,-1)
The parent bee is at (0,0)
The child bee is at (5,6)
step 6: rotate the parent bee by 90 degrees
The parent bee is at (0,0)
The child bee is at (-6,5.000000)
step 7: scale the transform of the parent bee by 10
The parent bee is at (0,0)
The child bee is at (-60.000004,49.999996)
step 8: move the child bee by (2,0)
The parent bee is at (0,0)
The child bee is at (-60.000004,70)
step 9: scale the transform of the parent bee by 0.1 (thus reverting the previous scale)
The parent bee is at (0,0)
The child bee is at (-6.000000,7.000000)
step 10: move the child bee by (-2,0)
The parent bee is at (0,0)
The child bee is at (-6,5.000000)
step 11: reset the rotation of the parent bee
The parent bee is at (0,0)
The child bee is at (5,6)
step 12: set the child bee to be at position (50,50) in the world
The parent bee is at (0,0)
The child bee is at (50,50)

How does it work?

See the source code on GitHub!



(9 replies, posted in General)

I did not know this guys, but jobromedia passed away at the beginning of this year. I knew about this from a close friend of his.

jobro has contributed to this project with many of his works, some of which you can find in OpenGameArt. Hopefully we can honor his memory somehow with our game.

jobro, thank you for being part of this community. I don't know what to say. I just thought you were off for some time, since not much had been going on. I'm sorry to hear this. sad

I promise we will release this game with some of your music.

jobromedia lived in Sweden and was a musician here. RIP.

Johan Brodd



(61 replies, posted in General)

TheSeventhEmerald wrote:

Alexandre, I have been checking SurgeScript and it looks AWESOME.

Thank you smile It is awesome!

TheSeventhEmerald wrote:

I only have one question. For now, if I want to use the language I have to compile it from the sources in GitHub. Is it going to be this way also for Open Surge?

SurgeScript will work out-of-the-box. Simplicity for everyone!


(61 replies, posted in General)

SurgeScript supports arrays!

SurgeScript has built-in support for arrays. They are easy to use and can hold anything you like: numbers, strings, or even arbitrary objects! (among other things)

Here's an example for your delight:

// will display all elements of the array
object "Application"
    arr = [0, 1, 1, 2, 3, 5, 8, 13, 21, 34];
    state "main"
        Console.print("The array has " + arr.length() + " elements.");

        // i is an index
        for(i in arr) {


Additionally, SurgeScript also has support for what is known as "fast-loops" on the old engine. You can use while and for loops within a state. Unlike the old engine, SurgeScript has a much cleaner syntax:

// the following will count from 1 to 10
object "Application"
    state "main"
        // x will go from 1 to 10
        for(x = 1; x <= 10; x++) {

        // done!

See all examples on:
https://github.com/alemart/surgescript/ … /examples/ smile


(61 replies, posted in General)

SurgeScript now features a Tag System

You can now tag your objects to facilitate development. For example,

object "Banana"
    tag "Pickup";
    tag "Fruit";

    state "main"

This means that "Banana" is both a Pickup and a Fruit. You can check if an object has a certain tag like:

obj = spawn("Banana");

    Console.print("The object is a pickup.");
    Console.print("The object is not a pickup.");

See the complete example here:

Tagging is exceedingly useful in game development and it has now been natively incorporated into the language. wink


(61 replies, posted in General)

An alpha build of SurgeScript is now available.

While SurgeScript is not yet integrated into the engine, you can test features of the language with this alpha build (May, 2017).

In order to test it, please go to:
and follow the instructions.

Four examples are available:

A simple Hello World application.

A simple script that asks the user to type a number.

examples/alfred_the_npc.ss (check this out)
Talk to Alfred, the NPC. This script shows lots of features of the language.

Tests features of the language.

All examples work in text mode (for now). Soon the language will be integrated into the engine.

Enjoy! wink


(61 replies, posted in General)

Let's introduce some news.

Making a programming language is no easy task. The progress on the project is not graphical and, sometimes, not easily conveyed (although you can follow the project on github). That said, I decided to communicate more often about our latest developments, so you can see how we're moving and provide feedback that may influence further developments.

This is what you can expect:

Language design

SurgeScript is a programming language designed to address specific needs of game development and interactive apps creation. It is lightweight and has a C-like syntax. Originally built for the Open Surge Engine, it is easy and fun to use, yet powerful enough for experts. It may be embedded into any C project.

Main features:

- Object oriented programming language: SurgeScript allows users to write code for discrete entities called "objects". Unlike other languages on the market, SurgeScript embeds a state machine within the objects. This is very helpful for game development, making things really easy for developers.

- Component-based approach: users can create complex objects and behaviors by means of composition. While one object may describe a physical entity on your game, another may describe a behavior that can be attached to game objects. Users may compose those. Unlike other languages on the market, there is no inheritance. SurgeScript favors composition over inheritance.

- Object design: objects define a set of variables, states and functions. Variables may be modified from within the objects themselves. Only one state may be active at any given time. Functions are exposed to the outer world, and any object may call exposed functions.

- Objects do not mess with each others' internals: this is a golden rule. In order to promote low coupling and high cohesion, SurgeScript asks users to define an API for each object. The internals of an object may only be modified through API calls, or from the objects themselves.

- Built-in hierarchy: unlike other languages on the market, SurgeScript features a built-in parent-child hierarchy for the objects. Objects may be created at anytime (during runtime) and are subject to this hierarchy. This is a know pattern on the computer graphics world and it is very useful for developing games and creating interactive apps.

- Type system: SurgeScript is a dynamically typed language. Five basic types are available: string, number, boolean, object and null.

- C-like syntax: constructions like if, while, variable assignments, function calls and so on are all available.

- Automatic garbage collection: unneeded (unreachable) objects are automatically discarded from memory.

More news coming soon. wink


(1 replies, posted in Off-topic)

hey, we do hope to hear more about your music.

You have to ask the developer about that.


(53 replies, posted in MODs)

hey, any news on the project?


(1 replies, posted in MODs)

it's nice man, but you could design your own levels.

KZR wrote:

Meanwhile, how do I get started with replacing the routines?

Well, that's the challenge.

You'd need to know C and the graphical API of your preference. I don't know which graphical API you would use, so you'd need to study that. If you decide to do it, I can guide you through the specific routines of Open Surge (what they do, and so on). Then you could replace the graphics module and let Allegro do the rest (input, and so on).

man, that's really cool.

One of the things you could try, if it suits you, is to replace the rendering routines by accelerated ones on core/video.c and core/image.c. While accelerated routines don't get implemented officially, perhaps you could maintain your own parallel build of the engine, thus benefiting everybody. We could give you support.

hey, let us see some screenshots!


(61 replies, posted in General)

Race the Hedgehog wrote:

But thinking about it, the new engine will have a new scripiting system, so programming anything in the old one won't have much use later.

Well, you could use the old API and it will still work. The thing is, the new API won't interact with the old one.


(6 replies, posted in MODs)

ah, I see it. Can you reproduce the issue on a clean version of the engine and send me the files?


(61 replies, posted in General)

Race the Hedgehog wrote:

Another thing that is bugging me out, if I want the player to do a diferent animation everytime he's in the air, there will be a slight delay and the first frame won't be from the desired animation.

Are you changing the animation via scripting?

KZR wrote:

maybe those could work as separate objects?

Good idea.