Level design guidance needed.

Grit

Well-known member
Hi guys, progress is slow but I'm getting there.
Working on the combat system but
Level design is something I'm yet to work on. Random levels won't work.
I'm looking to have this as my menu screen and stage for the tech demo.
It's to serve as a prologue referencing the animated movie STF2
I don't want the characters feet overlapping the grass but the other way around.
Would like to know how would I go about it?
 

Attachments

  • streetfighteralpha2-thunderstorm-field-australia.gif
    streetfighteralpha2-thunderstorm-field-australia.gif
    821.7 KB · Views: 11
Fglayers are the best things to use when building a stage, you can layer everything like a beautiful cake, in fglayers the way to do this is paying attention to the {z} parameter

fglayer {path} {z} {xratio} {zratio} {xposition} {zposition} {xspacing} {zspacing} {xrepeat} {zrepeat} {transparency} {alpha} {watermode} {amplitude} {wavelength} {wavespeed} {bgspeedratio} {quake} {neon}

So think of every part of your stage as a layer

So if Where the players and enemies are is layer 5
That means if you want the the grass to be Infront of the players feet the grass has to be layer 6

Positive is more forward and eventually foreground so if a layer lets say leaves blowing in the wind has a {z} setting of 900 it will display Infront of most things, if it's a negative set layer lets say -900 its way back in the background, you can layer 100s of stage design elements this way. I will make a visual example when I get back home tomorrow if nobody else does before hand.
 
Fglayers are the best things to use when building a stage, you can layer everything like a beautiful cake, in fglayers the way to do this is paying attention to the {z} parameter

fglayer {path} {z} {xratio} {zratio} {xposition} {zposition} {xspacing} {zspacing} {xrepeat} {zrepeat} {transparency} {alpha} {watermode} {amplitude} {wavelength} {wavespeed} {bgspeedratio} {quake} {neon}

So think of every part of your stage as a layer

So if Where the players and enemies are is layer 5
That means if you want the the grass to be Infront of the players feet the grass has to be layer 6

Positive is more forward and eventually foreground so if a layer lets say leaves blowing in the wind has a {z} setting of 900 it will display Infront of most things, if it's a negative set layer lets say -900 its way back in the background, you can layer 100s of stage design elements this way. I will make a visual example when I get back home tomorrow if nobody else does before hand.
Appreciate the much needed insight into level design, I will have to focus in the panel aswell, I would like boss fights to be 2D.
Goal is to emulate boss fights seen in games like Hollow knight. Where players have to learn the moves.
 
Unfortunately I don't have much time to explain right now, I'll try to edit and explain more in the morning as it's midnight now here in England

kHb4vvY.png


stage layer entity settings, 10 the highesting number is in front, setlayer 9 I used for the players and enemies, setlayer 8 grass is behind the players and enemies and setlayer 7 is the background sky which is furthest away.

I originally thought the stage was just a bunch of still images and not animated, I don't recommend using fglayers for the animations on this particular stage because they are very dynamic,

In my opinion you should make animated entities and use the 'setlayer' command in each entity to layer them up like fglayers,


here's a quick vid of the theory and a demo to play around with.

 
Last edited:
agree with danno here... for animations is best to use entities and spawn them where they need to be... fglayers are great for putting together levels and getting the most colors possible and really its like a clean canvas that you can adorn with layers of which each layer can have its own palette.. thats how i treat my levels and the animations i just go old school and just make entities and spawn the heck out of them xD
 
You can get really creative with it, one of the many aspects of OpenBor I love is that you are only limited by your own creativity really, if you take the time to learn it's an absolutely amazing engine. In the stage you want to make @Grit you could even make a day and night cycle. you can do it so subtly you hardly feel the transition.


I made the grassland stage just using entities, the good thing about using an entity is for example I could randomly change the speed of the grass movement to simulate stronger gusts of wind or use drawmethod tint to change the colour of the grass as random lighting is spawned, you could add rain, bits of grass flying up with each characters jump, you could even use the lighting to connect with Ryu as he does his final dragon punch to scar Sagats chest.

In this specific stage I would only use fglayers to infinitely scroll sprites like the clouds for example and you can even animate fglayers without needing to create an entity but it involves scripting, the more advanced you want to animate fglayers the more advanced to script, I would not focus on animating fglayers just yet though so instead just use fglayers for scrolling.

With a combination of stage fglayers and setlayers inside of an entity you could make some fascinating stuff.
 
here's a quick vid of the theory and a demo to play around
Really appreciate the help, quick question about the tech demo seen above, are they able to move up and down or are they restricted like in STF2?

i just go old school and just make entities and spawn the heck out of them xD
What's old to you is new to me, I will cover this once I'm done with one hurdle of character.
You can get really creative with it, one of the many aspects of OpenBor I love is that you are only limited by your own creativity really
True, once I get a firm grasp of custom scripts, slams and level design. They will match what I'm doing with gameplay.
The attacks and impact are where I want it but I feel like it could be better, I'll upload a video soon.
I'm trying to keep it very simple.

Capcom pocket brawl is a nice example of what Boss battles will be like.
In the stage you want to make @Grit you could even make a day and night cycle. you can do it so subtly you hardly feel the transition.
The stage is based on the animated movie where Ryu beat Sagat, basically the game open to that fight immediately like in Xmen clone wars on 16 bit where the game just start.
It's to give player and idea of the fight to come.
 
Last edited:
In the stage you want to make @Grit you could even make a day and night cycle. you can do it so subtly you hardly feel the transition.
That stage is amazing. It's one of the stage which teached me how to work with fglayers :)

Talking about transition, if you plan it right, you can make some cool effects. Since I am not using entities, all the layers must use the same palette on my example and I using a simple palette change:

Jump to 0:28

 
are they able to move up and down or are they restricted like in STF2?

In the demo I posted they are restricted to 2D, in levels.txt pay attention to z 210 210

Python:
set Australian OutBack
skipselect guile
credits 1
lives   1
cansave 0
nosame  1
noshare 1
disablegameover 1
disablehof 1
# ===== | ===== #

z   210 210
file    data/levels/aus.txt


JpQpDRG.png


z {zmin} {zmax} {BGheight}

  • Changes the location of stage boundaries.
  • {xmin} is how high up entities can walk. It starts at the top and works down, so larger numbers mean less room. Defaults to 160.
  • {xmax} is how far down the character can walk. It also goes down from the top. Defaults to 232.
  • {BGheight} changes where the bottom of the background is drawn. Defaults to 160. By changing this value, you can make the background match an altered {xmin}.
  • This can be set once per level. You can change it between two stages. If you need to change it during a stage, you should combine it with the “wall” command in the stage itself.
  • You can spawn entities outside of this range, but once they enter the playing field they can’t escape again.
I can change Z so its not restricted like SF2 for example

z 180 235
file data/levels/aus.txt

4hWVtth.png


so it looks like this in game


but as you can see it looks off and strange because of the artistic perspective of the stage, the background grass looks further into the distance.
you can add more layers of background grass to fix the perspective but you'll find artistically if you do that the stage has been converted out of it's original 2D design and will look different to what you wanted.


design and planning are crucial in stage design, changing a stages original intended layout takes some artistic skill.
 
In the demo I posted they are restricted to 2D, in levels.txt pay attention to z 210 210
This is great, I'll add duck like they did in Battle toads back in the day, this will come in hand for boss fights

That stage is amazing. It's one of the stage which teached me how to work with fglayers :)
Loved this stage since I first saw it. I have an idea of how to layer it in a way that the feet are always behind the grass.

Talking about transition, if you plan it right, you can make some cool effects. Since I am not using entities, all the layers must use the same palette on my example and I using a simple palette change:
I think I'll try fglayers with this level. Entities play a huge role and will l come in effect later, but seeing how you use zoom, got me thinking of adding zoom to the level like Neo Geo Double Dragon.

I don't even play Avengers game, I just marvel at it. It goes beyond what I'm trying to accomplish so I glad my goals are attainable in OpenBOR and ChronoCrash.

but as you can see it looks off and strange because of the artistic perspective of the stage, the background grass looks further into the distance.
you can add more layers of background grass to fix the perspective but you'll find artistically if you do that the stage has been converted out of it's original 2D design and will look different to what you wanted.
I downloaded a ton of stages and will piece them together in the most natural way.
Will post some of them with characters in it to show what I'm going for.
design and planning are crucial in stage design, changing a stages original intended layout takes some artistic skill
This speaks to everything I'm doing, stages, character and gameplay.
 
agree with danno here... for animations is best to use entities and spawn them where they need to be... fglayers are great for putting together levels and getting the most colors possible and really its like a clean canvas that you can adorn with layers of which each layer can have its own palette.. thats how i treat my levels and the animations i just go old school and just make entities and spawn the heck out of them xD
Entities are great level animations but optionally we can alternate between layers using level update scripts. I don't recommend it for complicated effects, but for simple sprite changes which have around 2 or 3 frames it works very well, plus it consumes less resources than loading/spawning entities and can have all the benefits of the fglayer/bglayer features.

Code:
//changelayerproperty(type, id, property, value)
changelayerproperty("fglayer", 0, "enabled", 0); //DISABLE FGLAYER ID 0
changelayerproperty("fglayer", 1, "enabled", 1); //ENABLE FGLAYER ID 1

In this level I'm using it for the lights and lava at the background. In my case it's better than creating a light entity and spawning a lot of them along the level since I can cover the whole level with a unique sprite having all the lights, alternating between only 3 frames.

 
I'd like to think I'm not too shabby at envronmental transitions. Here's a couple of examples:


.

"Shabby" is an understatement. Admittedly I got distracted by those beasts practicing judo, grappling does add depth.
I can see Fuuma on his way to the boss, then the fight take place as the sunsets.
The stage with Terry speaks for itself.
I always wanted to use fighting game characters for a beat'em up since they more detailed then your average beat em up character.
I wasn't planning of having day and night cycles. My initial idea for the credits was to do something like in LOTD but now I'll replicate something I seen in DMC 3,
The credits run while you fight forever, that's where the fight will go into the day/night cycle since the credit list will be long.
I can cover the whole level with a unique sprite having all the lights, alternating between only 3 frames.

I like this idea since I'm into static stages like in Ninja Masters. I'm playing Sorx just looking at all the bells and whistles that went into the game.

The levels I have in mind are more like set pieces than levels where the player walk as per norm since the combat takes center stage but I will have those levels in it.

Ryu isn't dressed for the streets but I came up with a way to support that in game.
 
The only advice I would give is keep it creative but simple and try to stick to the original goal in mind, the problem with me personally is at first I lacked skill to be creative with the engine, then I gained enough skill to be creative, now I struggle to finish anything because I keep adding more and more as go.

It's not just OpenBor, it's the same with everything in my life, oil painting, music, sculptures, I've never finished any of them not to the level I'm satisfied anyway. I've been told keep it creative but simple and stick to goal.
 
The only advice I would give is keep it creative but simple and try to stick to the original goal in mind, the problem with me personally is at first I lacked skill to be creative with the engine, then I gained enough skill to be creative, now I struggle to finish anything because I keep adding more and more as go.

It's not just OpenBor, it's the same with everything in my life, oil painting, music, sculptures, I've never finished any of them not to the level I'm satisfied anyway. I've been told keep it creative but simple and stick to goal.
Join the club. Reminds me of when I use to sketch something and if a finger was out of proportion, I'd start from scratch.
I think the best way for us all is to string together a list of short term goals.
Sorx does something amazing with 3 in 1 games, UDD take SDD and give it structure when looking at the levels.
Night slasher is a mess but when looking at what you done. It's in a better place.
That game is in much need of stability which you can provide.
I had a ton of characters but then I realized the roster needs to be cut.
Now I'm just focusing on the stories I think need to be told.
With all the above said keeping it simple is tough.
You seen me all over the place and when you finally see what I settled on you will see it was worth it.
I made it so that anyone can look like a pro doesn't take much skill to perform the moves

If you can't finish your project, reach out the team. My goal is a playable demo by the end of the year.

But how do I make it so the game just go to this stage and not a start menu when opening the game?
 
But how do I make it so the game just go to this stage and not a start menu when opening the game?

There's command for that and it's called skiptoset. Declare skiptoset 0 in levels.txt and you'll play set 1 directly, well after pressing start that is.

But why do you need this? do you want animated title screen instead?
 
But how do I make it so the game just go to this stage and not a start menu when opening the game?
You can use skiptoset with its value of a specific game mode you are going for. For example, let's say you have 3 game modes which are Arcade, Survival, and Training. If you use skiptoset 0 in levels.txt, it will skip the title screen to the first game mode which is Arcade mode. skiptoset 1 will lead you to Survival mode. Look at how many sets (game modes) you have in levels.txt.

Example:
Code:
skiptoset 1
set Arcade_mode # First game mode # 0
z 160 200
file data/levels/arcade01.txt

set Survival_mode #Second game mode # 1
z 150 230
file data/levels/survival.txt

set Training_mode # Third game mode # 2
z 150 230
file data/levels/training.txt

If you have your select screen (default or custom, not as a level), then no problem. But without select screen, there'd be a problem unless it's done with script.

 
You can use skiptoset with its value of a specific game mode you are going for. For example, let's say you have 3 game modes which are Arcade, Survival, and Training. If you use skiptoset 0 in levels.txt, it will skip the title screen to the first game mode which is Arcade mode. skiptoset 1 will lead you to Survival mode. Look at how many sets (game modes) you have in levels.txt.
This exactly what I would like to do but once completed it should take you to the intro screen.
 
Back
Top Bottom