Wednesday, April 30, 2008

Jam, pigs, banjos

Last night we went to see Eddie Izzard perform at the Orpheum Theatre. He really hasn't changed much since his earlier standup years, though he does look completely different when he isn't in transvestite mode. I think it may have been the first live show of any description I've been to since seeing Iron Maiden in Glasgow about four years ago, which may have contributed to the way that it was oddly difficult to remember that I was actually there and not watching him on television.

He did mention the names "Jeff" and "Steve" several times (and putting up flags), so as far as I was concerned I got my money's worth immediately. Other topics covered included:

  • Crap Samaritans

  • Why nobody would vote for Jesus if he used his real name

  • German-Latin

  • Mac updates, and licence agreements that contain "We will shoot your grandmother out of a cannon"

  • Spartan sheep

  • Having to finish before "The Riches" starts

  • The creation of the planet - "How is it?" "Still on fire, Dad."

  • Problems with Noah's Ark

  • Instructing someone who put a purse onto the stage to "please set fire to it"

  • Giraffes communicating via charades

  • Life on Mercury

  • Bored appendices and why they're like Aliens


And so on. It was as hilarious as you'd expect, though the experience was only slightly marred by the theatre itself - I'm certain that it was originally built by dwarves, as there is literally no spare legroom at all. I am - and there's no way around this - as short as Richard Hammond, and it was uncomfortable for me to sit with my knees squashed up against the head of the woman in front for two hours, so I can't imagine what it would be like for anyone even slightly taller. Thankfully we were on the end of a row, so we had a bit more stretching room, but even so, if you go to this place you're guaranteed never to complain about another economy flight ever again.

Monday, April 28, 2008

Synthesis Externalization

"Ooh, yes, I've finished all the backend stuff and I can get to work on seriously making the actual game now" is what I've been saying in virtually every entry on this for the last year and a half. But it never really stops - if MMF has one specific weakness it's its modularity, in the way that for the most part event lists are tied to frames, and the result of this if you change something in one game level you need to go and copy and paste it into all your others (not to mention keep track of which one has the most up to date list that you want to synchronize). But this weekend I've been trying to make things easier for myself in that respect.

You really need to plan a game of any decent size from the beginning if you want to finish it within your lifetime, and Crystal Towers 2 has gone through a lot of changes that would have been much easier to cope with if they were in from the start, so I'm performing a great refactoring to speed up the rest of the game and this time really have something I can just add on to. Initially, the game relied on itself for its data - abilities, items that monsters could drop, and so on - with a couple of external plain text rules files for things that I wanted to be able to change easily, like the missions for each individual level. That was fine at first, but as the game began to balloon up beyond all proportions that I ever imagined it to have, I started an Excel spreadsheet detailing all the data in the game as well. And as I realized I kept having to replay the game to keep track of where I expected the player to be in terms of progress at each point, I then wrote a Java solver that used yet another version of the data in the game to tell me the possible "moves" from each position (with a completion of a level or gaining of a new item counting as a "move"). So up until last week, I had to keep four copies of the game's data up to date with each other, with only a slight link between two of them offering any sort of intelligent reuse of information. This is what we in the computer science world call "a nightmare".

It was actually when looking at the external rules files for Civilization II that I realized how stupid my current situation was, and decided that I'd better do something about it. I had previously thought to myself that it would be nice to read all the game data in from the spreadsheet that I was using to stop myself going insane rather than having to copy it all in manually afterwards, but I had dismissed that as being too insecure a way of doing things and I didn't know if MMF's database connection object could read Excel files without Microsoft's additional gubbins installed. But those Civ 2 rules files gave me an alternative idea - I was fairly confident that somebody in the world must have put together a way of reading Excel files from Java, so I could get that copy of the data into my solver fairly easily, and once I'd got that, I could get Java to write out the rules files itself to be read by the game.

So this is roughly the alternative communication between files that I have going on now - everything is connected and sourced from the same place instead of having each part hovering around looking lost. Thanks to a bit of planning ahead when I converted the save files over to a better system, I also have the option of encrypting the data and making it uneditable while still allowing the game to load it (which will be very important for the online scorecard system) - this happens through a separate MMF translation application. The parts of the game that used rules files already have been easy to convert, as all I've had to do is write a translator in Java to gather them from the database and put them in a form that the game can use. There have also been parts that relied directly on data in the game, which were more difficult to convert as I had to come up with ways to externalize them.

For example, one of the biggest problems I had with the old system was the list of items that each enemy could drop. I had initially written it so that each enemy detected when it was about to be destroyed, picked a random number and dropped an item based on a list of hard-coded chances. With the new system, it instead leaves behind a "SynthCreator" object, gives it its name, and allows a global function to take care of the rest. This function performs the dice roll, looks for any entries in the "drop" rules file that match the name it's been given, and creates a dropped item accordingly. The whole process is so much simpler, even if it did take a weekend to convert everything over to using the new and much easier way - all I need to do now when an adversary is destroyed is create one object and start the function. While I was at it I also externalized the damage that different damage types cause to each monster type, the amount they take off your own health when you blunder in to one, and so on.

Changes like these, along with trying to move everything possible into the global event editor (which I was wary of as it was rather unstable in earlier releases of MMF, but it seems to be absolutely fine so far) make the events of each level much simpler to understand and work with, as they just need their own unique events rather than a copy of the ones that are used throughout the game. So this time, I really am confident that it's taking shape.

It helps that the graphics I have from Jay Frudy are fantastic, too. I'll put a video up at some point to save you reading all that.

Thursday, April 24, 2008

Crystal Towers 2 - New Bernard

As I haven't updated on this in over two months now, you might have thought I'd forgotten about it - but I haven't! My creativity for it seems to come in bursts, and while it's still a much larger project than I ever intended it to be, I've finally got down to planning out a definite list of collectable abilities. Even putting a cap on those is a large step in working towards something that's finishable.

The really exciting news is that I've secured a new graphics artist. He's the same one who worked with me on Special Agent a couple of years ago - the fact that everyone else who has offered to do the graphics for this game so far has gone into severe depression shortly after starting hasn't discouraged him at all! And as a result, Bernard has had an overhaul. I can't quite express how exciting it is to have something this much more animated compared to the original sprite - it really brings the game to life instantly.

Run Bernard Run

On my end, a lot of work recently has gone into the planning side, which is sometimes dull but necessary. Previously, I had four separate things to update - my plan spreadsheet, Java solver, rules files and the game itself. This was naturally terrible. However, after getting an Excel parser working in Java the other day (which was triumphant until I remembered I use OpenOffice), I have the Java solver getting almost all its data from the plan spreadsheet itself. Now, if I can think of a way to get enemy drop rates read from an external file, I just need to write a similar parser to write out rules files from the spreadsheet as well.

In short, I must be mad. There are times when I wonder why Whitney married someone who does this kind of thing in his spare time.

Sunday, April 20, 2008

Music News: Michael Kiske Goes Even Madder

While looking up The Song That Makes You Want To Kill Yourself on Youtube again (as thanks indirectly to Whitney's encouragement I have accidentally learned how to play it), I was surprised to see that Michael Kiske had released a new solo album. It's called Past in Different Ways, and even though it lives up to its name, it's the strangest one yet.

For those who don't know his history, I should explain - despite being one of the initial successful lineup of Helloween, Michael Kiske had the unfortunate situation of hating metal even though he was something of an iconic voice in it. So after he tried to turn the band into a Beatles-style pop group with songs like the one I linked above, they kicked him out and got an emergency vocalist to bring them back again. Meanwhile, Kiske himself decided to become James Blunt and released a lot of acoustic pastelly music while wearing a daft hat. (I have tried, unsuccessfully so far, to get Whitney into his new albums just for the sheer irony of it.) Though his alleged hate of metal hasn't stopped him from making guest apperances with virtually everybody else anyway.

And on this new album - as I realized while I scanned down the track listing, and is hinted at by the title - he's taken the old songs that he wrote for Helloween and reworked them as he wanted them to be. Mellow. Compare A Little Time (original version) and the new alternate-alternate version to get a summary of the level of surrealism that we're dealing with here.

Saturday, April 19, 2008

Noitu Love 2: Devolution








γ—γΎγŸ!


I realize that I'm slightly late in reporting this and everyone with an interest probably already knows, but Noitu Love 2: Devolution was released today. Written by Konjak, it's one of the best-looking MMF-produced games I've ever seen.

Like I said previously, it's also unusual in not being freeware, and costs $20 to download - the price is a little higher than I was expecting, but I wouldn't say it wasn't worth it. I haven't bought it myself yet, but that isn't the reason - it's because I was finally inspired to carry on with a bit more of Crystal Towers 2 today and starting to play this would immediately remove all hope of progress again.

As I've also mentioned, if you're at all interested in seeing what the independent game community is capable of now, at least download and try out the demo. It's been extended since the last time I linked to it!

Download the second demo

Monday, April 14, 2008

Good Things

There was a Scottish couple on the train in to work today. That might not sound remarkable in itself - I didn't even talk to them, just stood and listened to the familiar accents, but it was strange how comforting it was to hear voices like that again, even if the woman did sound like Lorraine Kelly. When you're somewhere you feel foreign even after close to two years, things that would normally be unremarkable stick out greatly.

But even though I continually go on about America and how nobody told me it would be this different or strange or full of Americans, I was thinking last night about just how much I had to appreciate - I've got a good job doing something I enjoy, with good people (and the 10:30am start helps too), and overall we live very well for a couple straight out of university if we put aside the $35,000 debt as a technicality. The SAAS will soon no doubt be asking me for more money because I gave them £1000 last year and the coverage of payments for that must be running out by now, but that will probably be taken care of because we're moving out of the office in May and I might find myself with a pay rise because of the reduced cost of rent (reduced by $6,000 a month, actually).

Last week had a landmark day - it was the first day of the year where it was warm enough not to bother taking a jacket to work. I have two separate jackets - the giant Antarctic explorer one that everyone knew me for in university, and a leather one that I've had since third year of school. And the weather has been hovering around the leather jacket stage for a while, but it seems that it's beginning to be bright and sunny again - which is just as well seeing as my leather jacket is beginning to fall to pieces. It's rather worrying that I've never had it relined since I got it second-hand ten years ago, but also rather worrying that I don't seem to have grown at all since ten years ago either.

The bright weather does have one disadvantage, and that's that Clipboard Force 1001 will soon come out to convince everyone to give them all their money again, but you can't have everything.

Saturday, April 12, 2008

Now spell CHZO

For someone who's experienced three years of Andrew Melville Hall and has been living in Boston for another two I like to consider myself reasonably mentally healthy. So once in a while it would be nice to have a dream that wasn't a traumatic distorted version of reality. Along with the genuinely disturbing ones that I don't want to recall at the moment, I've experienced things like mind-controlling fruit, loose eyes and night-long adventures that are just inexplicable.

Last night, the dream once again took place in my parents' house. I happen to know that somewhere in the house's basement there is an ancient Speak 'n' Spell - one of those bright red things with the terrifying attempts at voice synthesis that sounds like someone who's been smoking shredded tin foil since he was born. It was probably in my dream because I was reminded about Homestar Runner by yesterday, where it and similar artefacts of technology featured quite regularly.

In the dream, the device had somehow contracted a virus (who knows how. Perhaps it was airborne) and we had to find it before it did whatever the virus told it to do. After a search taking some unspecific amount of time, I walked into the downstairs bathroom and saw it propped up on the shelf at the back. And as I approached it, it started itself up and spoke, ensuring that I woke up with a start at 6am:

"Two... one... the Tall Man will come to kill you while you sleep."

Friday, April 11, 2008

I'm almost annoyed

I know that to a lot of people the sort of Firefox/general open source community seems like a terrifying place full of anti-corporate zealots with smelly beards, but in the end there's a very good reason for its existence. Today at work I spent four hours researching, experimenting and working around Internet Explorer bugs, on a new part of our system to allow people to select the members of teams that would vote on changes to a document. And as everyone who doesn't use it is making one six-billionth of my life easier, I thought I'd guilt trip people into converting over in case there's anyone reading this that still uses the abomination.

This is an entirely selfish thing - I'm ignoring the way that virtually every other browser is at least marginally faster than IE, free to download and more customizable (and in Firefox's case, leaks memory like a colander, but that's not as much of a disadvantage as you might think) because everyone's been told that already, and just concentrating on the advantage to me. And I'm not sure of the average technical Internet knowledge of my friends list, but I'll try not to talk down to anyone, provided that they haven't scrolled well away from this post by now.

The idea of the new form was simple (or so I thought). Our property-editing summary page gives you lists of the current people assigned to each team. From there, you can click "Edit team" to pop a window open where you can transfer more people into the team or take others out, then click "Submit", whereupon it'll close again, transferring the new contents of the "Selected" box into the original one. Dead easy (or it would be if most of Javascript didn't look like $A().$('${sel2}');).

But my problem (from Internet Explorer's point of view) was that I was using a rather handy way of telling web forms what to do called DOM, or Document Object Model. This lets you treat each part of a web page like individual objects, adding, deleting and editing them as you need. And for the most part, Microsoft is fine with you doing that, but on some computers (it doesn't even have the decency to be a consistent problem) you won't be able to move things between objects on different windows, and you'll get an error message saying "No such interface supported", which is naturally about as helpful as a water pistol in the Towering Inferno.

The way to fix this is apparently to re-register a couple of DLLs that may or may not be installed incorrectly, but you can hardly ask people to do that if they're the type that struggle with copy and pasting. Instead, I learned that Microsoft knew about their slight shortcomings in the field of sensible ways to handle webpages and had introduced a hackish fix - a made-up "innerHTML" property of each object on the page that you can use to directly edit the -type tags that you'll see if you go to View/Page Source up on your menu bar. So the solution was obviously (though slightly inconveniently) to write the bits that needed to be transferred into the page manually and stick them in like that.

Except... not only do they have a workaround to do something that everyone else has managed, they didn't get the workaround right either. Somewhere, it contains a bug that means that items in a select box may or may not be written correctly, and this rendered it pretty much useless for my purposes. In the end I resorted to detecting if someone was using IE, then building an array of arrays of strings that could hold everything I needed on the page, passing the whole thing under the table to the parent page through Javascript where IE couldn't mess it up and then cobbling together some items there from the collected data. Meanwhile, everything else can happily do it in about a hundred fewer lines.

Of course, the really frustrating thing is that our clients will never see this. Neither do most people who use IE and can't understand what everyone's complaining about. But it's the scourge of web developers everywhere for the reasons I've outlined above and more. So can you not do me a favour and download something else instead anyway? It'll take a minute of your time and I think you'll find it's rather better for other reasons, too. I don't even much care what you switch to - just as long as you realize that there's no reason on Earth to use IE7 unless you are actually being forced at gunpoint. Remember, like I said before you stopped reading this - everyone that switches over is making my existence just a tiny bit less stressful.

There, that should do it.

Saturday, April 5, 2008

Good news, bad news











Doctor Who comes back today:)
We'll probably only see a slightly cut-down version on BBC America at some point in the next three years:(
So I'm getting it off BitTorrent instead:)
Catherine Tate's going to be in it:(
She might not be as annoying as she usually is:)
But the odds of that are pretty slim:(
At least Steven Moffat is writing a lot of it this time:)
So is Russell T Davies:(



Update: AHH DEMENTED MARSHMALLOW CHILDREN

Friday, April 4, 2008

April Fools

It was Whitney who mentioned this to me last year, but April Fools' Day has somehow become something that I associate with the Internet more than real life now. When I was younger my sole imaginative idea was to creep downstairs early in the morning and swap all the plastic bags inside the cereal boxes round. Everyone expected it after a year or two, but that didn't stop me.

However, the rise of the Internet has allowed misinformation to be spread further and to more and more gullible people at an enormous rate. This year, everyone will have seen the video of flying penguins produced by the BBC. Another that stuck out in my mind was the Daily WTF reporting that it was changing its name to the Daily WTH, which a worrying number of agonizingly self-important readers believed. There was quite a good one from Apple that not many people saw, and the usual flood of links that trick people into watching "Never Gonna Give You Up" by Rick Astley for some reason.

And unlike my cereal trick, I've never been able to think of anything good for the new Internet April fools. In fact, I'm surprised that out of the large amount of time I've been spewing collections of words onto the Internet through this journal, I've never even mentioned the day before. A good April 1st story needs to be something utterly absurd while still being somehow believable, so I'm not sure how that would be significantly different from my life in general at the moment.