The Animal Farm

June 30th, 2007

Pride and Prejudices

(A word of warning: Nikki, do not read this post. Close the site now. You have been warned.)

(Another word of warning: This post has nothing to do with Jane Austin’s Pride and Prejudice. If you came here looking for information on said book, I would kindly refer you to someone else. Perhaps Nikki. Despite getting halfway through it last summer, I stopped reading and am unlikely to start up again for a very long time.)

It turns out I did have pride left to lose, and it was all whisked away at exactly the same time the new Harry Potter game was placed in my hands.

I’ve always had something of a disdain for the Potter stories. I read the first book after the coaxing of a friend, and I highly disapproved; and yet I tried reading the second book. I made it halfway through before flinging it across the room in defiance. I would not be put under this book’s spell.

You see what I did there? I made a reference about a book casting spells when the book is about magic. F-ing genius. Moving on.

I watched all of the movies, usually during times when I was either terribly bored or somewhat curious. Movie quality aside, I did not like the general stories. I absolutely despise any story where the actual villain (as opposed to a perceived villain) is not revealed until the very end, and I further loathe when a perceived villain turns out to be a significant ally in the end. I also dislike when children are depicted as much more intelligent than children actually are. I don’t know when the last time you interacted with an eleven year old was, but it’s a safe statement to say that they are stupid. Combine that with the general plotlines not interesting me much, and you’ll understand why I wasn’t really too inclined to go back and grab the books. And don’t try to convince me that the books are better; you’ll be wasting your time.

The last movie entertained me a bit more, and the trailer for the next movie looks really good. I got bored one day and looked at a nearby bookshelf and saw the fifth book laying there. Believe me when I say I was really bored and looked hard for something more interesting, but I eventually decided to pick the book up and start reading. About halfway through, this one warmed up to me. It had an interesting antagonist, and Dumbledore (who was always by leaps and bounds my favorite character) stepped up his game in one scene. Apparently I’m in the minority liking this one, but that’s never bothered me. I just finished up the sixth book tonight, which I think I liked a little less. It had some good backstory and a solid climax, but it felt more like a segway into the next book than a story of its own.

At any rate, I got the game, despite my old defiance toward that Potter boy. For free, no less (apparently EA is not content with paying me a ridiculously large amount of money; they have to give me free stuff too. It’s a cursed life I lead). The reviews are pretty good and I want to see how the Wii controls work out. That still didn’t stop me from feeling a tiny bit ashamed of myself.

But I’m going to move away from Harry Potter now. There are other things to talk about, and this post is big enough as-is.

We have new spammers! People posting on random comments that were left ages ago. If you need some cialis, just go looking through the archive and you’ll find a link in there. I can only assume from their presence that this site has become hugely popular, and nameless spammers flock here to make a fortune posting advertisements in the depths of the site. Or they’re wasting time, but it looks like nobody has told them that. It is so hard to reason with bots these days.

Seal’s music video for Future Love Paradise is the worst music video I’ve seen in a long, long time. On the spectrum of good/bad, it wraps around bad to hit “comically good” but then goes straight past that into “horrifically bad.” When I want to listen to the song, I crank up YouTube in a seperate tab and never open that tab again. And I want to listen to that song relatively often, because Seal is awesome, and if you don’t agree you’re just dumb.

Real-Time Rendering is one of the best graphics books around, which explains its status as the book for serious computer graphics developers. Despite being old, most of the concepts included are still very relevant. Next I want to find a good book on shader development, though I fear I’m going to have to buy one of those online.

Die Hard was a pretty cool movie, if not incredibly over-the-topo at times. Some pretty wicked scenes, though I have to wonder how much John McClain can take before, y’know, getting injured. Definitely funnier than the previous offerings, and it really seems like they’re taking themselves a lot less seriously, which is all good and fine. Kevin Smith’s character might’ve been pushing it, but I haven’t decided yet.

I really wish I had a PS3 so I could play Folklore when it arrives. Seriously, look at the trailers. It’s one of the coolest looking games I’ve seen in a long, long time. Someone pulled out the big guns for this one, and they fired recklessly until they hit solid gold.

Huh. And apparently I’ve inadvertently stayed up all night. Nice.

And the riders will not stop us.

June 25th, 2007

Cauldron of Hot, Strong Love

I am now the proud owner of bright purple sheets. I had oriiginally intended to get a respectable blue, but picked up the wrong size and apparently they had no blue in the right size. I really needed sheets, so I swollowed my pride and wondered if I had any dignity left to lose before saying, “Yea, ok, that’s fine.”

I am also - and this bit is a tad more pleasant - the proud owner of Kirby Canvas Curse. One of the DS’s early offerings, it doesn’t grace stores often anymore. Which is a shame, because it’s really fun. Basically, Kirby is curled up in a ball rolling around, and you have to draw paths and stun enemies so he can manage his way through the level. It sounds pretty simple here, but like all other Kirby games, the execution is spot on.

I’m worried about the 72 Hour Game Development Competition. The forum has been completely infested with spam, something which we have been unable to stop. I sent an e-mail out asking for mods to help clean up the spam (because Jeff and I can’t do it alone), but haven’t received any responses, and there’s reasonable suspicion the e-mail never made it out to anyone. Quite distressing, especially since I was hoping to hold a competition this summer. We may have to just get a more reliable board and go back to our roots without all the fancy software Jeff wrote, which would absolutely break my heart.


June 23rd, 2007

Next Gen

Do “next-gen” games seem a little “last-gen” or even “gen-before-last” to anyone else?  I was looking over some stuff and was very disappointed.  Quake Wars looks like, well, Wolfenstein: Enemy Territory.  Maybe they had their settings turned way, way down, but I could tell absolutely no difference between the two games.  For those keeping track, Enemy Territory was released in ‘03.  The Darkness looks like it was practically made with the Half-Life 1 engine.  And so does The Specialists, though that looks like a MOD, so I expect it to lack the professional glisten of current games.  Hail to the Chimp?  Please tell me that’s a download for $10.  Shadowrun is painfully lacking.  Oh, and Fantastic Four 2!  My god!  The pre-rendered cutscenes look worse than the actual game, which already looks abysmal!

There may be great games under this shabby packaging, but why make me buy an XBox 360 if my Playstation 1 can handle this stuff?  None of these games compare to Resident Evil 4 or Twilight Princess, released on the weakest of last gen’s technology.  Granted, those games were made by companies with a never-ending money fountain and walls made of solid gold, but still.  The only games that look impressive are Project Sylpheed and the Transformers game.

I really hope the Transformers game is good.

June 13th, 2007

Scripts, Coroutines, and the CodeDom

As I said in my previous post, I was looking to use C# as a full scripting solution as opposed to rolling my own since .NET already provides a means of using the entire C# language as a scripting solution. My only problem was a rather critical one: I needed a method to ‘pause’ a script at some point in its execution so my system could do other processing and then return to that script later. I didn’t think it was possible with the facilities provided, but a kindly poster showed me otherwise in the form of coroutines. I’ll talk about my entire solution here.

First, you need to understand how .NET allows us to dynamically run C# code on the fly. System.CodeDom.Compiler provides us with the facilities necessary for taking a C# file, compiling it, and executing it at run-time. You setup your compiler parameters (via way of filling out an instance of the appropriately named CompilerParameters class) to tell the system how to compile the program - I have my programs compiling in memory without debug information. You also specify which assemblies you want the script to have access to - including your own program’s executing assembly, if you want your script to have access to your system in somem way. Then you can use CodeDomProvider.CreateProvider(”CSharp”).CompileAssemblyFromFile, passing this method the compiler parameters and the file (or files) you want compiled. At that point, the script is compiled in memory and ready to go.

Now, a first pass solution would then take the CompilerResults generated from this method and use this to run the script with one simple line of code. You’d generate a script file with one class and static methods representing the different script functions you’d like to execute, and you’d execute them by saying something to the effect of: compilerResults.GetTypes()[0].GetMethod(”YourScriptMethod”).Invoke(someParameters). But if you do this, you’ll notice that this is a ‘one-off’ script. It executes and leaves. There’s no leaving the script temporarily and coming back to it. There’s no exit/re-entrance. Which is something a game script is going to need.

Enter coroutines. A coroutine is, basically, a routine that you can leave and come back to later. Some languages have built-in support for them. C# doesn’t have that per se, but you can do the same thing with System.Collections.IEnumerable/IEnumerator. It requires a bit of thought on your end, though.

The first thing that becomes necessary is that your script methods now need a certain return type. That is IEnumerable. Internally, I can’t say how it works, but what I’ve experienced is this: designating IEnumerable as the return type tells C# to generate some extra stuff so that your function can be run through until you tell it to yield. Yield, a special keyword, says “return from this function and give a specific value and keep my place so that I can be returned to later.” So at some point during your method, you say something along the lines of yield return SomeValue and at that point execution of that method stops until it’s told to continue. How do you tell the IEnumerable how to start/continue? Well, you don’t call it like a normal method.

Objects of type IEnumerable have a few handy methods, and one of them is GetEnumerator which returns an IEnumerator. This Enumerator is where you take control. It has a method, MoveNext, that executes the Enumerable method until a yield is hit. It will return true if there are more statements to execute between that yield and the next yield, or false if there’s nothing else to be done. The Enumerator also has a method Current that gives you the value returned from the last yield statement. So not only can you pause/continue your method, but you can use those values which are returned at the yield in case you need some extra information.

There was one thing that threw me off here. I would compile my script and get its IEnumerable method and then try to set that to some variable of type IEnumerable, which didn’t work because GetMethod returns a MethodInfo. I had to actually go ahead and call Invoke on that method and set the Invoke return to the IEnumerable (casting as appopriate).
And that’s it. That’s all you need to get a fully functioning scripting solution working.

So, in summary, here are the steps necessary:

*Fill out the CompilerParameters, being sure to add in the assemblies you want your script to have access toCompile the script
*Ensure that all the methods in your script have IEnumerable as their return type.
*Call yield return (or yield break, which designates that there is nothing left to process) inside the script whenever you want to pause the script to do some other execution.
*Invoke your method and cast the result of this Invoke to an IEnumerable.
*Retrieve the IEnumerator using GetEnumerator from the IEnumerable.
*Call MoveNext to begin the script. When MoveNext has finished, it’s time to do some other processing (or call MoveNext again if you just want to ignore the yield). Continue calling MoveNext until it returns false, at which point the script has finished.

There’s a good bit there to digest. I would’ve liked to post code, but I haven’t found a good WordPress plugin that will let me do that. I hope it’s helpful regardless.

Also, I don’t think this is the most secure way of doing things. I’ve read various people on GameDev talk about setting up a secure sandbox to keep malicious scripts from mucking with the system. I’ll likely put that in to my final implementation, but for now I don’t know enough about it to write on it.

So, that’s all. Happy Coding.

Meanwhile, screw you WordPress for having a “bullet list” that doesn’t actually show up properly when the post is published!

IDK, my BFF Jill? *Slap*

June 11th, 2007

Final Fantasy Dramatics

Is it wrong that a ‘good’ night for me is winning three chess games and having all the drama of the night cease? Something certainly feels wrong about that. I shouldn’t be this happy about chess, but that’s just the way I was raised. Ma and Pa taught me to checkmate with enthusiasm.

My roommate (I assume, at least) left Apple Cinnamon poptarts on my laptop for me to discover when I returned from work. My initial inclination - guided by cynicism and years of “hard knocks” - was that this was some kind of peace offering. Like when a man buys flowers for his wife because he screwed up. Did Q kill my goldfish and/or dog? I checked, and I was a bit frightened when I couldn’t find either until I realized that I don’t have either. I perused my video game collection, putting each box to my ear to listen for an ominous ticking, but after thorough inspection I concluded there was nothing dangerous setup in my living quarters. It took some significant self-readjustment to consider that this was, in fact, just a kind gesture. In the absence of some tragic discovery between now and tomorrow, I shall have to thank him.

I’ve been investing a significant amount of time in Final Fantasy 6, and I’m surprised at how little of the game I remember. I don’t think they really changed much (aside from names and a bit of dialog), but almost all of it is new to me. I just opened the gate to the Esper World, and now I’m making way to try and talk some sense into those crazy magic-things. I’m enjoying it, but my acquired distaste for random battles has left me frustrated sometimes, since the game does not shy away from them. I’ve literally taken a single step between two consecutive battles (and I literally screamed in anger).

Speaking of video games (and this will be my last paragraph on them for the night), Zach recently asked for an opinion on Puzzle Quest. I’m hesitant to recommend the game, but I’m also not prepared to write it off either. My main issue - and an issue that has caused me quite some vexation and even palpatations - is that the computer cheats. It’s not even subtle about it. You’ll barely have a single move, and that move will setup the computer for seven moves in a row (no exaggeration). At the very least, nearly every move you make that causes gems to fall will setup the computer to do damage against you. And, of course, the computer can see gems off screen, so it can prepare its moves further ahead. That being said, the game is still winnable, and it’s strangely addictive. At its core, it’s just a “Match 4″ style puzzle game with RPG elements, but those simple little puzzles keep drawing me in to play time after time. I suppose that’s where casual games win - their simplicity combined with addictiveness. So while I won’t say you should definitely buy the game, I will say that you may want to give it your consideration. There are certainly worse games.

I’ve been thinking more and more about Parodica lately. Crucial design decisions. There are a few major ones: the first is that I’ve envisioned (in my head) a script-based architecture that would allow practically any type of tile-based 2D game to be created; not just an RPG. The only downside is that performance would suffer, and also creating the game would not be as elegant as if I were expressing my ideas in native code. I think I’m leaning away toward this. I’m still going to implement scripting, since that still gives me a great degree of flexibility, but it’s going to be relatively Parodica-centric. Second, the scripting system in itself is a bit of a beast. I want to use C# and the compilers provided as part of the foundation, but there’s a major problem there - as far as I can tell, those scripts get compiled once and run, and they aren’t reentrant. That is, I can’t tell the script to start doing something and then continue the rest of the game while the action is executing and then come back to the script after that task finishes. The inability to do this is pretty much a dealbreaker (and a heartbreaker, considering how much work it would save). Third, I’m not sure what platform I want to shoot for. If I used XNA, I’d get the XBox 360 and Windows. If I used C++/OpenGL, I’d get Windows and Linux and (maybe) Mac. The prospect of seeing my game run on the XBox 360 is pretty darn compelling, but since people would have to pay the Creator’s Club fee to ever see this, it’s not a certainty. All these decisions are still up in the air, so we’ll see how they go.

Meanwhile, once I get the system up and running (shouldn’t be too hard to program), I’ve devised a way using simple scripts to make Penguin Push 2! That’ll be pretty neat as a proof-of-concept.

Nobody expects the Spanish Inquisition!

June 9th, 2007

Breaking the Law

There are two things criminal about Final Fantasy 6 Advance:

(1)You can’t rename Sabin.  You can rename every other character so far except him.

(2)They changed the name of the Repo Men.

Otherwise, it seems like a very good conversion.

June 7th, 2007

DS Browser

First of all, Brian, you have been posting a lot. I like it and hope it continues.  I also hope I can start posting a lot.

A few days ago, when I last talked to Brian, he told me that the DS Browser was going to be coming stateside, very soon.   He was right.  In fact, I am writing this post from my DS.  I have to say that I like the browser so far.  It is in no way a replacement for a normal pc web browser, but it helps if you wanna check your email or a forum or this site when a computer is unavailable.   It actually manages to render the site well, for the most part,  which  is something that impressed me a lot.  My only complaint so far is the speed it takes to render.  I am not sure if it is the DS graphics hardware or the wireless connection hardware, but it can take some time to load a few graphic intensive sites.

I also recently picked up Elite Beat Agents simply because it got a really good review and I needed a new DS game to tide me over for a while.  The game is a rythm action game where you have to essentially hit the screen to the beat.  There are a few other styles but that is essentially it.  I am not knocking it,the game is a great time-killer.  I guess I am gunna have to get some headphones though, because you absolutely need sound for the game and I don’t think playing it at max volume in a public area is a nice/good idea.  Besides being fun, the game is outright rediculous in setting up the different “levels.”  Level one is essentially your team( of three men in suits that dance ) dancing to try and help a baby sitter take care of the kids’ needs in a hurry so she can as the star football player to go steady before he leaves.  They are all like this,and it is amazing.  The game’s stories are told in an animated comic-book style that is really, really beautiful.  I really like the game, so far.

There are two more games  on my list, Chocobo Tales and Puzzle Quest.  Not too sure about the first one, I need to look up some stuff about it, I’ve seen great and I’ve seen poor in terms of reviews.  Brian said he liked Puzzle Quest and I looked it up, seems promising.

Heroes of Mana comes out in August, Let’s hope Square-Enix can manage to make a DS RTS amazing, like the game looks.


June 5th, 2007

Things Really Aren’t So Bad

So apparently I’ve given multiple people the impression that I’m not enjoying Chicago.  Let the record show that this is, in point of fact, not true.

It’s true that I’ve had my complaints.  Traffic/drivers being the largest one, obviously.  And I’m not taking that one back.  I also critiqued the people in general, which was a bit misleading; all of the people I’ve actually spoken with have been awesomely amazing (or amazingly awesome if you fancy).  A few strangers have left bad tastes in my mouth, and I chose to focus on those strangers in previous posts, but these peons have not skewed my view of Chicago negatively.  I’m very much glad to be here.

So noted.

June 4th, 2007

Squeak Squad

I wrapped up Kirby Squeak Squad just a few minutes ago. Only the base game - I haven’t found all the items quite yet. I’m quite pleased with the outcome. I’ve always been a big fan of Kirby, but this game really kicks things up. It’s not fundamentally different than any other Kirby, but it flows really well. You get the sense that you’re just flying through levels (and in fact you can beat most within five minutes and a few within one). All the old abilities are there along with a few cool ones, and you can unlock powerups to those abilities to do nifty little things. The Fighter ability is really awesome, letting you string together combos and rip things apart and throw a freaking fireball. The sword ability, always a person favorite, feels really polished and fast. Oh, and you get to duel with the Metaknight again! My only problems: the story is silly and the touch-screen integration is very wonky. I also would like some better multiplayer, but that’s probably asking too much.

I also hooked in Final Fantasy 5 for a bit. I was amazed at just how bad the game looks. For some reason I was expecting better, and maybe if I go look at Final Fantasy 6 I’ll find better, but FF5’s graphics seem bland and repetitive. This is supposed to be a pretty good game in the series, though, so I’m willing to give it an honest effort.

Video games aside, life is pretty bland at present. Bland and rainy. Bleh.

I want my strawberry shortcake back.

June 3rd, 2007

Respect the Numbers

Sit down whilst I tell you three beautiful stories. Note that if that number is inaccurate, it’s because I made up that number before knowing how many things I actually had to talk about. If that number is accurate, it means that I can see the future. Also, if the number is inaccurate, it does not necessarily mean I can’t see into the future.

So I met this crazy girl. She was a pretzel vendor closing shop in a park. I was a famished wanderer in unfamiliar territory. She gave me a pizza filled pretzel (free of charge), and I dramatically flipped my hair in thanks. We talked, conversation worked, and we decided to do something after parking it up. (Interjection: I should say here that my hair is no longer long enough to be flipped. I’m sad too.) It started raining rather heavily, but we were not stopped. We wandered by a GameStop, and since I was in the market for a DS, we went in there and looked around for a bit. I didn’t purchase anything. Then we went to KFC. The actual places we went were, obviously, not very noteworthy. The noteworthy bits were the random conversations, which were fun and entertaining and fun. She was a cool gal, despite belittling me when I forgot what a gazebo was. People forget words, alright?

The next day I picked up the DS I wanted along with seven games: Final Fantasy 6, Final Fantasy 5, Lunar Dragon Song, Puzzle Quest, Kirby Squeak Squad, Lost Magic, and Castlevania: Aria of Sorrow. I’ve been playing it almost non-stop ever since. I’ve really only gotten into Puzzle Quest, which is a game that exercises both my brain and my frustration. I get so angry when good moves seem to fall in the computer’s lap and I’m stuck without enough mana to cast even the most primitive spells, but I won’t bore you with silly details like that. Today. Oh, and I also picked up Season 2.0 (the first half of season 2, basically) of Battlestar Galactica.

Last night I went to dinner with Quintin (who is henceforth dubbed Q or Mr. Q, depending on my mood and the current phase of the moon). We didn’t go anywhere special - Chili’s - but I mention this outing because it’s important that everyone knows that their Cajun Pasta Salad is amazing.

This morning I woke up at eight because someone’s coming over to put in a bed, and I tried to remove the futon from the room before they arrived. In this process, the hallway became something of my enemy. When a door leads directly out into a hallway which connects to the target room, maneuvering to squeeze the futon out the door and adjust it so that it fits into the hallway is impossible. At one point I had the entire futon standing straight up in the hopes I could try to rotate it and lay it down from there, but then the futon - in what an enemy combatant would call a “shrewd move” - refused to leave the door. No amount of angling and adjusting wanted to work. So I gave up; other people can deal with it if they want the futon removed that much.

I think it’s time I return to play Puzzle Quest. Curse you, green mana.

That sounded like a challenge to me.