Archive for April, 2007

This changes nothing

Major Arcana now runs in a window. Isn’t that neat?

Actually, it’s not – I hate games that run in windows. The very first thing I do when I download a new indie game is look for the fullscreen option – I couldn’t stand Poyo at first because I thought there was no fullscreen mode (there is, as it turns out. Bloody F4 of all keys). Bah! Games want to be played fullscreen!

However, I seem to be in a minority on this. And what the hell, it’s handy for coding. So I added a windowed mode.

I haven’t gotten the whole windowed thing down yet, though – I’ve got the close button working all right – Allegro has a little callback function to take care of it. And the alt-enter thing to switch to fullscreen was easy too, just a couple of lines in the input handler:

  //Fullscreen check
  if((key[KEY_ALT]||key[KEY_ALTGR])&&key[KEY_ENTER]){
    if(fullscreen){
      set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 800, 600, 0, 0);
    }else{
      set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0);
    }
    fullscreen=(fullscreen==false); 
    while(key[KEY_ENTER]);
  }

(Hmm. Not sure why I pasted that… At least it fills out this painfully thin update!)

There are two little things I still haven’t worked out:

(1) The Maximise Button: This is probably dead easy, but I haven’t got a clue about Windows GUI stuff and Allegro doesn’t come with a helper function on this one. Google hasn’t been much help, but I’m probably just using the wrong search queries.

(2) Alt-Tab: When you switch away from the window, the music starts skipping over the last couple of seconds, like a CD with a scratch. I want the engine to simply pause the music when you change the window, but I haven’t worked out how to capture that event yet.

(Man, I really wish I’d bothered to learn some basic windows programming at some point…)

Well, whatever. If I actually had a list of priorities for this game, this wouldn’t even be on it. If you’re the kinda person who plays a console style RPG in a window, then maybe you deserve to have your music skip on you. Bah!

Incidentally, I also did some actual coding during the week, but I want to wait until what I’ve done is fully implemented before I say anything about it! ๐Ÿ™‚

* 1 Comment

Move over “Irritating Stick”, we have a winner

There’s a game Kotaku have mentioned a few times now that’s piqued my interest. It’s a cartoon JRPG set to classical music by Chopin. As far as I can see, it appears to be about terminally ill kids who go to a fantasy world where they have magical powers to heal people. It’s called Eternal Sonata. (At the very least, that’s what they’re calling it here. In Japan, it’s called Trusty Bell of all things.)

There’s obviously a lot to like here – I love the whole concept behind the game, and the quirky bits I can see in the trailer (using an umbrella as a weapon? Fantastic!), and the fact that it’s not by Squaresoft (who’ve basically lost all credibility in my eyes at this stage). Still, I’ve got a horrible feeling that they’re going to make a mess of it. And I’m not just talking about that stupid giant wombat thing from the combat. I just half expect to discover that when it’s released that, oh, I dunno… that the English voice-acting’s been done by some awful C-Movie American actors who can barely read (like in Silent Hill), or that it’s badly translated and said bad actors actually say things like “For great justice!” (like in Silent Hill) or the whole game is a series of slime killing quests with progressively bigger slimes or… well, I don’t know. I just have a bad feeling about it. I’m not sure when I got so cynical about what used to be my favourite genre.

Well, right now it’s looking pretty neat. Pity I don’t have an Xbox 360 or have any plans to get one.

* 12 Comments

โ€œCrime,โ€ declared the police captain, โ€œis everywhere, crime, crime!โ€

Yeah. Sorry I haven’t updated in a while. I’m just not really in the bloging mood – I’m sure any of ye out there with websites can relate ๐Ÿ™‚

I’m still working on the game. Don’t think I’ll make the April deadline though.

* 2 Comments

Trials and Tribulations

In my humble opinion, Phoenix Wright is shaping up to be the best commercial game series since Final Fantasy. Both games one and two were exceptional – and from what I’ve played of the third one, I think it could potentially be the best of the lot.

* Post a Comment

More uncensored behind the scenes action

I got another evening in at Major Arcana. When I actually sat down to it, I didn’t really feel like scripting. So instead I did some much needed engine work. It turns out I’m in a programming mood at the moment.

Although the engine names each NPC for the purpose of calling their scripts, the actual scripts refer to the NPCs by number. This was getting pretty cumbersome, so I rewrote some of the commands to deal with npc names rather than numbers. I also added a few commands to group NPCs with identical names, so instead of, for example, initialising 15 doors as invisible, walkable NPCs, I can just call one command to initialise all the NPCs with the scriptname “door” the way I want them.

Essentially, the changes mean that the blocks of script like the following have changed from …

npc init{
  npcinit(0/-1/0/1/1);  #Gladius's Head;
  npcinit(1/-1/0/0/0);  #Chest;
  npcinit(2/-1/0/0/0);  #Chest;
  npcinit(3/-1/0/0/0);  #Lights;
  npcinit(4/-1/0/0/0);  #Lights;
  npcinit(5/-1/0/0/0);  #Lights;
  npcinit(6/-1/0/0/0);  #Lights;
  npcinit(7/-1/0/1/1);  #Door;
  npcinit(8/-1/0/1/1);  #Door;
  dir(up/1);
  music(0);
}

… to the considerably more manageable …

npc init{
  hide(Gladius_Head);
  npcinitall(Chest/-1/0/0/0);
  npcinitall(Lights/-1/0/0/0);
  hideall(door);
  dir(up/Gladius_Head);
  music(0);
}

This was even more ridiculous on some of Crystalus’s maps, which have about twenty “door” npcs each.

Here’s a full list of the command changes, just for fun. When I get a chance I’ll change the rest of the scripting engine to behave the same way.

npcinit(npc/appearance/movement/activation/passibility);
Previously NPCs had to be numbered relative to partysize 
(i.e. if there were four NPCs active in the party, then 
npcinit(0/x/x/x/x) would initialise the 5th NPC.
hide(npc);
This is a new shortcut for npcinit(npc/-1/0/1/1), which 
every door uses. i.e. invisible, activated when stood on, 
can walk over.
dir(direction/npc);
Now supports scriptnames as well as numbers. 
dir(left/Stella) will tell the NPC with the scriptname 
"Stella" to face left, for example.
appearance(spritenum/npc);
Like dir, alters an NPC's appearance, and now supports 
scriptnames.
scriptholder(npc);
The "scriptholder" is the currently active NPC. This would 
be redundant if I redesigned all the commands to deal 
with a given NPC instead. For now, I'm changing the 
scriptholder whenever I want to move an NPC. 
speaker(npc);
The "speaker" is the currently talking NPC, used to 
position textboxes. It's particularly useful to be able 
to just go speaker(Crystalus) rather than having
to do speaker(0) or whatever.
npcinitall(npc/appearance/movement/activation/passibility);
Like npcinit, only it deals with all NPCs with the 
given scriptname, allowing me to initialise multiple 
NPCs at once.
hideall(npc);
Like hide, only dealing with multiple NPCs. Makes it 
dead easy to initialise all doors with one fell swoop, 
as they say.

Hmm. Well, that was pointless. It makes my job a bit easier, I suppose, but it’s something that the player will never see or appreciate. The engine suffers from a lot of that, to be honest – if I’d only taken more shortcuts, I might actually have a compete game at this point… ๐Ÿ™

By the way, if you came here through the frontpage (which you really should do as this is a website not a blog and if you skip the frontpage you’re going miss stuff like when I add actual content and then you’ll be sorry) you might have noticed that the whole thing’s running off wordpress now. Thanks, DeveloperX!

* 4 Comments

First I did this, then I did this, and then I did this

This new pace really suits the project. I’ve only scripted about a minute’s worth of dialogue in total since I resumed the project on Saturday, but the bit I have done is far better than anything from the contest demo. I can’t believe I was originally planning to do all the scripting in a couple of days! What was I thinking?

I took a big shortcut for the contest in an attempt to get what I could out in time – instead of adding a proper object management system to the map editor, I just hardcoded the object definitions into the map files. It wasn’t a big deal to do that for Gladius’s level, but it would have been to do the same for Crystalus’s level, since her level has big open spaces and each edge needs an NPC to link the maps.

So I went ahead and added object support to the map editor.

I don’t know why I thought it was going to take me ages – this only took me about half an hour to implement. It’s made adding objects to each map a hell of a lot easier.

I’m taking my time with the scripting now. My immediate goal is to finish Crystalus’s level, just to have something more to the game than the contest content. I’ll make a proper plan after that’s done.

* 4 Comments

Ads for The Legend of Zelda

It turns out that Zelda ads are the greatest things ever.

* Post a Comment

Apparently “Double Damn” was a pretty hardcore swear word in the fifties

That little break lasted longer than I’d meant it to.

Well, no matter.

I’ve resumed working on Major Arcana. Right now, my plan is to have the full demo out by the end of this month. I should know at that point if the game has enough potential to justify my working on it any longer.

I’ll write more about my actual plans next week: this is just an announcement, really. For your information, and all that.

Oh, by the way – did you know there’s a forum on this site? It won’t be there for much longer – when I was setting up this website initially, I had the bright idea that I’d use a copy of PHPBB as the backend for the site, and edit some posts when I wanted to change the pages. Sorta like what Abstract Productions used to have set up.

Well, it basically works (I update the summary on the frontpage by editing a post in the forums), but I think it’s probably not an ideal way to handle things. I could probably do something similar and better with wordpress, but I haven’t been able to get it to work yet. Basically, I’ll looking for a magic piece of PHP code that’ll let me grab the body of a post and print it out into the index file. Check out this thread I posted on the wordpress support forums to see how far I got – if you’ve got any ideas on what to do, let me know, because I think I’m very close to a solution

* 7 Comments