Plan for FenrirWolf
by Fenrir Wolf · 06/07/2005 (11:26 pm) · 11 comments
I'm still alive! Now, how many .plans have I started like that...?
If you've been wondering about my extended absence, it's mainly due to two things. First, I'm buying a house. So I've been uber-busy trying to finalize everything, while staying over at my mother's temporarily until the place is ready. Sadly, it means no high-speed internet until sometime in July. Sob. I hate dialup; Worse, this USRobotics modem is glitchy and tends to crash after an hour or two of constant use.
The other reason? Well, still can't talk about that, but let's just say it's related to Torque and it's very, very cool. :)
I see that a lot has changed on here! Brand new, slick GG site, all new search system, and some new content packs too I see. Awesome stuff that I can't wait to check out/play with once I get everything situated with the new home. I know I've probably missed a lot in the forums and on IRC!
Well, after over two months (!) of being unable to work on my personal projects, I've managed to squeeze in some very productive time in the last two days.
First off, I've updated my code base to Torque 2D 1.0.2. This is Melv's latest patch to the T2D engine which fixes a number of things. I also merged in my own code mods. (Such as the ability to retrieve tile layer pan position, ability to set a mounted object rotation offset, and a new "control layer" flag for a tile layer -- More on that later.) One of the biggest changes I've made is to add a true scaled font object. T2D's font system is pretty versatile, but it does not handle auto-scaling fonts based on resolution. While this is normally fine, as you don't want to scale text used in HUDs, this just doesn't do for in-game text that you want to interact with the gameworld. (ie: Score or "1-Up" messages that float above enemies or icons.) There's a resource on GG that adds a fxTextObject2D control, but it uses Torque's built-in font system which, as I mentioned, doesn't auto-scale. After some code hacking, I changed it so that it uses a font texture which gets auto-scaled in relation to the T2D camera.
That was the last needed piece in order to make a nice, nifty new HUD that will look great at any resolution. I don't care if there are a few scaling artifacts -- It's just score and extra-life information.
Now, on to actual game changes; I ripped out the simple easy/hard difficulty and replaced it with a scaling system that uses heuristics to calculate the "onscreen difficulty." Basically, this is technology I developed for Adagio and just applied the same algorithms to Cloudburst. It's pretty simple, in that it computes difficulty based on the number of enemies and bullets onscreen, and adjusts for several other factors. (Player's power up level, how long they've been alive, etc.) You can set difficulty, and the game will attempt to keep the onscreen difficulty rating at that level, or lower. So, in other words, setting game difficulty gives the engine an upper-water mark to use for estimated difficulty. Enemies that don't pass the mark aren't spawned. I have to say, it works well. As an added bonus, it linearly scales the difficulty up the higher your survivability factor increases (via time-alive and powerups). I was rather impressed with how Gradius V utilizied this in order to slowly ramp up the action for a good player, while toning it down when you died so you weren't immediately swamped as you would be with a fixed difficulty.
I also modified the tile system somewhat, and added a new flag to always toggle OnTileScript() events whenever a tile scrolls onscreen. This lets me paint enemies on the control tile layer much like one would paint terrain or buildings; The game automatically spawns the appropriate enemy type. This is a lot better than having to ctrl-click on every tile and typing something into the script event line, as now as the tile appears it fires the event which reads the tile type at that location and spawns the appropriate thing. (Such as a powerup, enemy, or boss.) I also fixed a few problems with the tile and particle editor save dialogs; Annoying little issues about it not saving the filename I used for loading and so on.

Also a new major addition to the engine is a BulletML-style definition system (written entirely in TorqueScript) which gives me very granular control over how enemies generate bullets. If you are a shmup fan, then you probably have played at least one PC-based shmup that uses BulletML. (For example, rRootage or Torus Trooper.) Using this new system I have been able to create all kinds of wickedly complex bullets; Bullets that suddenly change behavior, bullets that spawn new bullets, or that fly in really complex patterns. I even managed to create the dreaded 90-degree laser which is my personal bane in a lot of shmups. (ie: The sort of lasers that fly straight, but when you pass them, make a sudden 90-degree turn in your direction. Worse, I can, if so desire, configure mine so they will continue to make 90-degree turns until they either fly off the screen, or kill you. Heehee.) So far, it's just a handful of behaviors that the bullet system implements, but they can be combined in almost limitless ways. There's even a recursion-limitor so that bullets won't spawn endless droves. (Configurable, in case I do want endless droves...)
I'm scrapping almost all of the existing enemies. I've been studying a lot of the more manic shmups (Cave and Treasure has been great for inspiration), and I'm going to modify the enemies of level one so that they are more dynamic and complex. Right now, they move in rather simple, uninteresting patterns that are easy to dodge. I am also changing the boss so that it has a few extra patterns that it will execute randomly, adding a bit of unpredictability to boss fights. Plus, adding a few mid-sized enemies that are "chunky." ie: Are made of multiple pieces that can be shot off.
Shmups might look complex, but in reality the great shmups are fairly simple. They have a small set of gameplay rules and stick to them consistantly. Some games focus on strategy (such as the R-Type games) while others rely more on high speed finger-twitching skills (such as most Cave shooters), while others do a good job at mixing the two (most Treasure games, such as Ikaruga). Cloudburst currently plays like neither right now, and my goal is give it a bit of a manic feel. It's not exactly normal to have a side-scroller be manic, but I've seen a Cave shmup do it so it's possible.
Next on the list? I really want to work my fxDeformableObject2D idea. I also want a fxQuadtrailLaser2D -- a simple series of quads that leaves a trail. I'm hoping I can enlist some aid to create a nice, new rock'n sound track. Something of a mix of metal and synth...
Anyway, just wanted to touch base with folks and let 'em know I haven't run away or entirely been idle. :)
If you've been wondering about my extended absence, it's mainly due to two things. First, I'm buying a house. So I've been uber-busy trying to finalize everything, while staying over at my mother's temporarily until the place is ready. Sadly, it means no high-speed internet until sometime in July. Sob. I hate dialup; Worse, this USRobotics modem is glitchy and tends to crash after an hour or two of constant use.
The other reason? Well, still can't talk about that, but let's just say it's related to Torque and it's very, very cool. :)
I see that a lot has changed on here! Brand new, slick GG site, all new search system, and some new content packs too I see. Awesome stuff that I can't wait to check out/play with once I get everything situated with the new home. I know I've probably missed a lot in the forums and on IRC!
Well, after over two months (!) of being unable to work on my personal projects, I've managed to squeeze in some very productive time in the last two days.
First off, I've updated my code base to Torque 2D 1.0.2. This is Melv's latest patch to the T2D engine which fixes a number of things. I also merged in my own code mods. (Such as the ability to retrieve tile layer pan position, ability to set a mounted object rotation offset, and a new "control layer" flag for a tile layer -- More on that later.) One of the biggest changes I've made is to add a true scaled font object. T2D's font system is pretty versatile, but it does not handle auto-scaling fonts based on resolution. While this is normally fine, as you don't want to scale text used in HUDs, this just doesn't do for in-game text that you want to interact with the gameworld. (ie: Score or "1-Up" messages that float above enemies or icons.) There's a resource on GG that adds a fxTextObject2D control, but it uses Torque's built-in font system which, as I mentioned, doesn't auto-scale. After some code hacking, I changed it so that it uses a font texture which gets auto-scaled in relation to the T2D camera.
That was the last needed piece in order to make a nice, nifty new HUD that will look great at any resolution. I don't care if there are a few scaling artifacts -- It's just score and extra-life information.
Now, on to actual game changes; I ripped out the simple easy/hard difficulty and replaced it with a scaling system that uses heuristics to calculate the "onscreen difficulty." Basically, this is technology I developed for Adagio and just applied the same algorithms to Cloudburst. It's pretty simple, in that it computes difficulty based on the number of enemies and bullets onscreen, and adjusts for several other factors. (Player's power up level, how long they've been alive, etc.) You can set difficulty, and the game will attempt to keep the onscreen difficulty rating at that level, or lower. So, in other words, setting game difficulty gives the engine an upper-water mark to use for estimated difficulty. Enemies that don't pass the mark aren't spawned. I have to say, it works well. As an added bonus, it linearly scales the difficulty up the higher your survivability factor increases (via time-alive and powerups). I was rather impressed with how Gradius V utilizied this in order to slowly ramp up the action for a good player, while toning it down when you died so you weren't immediately swamped as you would be with a fixed difficulty.
I also modified the tile system somewhat, and added a new flag to always toggle OnTileScript() events whenever a tile scrolls onscreen. This lets me paint enemies on the control tile layer much like one would paint terrain or buildings; The game automatically spawns the appropriate enemy type. This is a lot better than having to ctrl-click on every tile and typing something into the script event line, as now as the tile appears it fires the event which reads the tile type at that location and spawns the appropriate thing. (Such as a powerup, enemy, or boss.) I also fixed a few problems with the tile and particle editor save dialogs; Annoying little issues about it not saving the filename I used for loading and so on.

Also a new major addition to the engine is a BulletML-style definition system (written entirely in TorqueScript) which gives me very granular control over how enemies generate bullets. If you are a shmup fan, then you probably have played at least one PC-based shmup that uses BulletML. (For example, rRootage or Torus Trooper.) Using this new system I have been able to create all kinds of wickedly complex bullets; Bullets that suddenly change behavior, bullets that spawn new bullets, or that fly in really complex patterns. I even managed to create the dreaded 90-degree laser which is my personal bane in a lot of shmups. (ie: The sort of lasers that fly straight, but when you pass them, make a sudden 90-degree turn in your direction. Worse, I can, if so desire, configure mine so they will continue to make 90-degree turns until they either fly off the screen, or kill you. Heehee.) So far, it's just a handful of behaviors that the bullet system implements, but they can be combined in almost limitless ways. There's even a recursion-limitor so that bullets won't spawn endless droves. (Configurable, in case I do want endless droves...)
I'm scrapping almost all of the existing enemies. I've been studying a lot of the more manic shmups (Cave and Treasure has been great for inspiration), and I'm going to modify the enemies of level one so that they are more dynamic and complex. Right now, they move in rather simple, uninteresting patterns that are easy to dodge. I am also changing the boss so that it has a few extra patterns that it will execute randomly, adding a bit of unpredictability to boss fights. Plus, adding a few mid-sized enemies that are "chunky." ie: Are made of multiple pieces that can be shot off.
Shmups might look complex, but in reality the great shmups are fairly simple. They have a small set of gameplay rules and stick to them consistantly. Some games focus on strategy (such as the R-Type games) while others rely more on high speed finger-twitching skills (such as most Cave shooters), while others do a good job at mixing the two (most Treasure games, such as Ikaruga). Cloudburst currently plays like neither right now, and my goal is give it a bit of a manic feel. It's not exactly normal to have a side-scroller be manic, but I've seen a Cave shmup do it so it's possible.
Next on the list? I really want to work my fxDeformableObject2D idea. I also want a fxQuadtrailLaser2D -- a simple series of quads that leaves a trail. I'm hoping I can enlist some aid to create a nice, new rock'n sound track. Something of a mix of metal and synth...
Anyway, just wanted to touch base with folks and let 'em know I haven't run away or entirely been idle. :)
About the author
Recent Blogs
• Plan for FenrirWolf• Plan for FenrirWolf
• Plan for FenrirWolf
• Plan for FenrirWolf
• Plan for FenrirWolf
#2
Looking forward to seeing what you come up with next!
06/08/2005 (10:15 am)
Top stuff :) I loved Cloudburst, and it has inspired to do my own T2D shooter. Going pretty well so far, but not upto your standards yet :)Looking forward to seeing what you come up with next!
#3
06/08/2005 (10:20 am)
May I recommend getting a new modem? They're pretty cheap these days... Checking Best Buy (first site I thought of) I see prices starting at $40. I'm sure you could find cheaper with a bit of digging.
#4
06/08/2005 (10:33 am)
Hey, Cloudburst looks as if it has gotten a facelift too- i likey new enemy colors very much.
#5
06/08/2005 (11:24 am)
Sounds great, can't wait to see the new bullet system in action
#6
06/08/2005 (2:56 pm)
this is just an idea -- you don't have to go with this, just brainstorming here -- but what if your fighter jet fired ballet dancers instead of rockets? wouldn't that be cool?
#7
06/08/2005 (3:14 pm)
Sounds like you're getting into Parodius territory there Josh :)
#8
I would also like to thank you for bringing up BulletML! I had never heard of the thing, and if converted to T2d would make a wonderful toy to play with! Of course, if everbody integrated it, they'd kinda steal the innovation factor of the feature...But your art and gameplay are pretty high standard, so I'm not too worried about your success.
Ever thought about creating the shmup content pack for T2D?
With dynamic enemy placement and infinite bullet style variations, sounds like it would usher in a new era for Shooters.
06/08/2005 (5:06 pm)
Cloudburst showed lots of promise, can't wait to see what you have in store!I would also like to thank you for bringing up BulletML! I had never heard of the thing, and if converted to T2d would make a wonderful toy to play with! Of course, if everbody integrated it, they'd kinda steal the innovation factor of the feature...But your art and gameplay are pretty high standard, so I'm not too worried about your success.
Ever thought about creating the shmup content pack for T2D?
With dynamic enemy placement and infinite bullet style variations, sounds like it would usher in a new era for Shooters.
#9
@Josh: Yes, I'm here, if a bit undead and on dialup. Argh. :) LOL! I love the ballerina idea -- that'd make an awesome easter egg or cheat mode...
@Philip: Hey, there's NEVER enough 2D shmups! Spread the love, and don't worry about competeting, there's room enough for all of us. And yes, someone else who knows about Parodius!
@Mark: Funny thing is, this IS a new modem! I will likely be taking it back, if I can find the receipt. ^_^
@Nauris: Yay! Yes it has, all new pinky/purply bullets, and those dull lasers are gone too. Hey you can't beat ultra-hardcore action and spaceships mixed with pink. ;)
@Matt: Yes, and folks like you taught me the power of ScriptObjects, which is what I use as the data backend. Heck, your database would actually work good as a glue! Hmmmm!
@Simon: Yes, BulletML is a lot of fun! There's all kinds of parsers for it, even a Lua interpreter now. I recommend "sdmkun", which is a stand-alone BulletML explorer style application that features nearly a hundred different sort of bullet descriptors -- It's fun and a great source of inspiration for new bullet types, as it features just about every style of spread from Japanese shmups. (Plus a bunch of fan-made variations.) Great stuff!
Hey, I really dig that content pack idea! A lot of my code is fairly generic, and it could be used elsewhere fairly easily. (Say, for a vertical scroller.) Hmmm, I need to think about this. :)
06/08/2005 (9:23 pm)
(Ack! Seems IE ate my last reply, I will try to reconstruct it the best I can...)@Josh: Yes, I'm here, if a bit undead and on dialup. Argh. :) LOL! I love the ballerina idea -- that'd make an awesome easter egg or cheat mode...
@Philip: Hey, there's NEVER enough 2D shmups! Spread the love, and don't worry about competeting, there's room enough for all of us. And yes, someone else who knows about Parodius!
@Mark: Funny thing is, this IS a new modem! I will likely be taking it back, if I can find the receipt. ^_^
@Nauris: Yay! Yes it has, all new pinky/purply bullets, and those dull lasers are gone too. Hey you can't beat ultra-hardcore action and spaceships mixed with pink. ;)
@Matt: Yes, and folks like you taught me the power of ScriptObjects, which is what I use as the data backend. Heck, your database would actually work good as a glue! Hmmmm!
@Simon: Yes, BulletML is a lot of fun! There's all kinds of parsers for it, even a Lua interpreter now. I recommend "sdmkun", which is a stand-alone BulletML explorer style application that features nearly a hundred different sort of bullet descriptors -- It's fun and a great source of inspiration for new bullet types, as it features just about every style of spread from Japanese shmups. (Plus a bunch of fan-made variations.) Great stuff!
Hey, I really dig that content pack idea! A lot of my code is fairly generic, and it could be used elsewhere fairly easily. (Say, for a vertical scroller.) Hmmm, I need to think about this. :)
#10
06/08/2005 (10:47 pm)
Hum... BulletML looks like a good fit for what we're doing... sort of... i'll have to check it out. Great plan!
#11
I plan on licensing some music for my game. Although I don't expect to actually make any money from the game, as I'm only looking at about $15 - $20 a track, I reckon I can add 2 or 3 of them to the game without breaking the bank. Especially as the UK/US exchange rate is so good at the moment :)
I shall have to examine BulletML as well.
06/09/2005 (12:26 am)
Oh, almost forgot.I plan on licensing some music for my game. Although I don't expect to actually make any money from the game, as I'm only looking at about $15 - $20 a track, I reckon I can add 2 or 3 of them to the game without breaking the bank. Especially as the UK/US exchange rate is so good at the moment :)
I shall have to examine BulletML as well.

Torque Owner Joshua Dallman
Default Studio Name
If I had a dime for every time I heard this... ;)