Skip to main content

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

Kesash

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

Creator of

Recent community posts

Why is this game tagged idle? What am I missing

(1 edit)

Please make the text bigger, can't read a thing without making it fullscreen, and who wants an idle game fullscreen 


It also stops running when out of focus, which is kinda detrimental for an idle game

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.

Also, a way to easily tell the difference between different things in the automation screen. So a different colour for if the automation  is turned on, and if they are a choice. 

I would really like the option to 'record' the choices I make on a run for an auto preset. Going through the list every time I want to make a new one is not fun, being able to just play and make the preset at the same time would be cool. (Great game though)

(1 edit)

Using Opera GX on windows 10, using a pc that can run anything in existence NOTHING else browser based will work while this game is in view. Like the second I open the tab YouTube just stops playing video's, even if its completely buffered. Weirdest bug I've ever seen. Even if I load the game in a private browser with other things in a normal one it still happens. 


Checked in Edge and it doesn't happen there. 

(1 edit)

I was getting it before id even finished the game

Its a fun little game but the balls seem to trend towards horizontal/vertical only over time, making it REALLY slow to finish.  

Its fun until you buy the last pink upgrade, at which point you get 0 blue squares anymore and can't do anything

The tab for each die being a different colour if you're able to afford one of the upgrades, and maybe greying out if there are none available, would be a nice QOL

I don't get the crafting, at all.