Page 1 of 1

Jump free, mid label safe, dynamic multiple phone system

Posted: Fri May 09, 2025 6:45 am
by Kesa_
Sorry if this is the wrong place, but I really have no idea where this should go. First post here so forgive me if its wrong.

I've created a new phone system for renpy. Completely label and jump free, so it can just sit in the UI and be opened, closed and used at any point. Was hoping for just some feedback I guess? or if anyone wanted to use it. I've programmed python for a while but this is my first renpy project.

Also if anyone has any suggestions on what can be added, or wants help integrating it into a game, feel free to message.

Created and tested in renpy 8.3.7

It has:
  • 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.
As long as you're comfortable with the Python language it should be fairly simple to use. The demo it comes with is code commented, probably a little too much. But it does explain how everything works.

It does need some UI polish, but I have someone who offered to do that for me, just waiting for them to get back to me.


It's posted here, enjoy! https://kesash.itch.io/kesashs-dynamic- ... one-system

-^^,--,~ (obligatory fox)

Re: Jump free, mid label safe, dynamic multiple phone system

Posted: Sun May 11, 2025 4:41 am
by Kesa_
Ver 1.2 update
- Changed logic that deals with 'code' key, allowing you to now append to the full conversation youre currently in, and show a message straight away based off a condition
- Deleted more unused code... I think I got it all this time. I've changed so much I've lost track
- Added an example of a message being sent based on a condition to the demo (line 150 of test_char.rpy)
- Added a function to allow you to update both sides of a conversation to allow easy mirroring. Can be used to update all conversations even if a partner contact doesnt exist
- Added optional 'enable_messaging' to contact dict to disable messaging for specific contacts from one side
- Added owner to contact dict to catch some stupid renpy screen logic that passes in data you didnt even ask it to. It just sees it and decides 'HEY, I WANT THAT TOO!'
- Updated after choice function to check for and update partner phone (if it exists) after a choice has been made
- Considered placing the entire phone system in a try block
- Stopped a click registering when closing the phone completely
- Added settings screen
- Added ability to control message speed with in phone settings
- Added both to config, allowing them to be disabled entirely
- MORE CODE NOTES AGAIN
- Continued to ignore UI

Re: Jump free, mid label safe, dynamic multiple phone system

Posted: Sat May 17, 2025 1:26 pm
by Kesa_
Ver 1.3
- ACTUALLY made sure menu is disabled this time
- Replaced some if else blocks with function maps
- Moved unread message overlay logic into a reusable function
- Disabled rollbacks when the phone is open
- Added message animations for incoming and outgoing messages
- Added ability to disable message animations to config
- Added function to use to send message when phone closed (avoids animation). Can be done manually by adding {'seen':True} to the message dict
- Added function to send all messages waiting in a conversation, regardless of who is sending them, while the phone is closed (complete_conversation(contact))
- Backgrounds are now set per phone, so each can have its own background
- Something something code something something notes
- Continued to ignore UI