Posted February 18, 2022 by Jeremi
Hi everyone, here is the 5th devlog of Rakugo Project 3.3. Sorry everyone, that I was calling last devlogs as “Rakugo 3.3 Devlog”, but I should to call it “Rakugo Project 3.3 Devlog”. As there is no more Rakugo in the way as it was before as Rakugo 3.x. Now there is Rakugo called also Rakugo.Core, that upcoming version is 1.0.0, it implements core of Rakugo:
And rest of Rakugo previous features now are implemented in addons.
Its finally happened that I decided to make RakuScript a dialogue scripting system for Rakugo.
We have to abandon support for dialogue as GDScript functions, because it wasn’t a good way to write dialogues. This approach to dialogue steps turn out to be problematic, and could lead to performance problems and messy in memory after closing game. This mostly by the way how threads works in Godot, we can’t kill them we must finish them - so we should execute whole dialogue each time. It is more explained here, if you are curious. So we decided to create dialogue scripting language for Rakugo - this solution don’t have this issue, as with interpreted dialogue. Instructions are read “line by line”. And we can quit without read all file.
We try to model our langue RakuScript after Ren’Py one, but it wouldn’t be 100% compatible as:
python
block and lines we for oblivious reasons will have gdscript
onesHere are examples of some statements:
# Create character
# character [character_tag] [character_name]
character em "Emily"
# Say narrator
"Hello, world !"
# Character say
# [character_tag] "Here is dialogue text"
em "Hi, I'm <em.name>!" # em.name will be changed to Emily
# Jump
# jump label_name
jump emily_talk
# Dialogue/Label
# label_name:
emily_talk:
# Menu
# menu: or menu label:
# [indent]"text" or [indent]"text" > label (with label it jump on label)
menu:
"talk to emily" > emily_talk
"wait"
# Ask
# [variable_name] = [question] ? [default_answer]
answer = "Are you human ?" ? "Yes"
# You can get answer in GDScript with:
# Rakugo.get_current_stock().get("answer")
We have few ideas of our own for this scripting language, but we need your opinion, as we are not sure if we should implement them or not. Here are links to these ideas issues on GitHub when we can discuss them: