Day 9
I'm sure the forums were left in uproar yesterday. "WHERE TAL. WHY TAL NO POST. WHERE IS DEVLOG, TAL?
" Well, calm down, keep your shirt on, it's not the end of the world. Tal's right here!
Actually, I thought maybe it would be better if I wrote the updates early the next day, like Josh used to do. That means I'm not dead tired and about to pass out.
Better for everyone! Then I can give you more text - hooray for walls!
But in all seriousness, I do have a lot to talk about today, but unfortunately have not managed to complete the first turn! Actually, I'd forgotten a minor roadblock that I'm trying to work out...
To start the "coding day" off, I put in the rest of the core functions for handling the outcome turns - the parts where it calculated what would happen based on different factors, and adjusted your (and possibly someone else's) stats accordingly. Now that's all in for With and VS actions, which I needed to do before. I also discovered a bug in the prototype and spent a little time rebalancing. It should all be fine now.
Unfortunately, while the code is
there, it's not actually hooked up yet. That'll take some time.
It wouldn't do any good right now, anyway. You wouldn't be able to tell what's going on. Actually... Taiya wouldn't even tell you a thing.
Annndd, that's the "minor roadblock" I mentioned a couple paragraphs ago. You can't actually tell what's going on yet because while the core functions are in place, there aren't actually any "outputs" visible to the players. I didn't need them in the prototype, because, well... the prototype AI only dealt with numbers and wouldn't have been able to do anything with text anyway.
But for players, they need what I'm going to call "Storytext" - stuff like this:
<Taiya> You notice a blip on the scanners, soon identifying it as the ship belonging to Silverware - and he has his weapons powered up. You quickly take cover, starting up your own weapon systems, and then loop around to attack him from behind. He's barely able to get away.
There are a lot of different "events" that need to be dealt with:
- SELF Actions
- VS Actions
- WITH Actions
- Game Intros
- Loss messages
- Win messages
In addition, there are 13 different "SELF Actions", 13 different "VS Actions", and 18 different "WITH Actions". (I feel like I need better names for these.) In addition, many of the VS and WITH actions have multiple possible outcomes. For instance, if you attack someone at random:
- You might kill them
- You might just deal a lot of damage
- You might miss them entirely
- They might come back around to attack you
- They might actually kill you
- You might not be able to find them (their discreetness too high vs your diligence (with some random elements involved))
- They might be too well protected (their defense too high vs your caution (again, with some random elements involved))
That's a total of seven outcomes, just for one action. Here's a total table of all the things I need to deal with:
- SELF Actions (x13)
----Option text (Displayed as an option to choose from)
----Explanation text (for when you use "explain A/B/etc"
-VS Actions (x13)
----Option text
----Explanation text
----Private outcome to self
-------Average of 2.8462 types total (not counting deaths)
----Private outcome to other player
-------Average of 2.8462 types total (not counting deaths)
----Public outcome
-------Average of 2.8462 types total (not counting deaths)
-WITH Actions (x18)
----Option text
----Explanation text
----Private outcome to self
-------Average of 1.6111 types total (not counting deaths)
----Private outcome to other player
-------Average of 1.6111 types total (not counting deaths)
----Public outcome
-------Average of 1.6111 types total (not counting deaths)
-Intro text (x1 min, but I've done 10, so one per class)
-Win text (x6 min, one per win type)
-Loss text (x3 min, one per loss type)
That's a total of 350 story strings I need to write, bare minimum. If I want to allow variations based on different relevant factors and classes, it bumps the total required amount up to 3895!! That's a
ton of story-writing. If the average storytext line is 30 words long, I'm looking at either 10500 words, or, optimally,
116850 words. I'm writing a freaking
novel here!
Naturally, I'm only going to do the bare minimum to start out with. My old stint as master of REKT often had me writing 10k words per update, so just getting to the bare minimum should be no problem. If the game does well, and people enjoy it (or, I should say, after I fix anything people don't like so that they enjoy it), I'll think about upgrading the code so that the RPG feels much more like a true story generator.
I wrote a short Python script to quickly count up how many lines of story text I've done, and give me my progress - both to keep track of where I am, to encourage me, and give me something else to stick at the end of these devlogs.
Because the code for story text is going to be so immense, I've already split it off from the main RPG logic into its own file, to try to keep things neater (and make it easier to deal with just the core game logic).
More tomorrow! Thanks for reading.
(Also, important note: I'm only able to manage, on average, a couple hours a day. I'm not getting paid for this, after all. )
storytext: 152 lines
file length: 1075 lines
percentage of file that is storytext: 14%
percentage of minimum complete: 43%
percentage of optimum complete: 4%