Progress – Locations

One of the worst parts about designing a game engine is that a whoooole lot of the work you do goes into the underlying infrastructure, which tends to be rather boilerplate work that facilitates content when it’s done, but does not actually produce much of anything you can actually show others when it’s still in progress as proof that you’re actually getting work done.  Such is the case right about now – I’ve been working on enabling location navigation within the game engine now, which is basically taking us up one more level: locations contain characters, with whom you can get into encounters, as was demonstrated in the last video.

Unfortunately, I’ve still got a ways to go as far as work goes on this part of the game engine, but since I’m a tease, here are some early screenshots to tide you over and reassure you that I am in fact working on this game:

Continue reading

Engine demo – Character encounters

Phew, this took a bit longer than I expected it to – I kept finding more and more things I wanted to implement for the test content seen in this video –  but the next gameplay video is finally ready for display.  This time, we’re taking a look at character encounters.  A full explanation can be found in the video (now with narration!), so I’ll just stop talking and post the video:

More details about just what is seen in this video appear after the break.

Continue reading

Character encounters coming soon

Just checking in to say that progress is coming along just fine on character encounters.  These will take us one level above interrogations – character encounters account for a full session with another character at a given location, which can include multiple questions and interrogations.

I’m still working on them, but a gameplay video should be out in the near future.  Here are some screenshots to tide you over until then!  (Click for full size.)

All hard-coded values removed

Dear Princess Celestia,


Today I learned an important lesson on the value of good coding design.  If you’re writing a piece of software that you intend to be modular, it’s always a good idea to plan out the design to actually function this way before you start writing any code.  Otherwise, a sudden realization of a fundamental design flaw might require you to rewrite the whole content storage system in your application.  And that wouldn’t be so good.


Your faithful student,


Gabu

OK, so I know that I said in my last blog entry that the next thing I’d be working on was character encounters, but as you probably gleaned from the above, I suddenly realized shortly after writing that that there was a fundamental design flaw in the way in which content was stored in my application that made it impossible to load content (images, audio, etc.) from an external source.  This was a Very Bad Thing, because that obviously meant that the entire idea I had behind cases being modular and separate from the executable was not going to work.  So unfortunately I had to spent the last two days effectively tearing down and rewriting the content storage system in the game to properly accommodate the loading of external content.

However, I’m pleased to report that that speed bump is now behind us, and the game is now looking better than ever.  I’ve now broken off the case source compiler from the executable itself, and have gotten it to successfully compile all the case data plus all required images into a single binary file that can then be loaded into the executable.  In other words, I’ve already got a very, very rudimentary version of a case editor up and running.  <fluttershy>yay!</fluttershy>

As such, now I can finally begin work on character encounters.  Sorry to anyone who was expecting that work sooner.  I promise that when that’s done, I’ll finally actually have some more gameplay footage for you to look at, rather than just this technical mumbo jumbo. 🙂

More details for those interested after the break.

Continue reading

Interrogation parser is done

I unfortunately don’t have much to actually show for this bit of work that I just completed, but it’s important all the same.  Essentially, as I alluded to in my last post, I’ve been building a rudimentary parser for a conversation declaration language that I’ve put together, which allows me to quickly define conversations in an intuitive and sequential fashion.  That parser is now complete – I’ve successfully gotten a text file to compile into a conversation object that can then be loaded into the game engine and interacted with.  As work progresses and I implement other aspects of the game engine, this parser will need to be upgraded to also compile text files into objects for those parts as well, but this is a good start.

If you’re currently wondering why you would care about this – isn’t this just an internal implementation detail? – enabling the ability to define the case data in this fashion separates the game data from the game engine, which carries with it a number of tangible benefits:

  1. It enables cases to be defined in a modular fashion – in other words, cases aren’t built directly into the executable file. This makes it so that players will be able to install the executable file once, and then just download and open separate case files to play future cases, instead of requiring an update to the executable file itself.
  2. It enables the creation of a case editor separate from the game itself, which can be used to create, edit, and save these case source files, which can then be compiled and loaded into the game itself.
  3. It enables cases to be defined in a platform-agnostic fashion – the game I’m implementing is built in XNA, meaning that it won’t run within the context of an operating system other than Windows, but because the cases are defined in this fashion, porting the game to another operating system would only require the re-implementation of the game engine and the case source parser, not a re-implementation of the actual cases themselves.

For those who are really interested, the definition of the conversation seen in the video in the last post, along with an explanation of the different actions defined within it, appear after the break.

Continue reading

Engine demo – Interrogations

The very first part of the game that I decided to start working on, since I had a feeling it would be the most involved, was the interrogations – the portions of the game where you listen to a character talk about a subject, press them for more details or to get a reaction from them, and then present them with evidence to expose a lie if they’re making one.  That portion of the game engine is more or less complete at this point, and I’ve put up a video demonstrating the gameplay for this part of the game after the break.

More info after the break.

Continue reading