A downloadable tool

Download NowName your own price

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. 


Download

Download NowName your own price

Click download now to get access to the following files:

Kesash's_RenPy_phone_system_demo-1.3-mac.zip 78 MB
Kesash's_RenPy_phone_system_demo-1.3-pc.zip 82 MB

Development log

Comments

Log in with itch.io to leave a comment.

Sorry if this is a dumb question. But is this a model of like if you wanted to have a text screen in your story?

it adds an entire phone that yes, you can have text conversations on. If you download it there is a game loaded into it that shows you what it can do :)

Thankyou! and if I want to use it, is it only for personal use or commercial use as well?

Non commercial only for free. So nothing that makes any money, including through donations/patreon etc. If the games completely free then use it however you want. Just leave the copyright block in.

Okay thankyou!