Daily Update 2016.01.10

Changes & Updates:

  • Started writing more transcripts. I find them a much easier way to get my ideas down, since I don’t have to break my thoughts up into bits of code as I go.

Minecraft Story Mode

Finished Minecraft Story Mode (Episodes 1-4) today. It’s basically like a Minecraft campaign for Dungeons & Dragons, scripted as a movie. It’s also the first of the Telltale games/interactive movies I’ve played.

Good bits:

  • The visuals are top notch. Very Minecraft-authentic (at least if you’ve ever played the game with a shader pack installed), with a few concessions here and there (mostly character rigging and animations, which are significantly more detailed than in-game). The episode intros tend to be action-packed and end with some fun camera work.
  • Plot seems decent. Telltale’s shtick is player choices that affect how characters in the game view you, how certain events pan out, who survives, etc. I don’t have much of a comparison point since this is my first, but it seemed well done.
  • Doesn’t wear out its welcome. Each episode takes 90 minutes to 2 hours.

Bad bits:

  • Can’t save wherever you want. I played through the first 10 minutes or so twice, because the game doesn’t save until halfway through the second region. It’s not the end of the world; you just need at least 30-45 minutes to sit down with it (I’d recommend playing a whole episode at once though).
  • A couple weird plot holes; nothing major.
  • You don’t…do…very much. The game alternates between action sequences (basically on-rails with QTEs) and puzzle/social sections (talk to people, interact with objects, etc). The core is obviously the choice system, but in general the game didn’t feel very meaty.

Next up is Tales of the Borderlands, a similar product for the Borderlands game series.

Streamlining

As I transition from engine construction to content creation, I’m finding it a bit cumbersome. Take for example the frequent task of adding small, inconsequential items and scenery, where I just need a name, some accepted identifiers, and a block of descriptive text. Here’s what that process looks like now:

1
2
3
4
5
6
7
8
ecs.e('shiny-trinket', ['thing'], {
'name':'shiny trinket',
'nouns':['trinket','shiny trinket'],
'spawn':'dim-clearing',
'descriptions':{
'default':"A shiny locket, someone's discarded knick-knack. It's empty."
}
});

I think I can do better with some helper functions/macros. When approaching problems like this, I like to work in reverse: writing the code I want to work, then writing the necessary functions and support structures to make it actually run. The target code I want is something like this:

1
item('shiny trinket', "A shiny locket, someone's discarded knick-knack. It's empty.")

This is mostly suitable for barebones items and scenery, where the player doesn’t interact with the entity beyond looking at it and possibly picking it up. Note that the location of the object isn’t specified; the intention is that it’s inferred from context (a bit of a dangerous game, but an idea I’m exploring). The function would work like so:

1
2
3
4
5
6
7
8
9
10
11
12
function item(name, description) {
var item_key = getKeyFromName(name);
var parent = getParentFromContext();
ecs.e(item_key, {
'name':name,
'nouns':[name],
'spawn':parent,
'descriptions':{
'default':description
}
});
}

This got me thinking, though. For the Rulebook system, I built an ORM-style “query builder” of sorts, which uses method chaining to allow expressive creation of rules. Something similar could work for item creation, and support the above trinket example with added flexibility. See:

1
2
3
4
item('shiny trinket', "A shiny locket, someone's discarded knick-knack. It's empty.")
.alias('trinket')
.at('dim-clearing')
.done()

Again, this is mainly intended for simple items. For more complex items and scenery, the current style would be preferred.

Daily Update 2016.01.06

Updates & Changes:

  • Removed canyon east. Canyon center now connects directly to waterfall base.
  • Added description for canyon west.
  • Descriptions terse. Need more word.

Daily Update 2016.01.05

Changes & Updates:

  • Added canyon center, canyon east, and canyon west locations with basic descriptions.
  • Added waterfall base location.
  • Added waterfall and gold coin items/scenery.

Weekly Update #23

Changes & Updates:

  • New Year’s! 2016 is here. Party time over.
  • SRPG: Made a bunch of small text changes, added a couple scenery items.
  • Started house hunting. Tired of renting.

Daily Update 2016.01.03

Changes & Updates:

  • Did a pass through most of the starting location and item descriptions, making tweaks here and there to spice things up.
  • GM now berates the player for not knowing you can’t take an odor.
  • Added a couple new scenery descriptions.
  • Added polystichum neolobatum alias.
  • Referenced a flower-picking quest. Will see if I ever remember to actually add one.
  • Spider is now more smug.

A New Year

Happy New Year! I spent the last 24 hours-ish at an extended LAN party (the first I’ve attended; I’m a late bloomer). Mostly played Borderlands: The Pre-Sequel, with some TF2 and drinks on the side.

Need a new wall calendar.

2015 Recap

I’ve been doing this dev journal for just over 6 months. At the start, I had a simple goal: make a post every day, documenting the progress on StupidRPG (my game project). For the most part that goal has been met. This is post #184, and while I’ve had to do a little bit of catch-up here and there, I have a post for every day since I started.

Keeping up with the journal has been difficult, but keeping up with SRPG has been harder. That said, I made some solid progress on the game in 2015, including some serious structural work and a lot of early-game content. It’s more or less at the point where I can focus fully on content creation (rather than engine work).

As expected, the biggest challenges have been overengineering (making complex, flexible systems for handling game logic where more simple, ‘hackish’ solutions would be quicker and arguably better) and procrastination (I’ll explain what that means some other time). Regarding game content, the challenge has been breaking things into bite-sized pieces that can be worked on piecemeal. I usually work on the game for an hour or two at a time, so it’s hard to tackle bigger elements. Most of the content is deeply intertwined (intentionally).

Aside from SRPG, 2015 was a busy/stressful year. I’ve recently been focusing on work/life balance, stress relief, and cultivating a state of mindfulness and balance. I’m feeling optimistic going into 2016.