Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Kesash

54
Posts
54
Followers
2
Following
A member registered May 01, 2025 · View creator page →

Creator of

Recent community posts

From what the plans say for the other characters very few are going to be NTR, it's just that popular that there needed to be a couple of them. The next release 

I'm going to be adding something so that you can completely disable it, so if there are ONLY NTR routes the story wont appear, and if there is a route that doesn't have it its the only one that will show up (so you can still play the story, the NTR options will just be completely gone). I know some people REALLY hate it.

I just mean it's a completely separate app to the phone system itself. It will output an RPY file that's pre coded to be used with my renpy pone system. 

It doesn't make any difference to the actual phone system itself, it's purely a way to speed up creating conversation and being able to visualize branching dialogue.

The phone itself comes with ways for the player to change the colours of the phone in game, but if you want to change them manually you'll need to edit the file directly. This purely creates an RPY containing the conversations and branching dialogue pre coded. 

I just mean outside of a label do 

default var_kps_new_mc_name  = "anything"

Then in the label when you set the name do 

$ var_kps_new_mc_name  = name they picked

I just have a habit of defaulting things outside of labels because renpy has some pickling issues that... are annoying.... Thats all

I just realized I gave a full breakdown of how to do it in my reply to someone 2 comments before this one :D Its still there if you want to go read that one

(1 edit)

phone_icon_overlay is defined in phone_gui.rpy. I must have left a reference to it inside the actual phone.rpy... and....


Yep, delete line 3410 and line 3411!

And make sure you remove it from ikps_phone_home_back_action in phone config too if youre not using my GUI

If it keeps happening just create a screen with that name that does nothing, it wont break anything ;D


As for changing the name.... thats the _title of the phone shell when you open a contact, or on the contacts screen. You'd need to set the name they choose to a variable, and on the chat screen run a check when _title is set, if _title == 'mc', set it to the name that was chosen instead. line 1991 I believe.....

 Same thing for the contacts screen when it shows the names for the contacts, which happens at 2667.

Those lines might be off a little, I'm not sure if the version im looking at is the currently uploaded one, let me know if it's wrong and i can look properly

I have been working on a release that does this plus a load more stuff but I've been roped into making 3 different games so my time is... limited rn :') 

No problem, and thankyou. If you get stuck feel free to send me a message on discord

(2 edits)

So every screen uses the phone_shell screen. So shrink the game area around the phone_shell, and then go into your screens.rpy and modify all the screens to use that phone_shell. It wouldnt be *easy*, if youre not good with screens specifically it could take alot of trial and error to make sure everything fits.

You would need to redo everything from the quit screen, to the save screen, to the help screen, etc. 

Yep, someone is doing exactly that with it as we speak :)

(Also, the only stupid question is one that you never ask)

Why is this game tagged idle? What am I missing

Ohhhhh, no, it will error if you leave it out. The button display logic needs to be changed. I have done it, and its planned for the full release, but I'm not sure how long that will take. I'm currently making a separate 'premium' release that is more 'game ready' that the current one with a LOAD more features, and that's one of them. I think it will take another hundred hours or so.

(1 edit)

What do you mean the jump argument optional?

They already do accept vars! Examples of how is in test_char_4 :)

you just need to use the actual dict format and not the shorthand when you make the line that uses a var, and then f string the message

(3 edits)

1-  Yep, the whole conversation is stored in conversation_name['all_dialogue'], so by extending that conversation with a conversation list it will be there as an already had conversation.  So mc_whoever['all_dialogue'].extend({"mc":"Hey"},  {"whoever":"Hey"}) will add those messages, in that order, whenever its run. Want them at the start then just run it right after the start label (the other option is to just use the function to send a message a few times before the game propperly starts, easier but would mean more writing)

2- Not currently an option, it's been something I've been looking at. The code is all there to make it possible, its just changing how the button is displayed. 

3-That would need an entirely new screen, it's not something that's currently planned. 

4-The name dependency was for simplicity, without it creating conversations would require about 3 times more code than they currently do. You would need to assign every conversation to the phone from every direction it can be viewed from etc.  The simplest solution would be to change the title of the conversation screen to show whatever the player entered instead of 'mc' if it should be 'mc'.  So just adding this check in the main ui, the bit in between the two ###



And the same thing in the contacts list:

 

Then default var_kps_new_mc_name anywhere, just so anything, or an empty string, then after they have chosen the name just run $ var_kps_new_mc_name = their_chosen_name

Then wherever that name is displayed on the phone it will be changed to the new one :)

  So if now run this at the start:

Opening Sarah's phone in the demo now shows this:

  



 

Do you have a discord? Best place to talk about what you want it to do :)

Its in the wrong language, wont let me change it, cant play

It doesn't run in the background when in browser, which is kinda detrimental for an idle game. You have to have it in focus for it to run at all

So that part about being able to create one with 0 members, complete lie, it will crash, I was just testing it. If you do want to do that, replace:

name = f"{member_part}-{suffix}"


with 

if len(members) > 0:

            name = f"{member_part}-{suffix}"

        else:

            name = get_store_name_of(current_dialogue) + f"-{suffix}"



THEN you can create one with 0 members :D 

(1 edit)

Sorry I just noticed you'd messaged again. When you create the conversation using the kps_create_conversation() only add them as a member, then use the add member function (its in the newest release) to add your mc to it later, it will instantly appear on their contact list :) You can create a conversation with 0 members if you want, theres nothing stopping you, but the second a member name == a phone name, the conversation will appear

New version I just released will make this much easier now, and has an example in the demo :) 

Theres (currently) no function to do this. You can use the renpy function for closing a screen, the name of the screen the conversation happens in is called 'dynamic_scrollable_text', add '_group' if its a group chat, but this *may* cause issues. Ill add a function that does it next update :) 

If youre making a new conversation you use the kps_build_conversation, and each member of it you use kps_member (or member if its a version before i added all the kps prefixes)

Yea if you had a phone with the name 'mc' that should add that conversation as a contact to that phone, the example is in the chat with sarah, the one about group chats

Just to add, ive created some helper functions to add a member, remove a member, and rename a member. Will be in the next release, so should be a lot easier soon :) If there's anything else you're struggling with, please let me know

I'd rather add helper functions for common use cases than have people getting frustrated :)

(2 edits)

Its in this comment thread :) Scroll up a little ^ 

Its been changed to a group chat so its using the group chat name, this means there is either 1 member, or 3+. Make sure that when you remove a member you add another one, and if you add another one you remove the original one. If you shift+o for the console (this causes a rollback so make sure you click to advance dialogue once before you do) and type conversation_name['members'] (obv replace conversation_name with what its actually called) then it will print the members out for you, and you can check.

Do you have the latest version? In test_char_4 there are 3 examples on how to do this :) Not all of these functions exist in older versions. 



Just uploaded the new version with all this in, also adds the volume of them to the settings screen of the phone. There's a few extra checks it does for messages appended using functions as well. 

(1 edit)

    def _kps_play_message_sent_received_sound(entry):

        if not (renpy.get_screen("dynamic_scrollable_text") or renpy.get_screen("dynamic_scrollable_text_group")):

            return

        if not isinstance(entry, dict):

            return

        sender = next(iter(entry.keys()), None)

        me = phone_data.get("name")

        if sender in ("image", "video", "code"):

            return

        if sender == me:

            renpy.play(var_kps_message_sent_sound, channel="sound")

        else:

            renpy.play(var_kps_message_recieved_sound, channel="sound")

(2 edits)

Yea this one is a little more complicated, it will be in the next update but if you want it now- 

Create this function anywhere in the init python block at the top (will reply to this with a copy paste):

(The vars in using here I've just added to config and done = "thesoundfile")

Run the function in these 3 places:

1-

2-

3-


That should do it :)

(Also, add "code" with the image and video, so it doesn't play a sound when code executes)

I haven't decided how im going to handle image messages yet, but you can just change the 'return' there to a custom 'sent image message' sound if you want. Or if you've only ever going to be receiving images just set it to the received sound. 

in phone.rpy replace:

```

phone_data.clear()

phone_data.update(copy.deepcopy(phone))

```

with:

```

phone_data.clear() or phone_data.update(phone)

```

Should be the quickest fix before I release an update

Its in the kps_open_phone() function

This did work, I must have introduced a new bug when adding something, leave it with me and i'll fix it

(3 edits)

Here, throw this in (change the member name of 'mc' if that isnt your phones name) and it will add a convo with a changing name:


default unknown_convo = [

    {"ember":"Hey"},

    {"mc":"Hey who is this"},

    {"ember":"Ember"},

    {"mc":"OH! Ill update your name"},

    {"code":"""

mc_ember_convo['members'].pop('unknown', None)

mc_ember_convo['members']['ember']= {'profile':'addaprofilepic.png'}

"""},

    {"mc":"done"}

]

default mc_ember_convo = build_conversation(

    unknown_convo,

    member("mc"),

    member("unknown", profile = "test/mc_profile.png")

)

You can obviously replace it from wherever you want, i just showed it being done in the phone here. 

Set the name of the 'member' to unknown, then later, just replace that member with one with a name. So create it with the name unknown, then later remove it and replace it with one with a name. 

The name of the contact is made by checking all the members keys, and just using the one that isnt you. So if a conversationg has two members: 'mc' and 'unknown', and the phone owner is 'mc' the contact is 'unknown', as thats the one that doesnt match the phone. If you then remove the unknown member and replace it with a member called 'sarah' it will now use that as the contact name. 

But as youre still using the same conversation, just changing the other member, it will still keep all the history. 

Let me know if you need an example in code, im just on my phone atm so cant do one right now.

Update done. Should be MUCH easier to code for now

(2 edits)

This shows a simple conversation, contact and phone, with a screen to open the phone. The hardest part is defining the contact, but once that's done you never need to do it again, you can just swap out which conversation is loaded in and that one will play out :) 

(i forgot to add 'default test_dialogue_list_index = 0', should be done after the conversation list is defined and 'all_dialogue' can just be set to an empty list, half of this will become unnecessary in the next release btw, ive completely reworked how its all set up, check the devlog, you may want to wait for the next release)

Sure, it does come with one pre coded. Did you check test_char.py? It has everything there with code notes showing how to do it.

I think I forgot to update my discord too, so you can add me there on randomfox_

It was the name of the game so I had to get to it.... took a while

Me opening and closing this game on opera GX with hardware acceleration disabled. Idk how this is even possible for a browser game. It does not drop back down after the game has loaded, just keeps CPU at 100% consistently. 

Took a while but finally got everything done in 1 run, took about 2 days.