Brian Crick

Blog

The Space Shuttle is big.

The space shuttle is big.

I kind of knew that, sure. I’ve seen pictures of it and seen it on TV. I’ve watched it blast into space on giant movie screens. I can go to Wikipedia and find out that the Space Shuttle has a wingspan of 78 feet.

And yet, on some very basic level, I didn’t really know how big the Space Shuttle was.

* * *

One of my biggest non-technical problems with getting Tinselfly done — perhaps my very biggest problem — is that I have trouble imagining things. I have trouble looking at an untextured, blocky mockup of an level and knowing if my plans for it will work. I can’t get past the lack of texture.

* * *

The Eiffel Tower is big.

My wife and I visited Paris a couple years ago, and at first, we had no interest in visiting the Eiffel Tower. We’d seen it in photographs, and kinda thought it unappealing to look at.

But we saw it, in the distance while in Paris, and — who knows when we’d ever get back to Paris — decided to walk over to it and see what all the fuss was about.

It was a long walk.

DSCF0363

The Eiffel Tower is not something to be seen from afar or in photographs. It is a space that you enter.  We didn’t really appreciate the tower until we knew how long it took to walk from that flat postcard vista to being in it, until we were underneath it, surrounded by it.

* * *

One of my biggest non-technical strengths when it comes to Tinselfly is my ability to forget: to see my game world and mechanics the way a new player might see them, almost every day I start up my game. It is always new to me, just as mundane things in the real world frequently feel new to me.

* * *

My wife and I recently visited New York City, and while there, we saw an exhibit showcasing costumes from Star Wars. The costumes were beautiful — more often than not,. more beautiful to me in person than they appeared on film. But what really struck me was seeing the costumes life-size. Looking into Boba Fett’s visor, just above eye level. Seeing R2-D2 and BB-8 as real things, instead of abstract designs on a movie screen.

* * *

The space shuttle is big.
Untitled_Panorama1

While in New York City, my wife and I also got to see the Space Shuttle, and it was far bigger than either of us expected.

I always say things are bigger than I expected. The Shuttle. The Eiffel Tower. BB-8. Every structure on the Mall of the U.S. Capitol.

When I say the Shuttle is bigger than I thought, what I mean to say is that I’m experiencing its weight and volume and three-dimensionality in a way I’ve never experienced it before. I’m not just thinking about size or looks:

I’m thinking about how high I’d have to reach up if I wanted to touch the bottom of the wing, if I could reach it at all.
I’m thinking about how long it takes to walk from one end to the other.
I’m thinking about how many bones I would break, If I fell from the top of the tail to the ground.
I’m thinking about how many people fit around and under it.

In my head, the Shuttle is a playground. Its dimensions are not measured in feet and inches, but in time and effort and danger and crowd populations.

* * *

When I look at an unfinished scene in my game, all I see is unfinished visuals. And when I try to imagine filling in details, all I think about is painting in unpainted blanks. I think it might be good to train myself to think in terms of these non-distance dimensions.

With that in mind, I give myself the following suggestion:

If I have an unfinished scene and I’m having trouble imaging the player’s flow through the scene or what’s supposed to be going on there in general, I will drop some temporary characters in it, start up my game and wander a while, thinking about those characters’ experience of the scene — not what they see, but what they imagine doing on this playground.

In many ways, it may be far easier for me to imagine characters’ reactions, than it is to imagine a whole textured scene and them imagine myself reacting to it.

So. Much. Feedback.

This weekend, I demoed Tinselfly at IndieCade East. It was only a two hour slot, but wow did I get a lot of feedback — I got way more traffic there than I got at other, all-day type events I’ve done before.

It’s… a lot to process.

And it needs to be processed; I should neither follow every suggestion everyone made, nor forget what was said and done in those two hours. And, in fact, if I’m thinking in terms of following-or-not-following suggestions, I’m probably thinking about it wrong.

the audience

I’ve demoed Tinselfly maybe four or five times now, but this event was new to me in that it seemed entirely populated by, well, people who were really into video games. Most of the events I’ve been at before were not specifically game related: they were more family-oriented fair type things where each exhibitor table was showing very different things that might broadly appeal to random people walking around a fair.

So at first the crowd at IndieCade threw me off; they were giving helpful comments, but they were different sorts of comments than I was used to. In the future, I should try to get to know the individuals playing my game just a little. If a person who’s, for example  into highly competitive games gives me a comment, that context is important. In  many ways, the comments people give are less important that the unfulfilled expectations the player had, that prompted the comment — like, the expectation that there might be different weapons in my game, or leveling up. Which there won’t be.

I can’t (and shouldn’t try to) meet everyone’s expectations, but at the very least, continuing this example, I should make it clear from the beginning of the game that there are no weapon or skill upgrades; that character advancement, such as it is, happens in a fundamentally different way than most games. That’s something I need to communicate very clearly.

bugs

Thankfully, there weren’t any outright bugs anybody discovered that I didn’t know about already. However, it was still interesting and useful to see how the bugs manifested themselves — if at all — during the demo.

For example, in the very first scene there’s this staircase where you can walk through railings in the middle of the staircase, and you could walk off the edge of the staircase, which had no railings on the edge at all. And nobody walked through those railings or off the stairs, not even this one guy who was specifically trying to break things. I was kind of surprised.

So seeing which bugs came up and how often gave me some clues as to how to prioritize fixes for everything.

attention grabbing

There’s a part in the beginning of the demo where the player loses control of the camera briefly. One player really didn’t like that, and to be honest, I don’t like it any more than he did. It’s a brute-force solution to the problem of figuring out how to draw attention to things you want the player to notice.

In general, it looked like I really, really need to work on directing the player’s attention. The most egregious failure was that when starting a sword fighting duel, players frequently looked away from the area where their opponent would appear, before their opponent showed up. And then it wasn’t clear what to do because the opponent wasn’t visible on screen.

I… don’t have any specific thoughts on that right now. Just something to think about.

style changes

As you’re walking down those railing-less stairs, the point of view changes from third person to first. Many players stopped immediately when that happened, thinking that they’d accidentally pushed some pov-switching key.

I want the presentation to change based on the needs of the current scene; I think that’s an important storytelling tool. And I want the player reminded as often as possible that they’re playing a character with her own personality and goals and body. Among other things, that means being third person in open spaces and first person in confined ones.

But if players are getting confused by the switching, that’s a problem. I need to make it clear what’s happening, and more importantly, why.

What is focus, anyway?

I think it’s safe to say that progress on Tinselfly is going faster now than it ever has before. It’s a great feeling. I’m working hard to get things ready for IndieCade east at the end of the month, and while I’m enjoying this burst of energy, I find myself wondering how to keep up this level of productivity after IndieCade has passed.

IndieCade is not making me more efficient, and there’s no reason my energy has to drop once it’s over. I’m changing my habits in response to this looming deadline and that’s making me more efficient. So… what are those habits? How do I hold on to this?

* * *

A big part of this, or course, is time. I’m canceling obligations wherever I can to make more room for this project. And that’s definitely something I’m not willing to do for long periods of time. But there are certainly things I’m dropping — tv shows, finishing this or that video game — that I simply don’t miss. I’m kind of getting a clearer picture of what I want to be doing with my time in general.

Navy-Booth-10-April-2016

* * *

Another big part of this effort is getting rid of unnecessary work.

A few years ago, I entered this contest to design a new starship Enterprise for Star Trek Online.

composite-15-january-2011

It was going kind of slow, until I realized I was looking at my deliverables wrong. I was not here to make a spaceship. I was here to make an image of a spaceship, and more precisely, a bitmap image with fixed maximum dimensions. Sure, I could zoom in my 3d modeling program and see glaring imperfections in my design, but anything I did that did not make that final image look better was a waste of my time. The contest judges were not going to see my model.

So similarly, when there’s a deadline looming, I’m more likely to judge my game textures and models based on how they look in-game, not how they look in my editing software. This is not me reigning in being a perfectionist so much as defining perfection in more practical terms. I am trying to make my game perfect — not my models or textures.

* * *

Which is not to say that I’m getting everything looking and feeling perfect in-game, either. With a deadline approaching, I’m more likely to stop work on a particular task once the results are merely good.

And you know what? I hardly every find myself wanting to go back and change one of those ‘merely good’ assets. Declaring an asset or scripted event adequate isn’t just about accepting incomplete work — it’s about putting some distance between myself and the work. And once I’ve got some distance, I’m less critical of it.

* * *

I’ve been automating my process a bit lately, and I should do more of that.

Last week, it took me about half an hour to import a new character into my game. It was tedious, error-prone work. So I wrote a script to do a lot of the setup for me, and can drop a character in the game in about five minutes now.

* * *

Lastly, when I’m pressed for time I find myself more willing to find unique solutions to problems.

Fighters-4-April-2016

A while ago, I was working on some animated planes that flew by as you started the game. And I wasn’t really happy with how fast and dramatic they looked.

So I fixed the look of the planes… by adding sound. Once the planes made sound passing by — with some exaggerated Doppler effect added in — they felt impressive and fast and, yes, they looked better.

I’m more willing, when pressed for time, to start looking at new ways to solve problems instead of beating my had against my whatever solution I chose first. I was focusing too much on visuals here, and had to remember I’m creating an experience — which involves sight, sound, the game reacting to the player and the player interacting with the game. If the experience feels incomplete, chances are, I’ve been neglecting one of those four parts of my presentation.

 

Tinselfly Update: Dialogue

I’ve started implementing a dialogue system for Tinselfly, based in large part on the keyword-based dialogue in Ultima V.

The basic idea is, when you engage an NPC in conversation, you’ll type in single words and, if the NPC you’re talking to recognizes your word, they’ll respond with a single sentence, or maybe two, of dialogue. It’s not really a tree; nor is it a text parser; it’s more just a list of stimuli and responses… though certain words could lead to short trees a couple levels deep. You’ll learn new keywords to try by paying attention to the exact words your conversation partner is using.

(You can see every scrap of dialogue for Ultima V at the Ultima Codex. Most characters… don’t have very much dialogue at all.)

Yeah, it may seem a bit weird and archaic, using mechanics from a game made in 1988, but I think it has potential.

* * *

Dialogue makes me nervous. I’m not, you know, a very talkative person. I only get like three quarters of the dialogue in movies. My understanding of dialogue and dialogue writing is kinda limited. But, I’ve ordered a book on dialogue writing for written stories, and my wife, awesome published author that she is, will be helping. So I’m feeling a bit more comfortable now.

I’ve had to take a break many times during this project to learn new technical skills that I have to have, to complete this project. Dialogue is no different. I don’t have the skills I need here, and I either need to learn them or find people who can help.

* * *

It may seem backwards, but now that I’m building this, I’m getting a clearer picture of what I want. So here are my goals, and how I think this system might work.

  • Conversations should be short. In addition to the shortness of the rapid-fire stimulus -> response structure, I’d like a mechanic where your character tires of conversation quickly; she’s not a very social person. So the more you talk, the more energy you lose.
  • The player must not be encouraged to exhaust all possible options during conversation; I want them to think about what is worth saying and what isn’t. This could also be solved by the conversation fatigue mechanic — and the emotional weighting thing below.
  • The player should be encouraged to internalize the idea that specific words and concepts are pretty important to the story. By making the player remember the keywords and manually type them in, I think I can do that here.
  • The player should develop a sense that some words carry emotional weight for their character. Certain words you hear should cause your character to gain a positive or negative status effect. Certain words you type — whether or not you press enter — will cause you to gain a status effect. And the same should go for the NPCs. You should learn that there are certain words you just shouldn’t say around certain people.
  • The player should feel that her character’s close friends are just easier to talk to than other people. I could have less of a conversation fatigue penalty with certain people. I could also have a mechanic where close friends can essentially read your mind — they can react to your typing words before you press Enter on them. Could get annoying if done wrong, but I think it’s worth exploring.
  • NPCs should be able to strike up conversations with your character, of their own volition. I’m not quite sure how this would work, unless they’re asking simple questions where it’s obvious what exact words to use for answers you might want to give.
  • If you hear two NPCs talking to each other, it should feel like the NPCs are using the same dialogue system you are. Which I think I can do by, well, using the same code, with NPCs picking sorta-random keywords to use on each other.

Tinselfly update: Uncle Sam wants you

Well, I probably should have realized this earlier, but for a variety of reasons, the weekly project update thing just isn’t going to work. In fact, packaging them in my head as weekly updates makes me less likely to post here. So I’m switching to updates-as-they make sense.

So, have a Tinselfly update!

Signing-26-December-2015

I have started working on one of the first scenes in the story,  which involves recruiters. Your character lives in a town whose main industry is shipbuilding, and they hold a signing festival upon the completion of large ships, on the deck and hull of the completed ship. It’s supposed to be an air-show-like thing where, in addition to vendor booths and aircraft demonstrations, people who worked on the completed ship sign their name on the hull in this sort of signing ceremony.

So your character during this scene will be a teenager, and there will be Navy and other non-military recruiters trying to grab your attention.

There are a number of technical and design problems I need to overcome here, but as my first real scene, most are not unique to this:

  • I need a dialogue system, if only a temporary one while I decide how I want dialogue to work.
  • I need to figure out how to get NPC facial animation, both expressions and lip synching. This LipSync Unity plug in looks promising.
  • I need some puzzles to require you to visit each booth and pick up swag or talk to people; puzzles that give the player some introductory information about about her character, the world she lives in, and her relationship to various entities in it.
  • There will be a Navy recruiting booth kinda like the real-life Air Force Performance Lab. It will feature a handful of interactive activities testing people’s fitness for the Navy. In addition to making those activities interactive for the player, I need to show a constant stream of NPCs interacting with the activities and moving through the booth.

Your character won’t ever join the Navy, but I’m the most worried about the Navy booth — and not because of the visitor NPC scripting or animation. I’m worried about getting the tone right. I don’t want to look like I’m commenting on historical or modern recruiting or military organizations; but I don’t want it to look like the game itself is all hey! look how cool this is! either. It has to be earnest and honest and feel real, and over-the-top on selling heroics only to the extent that a real booth like this might go nuts with creating this brand around individual heroism, to get visitors interested in their program.

Tinselfly Update: Puzzle time

I guess ‘week’ is kind of flexible here, seeing as it’s been 9 days since my last post. 😉

What I did last week

Made a bathroom light, based on several antique 1920s lights I found online–though it’s not a copy of any particular design.
Bathroom-Light-13-September-2015
Made filler pieces for my walls, little wall slivers of varying widths that I can use to fill out walls whose lengths aren’t an even multiple of the panels I’ve got (which is most of them). Most filler pieces can use the same texture/material now, which hopefully will help with memory & performance a little tiny bit.
Wall-Filler-13-September-2015
This was supposed to be a big time saver too, but right now, getting the UVs right on filler meshes is kind of a pain. Gotta figure out how to streamline this.
Also wired my entire mess, including bar and bathroom lights.
Engineering-Mode-13-September-2015

Goals for this week

I didn’t have to do to all the filler pieces I wanted, and didn’t make bathroom fixtures besides the light. I’m calling those a loss for now, as I want to move on to making my first real puzzle.

At the moment, I have no idea what form said puzzle will take, but it will probably have to involve areas that are already reasonably detailed:

  • Ship areas:
    • Mess
    • Bar
    • Cabin
    • Lounge
  • City areas:
    • Ice rink
    • Soda fountain
I’ve just written some notes about how time switching puzzles might work, so I I guess the first step is to read over those with my decent-looking areas in mind and see if any ideas come to mind. I’ve also got some notes about how I might approach wiring specifically as a storytelling tool.
Ideally, I’ll come up with a story fragment first, and make puzzles that harmonize with it, rather than starting with puzzles and finding the story in them. But right now, I’ll take whatever I can get.

Gemslinger update: Sand & source control

I’m trying to get Gemslinger moving again, and that means, well, lots of setup.

What I did last week

Well this was done a while ago, but…

…sand!

Screenshot-9-September-2015

There are sand tiles now.

Goals for this week

Need to set up source control so my wife and I can collaborate of the project more easily. Luckily, we have a spare laptop we can use as a server and my wife is a sysadmin who’s experienced with this sort of thing.

I’d also like to start on a tool to import the map from a color-coded bitmap; it might only be used once, but hopefully that will speed up the initial map creation here.

Tinselfly update: Wires & Lights

Well, for a variety of reasons (which I won’t go into here), this summer has been nuts. But it’s getting back to normal, and in the interests of getting back into a routine with my pet projects, I’m gonna try posting regular, weekly updates here.

So here’s my first Tinselfly update!

What I did last week

I made some custom editors for wiring.

Engineering-Mode-4-September-2015

Since I haven’t mentioned this on the blog before: everything you see on your spaceship should be powered. And when you put your engineering glasses on, you should see wiring everywhere. If you’re going to be running around solving wiring puzzles, I want all the wiring to be functional and logical. So I’ve already got it so the game knows that, say, when you flick a light switch, the power line coming out of the switch loses power, and since it’s connected to some lights, each of those lights turns off.

To save myself time, many devices will be powered wirelessly; there won’t be power outlets. But every light, every automatic door, every large device, should be powered, with visible lines running to them, and lines running through things like lightswitches and motion sensors.

Adding all that wiring will be a lot of work, so to save myself time I’ve made a custom editor. I can drop these sort of wiring canvases into the scene and plot lines on the canvases reasonably quickly now.

Goals for this week

I could fuss over my editor more, but it’s functional now and I’d like to move on.

I’d like to get my mess completely wired, including the bathrooms, entrance and bar area. That, by itself, shouldn’t take very long. I’m most of the way there already.

The more time consuming part will be designing and modeling new light fixtures for the bathroom and bar. And I’m careful to use the word design here: lately, I’ve been feeling more like a curator, faithfully reproducing antiques I’m finding images of online . But while my ship has a 1920s sort of aesthetic, this isn’t the 1920s. This  isn’t our world at all, not even an alternate history. I need to get back to designing things with styles that recall the 1920s, while still being having their own identity.

I also need to design and model a toilet and other bathroom fixtures.

Lastly, I’d like to finish updating my mess with Substance Designer/Painter textures.

Failure is not an Option

So I’m playing Republique, a stealth game where you’re trying to evade various guards and escape from this compound… and one of the guards sees me, and catches me, and I’m like, crap, I gotta do the level again– –except, I’m still, much to my surprise, in control. The game hasn’t restarted.

So I pepper spray one, but another guard grabs on to me soon enough and starts to escort me back to my cell. And I’m still in control. I manage to play along with being escorted long enough to get to a doorway, and close the door between me and the guard and lock it, and run away to safety. I got out of a tricky bind, and it was a weirdly satisfying experience. I never failed. The game never said

YOU LOSE

in horrifyingly large-point text; it never showed my gruesome impaled-on-whatever-pointy-thing’s-nearby death, it never faded to black and made me start over. And I really loved that. It let me see that I was about to fail, and gave me a chance to correct it.

* * *

Repeated failure is one way to teach a player the skills needed to get through your game. I tend not to like games where the player is expected to die over and over. I just find them, well, annoyingly repetitive. It’s like trying to have  conversation with a teacher who has a two-word vocabulary: try again.

Other games teach through explicit written or verbal prompts. They can be integrated to the game environment in fun ways, but there’s something kind of sterile about that approach.

Usually, my favorite approach is education through level design: you get a new item, and you’re immediately presented with an escape-the-room type puzzle where you have to use your new item in a specific way to progress.

I don’t think I want any of these for Tinselfly.

* * *

So I’m trying out Guild Wars 2 and I get totally clobbered by a monster. And I don’t respawn. I fall to the ground, and, for a short time, I can try to delay my inevitable defeat by throwing rocks at my opponent and flailing a bit.

I am dying.

It’s a fairly protracted death, and there’s something really interesting about that. Most games, you live; you die; you restart; you are never dying. You never dwell on it.

* * *

If you die over and over in Tinselfly, I guess that’s ok. Your character has an overactive imagination, and a maybe little bit of survivor’s guilt. I could have her die over and over, because she could be, in some ways, obsessed with death. I’ve been exploring the idea of having my climax be a puzzle where you’re trying your hardest to get your character to not gleefully sacrifice her life for her country. It’s a little bleak.

That’s a direction I could take the character. But I’m not sure if that’s really what I want for the character or if I’m just trying to shoehorn the character into that dying-a-zillion times video game trope. Like I said, I tend not to like games where you die a lot.

I’d prefer my character to be fairly ordinary, with ordinary dreams and ordinary roadblocks. Few moments of the game should be life-or-death situations for her, and I don’t want anything overly melodramatic in her past: no dead parents; no traumatic childhood. I would actually like her to exist in a reasonably nice, supportive environment. I want her problems to be relatable.

If you mess up, I’d like it to be like Republique, where you have an opportunity to make things right before the game says, nope, it didn’t happen. Try again.

* * *

Tinselfly is supposed to be my attempt at a character-centric, but still fundamentally action-based game. To that end, my plan to solve the problem of teaching the player game mechanics was to have the lead playable character teach you the mechanics–she will talk to you sometimes–through a game-within-the-game with identical mechanics as the game proper. She well tell you the basic controls within the context of this sci-fi video game she likes, while at the same time giving you a sense of her character and how she engages with this game universe, which is pretty plot significant. It occurred to me, however, that there were also other techniques I could use. I’m not sure I’ve seen it done, but I’d like to have non-playable characters teach you some mechanics by example. Your character is not supposed to be a lone warrior. She’s part of a small ship crew, with some experienced members and some new people. Thematically, the NPCs-as-teachers thing would be really great if I can pull it off, if I can have your mentors in the game function as mentors. Having said that… I need concrete examples of how this might work. So here are a few thoughts:

  • NPCs can show you where it is safe to go by, well, going there.
  • NPCs can communicate places that are unsafe by stopping abruptly before hitting dangerous spots, or hitting dangerous spots before you do and visibly reacting.
  • NPCs do routine tasks you also have to do: using consoles, applying combat dressings.
  • You can watch other engineers fixing things.
    • Maybe you could tell who fixed something by the neatness of wiring in various places.
  • You can watch other people swordfighting.
    • Your character could comment on specific techniques they’re using. Yes, it’s explicit verbal instruction, but it could be done in a way that is both instructive and revealing about your character.

All of this depends, of course, on my ability to animate NPC interacting with things in meaningful ways, which I’m not sure I’ll be able to do. But hopefully, if I approach NPCs with this sort of mind set, both they and the playable character will feel more real and interesting.

Solving for Pine Wood

A few days ago, I got a subscription to Substance Live. It’s a ‘rent-to-own’ kind of deal where, for around $20 a month, you get access to tools that let you make realistic looking textures for video games.

Before this, I was using texture nodes in Blender. To give you an idea of the level of quality I was able to achieve with those, here are some cafeteria tables with Blender textures that involved hours and hours of tweaking, over the course of several months:

Mess-13-March-2015

And this is what I’ve replaced them with, just playing around with Substance Painter over a couple of free evenings:

Mess-20-August-2015

I find the new wood table textures just… better. More realistic, more detailed… and they took very little effort to make and customize.

I probably should have gotten this a lot sooner. The cost is minimal, and the results are wonderful.

* * *

Procedural pine wood surfaces are a solved problem. I’m not the first person to want an unfinished wood cafeteria table in a video game.

And yet, when confronted with any problem — how do I make convincing procedural wood, how do I make this music sound more nautical, how do I make a wormhole you can walk through — my first question is, how do I solve this problem?

My first question should be, has someone else already solved this? And most of the time, the answer will be yes. Sometimes I’ll have to pay for someone else’s solution, but most of the time, it’s totally worth it.

These problems are solved.

* * *

Sometimes, I think of myself as a sort of lone pioneer, exploring new ground: the sort of game I want to make has never been made, to my knowledge, and certainly not by a single developer. However, the whole ‘lone wolf’ thing is entirely inaccurate. First of all, I get a huge amount of input from my wife and my brother, who are at times more opinionated about the nature of my wacky 1920s-but-not-really, sci-fi-but-not-really universe than I am.

And secondly, I’m not here to fashion bespoke solutions to every problem that comes my way. I am, increasingly, using other people’s tools and libraries to finish this project — which I see as giving me more independence, not less. I’m here to try to solve some very specific problems: how do I craft puzzles that teach you about characters rather than impersonal systems; how do I set up situations where I’ve loaded up simple player actions with piles of emotional context.

Realism in texturing is not one of these problems. I have nothing to add to the field of realistic texturing.

* * *

So I want to focus more on picking my battles, which in many ways means finding more tools that will help me. I’ve already got a third-party character modeling and animation system I like. I’ve now got a texturing system I like. I may, in the future, start looking for a way to auto-generate 1920s style, hand drawn and lettered posters and signs, rather than hand-drawing everything myself. I am capable of doing hand lettered signs. That doesn’t mean I should do it here.

 

And hopefully, this will all let me give my characters and story the attention they deserve. Those are the most important problems I need to solve here.

Copyright © 2017 Brian Crick.