Advertisement

The promise of freedom in story games

Started by February 04, 2024 05:07 PM
118 comments, last by JoeJ 7 months ago

@joej Hi.

Just want to say that I really appreciate the discussion and your feedback.

I also want to express that I share your interest in improving graphics and animation and are interested in how the field evolves. Your considerations of computational limits are valuable. But that’s not my field of expertise. My first time playing the original Civilization was a captivating experience, waiting for the whole world to be created.

Looking back at some stuff I said, I have been repeating a lot of abstract ideas. That was done as part of the process hoping to get the right questions and inspiration for where to go next in making the ideas more concrete.

This discussion has helped a lot in clarifying some of the goals. I also got a better idea now for what about the implementation that needs more clarification.

I will come back with more details. That was always the plan. Just needed feedback for what needs better explanations.

From your feedback, there seems to have most doubt about

  • Natural language dialogue that feels like hand-written
  • That generated stories will be as engaging and intriguing as hand-written

I have been programming for 40 years now, including small games. I said I was not a game programmer, since I mainly worked with knowledge representation in semantic database systems with web interfaces. I have been studying AI for almost as long and know all too well about the many pitfalls of trying to implement general AI with symbolic logic.

That’s why my suggested solutions involve the top-down template system. That’s similar to AI “recipes” that I read about in the 90s to make AI easier to implement. BG3 has about 2 million lines of dialogue. Doing systemic dialogue with templates will also take a lot of work. It’s partly a brute-force approach, similar to what games do today, but with the aim to make all the parts reusable in other similar situations.

But I will still need to demonstrate that it can be done. It’s possible that there are more roadblocks I didn’t consider. My plan was to postpone the language details part until much later, but now I’m considering to include it in an earlier proof of concept in a thin vertical slice.

So my plan now is to continue to compile my notes and continue working out the template systems with at least one part completely mapped out as a thin vertical slice. Thin, meaning that the part can be implemented, but only for the one supported choice.

My YT playlist has 83 videos now. Also has a lot of other articles. The AIIDE.org conference has several people trying to do systemic story games. I should probably connect to those people. They also show how easy it is to get stuck trying to improve just a tiny corner of this larger problem. That’s also why I spent so many years hoping others would sort it out. Haven’t yet found somebody else trying to do it the way I think would work best.

From our discussion, I also realized that there’s no good definition of systemic game. This is what I came up with:

A systemic game features interactions governed by the intrinsic properties of objects and the environment, ensuring consistent, dynamic responses from all gameplay mechanics and interactions throughout, emphasizing emergent gameplay, allowing for multiple solutions beyond designer-intended paths.

aigan said:
From your feedback, there seems to have most doubt about Natural language dialogue that feels like hand-written That generated stories will be as engaging and intriguing as hand-written

Yeah, but i do not even expect to match quality of a hand written linear story.
I rather expect to compensate the decline with other advantages, such as freedom and adapting to the individual player.

So, my doubt is just about generating or adapting any text at all.
Personally i can not really think about this problem without expecting an explosion of complexity on both the programming and the content generation sides.

But maybe it does not have to be. I remember how it felt to construct sentences in point and click adventures, by combining verbs with inventory items and objects on screen. It felt like magic to me. Thinking of it, i wonder why this has not further developed, at least not in mainstream games. It should be possible with traditional programming, and while it won't compete Shakespeare, it could be fun and something new. : )

Advertisement

@JoeJ

Regarding my stupid answer about data structures. My only defense is that I don't know any name of the type of structures I was planning on using, and I'm still working out things on a higher level of abstraction.

A couple of years ago (2020) I decided to give the project a new chance and did some research for how this type of thing can be done. I decided to experiment based on a system described by Thomas Biskup that used a combination of composition and flyweight pattern that would work well with the type of knowledge graphs I would like to use, but in a memory efficient way. A slight problem with that system is that he named the parts of that system after ECS which will definitely cause confusion, since it’s clearly not an ECS but shares some properties with it.

I started out with a sort of bottom-up implementation based on the “Beyond the Beef” Fallout New Vegas quest. Started out modeling thoughts and perception and attention. It’s a glorious game with a playtime of about 2 seconds. I got lost in my thoughts again and eventually decided to do it top-down instead and use the abstracted language I mentioned many times.

My adventure game is on github and https://jonas.liljegren.org/project/adventure/public/ and also uses events and (threaded) workers for scalability and hopefully in a way that can be converted to a “real” language. Now, with your question about the feasibility of generating dialogue, I consider giving it another go, if only for a proof of concept.

I have now done several semantic databases, but in a rather unusual way there the nodes can have their own dynamic properties and even multiple inheritance methods, based on the is relationship in the graph.

The templates and constraint satisfaction I mentioned have some similarities to Prolog. But my plan was to be more pragmatic and combine it with whatever custom properties and helper functions needed. Now I think that those templates will probably, at least to start with, be implemented as code.

The wave-function collapse mentioned has been used for image or level generation, usually with a 2D-grid. I built on that, expanding on the observer theory, but for story construction on a higher level.

Both Beyond the Beef and Wild at Heart have stories that depend on Theory of Mind. Actors with misinterpretation, miscommunication, secrets and hidden agendas. That is also what will be needed for enemy plans, conspiracies and plot twists. So I think I should do some more experiments with how memories get transferred between actors. And I’ll need to implement better introspection.

Using pseudo-markup and pseudo-code. Here is more detailed representation for the first few lines of dialogue with Niellen:

You – Looking for a hunter named Niellen.

Niellen – Found him. What do you want?

You – Here about your notice. I’m a witcher. When’d you last see your wife?

Niellen – Five days past, ‘fore dawn. Were on my way out to hunt, she were asleep. I come back, found no sign of her…

… if I can insert all that … No… Can't do it. Will link to a document instead…

https://docs.google.com/document/d/1NrXB0YUF4bJdX4plghIbTmMYMvxHv5ENcUAggLGluBo/edit?usp=sharing

All this is just an early pass. And it has no details about emotional state and relationships. I also may want to use “Belief” rather than Memory or Thought. Still thinking about better representations of multi-level ToM, with flyweight patterns. Especially since that is a vital part when it comes to secrets and rumors in stories.

@joej said:

aigan said:
So what happens when you kill the big bad evil guy in the first act? That’s easy. There is always something else behind the curtains pulling the threads.

Ok, but then we did not kill the bad guy in the first place at all, just some boss guarding the endboss.

The story templates will implement different “tropes” or alternative paths. These templates have roles that can be filled by people you met in the story. This is a bit similar to how some games have backup characters that will take the roles of those that may have died during the game. But that is implemented by hand with branches and hand-written dialogue. By using story templates it can cast others in a similar role. But it can also take the story in other directions. Those directions have to be implemented, but with the difference that the templates can be used in any future stories in completely different scenarios.

There are several games that have a system with casting characters in roles, but they use them with hand-written quests, and usually only for side-content. Examples include Wildermyth, Weird West and Watch Dogs Legion.

aigan said:
LLM as they exist today as transformers is not enough.

My tech site brought this up again today:

I'm following the development. But all of these applications using LLM is using some sort of background structure with some similarities of the type of knowledge graphs and story templates I'm advocating.

aigan said:
The dynamic adjustment should also be in-world. In MGS5, the enemy will install more flood lights if they realize that somebody has been sneaking around in the dark.

Played it quite a while, but did not notice any of this. Maybe due to lack of oversight? Or maybe the player should not notice? But actually i think Kojima just isn't as good as they claim he is. At least not for my kind of player.

As long as you didn't feel cheated by the power increase, it did it's job. The enemy got stronger without you feeling that your increased power was useless.

aigan said:
Regarding my stupid answer about data structures.

It did not sound stupid to me, but just remembered me on my own webdev background. Actually the php associative array, which is a kind of one shot for all needs data structure.
If i try to think about programming dynamic stories or a chatbot, i really don't get far with it. But you have a very specific idea on what the system should be capable of, and i hope reducing it to such specific application makes it possible, even if a general solution isn't.

Btw, i've had an interesting experience with playing games recently, remembering me on the topics of freedom and invisible walls.
I was trying Phantom Fury, a new retro shooter. I've had high expectations, as it tries to lift the retro genre of boomer shooters from Doom to Halflife. Sadly it's not really great and misses this goal, but interestingly it fails right at the things you want to improve. It has some story going on, and some guy tells me over radio what's the current objective - basically quests in linear order.
And i feel bad about that. I don't feel free. I can't do what i want. Somebody tells me what i should do, and it is all i can do.
I hate this in all games. But after playing retro shooters mainly for quite some time now, i was a bit surprised about it. I had already forgotten how bad this is. Now it's interesting to ask: How could playing retro shooters seemingly solve this problem for me before?
Those retro shooters have no story, nor any interesting systemic stuff, nor are they non linear.
But i do feel free in them. I can do what i want. There never is a situation where i think ‘Oh, if only i could climb up there; If only i could solve the quest without killing the werewolf; If only i could do this or that, which should be possible in this situation but isn't.’
All i can do in those games is killing everybody, and pushing some levers to open doors or move platforms.
How can this be enough to feel free?

I think the answer is: Freedom is relative to the set of imaginary potential actions.

In a game like Doom, i never run against n invisible wall, since collision geometry and visual geometry is the same thing. So i never expect to cross an invisible wall, since i know there is none. Crossing the invisible wall is not in the set.

There also is no objective other then getting to the exit. Finish the level and get to the next. Doing something different to satisfy by personal moral or desire is not in the set.

Nobody tells me what i should do, or how i should do it. No story, no quests. So playing my own story is not in the set.

Thus, i feel free because no desire comes up to do things i can not do.
Because shooting and using levers is obviously all that can be done in the world i'm currently in, i feel free by doing just that. I can do everything. And it helps that the levels in those games are not linear. There are many cycles. Easy to get lost, causing frustration to find the key, but i can go where i want, and so i feel free even more. By optimizing my paths and finding shortcuts, i can even feel smart and creative.
It just works.

Maybe that's an old hat for game designers, but personally i did not really realize this very simple argument before.
Having this in mind now, i come up with new answers regarding the question ‘why do older games feel better than modern games?’, which is currently asked by many.

Let's add some new things to Doom, and see what happens:

Add a story. Accident in some research facility opens a portal, and aliens come through.
Awesome! Now i'm curious how the story proceeds while playing Doom.
But also - i might not like some details of the story. Why can i shoot aliens, walk in any direction, but can not affect the story? (We add to the set.)

Add cover mechanics and climbable surfaces.
Cool! Now i can do more things other than just moving in 4 ways.
But sometimes my avatar goes in or out of cover although i did not want it, and why can't i climb up on this but not that surface, although the're both the same angle? (We add to the set.)

Add character customization and skills.
Cool - if i have to play in 3P, i can at least play as a hot female now.
But why can't i make her actually look beautiful. And why do i not really like any of those skills i could unlock right now - they seem too complicated. Can't i have something simple and effective? (You guessed it - we add to the set)

So, the more stuff we add to our game the player can do,
the more we also add a desire on even more things the player can't do.

But maybe - if we are aware about that - we can add stuff in ways avoiding the issue.

JoeJ said:

I think the answer is: Freedom is relative to the set of imaginary potential actions.

Yes. This is pretty much the things I wrote about.

“Great care is put into the framing to create parity between the player and what the player character must do. Agency is upheld if the game succeeds in making the player want to do the things that progresses the story.”

You can't do anything. Neither in game or “real life”. Agency is about making the player want to do the things that ge game lets them do. That is parity.

I was pretty happy for finding and defining the concepts of Volition, Autonomy and Agency, and how they map to mechanics, traversal and story.

Advertisement

JoeJ said:
There also is no objective other then getting to the exit. Finish the level and get to the next. Doing something different to satisfy by personal moral or desire is not in the set.

Actually. I was often a bit frustrated over my traversal abilities in Quake. That character can't jump to save his life. Most players will probably just learn where they can go and stops thinking about it.

JoeJ said:

So, the more stuff we add to our game the player can do,
the more we also add a desire on even more things the player can't do.

But maybe - if we are aware about that - we can add stuff in ways avoiding the issue.

Yes. … That sort of the thing I mean about the consistency. Don't add things that creates inconsistencies in the players expectations. This becomes more of a problem when you try to make the world beautiful, because that takes away from the readability of what the player can do. Even more so when you introduce any type of dialogue choice.

aigan said:
I was pretty happy for finding and defining the concepts of Volition, Autonomy and Agency, and how they map to mechanics, traversal and story.

Hehe, i need google translate for all 3 of those terms. : )

aigan said:
Actually. I was often a bit frustrated over my traversal abilities in Quake. That character can't jump to save his life. Most players will probably just learn where they can go and stops thinking about it.

I remember Quake 3 for most, which i've played a lot with LAN multiplayer.
There were many tricks to extend movement abilities. Rocket jump, wall climb with plasma gun, circle jump and all this stuff. There were entire levels made for those tricks, feeling totally impossible to the normal player.
But personally i could not figure out most if it. Way too difficult.
For standard gameplay strafing worked well to dodge shots imo. Never missed anything in this game. It's just perfect. Any later MP FPS felt pointless to me after Q3.

But his can be affected also from other games. E.g. i do not like the wall run mechanic. But after playing Titanfall 2 i was used to it, and missed it in other games for some time.

aigan said:
This becomes more of a problem when you try to make the world beautiful, because that takes away from the readability of what the player can do.

Yes, but beside the distraction from visual high detail, there is also the problem of uncertainty about physics geometry. That's the main ‘invisible wall’ problem to me. E.g. in the Phantom Fury game there was rubble falling down from he ceiling for a collapsing cave situation. A static animation, taking quite some effort to make for sure. But then, to block the player, they use an invisible flat wall. So i can not even get close to the rocks to try passing through holes.
I have no problem with being blocked, but sensing the coarse approximation just breaks immersion and feels off.
I suspect the cause might be Unreal Engine not generating collision geometry automatically in general. I assume level designers first make a blocky approximation of the level, which they also use for physics. Then when the level feels right, they decorate it with putting high detail models on the surface. Pretty cumbersome, if so. But i lack experience and don't know.

This topic is closed to new replies.

Advertisement