Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

randomized appearance for individuals instead of seeing id badges - aka, put the lich king in a moral dilemma #39

Closed
thejoshwolfe opened this issue Dec 24, 2016 · 4 comments
Labels

Comments

@thejoshwolfe
Copy link
Owner

currently, when you, or really any individual, observes a thing, you learn its actual id that the game engine uses for it. this leads to questionable situations like:

  1. you see a snake, then the snake goes out of view. you learn that id 100 is a snake.
  2. you drink a potion of cogniscopy and see two individuals with ids 100 and 101. you don't learn either's species, but you had prior knowledge that id 100 was a snake, so you know that one of them is a snake.

why could you tell that one of them was a snake? because of id numbers. there's no satisfying in-game explanation for why you know that, so it's as though the id numbers have become a first class thematic element. i don't like the idea of everyone running around a dungeon cave checking each others id badges to see if we know something about them already.

additionally, you cannot currently use polymorph to disguise yourself as just a friendly scorpion when trying to hide from scorpions. this is because even as a scorpion, monsters are programmed to hate a particular id number, and since you keep the same id badge when you polymorph, they recognize you right away.

proposal:

  1. never publish the actual id of individuals to clients. (ids for items still seems ok.) instead when an individual comes into your view, generate a random id for your perception of that individual. while the individual is continuously in your direct perception, it keeps the id. when the individual goes out of view, the server deletes the perceived id and notifies you of that.
  2. every individual has a randomly generated appearance, say a 32 bit integer. the player client will keep a multimap from appearance to recently associated perceived individuals (and their perceived ids described above), and with that mapping will implement the current feature of removing the last-known location for an individual when you see a current location for it. the appearance helps the client (and possibly the ai) bridge the gaps in continuity that are left by the perceived id system described above.
  3. when you assume form, you also assume the appearance of the targeted individual. this means its possible for individuals to perceive multiple individuals with the same exact appearance.
  4. since monsters cannot recognize you by your id badge anymore, they instead know your appearance. this means if you assume form, monsters don't hate you. we'll also need to update the ai to become aggressive towards anyone who attacks them, or some other way to make polymorph not allow 100% unchallenged abuse of others.

now we get to the fun stuff: the implications of this proposal.

  1. you're fighting a lich king and you need to get away, so you speed down the hall and into a side room. there's a snake in here, so you assume form into the snake, and then kill the snake.
  2. the lich walks in the room looking for you, and finds only a snake: a snake that exactly matches the appearance of a snake the lich may have previously seen in this room.
  3. what does the lich king do? give up? guess that you might just be invisible in here somewhere with this nice snake? or could you be the snake? should he lich kill the snake?

here's another one:

  1. you run away from a lich king as above, and into a room with just an ogre.
  2. moments later the lich king enters the room to find two identical ogres beating the crap out of each other. (insert imagination here of both ogres asking the lich king for help to kill the other.)
  3. what should the lich king do? side with one of them randomly? try to kill both evenly? eat popcorn as he watches the two duke it out, then swoop in and kill whomever remains?

never mind for a moment that ai decisions that sophisticated are very far off on the roadmap. the point of this proposal is to improve the theming of the polymorph and identity mechanics to open the door for more interesting gameplay.

@andrewrk
Copy link
Collaborator

This sounds really fun.

One thought I had is that it's going to complicate the way that knowledge is gained, stored, and accessed. These temporary id numbers are not unique, by design, and that makes it difficult to actually learn something about an individual. Is there any circumstance in which the true id number of an individual is learned?

Are there any implications to forgetting about the existence of an individual? For example if you went on a quest, fought the boss for a little while but then ran away and returned hours later, would it be like those two individuals saw each other for the first time? That seems kind of weird, but I can't think of any actual problems caused by this.

What makes most monsters attack the player? Is it that they are human?

@thejoshwolfe
Copy link
Owner Author

Is there any circumstance in which the true id number of an individual is learned?

Good question. I'd like to add the following to the proposal:

  1. Every individual has a mental appearance, which can never change. For this, we could just use the individual's true id. Cogniscopy can see the mental appearance, and only the mental appearance, and cogniscopy (and telepathy, when if it ever exists) is the only way to learn the mental appearance.
  2. It's up to the clients to build a multiway mapping that cross references mental appearance and physical appearance (and temporarily perceived id).

Here's an example where all this is relevant:

  1. You see the lich king with both normal vision and cogniscopy.
  2. You lose cogniscopy, and the lich king goes invisible. Some time passes.
  3. You walk into a room and see a snake. You drink cogniscopy, and learn that the snake has the same mental appearance as the lich king. You've learned that the snake is the lich king from earlier.

Are there any implications to forgetting about the existence of an individual?

We'll probably want shop keepers to remember thieves forever. I can't think of any good examples of when the human client should remember things, except perhaps remembering the true mental appearance of a hypothetical monster type that tries to trick you by polymorphing or something.

What makes most monsters attack the player? Is it that they are human?

Good question. I think it'd be good for monsters to be generally overrun with antihumanism. Then we can do interesting things like humanoids that are neutral toward you, such as dwarves, elves, etc., and even other humans generated in the dungeon that are fully aggressive toward everything like you are.

@andrewrk
Copy link
Collaborator

I think it'd be good for monsters to be generally overrun with antihumanism.

Interesting idea. One thing that nethack does is let you play the game as other races such as elf, dwarf, and orc. Is this something that swarkland intends to do?

@thejoshwolfe
Copy link
Owner Author

Yes. In fact, i'd like to go so far as to allow (but not encourage) some non-canonical possibilities like playing as an ant or a dragon, just because the game engine allows it, and it'd be fun to see what people can achieve under various challenge conducts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants