Changelog 2014-02-10

=========
CHANGELOG
=========
Week of 2014-02-10:
- Finished porting engine code to AFX 1.1
- Ported script code to AFX 1.1
- Loaded test AFX spell into game (Light My Fire) and set it up to operate on the locutory fireplace
- Finished new animation controls for Drogo (NR)

1 person likes this post.
Posted in Vespers | Leave a comment

Comments on Changelog 2014-02-03

No update to the Changelog last week due to vacation. If you haven’t experienced Yellowstone National Park in the winter, I highly recommend it.

Got off on a bit of a tangent lately. It started when I decided to look more seriously at the PRAY command, and how best to implement it. Without giving too much away, Jason used the PRAY command to great effect in the original Vespers, but in a way that is very challenging to implement visually in 3D. As I apparently described in a blog post from precisely two years ago, PRAY has been something weighing on my mind for quite some time:

There is still the question of how to implement the PRAY command, however. In the text version of Vespers, PRAYing has an important impact on the game, and Jason did some creative things with it, particularly in the description of the effects on the player. I have a plan in mind to do something similar in this version that involves the use of Jeff Faust’s AFX code for Torque, but that’s not an easy system to digest. I’ll probably include some temporary placeholder effects taken directly from his sample code while I spend the time learning the system and developing all new effects that are more appropriate to the game.

So here we are, a full two years later, and I’m now looking into doing something about it. I started by looking over the AFX code mentioned above as a template for what I wanted to do, but I soon learned that the AFX code had been updated a couple of times over the years, first from version 1.0.2 to version 1.1, and later to version 2.0. So I spent some time looking over the changes implemented in version 2.0, and what it would take to port the code over to that version.

What I soon learned is that, contrary to expectations, porting over the C++ engine code is actually much easier than dealing with all of the changes to the script code. Jeff made a lot of changes to the scripts, including their structure and organization, when he moved to version 2.0, and that presents a huge challenge. There’s almost no way to tease apart my script code from the base Torque/AFX script code, so merging my previous scripts with the newer 2.0 scripts would be a nightmare. This, despite the fact that it took me only a few minutes to merge my C++ engine changes into the AFX 2.0 engine.

So that meant going back to AFX version 1.1 to see if even that version made sense, and I think it does. The changes to the script code in this version are fewer and, at least on the surface, easier to deal with. But that will take a little more time to review them all. The advances to the AFX features appear to be worth the effort, though, so I’ll spend the next week or two figuring this out. If it doesn’t look feasible, I’ll still have version 1.0.2 to work with, which should provide most of the functionality I need.

At that point, it will then be all about creating the special effects to reflect PRAY results like:

“Fire rips through your body, boiling your flesh. Bubbles spread across you: tumors. A cough shatters your composure, a shower of blood and vomit released in its wake. Screams spin in your ears. You collapse, and the pain subsides.”

That should be interesting.

 

Be the first to like.
Posted in Vespers | Leave a comment

Changelog 2014-02-03

=========
CHANGELOG
=========
Week of 2014-01-27:
- No update this week due to VACATION. Winter in Yellowstone!
Week of 2014-02-03:
- Began to explore implementation of the PRAY command
- Catalogued all of the instances and outcomes for PRAY based on target and timing during game
- Explored porting code to AFX 2; decision made not to use this version due to magnitude of script changes required
- Began to port code to AFX 1.1 to implement PRAY and other features
- Finished new animation controls for Cecilia (NR)
- Implemented new animation controls for Drogo (NR)

Be the first to like.
Posted in Vespers | Leave a comment

Comments on Changelog 2014-01-20

The main theme in the last couple of changelogs has been “entering” and “exiting”.

In Vespers, there are several objects that act as traditional interactive fiction-style “supporters” and “containers” — that is, objects that allow you to mount them (supporters) or enter them (containers). These would be objects like chairs, benches, and beds. The latter is particularly important for Vespers, but either way if we’re going to include objects like these in the 3D world, there should be a process in place for sitting and lying down, even if it’s not crucial for the completion of the game. Without that, the world would just seem too non-interactive and uninviting.

In text, the process of mounting or entering objects is fairly straightforward, and is communicated through a few simple cues:

>GET IN BED
You get onto the bed.
>LOOK
Your Bedroom (on the bed)
The room is small; the same as all the others. But it seems smaller of late. The hall extends to the west.

In 3D, there are a few additional things to consider. Do we animate the sitting/lying action, or just pop the player right into the chair/bed? If the player is lying down, should the camera be rotated 90 degrees? What will be the impact of not showing the player’s body once in the chair or bed? Do we allow the player to get up by moving, or do we freeze movement and require the player to enter a specific command, like GET UP?

I think I was able to find a reasonable solution to each of those issues. Fortunately for me, the player character in the game engine comes with pre-existing animations for getting into and out of “crouch” and “crawl” positions, which work very nicely for sitting and lying positions, respectively. So when getting into a chair or bed, I reposition the player to the same coordinates as the object, play the “crouch” or “crawl” animation, and then freeze movement controls so all that can be done is to look around, click on objects, or type commands. If the player wants to rise, the GET UP command has to be given, and then I just do the reverse actions.

It does come across as a little weird to appear bodiless in a chair or bed, but I don’t think it’s different enough from the rest of the game to come across as jarring. As for the camera angle while lying down, I think it’s pretty clear that rotating the camera sideways would serve only to make things very confusing for players. As it turns out, keeping the same camera orientation while in bed really doesn’t come across as strange.

Once that was done, then I had to create all of the various ways of ENTERing or EXITing these objects. ENTER, EXIT, GET IN, GET INTO, GET ON, GET ONTO, GO IN, GO INTO, SIT, SIT ON, SIT ON TOP OF, SIT DOWN ON, SIT DOWN IN, STAND, STAND UP, GET UP, GET OUT OF, GET OFF, and GET OFF OF, and so on and so forth. It’s quite fascinating (and exhausting) how many different ways there are to say it.

Then there was just the process of making all of the different beds, chairs, and benches “enterable” and “supporters”, and we’re set.

The choir stalls were a different matter, though. I wanted to restrict the player from entering the choir stalls for various reasons, the most important of which is that they just weren’t designed for it. But because they are so large they also created problems with the parser. So I had to come up with a customized way of responding to the various commands for entering or sitting in the choir stalls, while gracefully not allowing it. In the end, I think it works well.

Be the first to like.
Posted in 3D/if, game design, interactive fiction, Vespers | Leave a comment

Changelog 2014-01-20

=========
CHANGELOG
=========
Week of 2014-01-20:
- Finished implementing code to SIT the player in a chair, and to get up from the chair, with animation
- Mapped the SIT command to the ENTER action ($vENTER)
- Implemented the SIT/ENTER action for the locutory and calefactory chairs, and the calefactory benches
- Converted all of the short tables and benches in the refectory to selectable objects (so SIT now works)
- Converted the choir stalls to enterable to allow ENTER action; created custom $vENTER call to handle it
- Implemented the verb action for GET OFF (GETOFF)
- Implemented the verb action for STAND (maps to EXIT for STAND or STAND UP, ENTER for STAND ON)
- Finished new animation controls for Constantin (NR)
- Implemented new animation controls for Cecilia (NR)

Be the first to like.
Posted in Vespers | Leave a comment