The most exciting thing you’ll ever see

Movement arrows!

I managed to display a static image, that’s gotta be progress, right? So mouse input is in place (sort of), hitboxes on the screen are getting registered correctly, keyboard input is hacked in for testing and I have this cool picture of arrows in the right corner with miss-matched color palettes and an out of place green cursor, nice! Don’t worry, more is coming (in like 3-90 days). And by more I mean champion selection and inventory stuffz, oh boy won’t that be fun! Well it would be, if not for the monstrously long functions. The worst about them is that they are heavy on compiler variable sharing because they were meant to produce the exact same executable as the original source code would (sound very much insane, right?) when compiled with the same compiler. And that’s it for this blog post.

As a finishing side note, there shouldn’t be any hiccups since I’m finished with all the exams, thus my studies won’t be weighting me down and I don’t have much to do right now aside from coding up this super cool game.

Still alive

I hope that the next blog post coming up will be of actual progress we’ve made.
As I said in the previous blogpost, progress has been hindered. That statement wasn’t too accurate… a more precise description would have been, progress has come to grinding halt.
With the progress I’ve made before the coding period, after discussing it with my mentors, I focused entirely on studying for my exams and after the last one, I should resume work, which should happen on Monday, hopefully.
Screenshots would be due for a proper blogpost, but I have none which I’ve not showed you already.

Walls, yet again

It’s been a while since my last post… yet again, although this time at least, it’s not entirely my fault. Relatedly, progress has been hindered.  I was foolish enough to let my guard down and ’em exams crept up on me. Hopefully they’ll soon get off my plate and I’ll be able to resume work. Until then, here is a tiny screenshot just to keep you happy, it’ll probably be very familiar ^^

The first chunk of graphics code is somewhat ready, sans some “minor” bug fixes in the current codebase, like the piece of code that tells other pieces of code where things are and which way they want to look gets it wrong about half the time. Also if on the off chance you happen to check out the engine in it’s current state, you’ll notice that the portraits and the ornaments are not shrunk but rather clipped and they are drawn with mismatched colours. After correcting the faulty logic, next up I think will be to add some GUI display. After the GUI is ready enough, character selection should be next up. It’ll require further code to handle interacting with the dungeon, with portraits to be specific and also this is where mouse support comes in (which I should have implemented already). After that it’s inventory management. This more or less follows my original plan.

GSoC Acceptance

I’ve have been more than delighted that I have been accepted to GSoC! My excitement knew no bounds when I got the email.

This is my very first post and my very first blog actually. Cranking out even short texts out of my fingers has always been a challenge for me, but I’ll try nonetheless, hopefully on a weekly basis.

My task will be to build the engine for Dungeon Master so that players can… well play with it again. I’m really glad that ScummVM now includes rpgs, as otherwise I could now have found a project with ScummVM to my liking. According to my schedule I’m am to start working on the project this week already, we’ll see how that unfolds. Hopefully my studies won’t interfere much and my next blog post here will be of the progress I’ve made with the engine.

That concludes my very first blog post.

Very dungeon walls, much wow

It’s been a while since my last post… I could say, that I didn’t have the time, but honestly, I had plenty, I’m just damn lazy. Also, I had a little hiccup, when I tried to implement a part of a display function. Started typing it up, realized that it has dependencies, so I went to check out those parts but then those parts had dependencies and so it went and I went with it down the rabbit hole. By the time a I realized that I wrote/imported about a thousand lines of code since the last commit and the last time I compiled it was about three days ago it was too late to go back (actually I could have with some additional work, I just thought it was no big deal). This will forever bare it’s mark in dm’s commit history. Long story short, I left out some details in some functions and did away with loose ends (otherwise I’d still be typing up code for that monsterous commit), and ran it. Little wonder, that it crashed with some bizarre results after a few init functions. Then I spent about two days fixing code, slowly stepping through it line by line, the result was that now file parsing, aside from some minor details is very much complete, there is still some untested code, but that music belongs to the future.

Still, it was a fun experience (who wouldn’t want to have a date with the debugger at three o’clock in the morning), I also learned from my mistake and the next time I am to write some functionality into the engine, I’ll list the dependencies first and start from the bottom up. That should help prevent accidents like this in the future.

Finally, here is a gif from the zeroth level of the dungeon:

PS: sev was kind enough to lend his time and wisdom in git wizardry, so the repo (sans scummvm code) with the commits has been moved here.

File parsers

The engine stub has been created and minimal file parsing has been added, more specifically: the engine can now load and parse the graphics.dat file and decompress the images contained into bitmaps on demand, other than that not much more, but at least it’s something visual. Also related to files, uncompressing the Dungeon.dat is now possible, but it’s contents have not been used up yet. You can check the commits on github if you like, feel free to comment, give feedback ^^. The author (as mentioned in the comments, not the original author), who graciously gave his sources to be worked from, has a handy blog in which describes the file structures and algorithms used on them in detail. That and my mentors’ help has been the source of progress.

Link to the github repo:
https://github.com/WinterGrascph/scummvm/tree/dungeonmaster/engines/dm

On a personal note however, regarding development speed, I’ve spent too much time debugging errors in 30 lines of code today and boy was it frustrating. In my personal opinion I’m making progress very slowly, I would rather it went a lot faster, I’ll have to work on being more efficient with my time in the future or I’ll finish nothing be the end of the summer.

Regarding other stuff, git has repeatedly got out of my control and me being me, I’ve gone the easy way and used force push. I’m really glad nobody is working on the same branch, because otherwise I’d have been burned at the stake by now, but hey, at least my history is clean. 😀