Nearly completable…

As the title says, I think I am only one feature away from the game being completable… Or at least in theory, because there will inevitably be some unpredictable bugs. ?

This feature is item handling, which eluded implementation last week because dialogues took a bit more than I had hoped for. However, everything is set for it (and I primarily mean that item scripts should already run properly) and it shouldn’t be too hard. I hope to do this (and related bug fixes) in the next day or two so I can finish documenting stuff that I haven’t already before the pencils down.

Just a good old regular update

My work for this week was mainly concentrated on the main game loop and the bytecode interpreter.

When implementing other parts of the engine, I tried following specifications and implementing the correct semantics, and not just transliterating the source code from the original engine. The main loop is much trickier to get right, however, as it is supposed to be re-entrant (luckily, only two levels deep) since some GPL commands expect to be able to call it to provide for interactivity while they execute (for instance, when playing animations). The original engine uses two loop status variables to distinguish between the various states of the loop and whether the current instance is a top-level loop or a nested one. It was my decision to mirror the original code for the loop much more closely because of that. (After GSOC, I’ll look into writing some unit tests for the engine and then try to refactor away some of the nastiness in the design without completely breaking everything. Wish me luck on that.)

Half past 7

That’s what the time is over here. And I don’t mean PM. Nor do I ever wake up this early (yes, I’m one of those people who rarely see morning). Don’t you just hate it when “Okay, I’ll just implement this trivial feature, for which my mighty libraries are fully prepared for, by adding this line over here” turns into a mad multiple-hour bug hunting spree? Not to mention the joy I then experienced when I realised I haven’t yet blogged this week.

There. I feel much better now. ?

Stumbling blocks…

This is just a quick update about the current progress to satisfy the one-post-per-week requirement but I’ll have another more elaborate post in a few days. Hopefully by then I’ll have a more featureful main loop than now.

The seventh week

I’m a bit overdue with my blog post because of some personal problems but now I’m back and thought I would give you a short update on how things are going.

Since the last time I wrote, I finished implementing the game’s animations, dealt with a number of GPL interpreter features—the math evaluator is now almost completely working and I’ve started implementing GPL commands and functions—and worked on connecting it all so I can start loading scenes. The results were much better than I had anticipated; so much that, after fixing some minor graphical and logical glitches, I was able to load all the game’s scenes and animate them properly. I have made a short demo inside the engine which lets you switch between those by clicking the mouse buttons. I will post a video shortly (after YouTube has finished processing it).

The next few things that need to be done are handling the dragon’s animations properly, adding basic interactivity and gradually finish the GPL interpreter. This also means the progress in adding new functionality should be pretty rapid.

I’ll keep you posted.

UPDATE: Here’s a link to the video I promised.

Starting the “real” work

Hi everyone,

As the title indicates, I’m nearly finished with all the preparations that were needed before I could start working on actually running the game. I already have support for most of the necessary subsystems, animations excluded, but that will be done today. It can be inferred from the schedule in my last post that this means I’m a bit behind. This is because I decided to do an architectural change concerning the representation of drawable objects that held me back a bit more than I expected. Nevertheless, today is a good day for deadline chasing!

Up till now… Hopefully Shatner won’t sue

We (ScummVM GSOC students) have been asked to submit a status report on our progress so far and a timeline for future development. Hence the cheesy title. We have also been asked to share the reports on our blogs with the world so everyone can get the same enjoyment from reading them as they did. ? Here it is:

No fancy title this time…

… because I can’t think of anything neat. Okay, I admit it, I’m really bad with titles. ?

I’ve done some more work on the Draci Historie engine. Some of the visible new features include support for the game’s original fonts and mouse support. Some of the not-so-visible features include work on a sprite class which will be needed later on when I start incorporating actual game elements.

On dragons and bytes

In my last post, I mentioned that my next task was to implement a bytecode disassembler for the game’s scripting language (which is, humorously enough, called GPL). The disassembler is now finished, leaving ‘only’ the actual callbacks to be implemented to become a full-fledged GPL interpreter. Comparing a few disassembled scripts with the originals yielded favourable results and since I had the x86 reference implementation, I’m fairly certain I’ve got things right. ?

Coding the BAR archiver

Hi folks,

As I’ve mentioned in my previous post, I have been working on archiving code for Dračí Historie during the last week. The coding process went smoothly enough thanks to Robert’s helpful comments about the archive format; I have been able to do it almost without looking at the original code.