This is Bananattack.

Tag: mungo

Gruedorf: New Years Resolution?

Posted by Overkill on October 20, 2008 at 6:00 pm under Uncategorized

So this is the second year into McGrue and Kildorf’s fearsome competition known as Gruedorf.

What did I do in a year? This list summarizes it pretty well:

  • I lost Gruedorf several several times.
  • I added new features to Verge 3, and fixed the new Lua side of the scripting
  • I was one of the first people to use LuaVerge in a project, though Kildorf was the first to post
  • I made a scripting improvement for LuaVerge called vx (which you can read about here). Basically like Verge with OOP and awesome. Ustor uses it in his space game!
  • I made a data language called Mungo, which was basically a human-readable replacement for plain-text file formats. Better than XML in some ways, because it doesn’t have annoying tags, it just has bulleted lists with colons. I use it in my own projects at any rate.
  • I worked on a sidescrolling Metroidvania game idea I had for a while, called Resonance, which you can view the work-in-progress for with an SVN client from:
  • I attempted to create my own file formats for maps, tilesets, and sprites. And also thought about a container format known as a “world” that basically joins up a bunch of maps seamlessly. Unfortunately the results of this were…
  • …I got frustrated with existing game engines to an extent, and decided to make my own game engine from scratch which I’ve called Brockoly for the time being. I’ve been developing it under both Windows and Linux. You can view the intermediate C++ source and current crappy demo from:
  • This website was formed (thanks to Grue and Zeromus for hosting). I updated this website a tad, with a few different layouts. It’s been through varying degrees of eyesore. I think it looks better, but it’s still got a while to go. Plus it looks pretty damn broken in older low res browsers. I need to rehost all my games here :/
  • I drew a bunch of random pixel art. I think I finally am starting to get the hang of spriting in ways I never did before!

Speaking of art, I never posted this here, but I’ve been making changes to Resonance’s protagonist sprite with the help of Pixelation (a site dedicated to learning and critiquing Pixel artwork):

Anyway, most recently, I’ve put in my sprite system. It can do all sorts of funky things so far, like custom frame dimension stuff, hotspot setting, custom animation strands, transparency, and sprite rotation. And it uses Mungo! Really, not especially impressive, but it’s a start.

Anyway, seeing as it’s a new year of Gruedorf, maybe some resolutions are in order. If they’re anything like typical resolutions made on New Year’s, they probably won’t be kept. But like New Years, I can sure try!

My resolution: To lose 450099030984534095 pounds to actually post more on Gruedorf. And to be less lame.

Sadly, with school my attention gets diverted a lot, and I am typically pretty busy. So I’d appreciate nagging and support to keep me posting more!

In fact, it was McGrue who was nagging me to post this week. You should nag me too!

Anyway, maybe year two of Gruedorf will fare a little nicer!

Tags: , , , , , ,

1 comment

Pew pew pew!

Posted by Overkill on March 1, 2008 at 7:59 pm under Uncategorized

This week I refined the minimap system and the game’s weapon/bullet handling system.

The minimap is a lot less crappy. It scrolls with the camera and it uses slightly smaller map regions.

Get it here.

Made a Mungo file to store bullet information, called “bullet.mungo”. It makes specifying the similar bullet types made by a single attack much easier.

Lately, I’ve also been thinking some sort of “data inheritance” to Mungo might be useful if I reused this for other games:
* Fighter - name: ? - hp: ? - strength: ? - defense: ?
* Player < *Fighter
- name: Clyde
- hp: 100
- strength: 324
- defense: 112

(Note that this is an example, not actually implemented and it’s not for this game). Where < is an inheritance operator which takes a list delimiter and list item name to inherit from. It would let you get away without having to repeat specifying data in common with multiple things, and also to ensure that information is “implemented”.

Sorry, I have to write this in a hurry this week. But check it out! Weapon levels have new fancy bullets and the minimap looks cooler! Now I’m out. Laters.

Tags: , , ,


My Big Throbbing Love Organ

Posted by Overkill on February 24, 2008 at 2:21 am under Uncategorized

Yeah, that’s right, I drew a cutesy heart icon. Why, what did you think the title was referring to? Sicko.

Using it, I added a animating health meter to Resonance!

Get it here.

I’m not sure if this is this the sort of health gauge I’m going to stay with, just need something for now. I might switch to a percentage-style meter system which Megaman, Cave Story, Kirby Superstar, Castlevania, and a ton of games use. It’s a little more nice than a tick-style system, in that you get in-between health amounts, but slightly less fun to look at, because there’s less artistic representation usually with these sorts of gauges. Then there’s Metroid, which has several energy tanks and an active tank which has a health rating out of 100 (plus reserve tank which effectively doubles the tanks you get).

Oh, and then I need to think! How will underwater breathing work? Lots of games just let you breathe without penalty (NES/SNES age Marios on levels where water isn’t a deathtrap, Metroid, Kirby), or somehow keep you from going in water until you get a proper ability (Link to the Past), or keep you from going underwater but you can still swim until you get an ability (Aria of Sorrow). Then there’s Ocarina of Time, which had it so you’d just float back up after 3 seconds of diving (unless you get stuck underneath something, then I think you got hit with damage until you surface). Then there’s lots of games where you have limited air supply and start taking damage after air supply runs out. Cave Story took this too far, and just had you die instantly after about 15 seconds (100 air) elapsed without surfacing, which I didn’t like. Then I remember Mario 64 (and Sunshine, and maybe Galaxy, too?) had this wacked out health system for breathing underwater that overlayed your current health. Oh, the dilemma of water handling in video games!

Moving on, you can take a deep breath again, I find thinking about water levels a lot affects my breathing slightly!

I recently cleaned up a lot of unused files, and renamed the ‘chr’ folder to ‘sprites’, because none of the sprites use Verge’s CHR system (instead they use Mungo, a simple associative data language!). I might eventually move all my resource files into a folder called ‘resources’ or ‘res’, just to tidy up things and give my data a bit more hierarchy!

Oh, and I renamed my ‘v3′ namespace to ‘vx’ after Kildorf and I decided to rename the ‘LuaVergeRaw’ (internal v3 binding) package to ‘v3′, which was a better name. vx stands for Verge eXtension!

Since I don’t know how much I mentioned it before, vx is a slightly object-oriented approach to wrapping the v3 library, addressing some personal gripes with the classic library and making it nicer to compose with OOP. Kildorf seems to be doing the same thing, but I’ve did it first! I made my library before anyone actually knew LuaVerge existed! Zeromus and I meant it to be the official middleware wrapper to LuaVerge, but unfortunately there were a few things holding it back, and I’ve since decided that the ‘classic’ verge library should still be accessible to those that aren’t comfortable adapting to a new API.

Nonetheless, vx is kickass. Some people might appreciate its slight similarity to ika’s library, but it’s nicer to use in some aspects. For instance, a vx.Image is more powerful than ika.Image and ika.Canvas combined (in terms of how easily it can be manipulated — not so much render speed sadly). I think this could definitely be useful for those ika users who are on the fence but like Lua. Additionally, it can be intermixed nicely with the raw, classic bindings of Verge3 (which are also pretty solid) when this alternative API seems to be too much of a stretch. So if you were interested in LuaVerge, but wanted an alternative library that caters to your Lua script-kiddie OOP-seasoned mind, you might want to use vx! If you have questions about using this library, feel free to post on the regular Verge help forums, since I endorse this, and I want to make a usable game making interface.

I would NOT, however, recommend jumping to a new language midproject. If you’re actually getting somewhere using VergeC, why waste more time to learn a new language, and then rewrite your code? LuaVerge is certainly easier to pick up than VergeC, if you’re starting something NEW though!

Oh yeah, and I have an SVN for Resonance now, for those that are interested: (username: anonymous password: anonymous). The latest version of vx is always included in this SVN (for now, and hopefully forever). And here’s the vx documentation for those who want to see: (once again, you’ll need that SVN password). (Update: Things changed a bit. Please see for the latest information about vx!)

In other news, Thrasher, the metric unit for failure, has returned. Now I’ll have somebody else to make fun of again!

Now I depart. Look forward to more meaningful progress again on Resonance soon!



Tags: , , , , ,


Roughly Structured & Transcendentally Unrestrained Ventures

Posted by Overkill on December 30, 2007 at 1:18 pm under Uncategorized

(Whew, it’s somewhat hard to come up with titles with sequential ordering on each word’s first letter. THE AMPERSAND’S A SYMBOL NOT A WORD, SO I DIDN’T BREAK MY SEQUENCE NEENER NEENER.)

Lots of headway made during this holiday week. Get it here.

I basically decided to not use the verge entity system because it’s incredibly slow for some reason in LuaVerge even with raw bindings, which means something’s wrong. Also, there are some special sprite information things that can’t be easily linked to chr files. So I made my own custom sprite format in LuaVerge, which I like to think is somewhat better (what with custom animations and some other things).

My .sprite format uses Mungo, a simplistic data association language I invented on Christmas Eve, which is easy to write, making it mostly painless to edit a sprite file! It’s a lot simpler than, say, XML (for writing and especially parsing), or YAML (for parsing, and also sometimes for writing), or most language builtin ways of structuring hash tables/dictionaries. The only real pain is having to figure out each frame’s width and height manually, but you sort of had to do that anyways to use a CHRMAK file. I might try and come up with an auto detection thing at some point.

Using Mungo again, I placed in a simple ability system format, automating the projectile shooting and animation scripts for weapons a bit. I noticed that Mungo slightly suffers at doing numeric lists of items, I might try and fix that, or at least allow the parsers to convert numeric strings into numbers, to make for simpler use with Lua’s ipairs() method.

I also made a minimap generation system. It’s pretty simple really. It checks each screen region of the active map, and if the outer edges are obstructions, it places wall markers for those. If the inner chunk of the screen is fully obstructed, then that particular screen region is obstructed and won’t be displayed on the minimap. Then I added the typical Metroidvania map panel discovery thing, where only visited screens appear marked on the map. Eventually, I need to crop the minimap to show only the room close to the player’s position, but whatever, tiny details.

Oh yeah, and I actually associated the beacon system with the ability system! Which is cool. Because now you can watch as things level/delevel from your proximity, and can actually do stuff with abilities. It’s good! So yeah, now the Z key actually actually shoots stuff rather than just making sounds! The beacons in this demo are just demonstrative of course, and have much shorter broadcast range than what I actually have in mind for a completed version of the game.

That’s this week’s Gruedorf! Look forward to more next week (hopefully).

Tags: , ,