Easy to use (?), visual novel engine | Open Source

EDIT: I don’t actually recommend using this, it can be interesting though, so check it out if you’ve nothing better to do

Hello everyone! I’m working on a free and open source visual novel engine. It’s in an early stage of development and it still lacks of functions like selection of dialogues and actions.

I want some feedback to know if it’s easy to use or confusing.

Make sure to read its description, please.

Model: VNEngine V. 0.4 ( Visual Novel Engine ) - Roblox

2 Likes

This uses a lot of old and bad practices that could make it very detrimental to use if planning to set this up within an experience intended to go live.

  • General code problems, from using the parent argument of Instance.new (see: Instance datatype) to shadowing variables (using the same variable name for different things).

  • Creating multiple DataStores for each value used. Every feature that currently uses DataStores can be packaged into a single dictionary. See: DataStore – Best Practices. Also worth noting that the data scripts do not handle cases of nil data properly and only check if the pcall was successful before forcing whatever was returned to be used as the current value.

  • Too many scripts, very little modularity. This can be problematic for developers who wish to extend what you already provide with their own features and configurations. This may also be a bit of a problem when taking execution time/order/instance existence into consideration. Just so I could use this in a testing capacity, I had to personally rewrite the contents of the DataStore folder not to do anything with DataStores at all.

  • Too many instances. You can use ModuleScripts or tables to cache data instead of ValueObjects as one example of where to cut down on using instances. I couldn’t figure out the full extent of this because this is just feedback from a preliminary glance. I see some things that don’t even have names (the defaults are still around) such as the values in the music folder. From what I can tell, those were meant to be song names… could’ve just used attributes.

  • I sincerely hope you’ll change to CanvasGroup when it’s released, assuming it supports showing/hiding Guis in the same manner as SoundGroups can modify volume (it inherits Visible from GuiObject right now). Nesting ScreenGuis doesn’t look very clean.

There’s a lot more than just this and it would do well to get some reviews (like this one, creating a feedback thread is good!) both in terms of how it performs technically and how it feels to actually use from a player perspective. I notice that you have add-ons but you may want to make sure first that your resource is usable and stable before thinking about extensions.

You’re still in 0.x, so assuming you’re using semantic versioning right and won’t just skip to 1.0 after 0.9 unless your 1.0 release is a stable, fully usable, thoroughly battle tested, ready item to use, then this is still your development phase and you should maximise the amount of feedback you can get from as many development circles you know as possible first.

3 Likes

Thank you. I already somehow knew about a lot of the problems you pointed but I didn’t know how to fix them. I’m constantly learning a lot and I started this project some months ago, that also affected it.