Social Contacts, Data Fixes

Hey Folks! Continuing work on the game's social/plot system again today, and fixing things along the way.

The social debug UI now lists line items for each person the player knows. Name, relationship, and current location. In the process of doing this, I discovered a bug in the save/load system that caused NPCs to be loaded twice, with the second copy being completely different from the first and in the wrong place. It turns out I was looking up NPCs on game load by their name, when all things in the game are stored by unique ID. I switched that a while back because it was more convenient/immersive to use the NPC's actual names than GUIDs in many places.

So for now, I've made NPCs use their names as GUIDs, too, and just added some code to ensure each name is unique. There are over 600k combos in the basic name code, and today's changed added a few ways to embellish those random names more in case I generate a colliding name. Things like "Jr." and hyphenated last names.

Now, loading a save file restores NPCs where they left off, with their original stats. No copies to be found!

In the process, I also discovered a few typos in the data that were causing career and other chargen rewards to be missed. Those are fixed now. And while I was there, I changed the K-Leg hulk salvage event to generate an antagonist on K-Leg instead of some random distant station, since that's where the crime happens.

Now that I can see this social data more easily, I'm wanting more info on why each of these people have these relationships to me. So I've started storing the event text that caused each relationship in the social info for each character. This way, I can look it up later for context. The presentation is rough, though. Just a copy of the interaction or career event text, which if this ever becomes an end-user UI, will need some treatment.

Anyway, I'm starting to feel like I have a better picture of the current social network in the game, which makes plot testing a bit easier. The other thing that seems like it'll help a lot is making docking more foolproof. Currently, one has to be within 50km of a station to initiate docking, but that's really hard to achieve in the orbital plotter right now. Due to precision issues when zoomed in close enough to see 50km, there's a lot of jitter in positions, and the ship course simulation rarely gets in a position that allows docking before jitter ruins the setup again. I'm thinking there are two things I could do here.

The first approach is to just make the docking range crazy. Like 4000km away. In theory, the jitter shouldn't be too bad at that zoom level, and I should have an easier time initiating docking before I lose range again. This is trivial to code (just tweaking a variable), but also an obvious cheat that would ruin immersion a bit.

The second approach would be to make it actually work. Probably by making a short range docking plotter that avoids precision issues. This would involve plotting just close range things centered on the camera when within a certain zoom level, and somehow allowing player control in that mode while affecting the real world position in the overall System. This is a lot more effort, but also likely a better player experience.

I have a feeling I'll need to do the second at some point, but I might just try the first for now until things are working better. There's always endless polish to do later :)

Comments

Josh_A_Culler's picture
Josh_A_Culler

Howdy Dan!

Yeh, so I love procedural content (as you well know), and the whole idea of AI and so forth, especially in terms of pushing into the next frontier of gaming. Is there anything available in terms of middleware (opensource or otherwise actually available to you) that would take care of "flavor" stuff like NPC conversations, or fleshing out social interactions by providing descriptions in a more dramatic or story-like manner? I know the basic event-list of social interactions and so forth has to be derived directly from the in-game mechanics, but are there any pre-built ancillary systems that can help cover that skeleton for you? That way you can focus on the tightness of the framework and the generation of core mechanics more exclusively. Also - I think the more procedural content you have, the less jarring it will appear... or in other words, the more AI illusions there are, the less pronounced they become in general.

I know there are such technologies out there, I was just wondering if something like that would actually be available to you - and also relevant to your design? I would think having AI handle such "flavor text" can only help reinforce the open-ended nature of the game itself. Also, it might be possible to get some really nice "happy accidents" that way.

https://soundcloud.com/invisible-acropolis

dcfedor's picture
dcfedor

Hey Josh! I'm not sure, actually. I'm aware of some AI solutions for things like pathfinding, flocking, animation, and other physical behaviors. But for actual AI drama? I can't think of any.

Probably the closest that comes to mind is the AI chatbot stuff that some websites use for customer support. I looked into that briefly a while back just to see if it might work for me, but there's a fair amount of work involved getting it setup. (Basically, you have to train the AI with lots of data.)

Right now, the AI in the space prototype is actually pretty decent at deciding on a response to a situation. Coming up with interesting situations and responses for the AI to tackle, and ways for the player to interact with them...trickier :)

Dan Fedor - Founder, Blue Bottle Games

Josh_A_Culler's picture
Josh_A_Culler

Yeh chatbot but also something like this thing: https://www.plot-generator.org.uk/story/

just thinking about short cuts, i was wondering if such ideas had been implemented as usable middleware yet

https://soundcloud.com/invisible-acropolis

dcfedor's picture
dcfedor

I just tried that link out. I got some rather humorous results, but probably not something that'd work in this context. Not without a lot of specialized data and rules added to it.

There are a few games out there that are trying to do this. Dwarf Fortress and Caves of Qud, in particular, make generative fiction (and history) a focus. However, their systems were created in-house, and are highly customized to their needs.

I think that's sort of the state of the industry, at least when it comes to procedural text. Nobody has a one-size-fits-all tool they can sell as middleware, and the folks that really want it are rolling their own.

Though, now that I think of it, there is a burgeoning field of machine learning systems being turned towards generating text. Kind of like how Google gives an AI thousands of paintings to train on, and then tells it to make a new one based on those.

However, nobody has one for sale. At least, that I'm aware of.

Dan Fedor - Founder, Blue Bottle Games

Josh_A_Culler's picture
Josh_A_Culler

Ah, I see. And thanks for keeping me informed about this stuff!

https://soundcloud.com/invisible-acropolis