This is Bananattack.

Tag: shmuptroidvania

It is never too late to be great.

Posted by Overkill on February 2, 2009 at 10:19 pm under Uncategorized

Early on during the last week, me and Toen were having a nice talk about how so many of our projects fell apart due to lack of interest and direction. This led to a bunch of talk about planning, collaboration, and organization, something I’ve always lacked. After some disccusion, he decided to make an entry about how planning is urgent and so often overlooked (especially when working in groups), and specifically in the Verge community,

This inspired me to take a new approach to planning, and begin to write ideas down in detail before actual implementation. I decided, clarity is essential if I ever want to do something longterm. I think this will prevent feature creep, and keep myself from losing focus.

I started outlining general things that I want out of the gameplay, as well as making some level designs for shmuptroidvania. It will be a mix of bullet-heavy shmup action, and platforming with exploration, and the transition between the two modes of will be relatively painless.
 
 
 
But, then for a while during the past week, I just became too stressed out. I couldn’t really deal with the crappy weather, and the monotony of school and responsibilities. Started sleeping in and missing classes, and generally did nothing. It wasn’t until near the end of the weekend that I started to recover from this stress-induced aversion to work.

But I recovered! When I did, I started to piece together some of the final steps for LuaVerge. Got cracking, and finally put in a system for garbage collected resources.

To request a Verge resource be garbage collected automatically, you call a function v3.GCHandle(handle, destructor_name), which returns a reference that will manage this handle’s scoping. When that reference is no longer used, the destructor is called, and the variable is freed. I made this fairly low-level though, so v3.GCHandle have no public variables or any methods on them. They are a simply a mechanism for gc scoping internals. Here is an quick and extremely dirty example of it being used

function LoadImageGC(filename)
    local t = {}
    -- The resource handle, which is accessed from
    t.image = v3.LoadImage(filename)
    -- The returned table has a gc_handle that
    -- manages the garbage collection of this resource
    -- If this escapes scope, the image handle held will become invalidated.
    t.gc_handle = v3.GCHandle(self.image, "FreeImage")
    return t
end

-- A small scope block, allocates an image, and the image
-- will escape scope directly after.
-- Collection will occur on next Lua collectgarbage() event.
do
    local img = v3.LoadImageGC("hero.png")
end

I mainly put this in for OO wrappers, like the vx library, which of course uses it. All handle-style references use it, with the exception of vx.File, since files must be closed by the user anyway (especially if writing), and Verge reuses handles so defered collection could result in some bad issues.

vx.File was something I added today to the work-in-progress build. It basically wraps the Verge File library, which is surprisingly powerful, alongside the string tokenizing functions.

LuaVerge is essentially ready, but I’m withholding release until more tests are done, and vx is successfully updated. We’re getting there really quick! Then shmuptroidvania is back in the foreground.

Anyway, I’m back, and ready to rock through school and game making.

Tags: , , , ,

No comments (make one!)


Resonance Grows Stale, Shmuptroidvania Born

Posted by Overkill on January 3, 2009 at 10:42 pm under Uncategorized

So for a short time I was working on resurrecting Resonance. And I actually found a quick and talented artist, Souly, from Pixelation!

However, shortly after school came around, and violated me with some rough mathematics final exam, so I was too busy to work on it. When I was done, I had the somewhat bad idea to host a competition. This meant no work would be done on Resonance for some time. I honestly needed a break from the stress, and compos were good at that.

Me and Toen made a game called Monster Magnet Meow (I will rehost here later probably). Our Briton friend, Zip, was also trying to help, but it seems like he must have been too busy because he left us with an unfinished map and a few new bugs in the code right before the compo ending. Sadly we had to pull his work out from the submission, which is a shame, but maybe if he reappears we can get him to finish it!
 
 
 
But I have other both good and bad news: my artist got hired by a game company! Which is great for him, since Souly definitely is a deserving of a professional pixel art job. I wish him luck. I haven’t really been in contact in a while, but I’m guessing that he has gotten much busier.

Between losing an artist and generally having it drag on in this way, that probably means the end of Resonance’s lifespan, but I still learned a fair deal. I just think if an idea grows stale like this, it’s better to abandon it and move on.
 
 
 
Then I had the idea to the make a new game style, which I call shmuptroidvania

Shmuptroidvania = shmup (“shoot-em-up” arcade space shooter) + metroidvania

Ever heard of the game Air Fortress?

It was an old NES game that had 2 phases: shmup elements leading up to each fortress and sidescrolling elements to explore and destroy the fortresses. It wasn’t perfect, but it had a fairly awesome idea. This is at least proof of concept that shmups and sidescrollers can live under the same title and work.
 
 
 
Combine this mixed-genre game with the modern popularity of metroidvania games. You get a game with a fair mix of action and exploration.

When in your ship, you cruise forward, dodge obstacles and fight through bullet hell action.

When on land, you can run, hop, and shoot things, while solving puzzles and exploring the lands you’d typically ignore from a shmup. But this is interesting! That giant planet you’re nuking, you don’t really interact much with it normally, but this game plans to change that.
 
 
 
How would I keep backtracking in shmup world less annoying? Two things come to mind.

First, a bunch of branches and alternate routes which popup as you go. You can also turn and run away from an area your shmup reflexes don’t feel ready to face yet with the flick of a button (which spins your ship in the opposite direction and then reverses the cruise direction). I’d also reward completion of shmup areas with a fresh, possibly-less-hectic routes the player can travel.

Second, for lengthy travels, there would be an ability to teleport between places, which would also relieve a bit of annoyance.
 
 
 
Anyway, this was just an idea that recently stuck with me, and I have a feeling I can make it work in ways Resonance just wouldn’t.

This also makes me get two sorts of game styles I’ve been trying to get out of my head for a while, and creates a fresh take on fairly commonly made genres.

Tags: , , , ,

No comments (make one!)