Skip to content

Message Humanization

Usually when you send a message to an AI, it thinks a bit and as soon as it’s ready it’ll start streaming letters to you as fast as possible. This is now how humans communicate. Touch Me instead tries to calculate how long it would take a person to reply to a given message, and optionally conversation.

We model realistic human psychology first, then compress it for gameplay. E.g. what might take 3 hours in IRL could take 3 minutes in game. The compression is configurable.

Given a message (a string basically) we calculate a realistic, realtime delay based on different factors. Next we turn this into “game time” by compressing the duration to something more reasonable. The message is added to the memory.pendingMessages queue, which handles the timer and adding the message when it’s time.

User Message → calculateDelay() → compressForGameplay() → pendingMessages
string -> seconds -> milliseconds

Each message gets analyzed through multiple human psychology lenses to estimate how long it’d take the person to reply.

These things add seconds to the delay:

  • urgency
  • emotional
  • cognitive
  • availability

These multiply the total duration:

  • engagement
  • AI
A message → realistic calculation → game compression
"HELP!!!" → 0.5s IRL time → 0.5s game time ✓
"I love you" → 10s IRL → 4s game time
"Tell me about life" → 5s urgency + 30s cognitive → compress to 15s → 15000ms

This approach lets us:

  • Reason in human terms: “Someone takes 30 seconds to respond when thinking deeply”
  • Test psychology separately: Are emotional weights realistic?
  • Compress flexibly: Different games need different pacing
  • Debug clearly: See both realistic and game timing