Tool Ren'Py Completed Label safe, dynamic, phone system. Multiple phone support.

Kesash

Newbie
Jul 2, 2022
46
49
79
I decided to make my phone system free use after realizing that I just can't use it to make a game. The laws on what is allowed where I live (even in drawn pictures) are absurd, and with people getting arrested for Facebook posts I'm just not taking the risk. (like seriously, talking someone into something sexual could be seen as illegal, even if its not forced at all, unless they walk in, arms open, saying 'I WANT SEX NOW' it would be a risk).



Copy paste from itch:


This is a modular phone system for Ren'Py designed to support dynamic, in-game conversations without breaking game flow.

Comes with a full working demo 'game' to show what it can do. (Forgive the AI art. It was just so I could show images being sent)

It NEEDS a UI polish, I'm terrible at UI, I'll never deny that.

It allows you to define and manage multiple phones, each with their own message history, gallery, and conversation logic. You can switch perspectives mid-conversation to view chats from another character's point of view, and all data updates accordingly. If you are half way through a conversation with a character, and look at their phone, the conversation will be there, mirrored automatically with the full history including choices, up to where you got to. It will always be completely in sync.

Messages can include text, images, videos, and system messages. The system supports message deletion, system messages (like timestamps or alerts), and branching conversations through in-message choices.

You can run Python mid-chat to modify game variables, unlock gallery content, or trigger events. By simply tagging a message the character sends as "code" instead of that message displaying that code block will be run, allowing you to seamlessly modify variables or anything else based on where you are in the conversation.

Conversations run entirely through Ren'Py screens, meaning they can open and close at any time—during gameplay, choices, or other events—without needing to jump to labels or interrupt story flow.

All dialogue is stored and managed outside of labels using simple Python lists, making it easy to branch, reuse, or restructure without touching the script flow. Defining a conversation is as simple as:

define conversation [

{"me":"This is the message the mc will send"},

{"sarah":"This is them replying"},

{"image":"imagepath.png"}, # This will send a photo

{"code":"somevar += 1"} # This will execute that code

]

You can easily tie the system into game logic though, making conversations optional, mandatory or even have characters message if you don't reply fast enough or leave a conversation mid way. Indexes for where you got to in a conversation are tracked automatically.

The simplest set up would require only a list and 2 dictionaries. 1 dictionary to define the phone, one to define the contact, and a list to define the conversation.

Again this works completely outside of jump labels and makes a single call, so leaving the phone available to open for an entire game, at any time, will never break game logic or flow. Even if you have it executing code or branching dialogues, doesn't matter!

Features:
  • Branching dialogue with choices being made mid text conversation
  • Allows images and videos to be sent
  • Can execute code to modify variables mid conversation with the phone still open
  • Multiple phone support
  • Conversation mirroring, so if you pick up two phones who spoke to each other, they will always mirror the conversation, even if it was stopped mid way through.
  • Safe to close at any point, even mid conversation or when you get to a choice. It will just continue from where you left off before closing it
  • Automatic index tracking for conversations. You can loop a label until a specific conversation is had, or even have a character react if their message wasn't replied to fast enough (or you closed it and moved on half way through)
  • Skip seen messages. Exactly the same as the normal renpy system, it has a custom built 'skip function' to be able to skip any messages previously seen, even cross save
  • Autoloading gallery with automatic image unlock. It scans game files for images with correct naming convention based on a list you create, and will create character specific galleries for each person. If an image is sent via text and is in the gallery, it is unlocked automatically (a function exists to unlock images manually)
  • Messages can be sent with the phone closed. So a character can message you and the UI will instantly update to show a message is waiting for you to open.
  • Message deletion, so a message can be deleted by a character once they have sent it. Can be done with the phone open or closed.
  • System messages. So things like time stamps or '3 days later'.
  • Permanent chat history. Regardless of what conversations you load in, what choices they make and what order they were in the chat history is permanent. Always scrollable right back to the top. It is easy to clear though if needed.
  • Each phone has it's own contact list and gallery.
  • Simple(ish) setup. Each phone is created with a dict, each contact on that phone is a dict, every conversation is just a list. If you know how to make all that, you can set this up.
  • A lot of config variables to control things like message speed, if messages are click to send or just send, variable message speed based on the length of the next message, typing indicator messages and some other things.
  • A really cool ascii fox
  • Comes with a completely playable demo that talks about the features and shows them working, all through the text system.
  • 100% label safe. Let players open the phone, browse the gallery, message a character, make a choice, message another character, all mid label.
Includes a working demo with test characters and full documentation through code comments.

Created and tested in Renpy 8.3.7


Free to use for Non commercial/zero profit games.

[This was originally made with the intention of using it in a monetized game, that's why the copyright on it was so strict. I have however since come to realize I do NOT have the time, I also can't be bothered to reupload it with a corrected copyright block... so... feel free to use it, just no redistribution of the software itself, it must be attached to a game (and please let me know, I want to play them), and the copyright blocks must be left in in their entirety. The fox is cool, don't delete it!]

For those who want it in writing...:

License & Usage Terms

Permission is hereby granted to use this software in both non-commercial and commercial games, subject to the following conditions:

  1. Attribution is required.
    Credit must be given to Kesash in an appropriate place (credits screen, README, or similar).
  2. No redistribution of the software itself.
    You may not redistribute, reupload, or resell this software on its own. It must be included as part of a larger game or project.
  3. Copyright notices must remain intact.
    All existing copyright notices and this license text must be left unmodified and included in full.
  4. This license supersedes any previous copyright or license statements included in the download.
    If older files indicate stricter terms, this takes precedence.
 
Last edited:

Kesash

Newbie
Jul 2, 2022
46
49
79
Just to note I am PLANNING to make a standalone 'empty' phone game, that comes with a character creator. How it would work is you open the character creator and just click buttons to add text conversations, images, and branching paths, click export and it throws out an rpy you drop into the game files and boom, that person is now available to talk to. My perfect vision for it would be that anyone can make a character to be spoken to, and people can download the ones they want to try.

If it goes how im planning it should be INCREDIBLY easy to use the tools to make people to talk to, so even someone who barely knows how to use email should be able to do it :) Idk if anyone would actually be interested in using something like this to make characters, but please let me know if you would.
 
  • Like
Reactions: raziul and osanaiko

Kesash

Newbie
Jul 2, 2022
46
49
79
Update on the tool... there are two places on these forums that this could go, so I'm putting it in both, mods can just delete the one that is in the wrong place xD

Looks like this currently, doesn't actually do anything yet but you can see the idea of HOW you would create the conversations. Branching paths in a tree diagram on the left, each node is a section of a conversation, buttons to just add what you want to happen next in the conversation, spits out a 'game' folder that you just drag and drop into the game, and the person you created will be added automatically :]

1767384286639.png
 

osanaiko

Engaged Member
Modder
Jul 4, 2017
3,487
6,721
758
Wow, now just write a MCP wrapper for this and we can have fully automated "NTR Phone game with AI images" creation. :ROFLMAO:You have unlocked the possibility of world wide "NTR Phone game with AI images" production increasing from 2 per day to more than 2000 per day!

(I am of course joking here. Mad respect for your obvious excellent dev talents and willingness to share the cool things you made.)
 

Kesash

Newbie
Jul 2, 2022
46
49
79
You have unlocked the possibility of world wide "NTR Phone game with AI images" production increasing from 2 per day to more than 2000 per day!

I would be lying if I said that wasn't a motivation xD Although some NONE NTR would be nice....

How I'd like it to work though is, instead of having 100 games spammed all over the forums, just have one page for the game with all the characters as downloadable.

The same way those old slave trade games (I don't remember the name) have character packs you download for the actual base game, as everything made with this will still need the base game to run, you just drop the export into that folder.

If there are a huge spam of AI ntr games though and people don't treat it like a character pack? I apologies in advance