- Sep 29, 2020
- 49
- 285
Hey, all. Been a lurker on these forums for a while now but, with my game's prologue nearing a playable state, I thought it might be time to finally start posting some stuff myself.
As the title suggests, this thread will primarily be about my experience trying to code Ren'Py's features into Unreal Engine for use in my own visual novel. The first obvious question is why? Why would I spend the time to build features into Unreal that already exist in another game engine expressly built for this purpose?
Fair question - my answer is a bit long so if you're curious about my rationale it's in the spoiler box below. I won't claim it's a good rationale, but here it is:
So, that out of the way, what does this actually look like? Obviously, the first thing I needed to do was make sure there was a functioning dialogue system. I first scoured the Epic Marketplace to make sure nothing like this was already available (which would certainly have made my life easier), and while there were some basic VN-style systems, none of them were nearly robust enough for my liking - so I began the long process of making my own. Following various tutorials on YouTube and mashing some different free plugins together I was able to implement a system that I think works quite well. The groundwork was a bit labor-intensive, but as you'll see in the screenshots below, now that the system is built it's quite easy to customize with branching paths and complex interactions.
The underlying concept of the dialogue system, like the visual scripting language of Unreal's blueprint interface, is that each line of dialogue or description is represented by one node. This node can then be used to fire off an unlimited number of events (called by the dialogue widget) that can influence any other part of the system. So say you want to add an item when a particular dialogue node is triggered, you can do that. Want to change a character expression, start an animation, trigger a flag or variable check, you get the idea - anything that you can think of can be triggered and accessed via specific nodes within each scene - you can also access the dialogue nodes within other blueprints, meaning the communication works both directions.
Another advantage of this node-based dialogue system is that it's super easy to create branching paths. In the example below, you can see that the choice text is generated by a single item in the node that tells the GUI "choice text" widget to create a new button automatically. Choosing one option or the other will then trigger that line of dialogue in the tree. You can also have these branches loop back on themselves if you want to allow players to choose options multiple times (something like a traditional "exposition tree" seen in most RPGs). If you want to add a third option, simply create a new node and connect it to the tree.
The last thing I'll talk about in this initial post (it's getting a bit long already) is the UX. I know from reading these forums and playing a lot of Ren'Py games, that this is one of the major challenges using that engine - every GUI tends to look about the same and employ the same handful of identical features. Unreal has a pretty sizable advantage here since the UMG system is very easy to customize. You can see in the series of images that the move from design to implementation to actual in-game functionality is pretty much 1:1.
So that's it for now. I'd definitely be interested to hear people's thoughts who have been doing this a while or who might be interested in following a similar path.
I am planning to release all my project files to the community once I have them cleaned up and in a state that would make sense to anyone that isn't me - definitely let me know if this is something you'd be interested in as it will take quite a bit of additional work to get all the documentation made for using my systems and knowing that people are interested would help motivate me.
As far as the game itself, I am happy to answer any questions about this process or challenges I've faced/am facing - I will be tracking this thread and am happy to answer any of your questions about this, the game, or my experience trying to undertake this project without much prior experience in the space (I am certainly no artist).
You can track the game's progress on my
Cheers!
BBZ
As the title suggests, this thread will primarily be about my experience trying to code Ren'Py's features into Unreal Engine for use in my own visual novel. The first obvious question is why? Why would I spend the time to build features into Unreal that already exist in another game engine expressly built for this purpose?
Fair question - my answer is a bit long so if you're curious about my rationale it's in the spoiler box below. I won't claim it's a good rationale, but here it is:
You don't have permission to view the spoiler content.
Log in or register now.
So, that out of the way, what does this actually look like? Obviously, the first thing I needed to do was make sure there was a functioning dialogue system. I first scoured the Epic Marketplace to make sure nothing like this was already available (which would certainly have made my life easier), and while there were some basic VN-style systems, none of them were nearly robust enough for my liking - so I began the long process of making my own. Following various tutorials on YouTube and mashing some different free plugins together I was able to implement a system that I think works quite well. The groundwork was a bit labor-intensive, but as you'll see in the screenshots below, now that the system is built it's quite easy to customize with branching paths and complex interactions.
The underlying concept of the dialogue system, like the visual scripting language of Unreal's blueprint interface, is that each line of dialogue or description is represented by one node. This node can then be used to fire off an unlimited number of events (called by the dialogue widget) that can influence any other part of the system. So say you want to add an item when a particular dialogue node is triggered, you can do that. Want to change a character expression, start an animation, trigger a flag or variable check, you get the idea - anything that you can think of can be triggered and accessed via specific nodes within each scene - you can also access the dialogue nodes within other blueprints, meaning the communication works both directions.
You don't have permission to view the spoiler content.
Log in or register now.
Another advantage of this node-based dialogue system is that it's super easy to create branching paths. In the example below, you can see that the choice text is generated by a single item in the node that tells the GUI "choice text" widget to create a new button automatically. Choosing one option or the other will then trigger that line of dialogue in the tree. You can also have these branches loop back on themselves if you want to allow players to choose options multiple times (something like a traditional "exposition tree" seen in most RPGs). If you want to add a third option, simply create a new node and connect it to the tree.
You don't have permission to view the spoiler content.
Log in or register now.
The last thing I'll talk about in this initial post (it's getting a bit long already) is the UX. I know from reading these forums and playing a lot of Ren'Py games, that this is one of the major challenges using that engine - every GUI tends to look about the same and employ the same handful of identical features. Unreal has a pretty sizable advantage here since the UMG system is very easy to customize. You can see in the series of images that the move from design to implementation to actual in-game functionality is pretty much 1:1.
You don't have permission to view the spoiler content.
Log in or register now.
So that's it for now. I'd definitely be interested to hear people's thoughts who have been doing this a while or who might be interested in following a similar path.
I am planning to release all my project files to the community once I have them cleaned up and in a state that would make sense to anyone that isn't me - definitely let me know if this is something you'd be interested in as it will take quite a bit of additional work to get all the documentation made for using my systems and knowing that people are interested would help motivate me.
As far as the game itself, I am happy to answer any questions about this process or challenges I've faced/am facing - I will be tracking this thread and am happy to answer any of your questions about this, the game, or my experience trying to undertake this project without much prior experience in the space (I am certainly no artist).
You can track the game's progress on my
You must be registered to see the links
(which I just set up yesterday, so it's lacking content at the moment), and I expect the prologue to be available on here in the next few weeks.Cheers!
BBZ