Dreams In Catclysm --- overhaul

Let me begin by saying [size=20pt]I am a writer, not a coder.[/size] I’m starting to work on learning C but for right now a lot of the things I say might be completely unfeasible in any short time span. I love dreams. I think they’re great; a lot of my writing is based off the idea of dreaming, the subconscious.


The system for dreams right now is entirely based off mutations- while this can produce some cool effects (what do these dreams mean?!?!) they’re only a tiny glimpse at the scope of what I feel we could do.

There are four main things that could improve it:

  1. A recurring element- everyone has one in their dreams
  2. Subconscious- things that happened semi-recently get inserted to form stories
  3. Lucid dreams- a trait, a random event
  4. Nightmares- effects morale; only happens when you dream about bad things, to certain degrees

But first we need a format for this- a way to give people a json to expand on it, or even just a way for the code to make dreams interesting.

How about dreams choose from a pool of sequences to start a dream—

A <thing1> appears! (1)
A <thing1> fades slowly into existence! (1)
You feel <emotion1> suddenly. (2)
For some reason, <emotion1> takes you. (2)
An uncanny feeling of <emotion1> hits, reminding you of <thing1> (3)
<specificthing1> appears! (4)
A <thing1> is forming. It will cause a/an <event1> (5)
From darkness, <specificthing1> appears before <selfevent1>. (6)
Everything makes sense! (7)
<event> (8)
You vaguely feel like a <thing1> (9)
You find yourself in a <place1> (10)

Every thing (monster or item) seen has a 15% chance of entering consciousness; things that appear 4-10 hours before sleep can appear in a dream. If there are no things, “shadow” appears.
Emotions are entirely random, from a pool customizable in a .json
Specific things are exactly the same as except handled differently in the scenarios. There will be lots of but few
Events are all manner of things; anything that happens to the world, makes a sound, dies, etc. I could give a detailed list if this is too vague. 2-5 hour wait period. If none, "
Self events can be anything that you do- moving, eating, attacking, taking damage, etc. Too vague? I’ll give a synapse of everything that can appear. 1-5 hour wait period. If none, “leave” appears.
Any map tile you’ve been in has a chance of appearing as a “place” if it happened about an hour before sleep. If there are no applicable places by luck, “dark place” appears.

(x) connects to the next scenario (x) in the dream- so anything ending with (4) can become any of the (4) dreams next. This means there is a TON to write. I’m up to it. I’ve got a lot of free time.

(1) It <selfevent1>s a <specificthing1>. (1)
(1) It <selfevent1>s a <thing2>. (2)
(1) It leaps at you! (3)
(2) You realize you feel <emotion1> because of <specificthing1> (4)
(2) You are filled with <emotion1> It is overwhelming. (5)
(2) You feel compelled to leave <place1> (6)

Again, I am willing to write all these formats. That’s what I’m here for. I just trust actual coders to maybe be able to implement it.

—1

Recurring element

When a character is created, we could give them some random jumble of things that happen. Maybe

0-3 things
0-2 specific things
0-2 emotions
1-2 events or ideas
0-1 self events
0-1 places

This will make them MUCH more likely to happen in a dream (even if they don’t enter their subconscious), giving players a familiarity with their character. Maybe they had a traumatizing memory of ???

—2

I covered this earlier, but basically–

All elements of a dream, aside from the recurring ones, are taken directly out of the game. This means if you fought a fungal bloom for a few hours and then went to bed much later, there’s a chance your dream will be FILLED with fungaloids. But if it’s too recent, and you’re still thinking about it, you’ll exclude them entirely. But you won’t forget the dead scientist you saw on the way there! Etc. etc.

—3

This is incredibly ambitious, and doesn’t need to be implemented to capture the idea.

But, in a perfect world–

Trait Lucid Dreamer

1 point

“You always feel like you can control your dreams. Some call it a blessing, some call it a curse.”

Instead of having these scenarios, you will wake up immediately- in a lucid, fake world that acts similarly to ours. Time is accelerated, so every action has a tiny chance to wake you up at some point in the nighttime (real world) But until then, you can move around and interact with your bedside place. No enemies appear, but you can pick up items, drive cars, explode things etc. If you die, you wake up immediately.

AGAIN, THIS IS A HUGELY SCOPED IDEA. DON’T ADD THIS UNLESS THE OTHER SYSTEM IS FLESHED OUT.

—4

Elements that we find scary- i.e. zombies, nether creatures, basically anything that is Hostile- if they appear in our dream, we lose a bit of morale upon waking up. Things like friendly blobs, or your dog, or an NPC, or eating a great meal, will improve it. Also, certain emotions will generically boost your morale when you wake up.

Might be hard to implement- in which case, skip it.


[size=15pt]That was a lot of stuff. Let me repeat- I know little about coding, so maybe this is all impossible. It probably is. But I’ve been waiting a long time to try to get this out. We have an amazing roguelike with so many elements- which, in turn, means we have huge possibilities for the subconscious.[/size]

If you want to look at a great dream code, check out SS13. Judging by the dream system here, you most likely have, but I think a sequence of random words would work best for dreams. Instead of saying “You experience happiness” then “You see a deer”, have it be “Happiness” and “Deer”. Dreams are thought to be random unconnected visuals and experiences rather then actual connected stories. The connections are made by the dreamer after the dream is done, so why not simulate that in Cataclysm? Let the players decide what the dream was, even if it’s just a series of words. Another suggestion, if you are in a location/see a creature before sleeping, perhaps increase the likelyhood of those appearing in a dream?

If you want to give it an environment, you could perhaps divide up the time spent in the day on specific map tiles (like on the map screen, not “dirt tile”), as in if you spent 23% of your time in your shelter basement, and the rest of your waking hours were out hunting in the forests, you may be more prone to dreaming in the forest, then suddenly looking up to find yourself in the evac shelter. For lucid dreaming this could almost be used as a gauge for the player to see how much time they have to mess around. Whenever I remember my dreams I cycle through a lot of places, in fact sometimes from days before, but it might be simpler to just do it on a day-to-day basis. I’ll be sitting in school listening to John Boehner talk about trigonometry, then I’m at home eating poutine from a undisclosed store in Tennessee. Seriously, I can’t find a resturaunt that has it here.
I’m ambivalent about how this would happen. This is a thing that would be used for messing around, right? Thematically it would make sense, and would make for more in-depth game and more connection to the player character. I imagine lucid dreaming being something like a random area with crazy spawns, and you have a debug menu with no guilt for using it. It could be fun, and interesting to say the least. You have my support, and if you can pull this off, my respect. Like, all of it, you have some now, but that’s for the idea. Good luck coding breh.

re: SS13

Yeah, maybe that’s better; I was thrown off by their system because it had little variety. I do think if it’s more random

"You feel unconnected to your body." "The fungus is at fault." "A nuclear explosion." "The fungus leaps at you, its screwdriver ready to attack!" "You feel regret." "You feel a falling sensation as there is a nuclear explosion." "The dream repeats."

Instead of


...unconnected...
...fungus...
...nuclear explosion...
...fungus...
...screwdriver...
...regret...
...falling...
...nuclear explosion...
...repeat...

But they have their advantages. I’m, again, a writer, though, and I think I like option A more.

re: connections

I touched on that quite a lot in my writing, but yeah.

[quote=“UberZacht, post:3, topic:2815”]If you want to give it an environment, you could perhaps divide up the time spent in the day on specific map tiles (like on the map screen, not “dirt tile”), as in if you spent 23% of your time in your shelter basement, and the rest of your waking hours were out hunting in the forests, you may be more prone to dreaming in the forest, then suddenly looking up to find yourself in the evac shelter. For lucid dreaming this could almost be used as a gauge for the player to see how much time they have to mess around. Whenever I remember my dreams I cycle through a lot of places, in fact sometimes from days before, but it might be simpler to just do it on a day-to-day basis. I’ll be sitting in school listening to John Boehner talk about trigonometry, then I’m at home eating poutine from a undisclosed store in Tennessee. Seriously, I can’t find a resturaunt that has it here.
I’m ambivalent about how this would happen. This is a thing that would be used for messing around, right? Thematically it would make sense, and would make for more in-depth game and more connection to the player character. I imagine lucid dreaming being something like a random area with crazy spawns, and you have a debug menu with no guilt for using it. It could be fun, and interesting to say the least. You have my support, and if you can pull this off, my respect. Like, all of it, you have some now, but that’s for the idea. Good luck coding breh.[/quote]

Thanks!

Yeah, lucid dreaming could also be ridiculous (random weird map connecting in the wrong places, strange locations, enemies where they shouldn’t be, “debug” menu) but I’m not a lucid dreamer, so somebody else would have to help me.

Map screen tiles were what I was going for. I also want to divvy it up- places you’re at most often will sometimes come up, but you’re constantly thinking about them. You might think about the deer you killed all day, but you’ll only dream about the rabbit and its nuclear explosion.

Any information from a more informed coder? I’m still up to writing all this, I just want confirmation that it won’t be for nothing.

Something like this wouldn’t be impossible, and some parts of it are pretty straightforward. AFAICT the lucid dreaming would be very very hard to implement but I wouldn’t mind giving the rest of it a try. Some of it (recognizing “events” that aren’t just single actions, for instance) is actually pretty difficult but at the very least we could get the “dreams are connected scenarios” thing in.

I’m going to propose the following (non-final) dream scenario JSON format:

[
  {
    "id": "dream_id", // the id of this dream, used to identify it
    "next": ["another_dream_id", "yet_another_dream_id"], // the ids of the next scenarios this can turn into, null if it's the "last" scenario
    "start": true, // whether this scenario can start off a dream or not. dreams will only start on scenarios with start: true
    "message": "Your message string, with <things> and <whatevers>"
  },
  {
    "id": "another_dream_id",
    "next": null,
    "start": false,
    "message": "Your message string, with <things> and <whatevers>"
  },
  ... // and more stuff
]

Writing the dream templates is an exercise in writing, and evaluating it is pretty straightforward code.
Likewise annotating the code to store events you want to represent in dreams is fairly straightforward, it’s just that it’s a lot of stuff to annotate.
There’s some amount of annotation already for the memorial log thing, where it has a history of things you’ve done. It has a kind of filter on it to restrict it to significant events, where it seems like you want a log of pretty much everything that has happened to the player, but discard it after a while to avoid cluttering things up. This should work off of the same system, where we just go nuts storing every little thing that happens, but possibly age them off the list so it doesn’t become super huge.

There is a roguelike called Elona that has dreams. You can have good dreams that give bonuses and bad dreams that hurt. We can add positive/negative traits to influence dreams and add a humor element too it. Such as ‘wet your pants’. ‘dream about fried twinkies from the country fair and wake up in a bad mood with lower morale when you realize you will never eat a twinkie again’.

Thanks swwu and Kevin. I wasn’t sure about how possible it would be, but the JSON format is incredibly simple- and using the memorial log thing would theoretically be great.

One thing to keep in mind, you can’t possibly log too much stuff unless you’re doing it in a loop or something, so just go nuts.
The most important thing IMO is keeping the logging function nice and simple.

Okay. I’m going to assume we can keep something consistent in a dream, so if item1 appears it can appear as item1 later being identical. This might be a little more complicated in the code.

Aside from that, until a set json template is formed, I’ll probably start a google docs and post the link here. If anybody wants to help me I could add them to the permissions, but I’m kind of afraid of making it public (some men just want to watch the world burn)

Here is the link to the drive document- it’s pretty barebones right now but has infrastructure that I assume would be pretty easy to port in. In addition, I can add anybody to help with the project.