NokiMo
yekkusu
yekkusu

patreon


Development Update #32 - Json Editor finished! Pt 3

Hello my Patrons, how are you all today?

Today I want to talk about how the storytelling of a day in the game works.


First, we need to understand how the game works. The game has two important parts, GODOT with all the code who will read certain files, create save files, show you guys images, text, etc. And the Scripts.

The scripts contain the Dialogs, routes, background info, etc for Godot to read and then show you in the correct order. The code on Godot is almost done, and I'm sure the only thing I need to add right now is the last piece of code for the third Gallery which is the same as the first Gallery. After that, the game will have the coding part completed.


Then there's also the artworks, the music, sound effects, etc. All of these cost money, and I need to spend the money I make here very careful because you guys know how an art piece or a music piece can cost quite a lot. Right now for music, I'm using the ones I can but they are free for commercial use. That means you guys will hear it in other projects, probably. Sound Effects I still need to work on, but the script already accepts it.


Now, with the code done, and the game running, reading the Scripts and displaying the texts and info the script gives, how do I create the scripts?


Well, the scripts are made in a JSON format. JSON is like a Dictionary with data and arrays. Instead of finding that data by checking numbers, I can grab that data by asking what value is on the "name" inside the dictionary "route, for example. However, just like any type of code, JSON needs to be flawless. I cannot forget a single comma, a single bracket or any other important indentation for the script. If I do, the game will crash. 


So, editing a JSON manually is not the best solution. And the way my dictionary works, there's not a single software that could help me with this. So we designed one. Using a prototype Wagner did years ago I was able to make the JSON with 75% success. However, a ton of precise information was lacking because I had to write it and after typing 300 dialogs eventually you start doing typos. 

This was fixed however with the second editor, at the time Wagner was trying to make a "Visual Novel Maker" but the project is on hold right now. Since he was hyped at the time he tried to make it by using my own dictionary format, and with that, I was able to use his "JSON editor" that now is so different, it's impossible for me or him to mess with the code. And since he decided to do that with Electron, which uses a mix of PHP and HTML, that I hate, I wouldn't try it either. However, the editor has some issues that I cannot cope with it. Not only I still get the "Out of bounds text" on the game, but I also have problems with some information who wasn't persistent. Yes, the chances of a JSON to crash now were 0.1% but the chances of a dialog not having the correct information because of that lack of persistence were killing me. I already ranted about this before though. 


So, I started for the entire month of March/2020, to start a new editor for the JSON. Instead of using the QT CREATOR or Electron, I decided to use Godot. Using my own game system to edit its own scripts. And it works!


-  The editor after I finished everything.


The JSON Scripting tool is now ready and running, and I have a gif for you all down below for you to see how it works, I created a dummy JSON and played in the game.

- The editor now, after I changed all the theme colors to be a better looking system to work with. If you see to the end, you will also see the text I'm editing there to be played ingame.


But do I write the story on this editor? Sure it's possible, but for a complex and entertaining story I need to write it and be able to read it and correct it, do the alterations that are necessary to make it more consistent and good to read,  and the editor is great for placing that info into a structured JSON without flaws, but it's horrible for text creating.


So the first process of a Day Scrip creation is actually to write the text for the route. By using Grammarly I'm able to structure the text parts in a similar way I would with the JSON Editor. When I write a day, I have to write who's talking about what, the expression they are using, what background is showing, what music is playing, etc. 


- Grammarly Screen. On the left, all the files inside it, on the top the cheat chart can be visible, in the bottom, the ACT2 end text for the third day of Wagner's Second Act. The blue text are actually Hyper Links that will open on the upper window the document of that answer. At the end of the answer, another hyperlink will take me back or to the next document I need to continue to write or transfer the text to the game!


Then when I pass this text to the JSON creator, I will select the information on the not persistent buttons (Buttons who will reset to "none" every new dialog because that information only needs to be called once), I will set if there's a speaker, a character, and then I will start to copy-paste the text to the creator.


- On the image above, all of the text documents in Scrivener for Wagner's third day.


Every new dialog in this new editor is the exact same size of the game dialog, so it's impossible for me to make an out of bounds text now. 

Every time I click a new dialog, if I was using a character, this information will persist, the same for a speaker. So no more infinite clicks on the exact same buttons every time I'm making a new dialog. And the speaker will always be the last one selected because sometimes Wagner's dialogues will take three dialogs. 


Now the Speaker and any of the "non-persistent" information will be loaded and set on the correct buttons if they exist already (when I edit a previous dialog), so no more issues with "I need to split that dialog in two, open the dialog who had a character and speakers, and background, and music, and none of these options are already selected. Have to re-select everything." It seems silly but when your scrip has at least 3000 dialogs, it's a pain in the butt.


Anyways, when a script is done, every route, dialog, option, and anchors are verified and selected, I just need to check it in-game. That's the not so fun part for me. Because I've played this game 80000+ times already, and I need to do different routes to check if the points cap is working correctly, if it's possible to access every hidden dialog, etc. Sometimes you guys find bugs I never thought it would have.


So yeah I am the lead programmer, the writer, the beta tester, etc. Being an indie developer isn't easy guys. 


I already explained how the Day system works, however since I've spent the entire month just working on a suitable, working tool for creating the scripts, I just think it's fair to tell you guys again how this works. Especially for new patrons who may not have the time to check old Development Updates.


Now you guys understand how much work is done just for those texts, and images to display correctly. April is the month where I work on the Karnal's 3rd day and all the LORE routes where you will be able to know more about their backgrounds. When this + backgrounds and characters are all done, I will close a demo to release for the Tier 1 patrons and then for the public a month later.


After I finish the LORE part for days 1 - 3, I don't think all of the artwork will be done yet, so I will continue Wagner's 4th day, but as soon as all of the above is done, I will close a demo with only Days 1 - 3 to release to the public (Tier 1 patrons get the demo 1 month earlier when it's released).


That's all of the plans for now. I also want some sound effects but I will see how much they cost and if I can find any repository where I can buy a bunch of them or some of them to use on the project. Music will be something more late game, I need to have a fair amount of money to buy those since they cost per x-seconds, sometimes per second. It depends on the type.


So that's it for today, and soon I'll bring you guys the next alpha with Karnal's new route! See you around.

Development Update #32 - Json Editor finished! Pt 3

Related Creators