Source code added ( Learning Light.vn )


Hi! I decided to add the source code as a download, and talk just a tiny bit of why I decided to use Light.vn over Ren'py.

Originally, I finished this game in just 8 hours! I wrote it, drew it out, and plugged it into Ren'py. As a 1920x1080 game with minimal effects, I thought a web build would be viable! I felt really strongly that browser compatibility should be the focus of this game, specifically because it's so short. Unfortunately, the performance (as most Ren'py games I try to port) was really, really rough. I put extra care into the feel of the game, so it not being as smooth as I intended really made me disappointed.

Light.vn, made by Soul Engine Project, is a visual novel framework that prioritizes performance, flexibility, and simplicity. I'd been wanting to use it for awhile because of those values. After playing through the tutorial a few months ago, I knew it could handle just about anything you can throw at it. I decided to remake the game in Light.vn and see how a web build would do.

I was very, very pleasantly surprised to see it performed exactly as well as the download!

I had to sacrifice a couple things to get the finished game out the door. Light.vn's NVL options don't provide nearly as much flexibility as Ren'py's (specifically: character dialogue styling), and the lack of ATL (Animation Transformation Language) made some of the buttons a little less responsive than I'd like. While I'm sure there's ways to achieve the latter, as a beginner, I was just happy to get a finished game out the door LOL.

I did a few things to achieve the effects I wanted. The first is that I used two NVL windows at once: One with dialogue, and one with narration. This meant a lot of playtesting to make sure they never overlapped at any point! (But, hey, quick tip: if you want to do comic book style textboxes, Light.vn seems almost made for it. After making Upwards, Rain! in Ren'py, I can pretty confidently say that you can create the same UI in Light.vn with fewer headaches.)

The second is that I had to strip away a lot of the built-in UI and functions and rebuild them. The history screen doesn't work well because of my hacking the NVL screen, so I replaced it with the options screen. The options screen is programmed in a manner most similar to Ren'py's "imagemap" system, meaning a few buttons may be misplaced here and there. The reason for this is twofold: Light.vn's default resolution is 1280x720 (FH is 1920x1080), and I really wanted to have all the settings on one screen. I'm really thankful kopacurve UI exists so I could program in their design, which has all the features I was looking for!

So how was programming the actual game?

It actually was really, really fun. After getting over the learning curve, it was really nice to have the live preview on the side and be able to see colliders directly on the screen. Aside from that, being able to play the game in the browser and know it's performing as well as the client version is really gratifying! The syntax is super easy, so if you know Ren'py, you can definitely learn Light.vn. Light.vn does not differentiate between "screens language" and "script language", so you only need to learn the basic command to make it work in either scenario (~cg0 will show an image, regardless of where you are in the script. This is different from Ren'pys "show eileen" vs "add 'eileen'").) As someone who really wants to explore gameplay options in my titles, I really like that!! I don't need to create screens if I need a button on the fly: you can just create any element arbitrarily right in the middle of the story.

I really, really strongly feel like if you're a Ren'py developer and you're even a little curious about Light.vn, you should try it! Especially for web builds, I'll be using Light.vn from now on.

I've included my source code in the hopes that you can study it and learn more if you like! FH is a very simple game, but I use a few tricks, so you should be able to get the gist of how flexible it is, too. I kept most of the relevant code in "/Scripts/title.txt" and "/Scripts/txtbox.txt"!

That's all for this!! Thank you for reading.

Files

Source code (for use with Light.vn) 57 MB
1 day ago

Get Forever Held

Comments

Log in with itch.io to leave a comment.

(+1)

This is beautiful! I personally think using Light.vn for NVL mode is way way faster than Ren’py. I’m not sure I could do my Spooktober 2024 as fast with Ren’py. It does take quite some amount of getting used to, and I practiced the ATL by… making MVs. Lol.

My favorite feature is how unified the whole language is. Having the language for screens exactly the same as your script really feels good.

However, I’m super spoiled with the amount of shaders and plugins available for Ren’py and I have better understanding of Python than Lua, so for now I’m only using Light.vn for small and personal projects.

Fingers crossed, here’s hoping more people are interested so we’ll have more goodies for Light.vn!