Main Page » My Games » Villainmad »

2010/12/23 (Villainmad): Look, bullets!

Created: / Modified:

Always use secure-HTTP / Unsecure HTTP / Permanent Link

So, here is the latest version. Same system requirements as before. So far, all it has is Lexy flying around on her motorcycle, and bullets which spawn automatically. Move with arrow keys, shift to focus.


There's not much else to say about it, except that I've moved all the Villainmad posts to their own devblog, so instead, let's talk about what I'm thinking of for the game's internal structure.

Level Structure

So, each level is going to be made up of Sequences. Within a Sequence, you can do just about everything else — spawning enemies and bullets, playing and stopping music, advancing to the next level, starting a cutscene/conversation-scene, ending the game, advancing to the next frame, everything a danmaku game does. And they will also have things like if-statements, for/while loops, getting/setting variables, and other such stuff. (And I'm gonna need to come up with every single one of 'em!) They can also take arguments, so you can change the beginning parameters (i.e. you can have a single Sequence for multiple enemies) There will also be functions, which are like Sequences except that they can have return values and they can't go beyond a single frame of animation. Bullets and things which are spawned during a Sequence do not disappear at the end of the Sequence; they persist until they collide with the player or leave the screen. You can also have multiple instances of the same Sequence running simultaneously. Variables can be either be in the scope of a given Sequence ("number of bullets this enemy has spawned"), the current level, or the whole game (i.e. player-speed/health/lives, score). There, I think that's flexible enough to do just about anything!

Everything is handled by Sequences; players will have their own set of Sequences for firing and bombing, and you can also create other Sequences per player to be called by them. Bullets/enemies can have Sequences for when they collide with the player, too, but the default just does the usual damage.

The level backgrounds (Villainmad is going to be entirely 2D,1 I think) are going to be handled in their own set of Sequences. Just a matter of "make background-tiles appear here and here," I guess. I suppose a more advanced game would feature stuff for doing 3D graphics, but I'm not gonna do that right now.

File Format

I will be designing my own file format. I will actually work on the the levels using some sort of human-readable script (Lua, perhaps), and then compile them into a not-quite-so-human-readable format for the game itself; it's going to directly use byte-streams, and use single-byte identifiers for "what we're about to do", so "a 32-bit integer with a value of 27" might look like, I dunno, 0xB20000001B in binary in the file. (A boolean with a TRUE value might be 0xB001.)

Unless, of course, someone knows of an existing open-format I could use instead. I'm not gonna be picky.

It's sure gonna be hard, and it'll take a long while, but it's gonna be fun!

1"Make this one 2D sprite scroll at a different speed from this other 2D sprite behind it" doesn't count.

13 Comments (auto-closed) (rss feed)

John Evans

Sounds good!

(By the way, your footnote refers to "parallax scrolling". ^_^)

Dizzy H. Muffin

I know ;P


I cant wait to play the final version. Can I playtest?


Well all I can say is good luck, an dI hope that it turns out the way you want it to be of course.

Just don't overdo it because I'm sure most of us here can wait until it's done.


i wouldnt mind being a testorz

Dizzy H. Muffin

Heh, I'm nowhere near needing anything resembling testers yet. But thanks!

Formica Archonis


(Runs EXE.)

(Nothing happens.)


Dizzy H. Muffin

/ Modified by Dizzy H. Muffin:

Oh right, you still need to get the XNA Redistributable if you don't have it already.

I mean, I don't know if that's your actual problem, but ...

Formica Archonis

Kimiko Muffin

Oh right, you still need to get the XNA Redistributable if you don't have it already.

That fixed it, thanks!


Sounds like you're making a Domain-Specific Language.

Which you might already know, but if not, it might be worth looking into. I know some languages I've run into have tools specifically for that sort of thing.


Not bad. You seem to have thought out the system pretty well. Presumably there will be some default conditions like "there are no enemies on screen" that you will re-use a lot?

Dizzy H. Muffin

Not really that particular thing so much; it's all going to be based on timing and specific intervals (and loops when you get to the bosses), and no AI whatsoever beyond "aim such and such an attack at the player instead of being fixed."

But as I design and implement the levels, I'll see if certain things could do with being hardcoded. Maybe "clusters" like you can get in Create.swf ...


Will the input of 15 or more keys simultaneously have trigger any effects other than the standard "nothing" or "beep from Windows"? I've never seen a game that does that much The Dev Team Thinks of Everything (or whatever it was called), especially not for rage-quit-keyboard-mash-rawr-ing.