Three Lilies — Delay, Progress, Talking About Direction
:pensive: :face_holding_back_tears:
Three Lilies is now being pushed to December. I’ve been having little bouts of illness that have been hindering my progress as well as sleep issues. Don’t worry about it, it’ll be okay. It’s not COVID, at least!
As it stands, because of those bouts of illness, I’ve only gotten halfway through scene one of Suburb. I do want to make Three Lilies a fun experience throughout the whole visual novel, so I don’t want Countryside to be great in terms of direction and then have the other two stories fall flat.
So, let’s look at the breakdown now!
Countryside
Writing — 100% written and edited
Artwork — 100% complete
Programming — 90% complete, needs an accessibility pass
Suburb
Writing — 100% written and edited
Artwork — 98% complete, need to add an expression to a CG
Programming — 5% complete, scene 1 of 7. All stories have 7 scenes each and are at least 10k words.
City
Writing — 100% written and edited
Artwork — 100%(?) complete. Another background is being floated, but this might have to be included in an update.
Programming — 0% complete (on standby)
Game Overall (AKA the things that (mostly) aren’t the script itself like the game screens)
Programming — 92% complete, gallery’s almost done! Still need to create one more screen for liner notes, need to finalize first time setup screen. I’m probably going to finish these things today—I’ve been doing lots of setup for them when I’m too sick to be particularly creative.
UI — 98% complete, need to finish City chapter select button.
Accessibility — All of the groundwork is implemented like functions, dictionaries etc. Chapter staging must be completed before I do a second sweep where I add image descriptions, screenshake and photosensitivity safety, etc.
Fun Direction Rambling Stuff
I thought I’d make this entry a little fun (for people who like to hear about technical stuff) to make up for the disappointment of the delay.
Three Lilies is a vast step up in quality compared to Soundless, which was intentionally designed to fake technical limitations. Now that I’m living in the present, I’m going all out with how it looks!
My main source of inspiration has been the recent TYPE-MOON visual novels, Mahoutsukai no Yoru and Tsukihime Remake. By taking advantage of things like crop, motion, and zooms, I’m trying to create a somewhat dynamic, filmic experience. Of course, it’s nowhere near the level of Mahoyo and TsukiRe since I’m just one person, but I think I’m doing pretty well especially when it comes to engine limitations.
These are all effects that I’m accomplishing just using code known as Ren’Py’s ATL language. I’m not making entirely new assets just to do what I want to do. The above screenshot was accomplished like this:
scene village with Dissolve(0.5):
zoom 0.8 xalign 0.2 yalign 0.7
show village as village2 with wipedleft:
ypos 150 crop (340,900,1920,250) blur 20
linear 0.5 crop (320,900,1920,250)
show anna beatbod2 smi1 with qd:
ypos 150 crop (50,260,1920,250)
show village as village3 behind village2 with wipedright:
ypos 450 crop (580,900,1920,250) blur 20
linear 0.5 crop (600,900,1920,250)
show hui smi1 behind village2 with qd:
ypos 450 xpos 1100 crop (50,240,1920,250)
window show
nar "Anna got on one end of the generator while Huifang got on the other."
You’ll also notice that I’ve been posting GIFs of little emote marks next to character heads. This is accomplished using a neat little system I’ve made where I pre-animate the mark, then supply arguments to its transform to make it go wherever I’d like on the screen at whatever size I want.
Here’s the code for the floating heart mark beside Najwa’s face at the top of this entry:
transform heartmark(myxpos,myypos,myzoom=0.5):
parallel:
xpos myxpos ypos myypos xanchor 0.5 yanchor 0.5
parallel:
xsize 0 zoom myzoom
easeout 0.1 xsize 500
parallel:
yoffset 0
block:
ease 0.5 yoffset 4
ease 0.5 yoffset -4
repeat
And here’s how I show it in-game:
show heart_mark at heartmark(450,400,myzoom=0.2)
The first two numbers in the parentheses let me position it. The third argument, myzoom
, doesn’t always have to be supplied because I gave it a default value, but here I chose to make the heart smaller.
Feel free to use this code in your own game. It’s very useful…If you didn’t know you could supply arguments to transforms in Ren’Py, well, now you know!
(I was going to show a biiig GIF of some animation I did, but Substack said the image was too large and it’s too big for a trustworthy GIF compressor, too…)
By the way…
I’ve been working on some promotional art. The pieces will be revealed closer to release.