Gruedorf: Sandbox Sitta

This week I completed the autoschema tool that’s been long overdue to maintain a healthy database state across the four sandboxes used for development.

I also cleaned up layout errors and corrected a bug in screenshot uploading. Also improved the search result page.

Three minor files section tasks left: A directory link/listing, build the legacy 301 redirect table, and give the files frontpage some polish.

Next major task after that: the Gallery Controller.

Gruedorf: the Swampening

Between putting in incredible hours at work, and a few Magic: the Gathering pre-release events in the last week, I haven’t had much time for gruedorfing.

However, I still got 14 commits in.  (All of them Friday morning.)

The work done was all in finalizing the /downloads/complete-new-os/ page, and tracking down and fixing errors that had cropped up in the upload process.

The second item distresses me, presently, since a solid upload system was the main impetus for the rewrite.  finding out that uploads are still fragile and very prone to breaking with forward development, combined with the fact that I don’t have a testing strategy for roundtrip uploads, means I’m kinda nervous.

So, anyone out there have a good solution for a round-trip integration test where you upload, via flash and javascript, a unique file, and then verify that the file exists on a unix filesystem, and then verify that a corresponding database entry and further corresponding webpage works?

Moving forward, I’ll be working on an administrative page to allow file owners/admins to associate file instances as older/newer versions of the same file.

Uploads, Downloads, and the Management Thereof.

After some prodding, I managed to get the dorf back into gruedorf. Let the games resume.

Since last I posted about beta.vrpg, 58 revisions have occurred. In that time:

  • I got file submissions up.
  • I got (simple, title-based) file searches up.
  • I got most of the file details page up (thread spawning, screenshot uploading pending).
  • I did a lot of database reworking and massaging, mainly to get to a point where…
  • …single file entries can have multiple physical files attached, so one game can have file links to every OS it’s released on

Oh, and I made a Silly 500 Internal Service Error page.

Definitely the most important part of this work.

Going forward will be finishing the file management side of things (letting you deprecate old versions of files in favor of new ones, showing a browsable history, letting you edit and delete files you own), and cranking out the community-based side of things (ie, image uploading and talkback threads on file pages.) After that, advanced search options and a browsable file index, and the section should be complete.

I’m mainly excited to see a upload system that hasn’t seen a failure yet. This was one of the major failures of the current vrpg that prompted the rewrite. I used swfupload for the actual UI/handling of the upload, and integrating it went very smoothly.

Forever Forums.

I foolishly regret saying the end of my work on the forums was, in fact, nigh.

I am getting close to done.  It’s just that the management of forums also requires work on the teams/games sections of the website that I was hoping to put off until later.

Here’s a list of things accomplished since my last post:

  • Added uservoice to the layout of beta (and production!) for feedback.
  • Generalized forum displaying.
  • Added forum url_key setting.
  • added /forum/find (so you can find forums you’re allowed to see, and add them to your main listing)
  • added breadcrumbs to the forums.
  • created functions to list all visible forums to the current user.
  • Added SEO stuff to the template.
  • Added nofollows to links that performed actions rather than showing pages.
  • Updated to YUI 2.7
  • fixed an annoying bug where a forum with no messages (ie, a newly created forum) wouldn’t render at all.
  • Created a service to look up usernames that was integrated with a YUI autocomplete widget.  This’ll mainly be of use moving forward with the team creation page.

Currently on revision 225 in the SVN repository.

The good news is that I have more time to work on this, as my train-based commutes now let me think and hack!

The bad news is I am like a week late with this Gruedorf post :(

Gruedorf means never having to say “I win!”

…but at least I’m not losing again for the moment!

Although I had a series of disractions (got sick, moved, had several time-sensitive periods at work, went to GDC, and went to Rhode Island to see my girlfriend twice) I still have managed to get a clip of vrpg work done.  Revisions 199 through 215 were all done since the last post.

Major milestones passed are: bbcode mode switching (new posts use bbcode, old posts don’t, even if edited), and custom forum creation.

Next up is forum management (adding/removing admins/mods/peons, changing details on forums you admin, changing your forum notification preferences), and searching for non-standard forums.

And then the forum stuff will be over (for now).

I’m going to sleep now and see how much of that list I can plow through when I wake up.

The economicist in me.

The Gruedorf Widget!
The Gruedorf Widget!

Why are “widgets” called “widgets”? Really?

That’s rhetorical, don’t answer that. 

This weekend my main task was the creation of this Yahoo! Widget, showing the current 10 competitors in the gruedorf competition.  I’d’ve posted on Sunday, but I was hoping it’d be actually reviewed and accepted into the Yahoo! Widgets Gallery, but apparently they’re at least a fortnight behind as of this posting.

As this widget displays, I was almost 2 hours late for this week’s entry.  Due both to the delay in posting and to my working my buttocks off at work lately.  Yay for buttlessness!

Get the Gruedorf Widget Here.

Get Yahoo! Widgets Here.  (necessary to use.  Also: neat.)

This experience in particular made me realize that online documentation without inline examples of use are inferior to forms of documentation that have runnable examples alongside their functions and objects doc pages.  There’s nothing more frustrating than finding out you were interpreting docs in a linguistically valid, but contextually invalid, way.

Or, put more succinctly by Zeromus:

Docs without examples are worthless


In other weekend events, I helped Hyptosis set up a new webpage, I helped Zeromus get verge 3 running on the Wii some, added more testing infrastructure to vrpg’s beta site, and made the working copy of The Sully Chronicles more stable.

So that’s all neat, too!

Busy Week, No pretty pictures.

This week’s gruedorf entry consists of:

  • Fixing a bug with deletion in McgRender Mark V (in sully).  This was requested by Gayo so he could make the battle intro/outro effects in the Sully battle system.  Yay!
  • Working on the edit post functionality at as well as general message-centric fucntionality.  The awesome thing is that both my sandbox and vrpg agree on what tests pass and what tests fail.
  • Added a sprite animation system to the iPhone Sokoban game.  Rusty also implemented some pathfinding to add some superior UI tap-based movement into the game.  A d-pad is a bad idea for an iPhone game, as is a 1:1 gesture:movement ratio.  You don’t want to stroke your phone 12 times to move 12 tiles.  Honestly, even the iPhone isn’t sexy enough to warrant that level of public fondling.

Gruedorf turns 1, cake absent.

Another day in the red tile factory...
Another day in the red tile factory...

This week’s advancements in the field of gruedorfery mainly lie in the iPhone side of things for me. Rusty and I creep ever closer to the end goal of shipping an iPhone game. We’re working, if it’s not clear, upon a sokoban clone to start with, and will progress to add features to our engine with progressively more complex games.

Of course, this may all be in vain if a verge 3 port to the iPhone comes out. Not that I’m one to start rumors…

Gruedorf turns one, starts teething.

This marks the first anniversary of my first gruedorf post, when a humble Grue and a pompous Dorf first shut up, threw down, then started swaking again.

It amuses me to see that since it’s inception, twenty competitors have joined our unwinnable contest. As of this writing, 6 are in a state of “not losing”, 10 are in a state of “losing”, and 4 have defunct sites. All in all, the contest is serving some of it’s purpose, keeping some chatter and activity constantly going, but I’d like to see it grow in the next year.

I’d also like to see Overkill and Toen stop failing so much, since both have made pretty awesome things in times past.

What is Gruedorf again?

Gruedorf is a simple contest between myself (McGrue) and Kildorf designed to promote activity in the amateur game creation community over at

There are but two rules:

  1. If you do an hour of work on a game and post to an RSS-enabled blog about it, you are not-losing.
  2. If you fail to do work and post about it, you are losing.

It is important to note that nobody can win Gruedorf. It sure is nice when you ship a game, but doing so doesn’t free you from the eternal geas of a minimum of one hour per week. After all, we are people who profess to enjoying development.

So what got done this year?

I’ve lost a few times, but kept up a whole bunch of progress.

And that’s about it. Moving forward I’ll be focusing on Sully,, and v3 for a bit. Whee.

Oh, and new site.

As a gift to y’alls, I ditched my old cakePHP spike of a blog and ported everything over to wordpress. I couldn’t justify working on the egometry source to do things that other packages did better. Leveraging other people’s work sometimes takes priority over having fun hand-rolling it, especially when you have limited free time.

So, yeah. You all can now comment on my blog finally. Whee.

Sully Battle Updates.

Sully Battle Updates

Too tired right now to give a full dissertation on the week’s productivity. So instead I’ll comb through the week’s Sully SVN commits and post the notable ones. Supersorry.

  • Fixed the sprite parser, removing (hopefully) all tab literals.
  • Updated the battle hud so that the HP/MP bars worked.
  • Fixing bugs in the battle menu and the targetting system, both conspiring to cause suck.
  • Fixed the quantity bug, removed debugging statements.
  • Updated the mcgrender engine to clean up more of it’s shit.
  • Making it so enemies always animate on battle start.
  • Fixed the queueing problems. Now actions properly have charges and delays.
  • Sped up the bounce of the numbers
  • Making it so allies always animate on battle start.

So that’s that. The battle system now, for once, doesn’t feel ‘broken’. It feels good. Most of what’s left now is to fill it with content… which is, one assumes, the “fun” part. :)