She's waiting...ready to tease you live - Jerkmate is free! Join Now!
x

shundi82

Member
Sep 7, 2022
239
360
187
To add to what I'd written:

Maybe this is an even better shortcut to move everything to RenPy (it doesn't even need NVL):


 

TheGodUncle

Active Member
Dec 2, 2017
739
483
248
I've been looking at the ending hints and saw the corruption spreads ending for Megan (the lesbian one with Caprice). I've been trying to look for it in eos editor but I don't know what the page name is.
 

indyc

Member
Game Developer
Jun 15, 2017
392
800
247
You're right, that RenPy would be closer to Milovana/EOS (server backend + browser frontend).
RenPy provides its own browser and everything in it can be accessed, manipulated and stored via Python (no need for cookies to store save states for example).
So it would definitely have an advantage over engines like Twine (that one has also been updated/ported to to implement an electron browser - though just for exporting the HTML games as an app, if I understand correctly).

I've actually written a pretty barebones custom "engine" just to tinker with your game using + and some standard libs ( , , base64 etc). It's not a rebuild of your game, though, just a means to intercept the calls (listening to DOM events etc) of the running game and store/load/manipulate them at any point (to easily save/load states and insert/add images, animations and sound).

So I'd be willing to lend a helping hand when it comes to smaller/reasonable things, if I can find the time (sometimes that's a big IF).

But you don't even need to rely on any of us f95 folk, because the RenPy community is pretty big and helpful:


I'm blown away by how much information you've given and you've convinced me to join the RenPy discord to ask around there.

That being said, it's times like these where I feel people have massively overestimated how much I understand of this barely technical talk. I honestly have no idea what 75% of the statements mean or why they are important.

Your offer to help out when you have spare time (I have yet to meet a coder with spare time haha) is incredibly generous and if the opportunity arises for you I'll definitely take it!

I generally like Twine for being the most lightweight to launch, and being much better for reading longer passages than RenPy and RPGM with their tiny and wide boxes at the bottom. But then TotS is very image heavy and generally has very little text for each, and I do have trouble imagining how I'd handle a straight port. I've only toyed with hello world level stuff and most existing games use the default sugarcube layout with scrolling main content area so I don't actually know what it can do, but I would be surprised if you couldn't match EOS considering CSS is a thing.

Saving and loading isn't really any harder in sugarcube than it is in RenPy and I don't think the skipping makes any real difference, but also I don't think RenPy's usual downsides matter for this specific game so eh. Basically without being able to test anything in practice I'd take Twine with a hypothetical good page layout > RenPy >>>>> Twine with no customisation and content spilling out of the viewport.
As a player I more or less agree with this.

Personally, I experimented a little with RenPy, but didn't like it. I have some experience with Twine Sugarcube, and I do like that. I wouldn't mind helping out a little if you pick Twine; but I'm not very good with the CSS stuff, which will be the most important I guess.
Lightweight currently isn't much of a concern for me. I think my biggest issue with twine is that I have yet to see a game made in any HTML engine that is close enough to the TOTS experience other than Domination Mansion? Even then it lacks some of the RenPy functions I thought would be a good fit here. I know many others don't care that much about control to skip but that is one of my most used features in re-playable games.

Maybe twine is better for me in the end but I need a lot of convincing on that end. Maybe I need to play with it to see how easy it is or something. (something that often scares me away from most engines) However, the thought of any custom UI seems well beyond my capabilities if I can't even get basic functionality of anything working.

I don't know what CSS stuff is but if I end up picking the Twine route, I'll definitely take all the help I can get!

I've been looking at the ending hints and saw the corruption spreads ending for Megan (the lesbian one with Caprice). I've been trying to look for it in eos editor but I don't know what the page name is.
Alright so... This one is a big mistake on my part. I don't know how that ending hint got in there from the Early Access version but those scenes are not part of 4.02. I'm sorry you spent time looking for it but at least it let me know there was an issue.
 

shundi82

Member
Sep 7, 2022
239
360
187
I'm blown away by how much information you've given and you've convinced me to join the RenPy discord to ask around there.

That being said, it's times like these where I feel people have massively overestimated how much I understand of this barely technical talk. I honestly have no idea what 75% of the statements mean or why they are important.

Your offer to help out when you have spare time (I have yet to meet a coder with spare time haha) is incredibly generous and if the opportunity arises for you I'll definitely take it!



Lightweight currently isn't much of a concern for me. I think my biggest issue with twine is that I have yet to see a game made in any HTML engine that is close enough to the TOTS experience other than Domination Mansion? Even then it lacks some of the RenPy functions I thought would be a good fit here. I know many others don't care that much about control to skip but that is one of my most used features in re-playable games.

Maybe twine is better for me in the end but I need a lot of convincing on that end. Maybe I need to play with it to see how easy it is or something. (something that often scares me away from most engines) However, the thought of any custom UI seems well beyond my capabilities if I can't even get basic functionality of anything working.

I don't know what CSS stuff is but if I end up picking the Twine route, I'll definitely take all the help I can get!



Alright so... This one is a big mistake on my part. I don't know how that ending hint got in there from the Early Access version but those scenes are not part of 4.02. I'm sorry you spent time looking for it but at least it let me know there was an issue.
Re CSS: CSS is used to style any HTML element.

So things like size, relative/absolute position, margin, padding, border, transparency, colors, image source/size/position/crop/repeat, font settings, line height, if and how it's displayed/hidden, if and how it's animated, how it's formatted - think bullets, labels etc - and how it can be interacted with - and its visual feedback for any interaction.

You'd write your HTML like so:
<html><head></head><body>

<style>
#element1 { background-color: red; }
#element2 { background-color: blue; }
</style>

<div id="element1">This will have a red background.</div>
<div id="element2">This will have a blue background.</div>


</body></html>

Though, more commonly, the css will be written into an external file (e. g. "style.css") and then just loaded from within the HTML file:

<html><head><link rel="stylesheet" href="style.css"></head><body>

<div id="element1">This will have a red background.</div>
<div id="element2">This will have a blue background.</div>


</body></html>

So, when people say, that you can change anything via css, they usually mean, that you can just manipulate any already existing css - even without touching the original css file.

You could either just load your own css after the original or add the style directly to the HTML (either as style declaration like in my first example - or directly into the element itself):

<html><head><link rel="stylesheet" href="style.css"></head><body>
<!--The original css styles are loaded.-->

<!--Now we change the first element via style tags from red to yellow.-->
<style>
#element1 { background-color: yellow; }
</style>

<div id="element1">This will now have a yellow background.</div>


<!--Here we change the second element directly to green.-->
<div id="element2" style="background-color: green;">This will now have a green background.</div>


</body></html>
 
Last edited:

draxton

Newbie
Dec 10, 2019
57
89
226
I don't know what CSS stuff is but if I end up picking the Twine route, I'll definitely take all the help I can get!
Twine is a container format. It is just HTML with some extra tags required (eg: <tw-storydata>, <tw-passagedata>), nothing more. It just establishes a few basic rules regarding what should be inside the HTML, and which Story Format you used.

Twine uses "passages" to store the content (text and code). It is like a pseudo-HTML page that contains a scene of the story (or game)

A Story Format is essentially an embedded JavaScript library that provide API for navigating the story, handling user input, etc.
The Story Format is where the real magic happens.

While you can do pretty neat things with just the API provided by the story format, you can do pretty much anything with custom JavaScript, which is an advantage (and a very powerful foe if mishandled, which is often the case)

CSS is Cascading Style Sheets, a standard that allows you to specify style and layout formats for HTML elements (eg: making all buttons look in a particular way or making just certain buttons look in a particular way). It can also be used for animations.

To summarize:
Twine: Container Format (Stores the Story Format's JavaScript code, CSS and the story passages in a single HTML file)
Custom JavaScript + Story Format API: functional code
CSS + Story Format API: how the content looks
Passage: Sort of a scene, the story content itself
 
  • Like
Reactions: shundi82

TheGodUncle

Active Member
Dec 2, 2017
739
483
248
Alright so... This one is a big mistake on my part. I don't know how that ending hint got in there from the Early Access version but those scenes are not part of 4.02. I'm sorry you spent time looking for it but at least it let me know there was an issue.
Yeah, I subscribed to your Patreon after that because I figured it was about time and I found it in the preview tease.
 

shundi82

Member
Sep 7, 2022
239
360
187
Twine is a container format. It is just HTML with some extra tags required (eg: <tw-storydata>, <tw-passagedata>), nothing more. It just establishes a few basic rules regarding what should be inside the HTML, and which Story Format you used.

Twine uses "passages" to store the content (text and code). It is like a pseudo-HTML page that contains a scene of the story (or game)

A Story Format is essentially an embedded JavaScript library that provide API for navigating the story, handling user input, etc.
The Story Format is where the real magic happens.

While you can do pretty neat things with just the API provided by the story format, you can do pretty much anything with custom JavaScript, which is an advantage (and a very powerful foe if mishandled, which is often the case)

CSS is Cascading Style Sheets, a standard that allows you to specify style and layout formats for HTML elements (eg: making all buttons look in a particular way or making just certain buttons look in a particular way). It can also be used for animations.

To summarize:
Twine: Container Format (Stores the Story Format's JavaScript code, CSS and the story passages in a single HTML file)
Custom JavaScript + Story Format API: functional code
CSS + Story Format API: how the content looks
Passage: Sort of a scene, the story content itself
To be fair, I'm not too familiar with Twine.
From parsing/editing some Twine games, I understood, that the JS lib is "misusing" HTML to store its own logic/config.

But unless Twine incorporates something like nodejs, it won't be able to access a lot of outside content from within the browser (thanks to CORS). So, for example, no (#).load().
That's the reason EOS needs a server running in the background to serve http(s).

I mean, I'm pretty sure, that the main allure of something like Twine isn't its powerful/flexible API (or the prospect of adding custom js), but the ease of access and distribution.

And the same goes for RenPy. Only, that one has a larger community (more help and presets + extensions) and - I'm pretty certain - also more default capabilities.
Being based on Python is also a plus in my book - though a new dev might not take advantage of that (except for the aforementioned extensions).

In the end, indyc should choose whatever helps them to get things going.
The fanciest shit won't help when you can't even get your foot in the door. :p
 

draxton

Newbie
Dec 10, 2019
57
89
226
To be fair, I'm not too familiar with Twine.
From parsing/editing some Twine games, I understood, that the JS lib is "misusing" HTML to store its own logic/config.

But unless Twine incorporates something like nodejs, it won't be able to access a lot of outside content from within the browser (thanks to CORS). So, for example, no (#).load().
That's the reason EOS needs a server running in the background to serve http(s).

I mean, I'm pretty sure, that the main allure of something like Twine isn't its powerful/flexible API (or the prospect of adding custom js), but the ease of access and distribution.

And the same goes for RenPy. Only, that one has a larger community (more help and presets + extensions) and - I'm pretty certain - also more default capabilities.
Being based on Python is also a plus in my book - though a new dev might not take advantage of that (except for the aforementioned extensions).

In the end, indyc should choose whatever helps them to get things going.
The fanciest shit won't help when you can't even get your foot in the door. :p
First, I'm not advocating for Twine, indyc should choose what's best for their project, knowledge level, resource availability and workflow. Learning (and unlearning) will require time regardless of the chosen Engine

Second, I fail to see why CORS would be an issue. If the resources are local (same domain) Twine will load the resources without issues (from images, fonts to audio)

Finally, my mention of custom/external JS was only because it allows the dev to extend what is allowed to be done only with the Story Format (SugarCube, Harlowe, etc.) Anything from simple or fancy notifications using notify.js to creating a floating div with a dynamic mini map (or going bananas and importing node.js)

In any case, this not the right place to continue the discussion as it is unrelated to the thread topic ;)
 

shundi82

Member
Sep 7, 2022
239
360
187
First, I'm not advocating for Twine, indyc should choose what's best for their project, knowledge level, resource availability and workflow. Learning (and unlearning) will require time regardless of the chosen Engine

Second, I fail to see why CORS would be an issue. If the resources are local (same domain) Twine will load the resources without issues (from images, fonts to audio)

Finally, my mention of custom/external JS was only because it allows the dev to extend what is allowed to be done only with the Story Format (SugarCube, Harlowe, etc.) Anything from simple or fancy notifications using notify.js to creating a floating div with a dynamic mini map (or going bananas and importing node.js)

In any case, this not the right place to continue the discussion as it is unrelated to the thread topic ;)
Indyc said, that they were still choosing and would like to hear some pros / cons, so I'd hardly call it off topic.
And I'd already said, that for a beginner dev an engine's possibilities are way less important than its ease of access.

But I'll still need to rebut your answer to the CORS problem, because it seems you're missing the point.
We're talking about dynamic loading here, hence why I mentioned (#).load().

Check your console when running this and let me know how it went:
Code:
<!DOCTYPE html>
<html><head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
</head><body>
<div id="container"></div>
<button onclick="javascript:$('#container').load('mylocalthing.ext');">This will create a CORS error without http(s).</button>
</body></html>
That's why - as I'd mentioned - even the offline variant of EOS still needs to run a server (for example it can't otherwise dynamically load its js chunks).

And why wouldn't that be relevant when talking about engines?

Lastly, if you have the time and aren't already fed up by this whole back and forth:
What do you mean by "importing nodejs"?
Since nodejs is a server, you can't possibly mean importing it like the other js libs you mentioned.

Is there a way to run nodejs inside the browser via Twine (maybe inside a container)?
Or were you just referring to their app side?
 
Last edited:

VoidRunner101

New Member
Feb 23, 2025
2
0
11
Hi! I was wondering if the game would be updated on f95 anytime soon? Love this game and would love to play more content!
 

indyc

Member
Game Developer
Jun 15, 2017
392
800
247
Hi! I was wondering if the game would be updated on f95 anytime soon? Love this game and would love to play more content!
Though I'm not very far from updating Keystroke here, I honestly don't know how I can update TOTS in the next few months. While I have been still actively adding onto it, I had to break it into 4 Chapters for the engine to handle it while waiting for the engine to be updated (At this point it doesn't feel like it ever will be). I wouldn't want the normal F95zone public tearing apart the chunkiness of that system for a few additions sprinkled throughout.

That being said - a bit of a RenPy conversion has started but that would be at least a year away from having an actual port. Not only is RenPy way more difficult to use than I thought it would be, but there is just SOOOO much stuff to convert from one to the other and I still don't know how to code anything. I have someone helping out with this process but their time and my funds will be limited on this front. We don't even have the first scene up and running yet.
 

indyc

Member
Game Developer
Jun 15, 2017
392
800
247
does anyone know how to get Lana Endings More Angels, what does it mean by % chance
In an attempt to not spoil too much. Follow the hint of
You don't have permission to view the spoiler content. Log in or register now.
But there is either a 33% or 50% chance of that ending being part of the following moments. You can save before it happens and try it again if you miss it. Good luck!
 

SKT Baker

Newbie
Jun 5, 2017
27
9
205
In an attempt to not spoil too much. Follow the hint of
You don't have permission to view the spoiler content. Log in or register now.
But there is either a 33% or 50% chance of that ending being part of the following moments. You can save before it happens and try it again if you miss it. Good luck!
Please just spoil it for me, Every attempt I make to get this ending doesnt work, I always end up with succubus Lana, and if I try to minimize my interactions with her she doesnt show up at the end at the pool party, and I don't know what to do to activate the bath scene with the flowers. This is very annoying.
 

indyc

Member
Game Developer
Jun 15, 2017
392
800
247
Please just spoil it for me, Every attempt I make to get this ending doesnt work, I always end up with succubus Lana, and if I try to minimize my interactions with her she doesnt show up at the end at the pool party, and I don't know what to do to activate the bath scene with the flowers. This is very annoying.
Apologies for it being a frustrating experience so far. Ok then, lots of spoilers below:

You don't have permission to view the spoiler content. Log in or register now.
 
Last edited:

SKT Baker

Newbie
Jun 5, 2017
27
9
205
Apologies for it being a frustrating experience so far. Ok then, lots of spoilers below:

You don't have permission to view the spoiler content. Log in or register now.
I have 8 out of the 9 Lana endings including the 2 where my name has to be Jon I just can't get this last one called More Angels.

I get the note and meet her outside, I go inside and nap and she is in the bed, I go upstairs and see her on the tv with Gabbie then again I see her in the upstairs bed where I nap and can get the mystic stone, I can see here in the dream when I use the stone, I can go to living room and have tell me to slap my balls or end up with the fireplace scene. But the bath scene with the flowers never triggers ever. I have done it 11-12 times on Valentines or Easter, I want this scene because its the earliest you can finish inside her. By the time i get to the pool party and I select Lana I immediately get sent to the spirit world, and If i minimize my interactions with her finishing inside does nothing no matter how many times I reload the autosave.

I'm not even playing the game anymore I'm just holding down spacebar and clicking the options. If you have some kind of save code I could just use so I can finish this character off I would appreciate otherwise I'm just going to play something else. So much of this game just feels out of my control. You made an interesting game but sometimes it feels like the game engine hates you.
 

SKT Baker

Newbie
Jun 5, 2017
27
9
205
I would like to apologize for my harsh words, I tried one more time and I got the ending. This time I just ignored her at every possible instance and she still showed up at the pool party which is weird because the last time I kept ignoring her she just stopped showing up.
 

Darkenedlight

Member
Apr 25, 2018
137
104
251
Got none inspite of trying my best to avoid vanilla sex.
If I remember correctly, they're almost all tied to specific endings. I think one for Anissa, one for Christie, Gabbie has a scene or two leading to an ending, Kylie has an ending, and I think Megan had something.
 
  • Like
Reactions: indyc
3.70 star(s) 27 Votes