SFML Visual Novel and Lua

Started by
1 comment, last by Ectara 10 years ago

Hello, I have a few questions regarding the usage of SFML and Lua. I want to create a visual novel, using SFML but im confused with the loop of it. First off, I know there are programs like Novelty, etc that can do it for me but since im only making one novel, I wanna code it by hand. My questions regarding this:

  • How would I go about programming the loop for this? Would a bunch of nested switch statements work or is there a neater or simpler way?
  • My plan was to have 3 variables; story_spot, image_spot, text_spot. These are just made up names by the way just wanted to use it as an example. As the user picks choices, it would update each to a different integer number which would then change the text, image, etc. I guess this goes along with my first question but is this how I should be looking at it?
  • I have heard people using Lua for game programming, is it something I should be using for this, if so what parts exactly? Im still not completely clear on the entire concept and usage of Lua but from what I have heard its mainly used for NPC functions and dialogue. If it is used for situations like that, should I be looking into using it for my dialogue. My plan in terms of dialogue was to have different files for different parts of the story and when "text_spot" would switch, so would the .txt file that the program was reading from.

Any help would be appreciated.

Advertisement
  • How would I go about programming the loop for this? Would a bunch of nested switch statements work or is there a neater or simpler way?

Use data. The main loop needs only know the current page/scene/whatever, which is a piece of data that has all the attributes you need (tile, graphics file names, audio file names, etc.) and the next page. The data objects can be loaded from XML, JSON, or so on. This way you can write the player once and then plug in multiple stories or easily change the story without recompiling.

  • I have heard people using Lua for game programming, is it something I should be using for this, if so what parts exactly? Im still not completely clear on the entire concept and usage of Lua but from what I have heard its mainly used for NPC functions and dialogue.

It's just a programming language. You can write your whole game in C++, Lua, C#, Java, Haxe, JavaScript, Ruby, Python, PHP, Erlang, or whatever else your heart desires. For more complicated compiled languages like C++ it is often advantageous to have a smaller, simpler, interpreted language like Lua glued in so you can make small edits to gameplay code (NPCs and dialogue as you suggested, among other things) so that simple tweaks can be made and designers can change game behavior without having to recompile the game (especially as the content folks often don't have a full developer environment and _can't_ recompile the game).

If you plan to have a dynamic story that can change and needs some kind of logic embedded in your data files, Lua is a sensible choice if you are otherwise writing everything in C++. Otherwise you don't need to embed a small language at all, or you could write the entire things in a small language and skip C++ entirely.

Sean Middleditch – Game Systems Engineer – Join my team!

You may wish to go with something a little more dynamic than having a fixed number of slots of things on screen. Often desired features are showing multiple portraits if more than one person is speaking with you, which would require a little bit more flexibility than having one background slot, one text slot, and one "story" slot, whatever that may be. I'm using multiple portraits as an example, but making your capabilities fixed from the start before the story is likely finished is going to restrict you, one way or another.

Lua can also be useful for more than dialogue and such things, but also controlling things like transitions, moving images indicating portraits, panning viewpoints on a large static background, visual effects (like being sleepy), and other things. There are a whole range of things that you can use to immerse the player into the story, it just requires thinking outside the box.

By the way, I wish you luck on your project. I am a big fan of visual novels, so I am glad to hear someone taking interest in making one as a personal project.

This topic is closed to new replies.

Advertisement