Conversations

It’s Friday, and you know what that means.

<Queue intro: epic music, crazy stream highlights>



Colonists are slowly becoming more and more polished. Last week we implemented thought bubbles. This week we implemented conversations.


Talking

Every game tick (which is currently every game minute) colonists who aren’t in a conversation look for nearby colonists.

Once a colonist is found, a new conversation is created. Unless that colonist was already in a conversation, in which case the conversation is joined.

Some random speech bubbles

Some random speech bubbles


There’s some other criteria as well. The found colonist can’t be asleep or dead, for example.

Conversation Range

Colonists need to be within a certain range to talk. I think the current value is 8 tile units or 4 floors.

Colonists must be near each other to talk

Colonists must be near each other to talk


The distance required to leave a conversation is 50% greater than the distance required to join a conversation. This prevents colonists from walking into a conversation for 1 frame and then immediately leaving.

The colonist who started the conversation is considered the “host”. All distances are based on the straight line distance from talker to “host”.

(This reminds me, I forgot to do a line-of-sight check, so colonists can currently talk through walls. Please refund)

Talking Order

Conversations go like this:

  1. A random “talker” is selected.

  2. The talker determines something to talk about

  3. The talker displays the appropriate speech bubbles

  4. All listeners optionally react

  5. Repeat

An engaging conversation regarding the timely release of Alpha

An engaging conversation regarding the timely release of Alpha




Conversation Topics

Colonists talk about 2 things:

  1. Memories (can be shared with other colonists)

  2. Generic (contains no memories, basically talking about nothing)

When a colonist is the “talker” they have a random chance of talking about a memory. There is currently a 25% to share a memory and a 75% chance to talk about something generic. The memories are randomly selected.

Memories control the speech bubbles displayed for both talker and responder. So when a colonist is talking about being hungry, the speech bubbles will be something food related. The responses will be something sad or angry.

Food bubble and a worried response

Food bubble and a worried response



Rumors

Conversations are the basis of the rumor system. They allow 1 colonist’s experience to affect any colonist they come into contact with.

So if a colonist sees a dead body, they’ll tell bring it up in conversation. The listening colonists will acquire this information and they’ll also talk about it.

Leave no witnesses.


We’re not sure if we want memories to become “misheard” in conversation. For example, a colonist could talk about “dead rat” and a listener might misinterpret it as “dead body”. That listener would then go around telling everyone about a dead body in the station.

That sounds interesting, but it wouldn’t be fun if your colony became crazy because of a fake rumor that the water was poisoned.

On the other hand, we’re completely fine with a crazy colonist making up stories, because you can quarantine a single crazy colonist.


Talking To Walls

Internally, colonists don’t know that they’re talking to other colonists.

They look for “conversation agents”. Anything could be returned, like a lamp, teddy bear, or wall. The teddy bear wouldn’t display any speech bubbles, but it wouldn’t stop the colonist from responding.

We could also communicate information through the teddy bear. The teddy bear could tell the colonist that all of its friends were murdered.

Picture it. A lone colonist laughing maniacally with a teddy bear, and then going on a killing spree.

More realistically, our long term goal is for colonists to use devices to communicate across the stations (walkie-talkie / cell phone) and for lonely or crazy colonists to talk to inanimate objects.


Toilets

To prove my previous point, here’s a gif of a colonist talking to a toilet.

Nontraditional relationship

Nontraditional relationship

And because you probably think I’m lying or something, here’s the log from the conversation.

 
 

I’m sure you still don’t trust me, so here’s the 3 components that I added to the toilet so that a colonist would talk to it.

 
 

Ideally, I wouldn’t have to add the Conversation Speech Bubble Creator component, but it’s in charge of the some of the conversation timings. I would have needed to create a new component for non-visual communication, and I’m lazy. Especially when colonists won’t actually talk to toilets.

That’s It

That’s mostly it for conversations.

I think next week we’re going to post a slightly more involved blog about the new UI system, but don’t hold me to that.

-Tyler

Change Log

Evan

  1. Fixed a bug where adhoc material changes were not reverted when an object was deleted (because we’re recycling gameobjects now)

  2. All objects are now internally and visually selectable (in a better way)

  3. Selection now has a hierarchy. Colonists > Objects > Floors

  4. Changed how wall sides are selected for painting (it’s much much better now)

  5. Keyboard input is now disabled while typing in the search bar. (hotkey keyboard input)

  6. Fixed a bug where sometimes the frame rate would drop and an object would be placed in the wrong location

  7. The ore refinery will no longer produce when at max capacity.

  8. Implemented hold and drag painting and automatic room painting.

Victor

  1. Adding all speech bubble types to the game.

  2. Added another access position to the crop drop-off.

  3. Search bar text can now be translated.

  4. Infrastructure objects no longer clip through each other.

  5. Search bar text has a blinking caret now.

  6. Designed more windows for the UI.

  7. Added prefabs for all window elements (next week we’ll start implementing the windows)

Tyler

  1. Fixed a bug where colonist carry slot positions would revert when colonists changed floors.

  2. Colonists will now requeue the PerformJob state automatically.

  3. Fixed some issues with the wrong menu tabs being activated.

  4. The summary window now reverts to the currently selected object when the cursor is not over the UI (this means something if you could have played the game)

  5. Implemented colonist conversations

  6. Fixed an issue with item crates not becoming unlinked when dropped.

  7. Fixed a pathfinding generation issue when an access position was just barely considered diagonal

  8. (Maybe other things if I have time today)

  9. Wrote this sentence.