TTS-2021 Postmortem/Game Design/Techniques
A little about the design decisions:
So one of the things I like to do is to challenge myself to use just the engine and no plugins/external scripts. While I did use script calls and a slight change to the script (to speed up the battles) via the script command, this was all done within the rpg maker software.
Now, some people may note that some of the mechanics are similar to the mechanics from the character creation contest 3. I do believe that using techniques you've learned before is fair game. Otherwise, this contest would be only for those who have never made a game before. The assets used are mostly public (I did use some custom music that was commissioned after the contest started) and I no longer have access to the character creation contest 3 game projects outside of the finished versions.
This means I did recreate those mechanics from scratch.
Now, about the designing of the game.
My initial thoughts when I saw the contest were, in essence:
- I want to avoid using plugins/external scripts
- I want to do things that would be very difficult to do without plugins. Perhaps even stuff people might consider impossible.
- What can touch the star mean? Well, there are many types of stars. Pop Stars, Idols, Movie Stars, Stars in the sky, Seastars, etc. There are also multiple meanings to touch: touch as in physically touch, touch as in emotionally touch, touch upon a subject, etc.
- I wanted to use and expand on my characters from the character creation contest 3 and showcase my idea of Nol (who is now free DLC for RPGMaker MV/MZ). During the CCC3, I didn't have the funds to really finish Nol. Nol was meant to be a sort of 2 in 1 type of character where she has her humanoid form, her half-human, half-tentacle monster form, and Voyd.
- I also wanted to give my characters some sort of unique ultimate. Due to budget issues and time constraints, I wasn't able to have cut-ins for their ultimates.
So the first part was:
Planning out character
A little about the design decisions:
So one of the things I like to do is to challenge myself to use just the engine and no plugins/external scripts. While I did use script calls and a slight change to the script (to speed up the battles) via the script command, this was all done within the rpg maker software.
Now, some people may note that some of the mechanics are similar to the mechanics from the character creation contest 3. I do believe that using techniques you've learned before is fair game. Otherwise, this contest would be only for those who have never made a game before. The assets used are mostly public (I did use some custom music that was commissioned after the contest started) and I no longer have access to the character creation contest 3 game projects outside of the finished versions.
This means I did recreate those mechanics from scratch.
Now, about the designing of the game.
My initial thoughts when I saw the contest were, in essence:
- I want to avoid using plugins/external scripts
- I want to do things that would be very difficult to do without plugins. Perhaps even stuff people might consider impossible.
- What can touch the star mean? Well, there are many types of stars. Pop Stars, Idols, Movie Stars, Stars in the sky, Seastars, etc. There are also multiple meanings to touch: touch as in physically touch, touch as in emotionally touch, touch upon a subject, etc.
- I wanted to use and expand on my characters from the character creation contest 3 and showcase my idea of Nol (who is now free DLC for RPGMaker MV/MZ). During the CCC3, I didn't have the funds to really finish Nol. Nol was meant to be a sort of 2 in 1 type of character where she has her humanoid form, her half-human, half-tentacle monster form, and Voyd.
- I also wanted to give my characters some sort of unique ultimate. Due to budget issues and time constraints, I wasn't able to have cut-ins for their ultimates.
So the first part was:
Planning out characters and enemies.
Nol and Voyd:
Nol's special traits are that she and Voyd are two halves of the same entity. This meant that I needed to have some way to switch between the two. Unfortunately, RPG Maker does not make this easy as it requires you to reset the battle to swap characters mid battle. There are some ways around this, but it would be a rather convoluted process. So that is why there is a key item that swaps them outside of battle. Now, this added another issue. When you swap characters, their exp, lv, hp, and mp values are not shared, so I then needed to have some way to sync these. For this reason, I made 4 "local variables" (there are 5 total in the game). These are variables that are reset within the scope of each event/task. Because I explicitly set them to a specific value each event/page that I use them, I know that they can always be reused. This helped reduce the number of variables I needed.
So when you swap character, it stores the values, subtracts 1 from level and hp, adds the other character, removes all other party members, re-adds the party member, sets Nol/Voyd to level 1 with 1 hp and 0 mp, then restores them, so now when you swap, you have the same level, hp, and mp and it looks like all that happened was the main character's image/name changed. The reason why this is somewhat important is because Voyd has very specific equipment that is meant as a tip.
Now, lore-wise, the only difference between Nol and Voyd is their appearance and equipment. Because their bodies are shaped differently, they can't wear the same gear. However, I felt that for gameplay reasons, I wanted Voyd to be stronger, but more limited. So Voyd has higher stats, but can't change equipment and doesn't have access to Use Gifts. This pushes more focus on Stockpile and Tentacles. This becomes important later when I was deciding on how each character's ultimate would activate. This also becomes important because there is an item that can be produced with Stockpile, but not Use Gifts. Use Gifts looks vastly superior to Stockpile during combat, and for the most part, it is. There are only a few cases where you'd want to use Stockpile over Use Gifts. For this reason, many people might miss the item you can only make with Stockpile, so I wanted to push that forward.
Now, the arrangement of the skills was a mistake because I didn't realize how the game would order the skills was based on their ID, not their learn case. (This ID issue also caused me a mess of headaches with Nara). Unfortunately, with how heavily linked everything is, moving the skills around can easily create major bugs, so I've left them alone for now as it is a relatively minor issue.
While I did consider allowing players to erase or even make custom skills, I decided against that. Custom skills without a plugin would require me to set aside specific 'template' skills and a script to allow the player to build them. This would make things too difficult to properly test and had many limitations. Erasing skills seemed like a great idea, but that would involve a switch for each skill or some variables that acted as an on/off switch for the skills. (bit based processing is used in some games for space reasons, but in this case, it would've wasted more space than it saved).
Now, making her skills did require me to add in a script for each skill (while it was possible to use a different method, it would have been harder to modify). So each stockpile skill has a unique crafting event tied to it. For the items and use gifts, I also added an event that would add glass shards on use. Originally, this was a set number, but I later decided it made more sense to have it somewhat random.
Now, after testing these, I realized it was annoying to have to keep reusing the same skill repeatedly to stock up, so for the most common and most important stock ups, I added a chain crafting. This was done by having the crafting event do several things. (This is also where the 5th "local variable" is used).
First, I had a loop. Each loop, it would check if the accept button was held down. If not, it would break the loop.
So it set local variable 1 to your character's MP (Nol or Voyd depending on who is in the party), then it looks at the cost of the crafting as local variable 2. It then compares variables 1 and 2, subtracts the cost from the MP, then waits. Now, originally, it was 30 frames (half a second) no matter what. I later decided that half a second was too long for the cheaper crafts and decided to reduce those. Finally, I added local variable 5 to the variables list and decided to use that as a way to decide how long each craft would take. With this, I had a 1 frame wait in a loop that checked local variable 4 (set to 0 just before the loop) against variable 5. If variable 4 was less, it would add 1 to 4 and loop. If variable 5 was equal, then it would break that inner loop, subtract an amount from variable 5, then start the loop again. The amount would depend on the MP cost.
Thus, I had a system where you could craft commonly used items quickly. This posed an issue. Glass shards were needed in large numbers, but as an item, you could only hold 99. So I had glass shards as a variable instead. This allowed for larger numbers. The problem then became that there was no way to check your glass shards count except by crafting more. So I added an item that had the variable for glass shards in the description. This would allow players to see how many glass shards they had easily.
Now, this posed another issue. You could easily make infinite gold by quick crafting and then sleeping. So I ended up making those items unsellable. Now, I later added concentrated antidote and a recipe to make them. The reason being actually a bit of lore.
You see, the shopkeeper, in lore, is actually just a reseller. When you swap between Nol and Voyd, they are actually trading places where the one not in the party is actually in the cottage (in the area that the removed stairway leads to) and making items. These items are what the shopkeeper is actually selling. This has to do with more lore, which I will get to in the lore section.
In addition to that, the reason behind the recipe is because Nol's root is as a researcher who used alchemy as a way to obtain research materials, so as an alchemist, it made sense for her to learn new skills by recipes. This posed a bit of an issue because once again, you could easily make infinite gold and this was glaringly obvious because you could buy them. In addition, you could buy multiple recipes.
To work around that, I made the C.A. a set price instead of using the default price and then set the 'default' price to 0, making it unsellable. (I also made a few items that wouldn't make sense lore-wise to be sellable unsellable). I also reduced the prices of the sellable potions so that the infinite gold would no longer be possible (even if it was slower than other ways of making gold).
The other issue I had was with Nol's attack option. Nol is meant to use glass shards to attack, but this means that if she runs out of glass shards, she would not be able to attack. So, in order to do this, I ended up making it so that if you ran out of glass shards (event is called to check every time you attack), it adds a state that disables the slingshot attack.
Now, the other thing I wanted to do was make a light potion. This potion actually has a very specific purpose in Nol's story where she uses it to create shadows that she uses for entering the shadow side and to call out shadow based skills. She also uses these to move quickly by shifting the shadow side.
This did bring up an issue. I wanted to showcase Voyd's specialty by having a void side. This became an issue because natively, it didn't seem like there was any way to have a skill deal damage only to one side and only if you were on the same side. Eventually, I ended up with if functions to test for the state of the target vs the user. Now, I wanted to showcase Voyd's strengths somewhat. Voyd does Void damage. This is somewhat important because Voyd is designed to be able to attack both sides (except with his normal attack). Now, void attacks normally do not do much damage. This is because the majority of them allow the user to attack from relative safety. (lore-wise, there is no damage penalty, but for game balance purposes, it made more sense to limit that).
I also wanted to really capitalize on Voyd's obvious appearance as a tentacle monster (gazer). For this reason, Voyd does extra hits when he attacks.
Now, for their Ultimates, I wanted to really pull in their essence. Nol's way of fighting is all about preparation and stocking up before a battle starts, then unleashing everything she has until her enemy is defeated.. Voyd's specialty is essentially the power to attack from the void side.
Now, Nol's Ultimate's method of becoming available was pretty obvious, so I made some changes to some events for that. Voyd, on the other hand, I had a bit of a hard time with. Since Voyd is relatively weaker than Nol (there is a way to buff him, but Nol is better at that for the most part). So, I decided to make his Ultimate was easy to charge. He charges his ultimate quickly, but he also has low sustain, requiring frequent recovery periods.
Tulu:
Now the concept behind Tulu is a bit weird. How do you make an all-powerful entity weak? Her character is very much about 'innocent evil', she just simply sees everything as a game. Destroying worlds is nothing more than a game to kill time. Now, the first concept I had about Tulu is an extremely old creature in another world/dimension. She would, from that world, control an avatar that was essentially a weaker version of herself. She had super strength far beyond human and even superhuman degrees and since she was connected to her avatar through a portal in her eyes, looking at her eyes would cause the viewer to see her true form.
Now, being an elder spirit, and an innocently malevolent one at that, looking at her true form is enough to cause insanity within her viewers. If she reveals her true form, even a small part of her can warp her surroundings. Now, because she is innocent, she is also easy to control by having her play 'games'. This has a lot to do with the lore behind the game.
Now, in-game, she is featured as a girl who is just extremely strong. I wanted her to feel somewhat unpredictable and even whimsical. She is meant to feel like she just randomly doesn't feel like really doing much of anything. Even when she doesn't feel like doing anything though, I wanted her to feel fairly powerful. Even a finger flick from her could destroy towns in her avatar form. Even now that she is separated through another degree of separation (she is controlling an avatar that is controlling a doll), she can still do major damage.
Now, one of the things that Tulu is good at is sort of mocking her enemies (unintentionally). She sees an attack and if she thinks it is interesting or fun, she will copy the attack, but with her own twist to things, usually causing her version of the attack to be stronger.
To do this, I first needed to decide what skills to have her copy. Then, I needed to add scripts when those skills were used to check if she already knew the skills or not and to have her learn the skills if not. I then needed to make a cutscene for each skill learned and decide on each enemy. I wanted these copied skills to be based on what the monsters were weak to to add a sort of surreal element.
After this was balancing those skills. The first issue was that one skill was just hard to make useful. Eventually, I had three skills with different purposes. One skill was meant to take care of a group. One skill was a bit of a balance between the other two skills, and the final skill was designed to be more spammable and specialized for dealing with a single enemy. This did cause an issue where full swing became much less useful.
Now, this also caused another issue. Lore-wise, Tulu can attack the shadow side without much of an issue because her attacks can tear through; however, I didn't want it to be so powerful that it made Voyd's specialty pointless. What I ended up doing was that I made her attacks test for void side state and then had her attacks do less damage against the void side while still being able to damage both.
She also gains another skill that gave me a bit of trouble. I wanted her to be able to attack an enemy on another turn like a delayed hit strike that you see in some anime/manga. I ended up doing this with an event that is called at the end of each turn. This event tests for a state applied by the delayed hit strike skill and then after a random amount of turns, it triggers, with increased damage and chance each turn. Now, it is very possible that the enemy won't die from it or will die early, but it does make for a strong bosskiller if the delay is long enough. The problem was that this didn't work as well with multiple enemies having the state because the damage boost resets when it triggers, but that is the limitation without plugins (it would be possible to use more variables, but that just ends up as an overly complicated mess).
Her insanity also caused some issues as it is extremely powerful, but also very much so random. Her skill is meant to really just cause a bit of chaos. However, this caused the issue of the effects lasting beyond the battle. To counter this, we had to add an event that triggers at the start of battle that turns on a switch which then triggers a common event that fixes the effects of insanity. As common events don't auto/parallel run during battle, this wouldn't trigger until after the battle ended.
Another issue was her auto revive. For that, we had to add a turn end event to each battle (these events are separate so that they are easier to modify).
Her Ultimate gave a similar issue. Now, what is kind of special about her Ultimate is that her Ultimate unlock method was decided before making her Ultimate. Because of how unique she is, I wanted her unlock method to also be unique. Her ultimate is also fairly unique in that it is the only one that directly harms and wipes the party. This caused some issues because the battle would end immediately. So the start of the Ultimate, it applies an immortality state to the entire party and the enemies. Then, she performs a series of powerful attacks that apply debuffs. She has an extremely rare combination of debuffs that can cause her to hit in the e40+ range of damage per hit. This is far overkill and nothing in the game even comes close to needing that much damage to kill. That said, if the enemy is a boss and they are lucky enough, they can survive this barrage. The 1/8th chance to survive is actually talking about the chance that her ultimate will revive each party member at the end before the immortality is removed.
Nara:
Now, Nara is very different from the other two in that she is a normal person (well, as normal as a 900+ year old homunculus can be). She is extremely weak and not much stronger than a normal human. As such, her playstyle would be revolving around her gear. First, her skills would be attached to her weapons, then two gear change skills were made, one for each skill type. We wanted her to be flexible with the superflexible puzzle cube, the ailment potion filled bamboo balls, and the kendama that is designed for defensive fighting.
We envisioned her in combat as being protected by Nol. Several of Nol's potions/items are designed specifically to protect Nara. For Nol, Nara is a very special person as Nara is both Nol's daughter and Nol's mother. Nara was kidnapped by the gods and forced to become a goddess. Nol and Tulu both already knows this and Nara knows about her older self. This strange dynamic is a result of the gods not living in the same flow of time. What is a solid stream to us is a jumbled of fragments to the gods and vice versa.
Another issue is that even though Nara is 900+ years old, mentally, she is very much a child even if her age does mean that some parts of her are more mature. For this reason, Nara especially synergizes well with Nol's potions and the game is designed with the expectation that Nol protects Nara and gives benefits for doing so, but also gives the choice to not do so. Nara is designed to be able to switch roles with having so many options. With Nol, she can become a very formidable attacker. Without Nol, she can play support in various ways, whether as bait with a high dodge rate, as a debuffer, a healer, or even a buffer.
Her Ultimates were designed with her theme in mind. Nara represents inevitability, but also a slowness to change. Thus, one of her Ultimates suggests a cessation of progress while another of her Ultimates represents how everyone is just a puppet to fate.
Gear:
With Nara so weak, we needed her to make up for it with gear. The idea behind her armor is that Nol has made specialized armor that is extremely defensive by isolating her from her surroundings.
In addition to that the auto-guard necklace allows her to stay defending even while taking action. This can be equipped onto others, but Nara is the one that needs it the most.
The protective ribbon is another layer of defense that makes Nara harder to kill. These gear all work together to provide strong protection to Nara and giving her at least a chance at combat without breaking her theme.
I wanted the necklace slot to be focused on automation, but for balancing reasons, the regeneration necklaces also ended up in that slot. Now, the charger necklace is actually useless to Nara as Nara doesn't consume resources. Instead, the energy charging necklace is meant to let Nol use more potions or for Tulu to use her insanity skill more often.
I wanted the auto necklace to be a way for players to take a break, relax, and just watching things unfold automatically.
The ribbons were mostly focused on increase. Having the double attack ribbon synergizes well with certain modes of Nara, but poorly with others as double actions is generally more useful at the cost of taking extra time. Instead, that ribbon was meant for Nol or Tulu with their relatively powerful basic attacks. The double action ribbon was designed so that Nol could craft an item and deploy it or take advantage of her somewhat flexible potion options to set up combinations. It also allowed Tulu to act more often, allowing her to use her skills more. It also works for Nara.
In addition to those, there was the goddess set, which boosted exp quite significantly. These quickly make the game easier by boosting your leveling rate to rather extreme amounts.
Combat and map design:
Jest boss:
This boss was meant to just be an annoying fight that gave the player a feeling of being somewhat helpless, but also hopeful once Tulu took action. While Tulu would normally not have enough firepower to defeat the boss except by extreme luck, this boss is designed to lose once Tulu's skill activates to show how much potential it has.
Void Side and troubles:
We had a lot of trouble with the void side as we originally tried to separate the ally and enemy void sides. In addition to that we had trouble with setting up a system to add the void side state to enemies as it would frequently fail. We were also using a state for non-void. Eventually, we used a script call and a local variable to increment the variable, check an enemy for the name "Void", then apply a void side state if true, then checked if that was the last enemy. We changed things to only use one void side state and no non-void state. This helped with getting the state to stick.
Common battle events:
We have several common events for battles. By using common events, it becomes easier to know what to edit and have these edits work for all troops with less work. Much easier to check for a common event call being there than to check every line for several troops.
The important ones are turn 0, end turn, and on turn x+x. Turn 0 allows for setting up battles. End turn allows for things such as checking each turn for the delayed strike's status. Turn x+x allows for events that should happen on certain turns or every few turns.
Difficulty levels:
We wanted difficulty levels, but that is difficult to implement without plugins. We did not want difficulty to just be "more hp, more damage, more defense".
While we greatly simplified things, we used turn 0 common events to check for the difficulty level and apply appropriate states. In addition, we set up certain attacks to check for the difficulty level.
While we didn't do this, another option would have been to force all enemies to use a specific skill and attach a common event to that skill. The skill would do nothing by itself, but would instead allow us to use a common event to force a specific attack based on various conditions, which would give us more control.
Now, the thing about the impossible difficulty level is that the longer the fights take, the harder the fight becomes because the enemy is able to slowly get stronger as the fight progresses. Not a big deal normally, but a huge deal when it comes to fighting enemies stronger than you.
Events that we didn't implement in the contest version
One of what we wanted to implement was a death counter for Nara. However, this proved difficult without plugins. To do so would have required a series of checks and additional events, which we had already used quite a few. Originally, we wanted a few different endings depending on how much Nara died, but then either these endings would have been missable (if you had too many deaths before the ending, you wouldn't be able to obtain them) or would be too stressful for the player (if you had to get a perfect to see all the endings, this could require several reloads or a lot of farming before leaving the safe zone as the survival of Nara early on is rather random).
Map design choices:
Making an event that triggers across a large area without plugins
So one thing we had was a large area with multiple paths to reach a certain point. However, there was no guarantee that the player would visit a specific point without a choke. Now, plugins would make this easy, but without a plugin, the other way is to create multiple events and a switch for a primary event or common event. Considering the map size, we took a different approach here. We made a fast moving event that every x steps would return to the start point. Combined with on event touch, we could now control what areas it could go and have an event that would start soon after the player entered a certain area.
Harvesting
We wanted to have harvesting in our game due to alchemy and we decided to do that with events. These events, when activated, trigger a switch. This switch then triggers a parallel process common event that counts a timer then sets a switch to off to revert the events. For this case, we used a single switch, but if we wanted to control individual timers, we could have used multiple switches.
We put these in the safe zone because we wanted players to have the option to prepare before they ventured out. This meant that players that wanted a safe place to recover or prepare could do so.
We also wanted an alternative that allowed you to pay a cost to harvest, so we set that up as well. This one being a simple event with an explanation page and then an execute page.
One thing we want to do when we have more time is to have a deployable laboratory that will allow the player to do some alchemy style crafting or cooking using materials.
Dark area
We wanted to simulate a dark cave, but at the same time, we wanted the player to be able to easily dispel the darkness. That is why we tried to put hints up to use a light.
Now, another thing we wanted was for certain areas to be unavailable when it was dark. We did this by having two tilesets - regular and 'dark'. Another way to have done this would have been events that switch.
To have the toggle effect, we used switches. One switch activated the actual lighting change effect when necessary. Another switch determined what state the post-battle process would resolve to.
No puzzles?
We ended up not including puzzle here both because it would be hard to set up a puzzle that would make sense (Tulu could and probably would break any puzzle if she was frustrated enough) as the only place where Tulu wouldn't be able to use her abilities would be the Mines (in theory). The problem with that is that the mines are meant to be doable without using a light. Adding a puzzle would make that difficult.
In the future, I'd like to have a system where Nara's puzzle cube creates puzzles to solve with various effects depending on how well the puzzle is solved, how fast, and which puzzle.
Hints:
We wanted to supply hints that would help the player discover secrets, but we wanted them to be somewhat subtle. Thus we hid some of the hints on signs and some in the dialogue and tutorials. They are somewhat subtle of hints and may even cause the players to avoid the secrets, but they are there.
Text and Image:
Early on, we decided to use busts for any non-combat dialogue. To do this, we used common events to set the x and y positions of the images with a left and right for each character. Right images were designated to a specific number and left images were designated to a specific number. This allowed using common events to hide one picture or the other, fade the pictures, and remove the images using fades instead of suddenly changing them.
Unfortunately, this does look a bit odd when switching between texts as the textbox disappears (we considered adding an image to the background to deal with this, but we decided not to because it would be more things to debug).
Version Changer:
One thing we've always recommended for devs that make their saves incompatible is to have some sort of version changer. Now, we could have made it automatic, but we decided to give the players a bit more control over their version changes. This way, players could have somewhat unique experiences.
Unfortunately, it is likely that one of the future versions will be incompatible, so we'll have to upload a separate version changer game that is specifically designed to change the savefiles and nothing else.
Lore:
Now, a lot of the lore of the game is not explicitly explained within the game. The goal here was for players to make their own judgement about exactly what the game is. As for some official background lore, feel free to ignore them. Who knows if what I am saying is just a ruse to distract people from the truth.
The witch's cottage is Nol's home, but the main house is actually just a façade. The actual house is below the ground. There is a secret exit as well, which is how the supplies are being brought over to the shopkeeper.
Players may notice that the entire home forest is artificial. This has to do with Nol being able to manipulate her own domain. Some players may notice that goblins drop meat and the description of meat questions the source. This is a reference to Nol's story where she butchers goblins for experience and meat.
Some players may encounter the ravine which is where they mention Tulu destroying an intruder. Some players may later also notice that in another area, it mentions that they blockaded the road until the witch makes reparations. This is related as, in destroying the intruder, Tulu inflicted massive amounts of damage to the area. Now, in canon, Tulu does have enough divinity to repair this damage, but she lacks the skill to do so. Nara Torr, on the other hand, lacks the divinity to repair the damage and is too stingy to repair the damage, but has the skill.
It is also mentioned that they dug a tunnel from the forest to the mines, so the mines are actually not part of the tunnel, but the exit point of the tunnel. Nol also mentioned that the mines are unstable. There is a bit more to this, but the mines aren't the only things unstable there.
We also tried to hint a bit at their abilities to see in the dark. Tulu mentions being able to see clearly because the darkness has no effect on her vision considering she isn't actually seeing with her eyes in the first place. Nol mentions having Voyd, which is already an entity that resides in the darkness, thus darkness isn't an issue for them. Nara's light ball is also mentioned, though Nara is clearly the most affected by the darkness.
Some players may additionally notice that it is mentioned several times that they are just playing a game and following inputs... Take what you will of that.
Files
Get Time To Seek
Time To Seek
Tulu decides to go seeking some stars to touch!
Status | Released |
Author | AI Sin |
Genre | Role Playing |
Tags | escort-mission, RPG Maker, Short, Singleplayer |
Languages | English |
More posts
- Status - 08/2023Aug 24, 2023
- So I was writing a story for Tulu...Jul 27, 2021
- ChangelogsJul 18, 2021
Leave a comment
Log in with itch.io to leave a comment.