A lot has happened over the past year. I wasn't sure if I should make a journal or just a game post, but we'll do a game post for now.

Ghost Song

Some of you Stencylers who have been around for a while may remember last year when I was making a Metroid-style flash game in Stencyl. It was called Ghost Song, and after months of posting about it in my thread (here it is for historical purposes, but please don't bump it unless you have a reason) I decided the game wasn't performing well enough in terms of framerate, even back then as a 768x480 game. Beyond that, there came a point when I decided I wanted more graphics, more sounds and music, and voice overs, and the whole nature of it being a flash game just wasn't enough for me anymore. Finding that, at the time, Stencyl didn't seem to be up to the task, I launched a Kickstarter with the goal of working full time on the game while having a friend help me program it in Unity. Incidentally, the gameplay videos in the Kickstarter listing are all taken from the original Stencyl flash version of the game.

The Kickstarter was a big success, and we went forward as planned.

Over time, the realization set in that the process was just too difficult. We weren't progressing fast enough, and I felt very creatively frustrated by the need to communicate every small detail and change to a programmer and wait to see the next version. While my programmer was very smart and capable and a great person, frankly, the process was driving me insane. It was as if I was an artist trying to sculpt a very particular sculpture, and I had to do it by mail.

Because I care about the project very much, and I care about my obligation to the backers very much, there came a point when I started to look at my options in order to finish the game in a more reasonable time frame and with my sanity intact.

Can Stencyl be used to make a high res game?

At the time, Stencyl 3.0 was in beta (which I had access to as a subscriber) and had relatively recently adopted the Open FL framework when I decided to load some Ghost Song assets into it and try the Windows stand alone export. I had recalled it being somewhat buggy in the past (I'm not clear now if this was true, or if it only seemed buggy because I was attempting to run things I had built up only testing in Flash -- and as we know, some things that may not break something in one export may break something in another), but with the new engine in place and fond memories of building things in Stency, I decided to do some tests.

The very early tests mostly involved loading up the character and spawning lots of graphics and see what'd happen, and then putting in an enemy or two, and it just built from there. Somewhat to my surprise, I never ran into any deal breaking bugs or brick walls, and anything within reason I tried doing, worked, and worked with 60 fps, even on modest specs.

I kept trying to see what I could and couldn't do. Here's a very interesting test that is very telling about how much more powerful stand alone is than some of you might think. I created a spark spray. Each of these sparks are actors and are in the shape of a ball. Each one is being stretched into an oblong shape by the game engine, rotated as it falls, and, most brutally, colliding with the ground and shrinking as it continues to collide. You'd expect smoke to come from your hardware.

But really, no smoke. 60. I admit I could slow the framerate if I added too many more, but if I turned off the ground collision, I could add five times this many without shaking the framerate. Stencyl is more capable now than I ever imagined.

Then I'm combining elements.

Tuo even helped me put in a really brilliant, seamless, and perfect scene switching system to connect up the map.

Beyond all this, though, there was still something missing that I needed to have happen. In the new version of Ghost Song there needed to be some more comprehensive/flexible backgrounds and foregrounds, scrolling in parallax, and I needed a way to do this in Stencyl. The premade "backgrounds" system in Stencyl, as most of you know, is pretty basic and there's only so much you can currently do with it.

I knew what I really wanted to do was be able to scroll entire layers of actors, and use actors as my foregrounds and backgrounds. If I could do this, then I could really do anything. I had been in contact with Jon during all of this, and I told him about this desire, and, much to my surprise, he came up with a solution rather quickly. It's not currently part of the Stencyl application (in terms of being in the menuse or toolbars) and can only be accessed by using a code block, but it's very easy and for me has worked perfectly. I don't know if I'm supposed to be talking about this feature or not, since it's so preliminary, but it's really hard to talk about my game without talking about it, because doing this is absolutely vital to creating comprehensive parallax environments. Considering how great it is, I'm sure this feature will be fully integrated sooner or later. (This is just my own speculation, it's not official)

Anyway, it's not only surprising how well this works, but how unshakeable it is. Here's an example of an environment using 25 layers, and many gigantic actors.

These all scroll in parallax. The clouds spawn with random values off the left side of the scene and drift right, the varying speeds of the clouds and seamless nature of the edges makes the fog sort of dynamically roll in and out, sometimes thicker, sometimes thinner.

All of this has occured over the past couple of months. In that time I've been talking to Jon, who has been very helpful, as well as other Stencyl commandos, and now feel comfortable saying that the game should be absolutely fine as a Stencyl project, and it's now planned as such. That is to say the Windows version. I may have ports made for consoles down the line, I am still exploring options.

If you want to make a graphic rich 2D game and think Stencyl isn't capable of it, you may at least run some tests and see what you can see. I've never been much of a programmer, (I'm really not one at all) I ain't that smart, and all of this (with few exceptions) I've accomplished by employing very basic Stencyling fundamentals.

Thank you for sharing this, people should know what Stencyl's capable of with non-flash, non-phone exports, and it's barely been explored at all.

Really looking forward to playing the game once it's done, will probably be one of the most impressive Stencyl projects in existence for many years.

“If you wind up with a boring, miserable life because you listened to your mom, your dad, your teacher, your priest, or some guy on TV telling you how to do your shit, then YOU DESERVE IT.”― Frank Zappa

I joined Stencyl just as the kickstarter was reaching its peak, I know you have heard this a million times but the visuals you produce are absolutely mind-blowing, its hard to describe the effects in some of the scenes above but they are almost photo realistic while still feeling like a console game. It really is like taking a glimpse into a new world.

Really great to have this project back on stencyl, ill be following your progress with strong interest.

I try not to flat out suggest it, as it seems like something you shouldn't do... but it kinda works like a failsafe.

Always runs 100 times a second, which is unnecessary for many tasks – especially if the game is capped at 60 FPS. So what happens when the game slows down? With an Always event, it's still trying to run the blocks 100 times a second, even if it has to distort time internally to make that happen. With a drawing event, the less frames, the less the logic is run. For some things, like collisions, that might be horrible. For other things, like HUD elements, that seems OK.

I remember your early Stencyl work on Ghost Song and I remember it pushing Stencyl to the limits. Like you I've noticed Stencyl getting better and better at high-performance, so I'm glad to see you back. Ghost Song is looking amazing as ever.