My visual novel, World Cell: Chronicles of the Orovahn, is now in production! It will be an 18+ narrative-driven fantasy VN with ADV segments.
There is no release date for the game yet. It'll get done when it's done, but I will be progressively working towards a demo!
To reach this point with any project has been a huge milestone for me, and World Cell has been a project of the purest passion from me, one that I haven't felt in literal ages. I can't guarantee I'll share frequent updates, but I'll share some on occasion!!
For now...admire the view with me.....cuz it took me over two days to get this menu to look and function properly XDDDD
Is it slightly mad to get this excited about text animation?
Yes. Yes it is. But this took me the better part of 3 DAYS to get working. So I reserve the right to get unreasonably excited.
Text from Pléhtin's route, with Leiz and Leíla talking about aggravating their elder brother. Early stuff, so there are probably spelling and grammar mistakes, apologies.
There is a mouse click in between the two animated lines. The plain black presentation is NOT how it will be in the final game, I'm just using a clean file to run experiments in.
It might not be that clear what's going on here, but effectively what I'm doing is scripting each line to print in a mimicry of the timing experienced if the characters were speaking, small pauses for commas, different pacing for if a section is spoken quickly or slowly, etc. The timings here are not as I want them, and I'd like to overlay a fade to make everything read as less robotic.
There's a ludicrous amount going on under the hood to make this all behave nicely.
I know this kind of thing may not be the most exciting to those not fighting with/alongside the renpy system, but to the few who this will make sense to...
I got custom save names to work, and I included data in the save files which will now display Chapter and Route, as well as condensing the save system from pages of slots to a list, and automatically re-ording those slots to account for a player deleting an old save!
I did this through negotiation with the FileSaveName, save_name, renpy.unlink_save(), renpy.rename_save(), a few custom functions, and a lot of beating my head against a brick wall until stubbornness won out.
The custom Save Name issue, which seems to catch many folk out, can be tackled like this:
Code below
My code isn't elegant, by any means, and I've a lot of tidying up to do, but the most important bit for the purpose of custom save names is on lines 149, 150, 169-173, and 178.
Basically, I give readers an input box to type out their whims on line 172, linking it through the 'value' command to 'save_box' which is defined by line 150 and through the VariableInputValue() linked to the 'save_name' variable. 'save_name' is used by renpy to supply an additional string of information to a save.
Let's have a quick look at the save file structure. If you have save files, open your console in your renpy game by hitting 'shift' + 'O', then type 'renpy.list_saved_games()', you'll get a list with a series of tuples that look something like this:
Section by section, this tuple contains:
The file slot, determining which page and entry in that page the item occurs.
Additional Information, which is where the value of 'save_name' is stored at the time of the save's creation.
The Screenshot, which as standard is displayed on the save/load screens.
And finally, a long form number recording the time spent in the game, see the renpy documentation for more info on this.
The example I gave above is a file of mine without a custom save name. Here is the file with the save name 'Attempt 2' for you to compare:
Now, I'll show you how the display of the 'save_name' value is achieved on the actual slot:
Line 192 is your main focus here. By using the inbuilt function 'FileSaveName()' we retrieve from the save file the string stored in the second place in the file's tuple, what I previously called Additional Information. The 'n' value in this circumstance simply works as a slot indicator referencing the number of the save slot.
You can find 'FileSaveName()' already in place in the default file_slots() screen here on line 643 (note I've mucked about with my default screens file, so line number between mine and yours may vary):
You can also see from the second screenshot of my custom save screen, a little of my 'chapter' and 'character' set up. This was achieved by setting up a little bit of code like this in my script.rpy file:
As the reader progresses through the story the values of 'character' and 'chapter' are adjusted to reflect their play through, and these changes are reflected in the subsequent save files.
To those in the know, my line number on the script.rpy file is scary, isn't it? The joy of variable fiction and its variables...
Hopefully that goes some way to help anyone who's struggling getting to grips with this particular part of the renpy save system.
Preview of the Pre-Alpha Build of the game.
Sorry about the video quality. Turns out, my default video trimming software is pretty rubbish.
Anyway, let me know what you all think of the format, especially the readability of the font. I'd like to make this as accessible as possible.
Not entirely happy with that logo… but it'll do for now.
I've mostly got this behaving itself now. ¬¬ mostly...
But I wondered if folks would be interested to see what this line looks like code side:
The mode and timings are divided from the text with a _, while text is sectioned off to allow for multiple timings and behaviours using a |.
I've also just patched in a few extra lines which allows me to write like this:
Note the 'a' instead of the previous instance of a mode_timing bit. This is auto behaviour, it takes the mode and the individual character or word timing from the previous section, allowing me to print the text at the same rate, but add pauses for extra effect.
Cross all available appendages that this keeps behaving itself going forward...