Nordenfelt 0.2 has a little secret:

Try to NOT beat the end boss for at least two minutes and the world ends!

This "bug" has a simple reason: the level background is finite. This is a problem for boss fights which last longer than expected. After pondering a while and some talk with kapiezi I came up with a few solutions which I want to show you here.

Stop Scrolling While Fighting The Boss

This solution is easy to implement but may destroy the illusion of flight. It depends on your ship type as well as on the boss type. It will be fine if you're controlling a helicopter, jump jet or a medieval dragon. All these avatars can hover above a position. However, authentic war planes can't (WWII and before) and therefore should not be used for scroll stopping levels.

The boss itself may be immobile, e.g. a big turret. This is a good reason to stop scrolling. Nevertheless, keep the type of your player ship in mind.

Let The Boss Commit Suicide When The Level Ends

That sounds even simpler than the former idea. A timer or spatial trigger is enough here to solve the finite level problem. The player will be happy to. She just has to wait for the boss to explode. How can we compensate that? Well, the boss may become more angry, fire more bullets or move faster over time. The rage should ramp up to impossible-to-master difficulty when the level ends. A little humble but it should work.

The Level Restarts When You Reach The End

This is similar to letting the boss destroy itself. Level length and scroll speed define the time frame within the level has to be won. Otherwise it has to be replayed. I'm not a friend of this. If the finite level length is the only reason for a time limit it should not be used. IMO this is bad game design.

Repeat The Background

The background can be repeated until the boss is defeated. On the one hand this eliminates the need for suicide watching the boss, punishing the player with restarts or halting the flight at all. On the other hand it may puzzle the player when she's entering the level again.

Repeatable Patterns

This is Nordenfelt's solution to the problem. It has the advantages of a repeating background with a low loop-awareness factor. Take a look at the following image:

level_segmentation

The background is built from segments. It is split into a level part and a boss area. The level part is a simple sequence of background segments. When this sequence passed by the boss area starts. This area consists of one or more segments which will repeat until either the player or the boss dies. So we can start an epic fight over an arbitrary period of time without hand-crafting an endless segment string.

At this point I can imagine two improvements. The first one is applying the composite pattern. This would improve the reusability of already defined segment sequences. It's more work on the programmer's side but may safe time during level design.

The second improvement is data-driven randomization. The background segments have to be like seamless textures. The top edge of each segment should be compatible with the bottom edge of at least one segment, be it the same segment or another one. The compatibility has to be defined somewhere, e.g. in a configuration file. This way the engine itself can decide which segments it should append in the boss area. Compatibility with multiple segments combined with randomness increases the variety of the boss areas.

Take a look at the following compatibility graph example. The segments are the graph nodes and the arrows are unidirectional edges. An arrow pointing from node A to node B means "A can be followed by B". Some nodes can be followed by themselves. Each node has at least one incoming and one outgoing arrow. Nodes without incoming arrows can only be used as starting segment. Nodes lacking outgoing arrows are end segments:

compatibility_graph

I'm wondering if there are further solutions to this problem. This list is just my own brainstorming result. Do you have an other idea how to solve the finite level problem? Let me know.

 

Cheers,
Thomas

 

Comments  

 
#1 2010-10-06 03:31
Some games that I played had the boss just fly/run away after some time. Slight variation on the "suicide solution".

Another possibility would be to just have the level end, as if the boss was destroyed.

Most shumps that I recall playing did stop the scrolling though, e.g. R-Type, Gradius or Wings of Death. Most of them had some time-out non the less. Some just killed the player (e.g. in R-Type level 1 the boss fills the whole height of the screen, and after some time it will begin moving to the left, eventually crushing the player's ship). Others let the boss commit suicide (Gradius IIRC did that). I think Wings Of Death stopped scrolling and had no time out at all. Now that I think of it again, Wings Of Death was a great game! Decent graphics, great music, great gameplay. Have to play it again some time soon :)
Quote
 
 
#2 2010-10-06 04:54
Ikaruga had an interesting take on this: they made it part of a semi-hidden game mechanic in which you get a "title" of sorts for not firing a shot during a level. (Obviously, the bosses need to run away / die / despawn after a time limit if the player never fires.) They actually even disabled shooting entirely for the final level; you're simply expected to survive for the given time.

This sort of objective may have only been fun because of the game's shot-absorbing mechanic, though. Going through the length of a normal shmup while only dodging bullets could get a bit monotonous.
Quote
 
 
#3 2010-10-06 13:22
Quoting Paul:
...Wings Of Death was a great game! Decent graphics, great music, great gameplay. Have to play it again some time soon :)


I love that intro music:

Quote
 
 
#4 2010-10-06 17:14
If the ship is really not supposed to hover over its position, and if your engine allows it, you could make the camera/level rotate or something like that to not stop scrolling while not needing infinite background.
Quote
 
 
#5 2010-10-06 17:34
Quoting Guntha:
If the ship is really not supposed to hover over its position, and if your engine allows it, you could make the camera/level rotate or something like that to not stop scrolling while not needing infinite background.


I'm a little bit puzzled about your idea. Can you provide an example or something?
Quote
 
 
#6 2010-10-06 22:13
I suggest you keep it simple. Especially the last idea sounds like a lot of work, and you could put that time in features that users will notice more than just not having a repeating background while fighting the boss (that should keep them busy anyways or you're doing it wrong
Quote
 
 
#7 2010-10-07 01:44
Quoting Thomas:
Quoting Paul:
...Wings Of Death was a great game! Decent graphics, great music, great gameplay. Have to play it again some time soon :)


I love that intro music:

Well, the ingame music rocks too:
www.youtube.com/watch?v=047SyqHF28c
Quote
 
 
#8 2010-10-07 02:56
Quoting tehlexx:
I suggest you keep it simple. Especially the last idea sounds like a lot of work, and you could put that time in features that users will notice more than just not having a repeating background while fighting the boss (that should keep them busy anyways or you're doing it wrong ;-)


You know, feature creep starts in your head. I always try to start simple, test the new stuff, cut it or alter it when it becomes necessary. Much the same way as you can read here: www.gamasutra.com/features/20050720/gold_01.shtml

Sometimes my sense for perfectionism simply ruins this wonderful plan.
Quote
 

Add comment


Security code
Refresh