Author Topic: CurtainSpear STG Engine - WIP  (Read 2072 times)

CurtainSpear STG Engine - WIP
« on: September 30, 2011, 07:40:24 PM »
During the last 2 months I have worked on a STG engine similar to Danmakufu called CurtainSpear, mostly because of educational purposes. I know similar projects are around (alive or not). But I don't think anything exactly like this.  Instead of programming the whole thing in native openGL/DirectX (C++) and waste 4 years of my life building basic functionality I decided to go easy modo.

The engine is build on the XNA framework (C#). This means you get A LOT of build-in functions and the game works on both Xbox 360 and PC. Everything is object orientated and you can easily add custom bombs, effects, animated characters, items and levels. Even the menu is fully customizable.

The game runs stable @ 60fps with 6000 animated normal-size bullets on screen (optimizable).

Bullets and enemies are scripted independently. Every bullet/enemy class has a unique ID that needs to be set when calling the CreateBullet()/CreateEnemy() function.

The bullet library has tons of pre-made bullet behavior scripts. In other words, you won't have to create bullet behavior unless you are making something really weird. 

Examples:

  • Bullet that is aimed at player
  • Bullet that moves towards a certain angle
  • Bullet that moves towards a certain point
  • Bullets that zig zag
  • Bullet that wiggle 
  • Bullets that split into more bullets
  • Bullet that circles around player
  • A spawner that spins around a boss and shoots bullets.
  • Lasers

Every bullet type above has optional parameters for wiggle speed, angle offsets, split speed etc.

And even IF you need to create your own type of bullets you will have a large amount of functions that will help you with that.

There is also an Enemy library that includes basic AI like following a player, moving to the center of the screen etc etc. Enemies are scripted using tasks.



=



Spawning enemies is also very easy.



For those interested in a video of some quick (non-)spells I made using the engine (nothing fancy of course).

http://youtu.be/URBt4m5kIDw?hd=1

It's not done yet. Not even close, but you could (in theory) make anything you could also make in Danmakufu. In a proper IDE. 

Not to mention randomly generated spells, yes you heard me right, actual good looking randomly generated spells.

A list of things still to do:

More library functions
Spell transitioning
Probably a lot of changes in the interface
Way more pixel shaders ( I got a few in already like the fire effect from SA - Stage 5).  I am also working on a bubble effect surrounding the boss.
Way more general effects (like when a bullets spawns)
And obviously start changing some of the stolen graphics...
















Beef Owl

  • Why yes, owls do yield beef:
  • It is known as The Strongest White Meat
Re: CurtainSpear STG Engine - WIP
« Reply #1 on: October 02, 2011, 01:31:56 AM »
Looks very nice, and while I myself don't have any interest in it, I'm sure plenty of people will love the built-in functions and the 360 compatibility. Looking forward to seeing more. :)

(It looks similar enough to Danmakufu that it would probably be simple to transition from one to another, too)

bennelsey

  • Touhou fan-game Developer
  • Will make Touhou fan-games for food
    • EastGap
Re: CurtainSpear STG Engine - WIP
« Reply #2 on: October 02, 2011, 01:56:14 PM »
Looks very nice, and while I myself don't have any interest in it, I'm sure plenty of people will love the built-in functions and the 360 compatibility. Looking forward to seeing more. :)
This, built in functions definitely helps, and frankly i've been trying to decide what kind of bullet types i'd need in a danmaku game - i'll make use of the list you gave lol

but there's something bugging me about spawning enemies:
http://i51.tinypic.com/5p2wzp.png
^ is it just me or does this code check for a particular time in the entire stage, even after it has already spawned something
i.e. if you wanted to spawn 100 enemies in 100 different time points in the stage, you'll be checking 100 times every frame for the entire stage

well it's also possible that you didn't show how to optimize spawning to keep things simple in the example, but yeah i'm just getting worried for no real reason \o/