Tumgik
rat-game · 3 years
Text
Update 1/2021
Programming & Art
Just a short update, I’ve been working on rat-game everyday since November last year now and I’ve gotten a lot farther, the only thing left to implement is the menuing system and inventory screen. To be fair that’s a huge project but I have an “end” in sight, meaning I can see that I will be at a point soon where all that’s left to do is animating attacks and coming up with items and moves which is the fun part of game development.  To get to that point I’ve been using lots of placeholder graphics like text instead of frame-by-frame animation and primitives instead of proper sprites but this is not only because I’m lazy but because I’m really trying to come up with the best UI experience, not just the best at looking nice. Talking to a friend I decided to go with a UI theme I can best describe as “overly elaborate silly robot machinery”, instead of things appearing little arms will come out and move them, turn dials, here’s an arm that takes one of the queue elements and drags it off screen to give you an idea.
Tumblr media
Fig. 1: Animation showing a robot arm with a suction cup pulling a marble-like UI element off screen  Sadly this seem means it’s a lot of effort to animate which is why I’m trying to wait to do that as long as possible in order to not waste time scrapping graphics later on. What I can work on already though is symbols and non-animated textures, I will need these anyway no matter what I decide on later so I’ve been putting as much of my little talent into to make them as close as to what I want the final product to look like as possible.
Tumblr media
Fig. 2: Sprite sheet for UI symbols signifying all the status ailments  What I have done instead of animating though is implement lots of shaders that work on my sprites, I’m getting actually good at GLSL now, it’s such a different style of programming so it’s the first time I found something genuinely intellectually challenging in some time now. To give you an idea one shader for example shows of the prime effect by drawing an outline around a sprite and having the outline kinda glow and pulse so it’s not just a static image. I know that using only colors to represent this is a bad idea which is why I’ve consulted with color blind people to see if my choice of palette is still doable and I’m confident it is. Similarly I wrote a shader that scrolls arrow shapes over the sprite to signifiy increase or decrease of a stat and again for colorblind people there is also an UI hint and obviously the message in the log, I’m hopeful that this will be enough, if not then I’ll implement a colorblind mode where it kinda breaks art direction and instead just labels everything with text.
Tumblr media
Fig. 2: State of battle showing off arrow shader and outline shader
This is just a little update to basically say that I’m working full-time as hard as I can. I’m very priviledge to be a situation where I can use the gap introduced into my careers schedule by the pandemic to work on rat_game instead and even after animating for 6h (which is slave labor btw, idk how people pick this as a career out of passion, it’s sooo much work) I can still confidently say that I love my “job” and that I am content with my results. 
C.
0 notes
rat-game · 4 years
Text
Update 10/2020
I haven’t posted in a while so I’d like to talk about what I’ve been up to. I’ve been working on rat_game every single day though
Programming
In the past few weeks I’ve been refactoring my old stuff, the problem with doing something you haven’t mastered yet is that by the time you finish, you’re already better at it than when you started and everything suddenly seems sub-par. That happened a lot for my programming stuff but I’m confident that this time I’ve chosen far better software-design that hopefully future-proves my code. I’ve commited thousands of lines to my github in the past few weeks, I try to start work around 14:00 and stop at 20:00 and then maybe do some art-stuff at night. I’ve had a lot of personal stuff go really bad recently and having something to focus on that is fun was a huge help for me. I’ve also started working with GLSL which is a shader language and doing that was incredibly interesting, it’s a completely different paradigm than both functional and object-oriented programming and the fact that you can literally see what your code does because it translates to an image is incredibly rewarding. By learning shaders I’ve tried to face one of my biggest weaknesses knowledge-wise which is geometry and while I very much have not gotten any better at that I’m now able to create any effect I’d like in GLSL making the world of visual possiblities for rat_game gaining a new horizon.
Tumblr media
Fig. 1: My IDE showing of the dozens of files and thousands of lines of code
Art
So I was looking for a gif of an earthbound background for reference and I kinda ended up scrolling through the google images recommended picture, it was all mock-up- and fan art of earthbound fights an seeing so many of those I couldn’t help but be very conscious of the least common denominator of all of them and I kinda felt like my vision for the rat_game was... very much also that. Obviously earthbound is a huge inspiration but I’ve tried with both the story and mechanics to not just be an earthbound romhack. That also means not looking like one visually though so I made the decision that I don’t just want static sprites of enemies sit in front of an often-recycled background. Instead I think I will aim to give each enemy encounter it’s own unique background, for example a spider enemy could have a giant net in the background or maybe there’s even an enemy that is bigger than the entire screen so you only see parts of it. I will also try to consider more animation, at the very least I’ll have 3 sprites, one for undamaged, one for damaged and one for dead or knocked out. I don’t think I have the resources to animate every enemy myself but if I end up having enough money to hire an animator that is totally something that’s at the top of my wishlist. I know this is all kinda abstract but I’ve been creating demo textures for my engine so I have something to render and just doodling random shit I’ve come to be more and more comfortable to not just imitate earthbound sprites but do my own thing.
Tumblr media
Fig. 2: A random spoder enemy I doodled in like 5mins but that I’m surprisingly attached to after staring at it for 2 weeks while debugging (no pun intended)
Story
I mentioned before that the story of the game is done, it’s all in my head and partially on paper but I still feel like I don’t have that good of a plan because all this story is mostly irrelevant for what happens in the demo which is the main objective right now. I’m currently thinking about giving the demo it’s own scenario kinda separate from the main story, here’s a quick elevator pitch for that:
Prof being a scientists he leads the party to an abandoned research lab. It’s build inside of an old resident-evil mansion but rather than being a functioning mansion it’s mostly just a ruin that proper lab-equipment has been build into. Imagine someone found an uncharted level and decided to not bother modifying it unless absolutely necessary so one wing might be falling apart while one room over is decked out in science equipment. This lab is where the source was created and by exploring it I have the chance to slowly feed enough exposition to create intrigue via scattered diary entries research papers and correspondence (I’m kidding, it’ll mostly be environmental story telling, remember that one of my design prerogative is to use the minimum amount of text necessary). A nice thing about this lab being the demo scenario is that I can go wild with the enemies, I need to stretch rat_games entire hidden tutorial fights into a 30min demo that still delivers on story and world-building so having the freedom to not care about strict theming like I do in the main games chapters is a huge help. Tl;dr: imagine the pokemon mansion on cinnabar island from red/blue/yellow but it actually has stuff happen rather than just having a few statues onto which mewtwos story is written with crayons.
So yeah, I’ve been keeping myself busy. I tend to listen to music when I work and I had it a few times now where i enter this “flow state”, kinda like when your jogging and serotonin and your brain stem takes over and your body just moves, instead I’m programming or drawing. I don’t mean to humble brag rather I’m trying to illustrate that I really, really enjoy doing this and if I had a wish I’d wish for 20k€ so I can just do this full time for 2 years but alas that will have to wait. 
0 notes
rat-game · 4 years
Text
03: A Showcase of What Makes rat_games Moves Interesting
Unlike my more technical posts, this one is intended to entertain. I talked to someone about the indie game landscape and how small devs are incredibly unlikely to see success with the sheer number of games being put out nowadays and he said: “Ask yourself this: What makes your game interesting, and why is that not something I can get somewhere else?”. Of course rat_game isn’t the first of it’s kind, like all art it is iterative and wether or not it’s interesting will have to be judged when it’s done however today I’d like to show part of the reason I myself was interested in doing this for real: creative and non-basic moves (the attacks entities can use in battle).
As I mentioned before I used to be into competitive Pokémon and what struck me most about that scene compared to the casual crowd is how certain attacks are incredibly obscure and most casual players won’t know they exist while especially in 2v2 tournaments the same moves can shape the metagame and through their depth can become strategies themself. The best example for this is “Trick Room”. I won’t go into detail but just know that I truly believe that not a single child playing through any of the Pokémon games will have used and understood how powerful and interesting this move can be. It was simply not needed until adults competed for real prizes irI.I want almost every move in rat_game to be like “Trick Room”. 
0. A Refresher on how Everything Works
(feel free to skip this section if you are already aware of the basic mechanics in rat_games battle system)
To illustrate what it means “to be like Trick Room” we first need a little refresher on how rat_games battle system works. Don’t worry, no formulas here, it’ll be a quick and easy cliff note version. If you came to this post with literally no context, rat_game is a turn-based jRPG and if you imagine it like 3v3 pokemon battles with no switching for the rest of this post you’ll get a good enough idea of how stuff is supposed to look.
Tumblr media
Fig. 1: 3v3 Pokémon battle. Note that in rat_game, there will be (at most) 4 allies and 16 enemies. (source: bulbapedia) A battle consists of 4 player controlled party members (”allies”) vs a lot of enemies. Each entity has “AP”, a resource that moves use up, similar to mana. “HP” are a representation of the entities health. If HP reaches 0 an entity becomes “knocked out” and is unable to move until revived. If an entity that’s knocked out is dealt 1 or more damage they die permanently and cannot be brought back. A the start of the turn all entities are ordered based on their speed stat. The entity with the highest speed will go first, however entities may also have “priority”, meaning they will act before others (or after in the case of negative priority) independent of the speed stats. Moves may “prime” the entity it’s resolving on with a certain “combo type”. If another move is used that “detonates” the same combo type afterwards a bonus effect is applied depending on the move. Priming lasts until the end of the next turn. If the same entity is primed again but with a different type, the priming type is overridden. Entities may be afflicted with one or more status ailments. Depending on the status, different effects will be applied:
at risk: the entity dies immediately instead of being knocked out at 0 HP
stunned: the entity may not act until the end of the turn
asleep: the entity may not act for 3 turns. If 1 or more damage is dealt to the entity, they wake up immediately
chilled: the entities speed is cut in half
frozen: the entity will always go last
burned: the entity looses 50% defense and takes a small amount of damage at the end of each turn
poisoned: the entity takes a significant amount of damage at the end of each turn
blinded: the entities attack is cut in half. They may not use single-target moves (but they can still use multi-target or self-targeting moves) 
1. Moves: A Basic Example
Let’s start with something fairly plain. Note that for the rest of this post I will just assume the user always has 100 attack to make the math easy.
Chain Lightning AP Cost: 10% Stacks: 3 Priming Type: Offense | Detonating Type: None Targets: Single Enemy Deals 50 damage to target enemy. Has a 50% chance to then jump to another enemy and deal 25 damage. May jump multiple times.
This moves is pretty basic, it just deals damage. The jumping is fun but random, if you get lucky you may get 10 successive jumps however note that internally the jump chance is lowered each time to prevent long chains that may slow down the course of battle with all the animations. This attack primes each enemy it deals damage to with the type "offense". Let's look at a detonating ability:
Wave of Lit Matches AP Cost: 0% Stacks: Inf (infinite) Priming Type: None | Detonating Type: Offense Targets: All Enemies Deals 10 damage to all enemies. 60% chance per enemy to set them on fire. If detonating: 100% chance to set each target on fire instead.
Hopefully the combo here is easy to understand, you use “chain lightning” to hopefully prime as many enemies as possible and then use "wave of lit matches" to set all of them ablaze. Being burned means their defense is cut in half making all attacks against them deal more damage so using “wave of lit matches” may setup for a big sweep. If you don’t prime the targets the randomness may make “wave of lit matches” not worth it but with good strategy the randomness is pretty much eliminated and “wave of lit matches” is a very strong option.
2. Moves: The Interesting Stuff
Guard AP Cost: 0% Stacks: Inf Priming Type: None | Detonating Type: None Targets: Self User takes 50% less damage for the rest of the turn. User priority is set to +1 until the end of the next turn.
While not very flashy a move like this has to exist in my battle system. Because of the combo system the order entities act in is incredibly important and “guard” gives the player a quick, easy and reliable way to make one entity go before another next turn. I consider this so important that this move will be available to all allies at all times so no equipment slot will be taken because of this.
Now that we have a basic grasp on what a regular moves looks like, let's look at something less obviously useful:
Wake-up Slap AP Cost: 0% Stacks: Inf Priming Type: Buff | Detonating Type: None Targets: Single Ally or Enemy  Deal 1 damage to target ally or enemy
To understand why this is a) useful and b) actually worth equipping we need to consider the “sleep” status ailment: “wake up slap” is a way to easily wake up your allies and further prime them for a buffing move. Since it has infinite stacks it can be used any amount of times with not costing anything it’s a quick and easy way to set up for a big buff combo or save a stack on a curing ability that would’ve cure sleep in another way. Note that this is not the only way to wake an entity up, maybe your ally that knows “wake-up slap” is currently out of submission, you could also just attack your own party members with a regular attack. You may deal significant damage but the battle may be decided that turn and if they get to move immediately it might be worth it to take the hit.
Fake Death AP Cost: 0% Stacks: 2 Priming Type: None | Detonating Type: Buff Targets: Single Ally or Self If target ally has less than 50% HP: Immediately set their HP to 0. Target may not receive any further damage this turn. Restores 1% of target HP at the start of the next turn. If Detonating: Restore 50% of target HP at the start of next turn instead.
This looks odd but remember that if an entities HP reach 0 they will immediately be knocked out. At first this looks like a bad way to prevent an entity from being damaged, instead of receiving damage from enemies their hp just gets set to 0 and in return they're safe. This is just the most obvious application however because being knocked out means resetting all status ailments (this is to prevent dying immediately after being knocked out from poison damage for example). So let's say a party member is in bad shape, they only have 5% HP left and they're poisoned and burning. The will surely die at the end of the turn if they're not healed. One could just heal them with a potion however then they'd still be poisoned and burned. If instead "fake death" is used on them they'll effectively loose 5% hp, are safe for the turn and all their statuses are reset. If they were primed with “buff” before they gain an effective 45% HP turning “fake death” into a 1-turn invincibility, all-status curing +50% heal. This is more than most heals are able to provide making “fake death” a better option in the right circumstances. It is however riskier as if the target is slow and not primed an enemy might get in between the players party next turn and immediately knock them out for real. Again, on first glance it looks odd and somewhat useless but considered in context “fake death” can become a powerful option worth being limited in number of stacks.
Quick Save AP Cost: 0% Stacks: 2 Priming Type: None | Detonating Type: None Targets: All allies, self and enemies If the current turn number is greater than 5: Save the current state of the battle. If used again at any later point, restore all entities to that stored state.
"State" here means all status ailment, hp and ap values, number of stacks left on each ability, stat changes, inventory, everything. Just like the name implies it’s basically a once-per-battle quick save. Considering the usefulness in a bubble it doesn’t do anything, no entity is damaged or healed and the user just looses 1 turn. The existence of "quick save" however gives players a way to scout a battle, see what the enemy would do and if something went badly they can reset to an earlier state. The turn restriction is to prevent players from just using it at the start of every battle. It's intended for big boss fights that are long and have complex AI that needs to be tested before being overcome. Most battles with smaller mobs will end before turn 5. By the way (and this is true for all similar abilities) if the player uses quick save and the condition of the turn number being greater than 5 is not met, the move fails, no AP or Stacks are consumed and it’s equivalent to the character doing literally nothing that turn (in-game a warning will be displayed before selecting to make the player aware of whether it would fail but they could still choose the option).
Time Loop AP Cost: 0% Stacks: 2 Priming Type: None | Detonating Type: None Targets: Single ally or enemy but not self If the current turn number is greater than 5: Save the current state of target entity. If used again, that entity is restored to the stored state.
“Time loop" works like a single target quick save. If you're expecting an enemy to heal, “time loop” them before that and then afterwards when you're ready to do a big combo reset them to the pre-heal state and wipe them out instantly. Similarly you could save one of your allies state right as they're all buffed up, go on with the battle as normal and if they loose the buff (big buffs are usually time-limited) reset them to the buffed state and make them deal way more damage than they would have otherwise. "Time loop" is very flexible and adds a huge amount of complexity, especially if you imagine that an enemy may be able to use it as well and like I mentioned in my post on AI enemies will plan moves together making “time loop” a huge potential play maker.
Transform AP Cost: 0% Stacks: 1 Priming Type. None | Detonating Type: Buff Targets: Single enemy or ally but not self Sets users current AP to 0. User then transforms into target ally or enemy, copying their HP, stat increases and status ailments. After 3 turns the user looses all current stat increases or decreases (but retains status ailments, HP and current AP).   If detonating: Does not reduce AP to 0 when initially transforming.  
This move is kind of complicated so let's break it down: When entity A uses "transform" targeting entity B, A’s HP is set to the same value as B’s HP, A copies B’s buffs and debuffs as well as B’s status ailments. Then the battle goes on like normal, A may be buffed/debuffed further, knocked out or healed, etc., Then after 3 turns A's buffs/debuffs are reset back to ±0 even if they are now different from what they were when transforming. To illustrate a good way to use "transform" consider the following ability:
Psyche Up AP Cost: 100% Stacks: 3 Priming Type: None | Detonating Type: None Targets: Self Increase users Attack by 300%. At the end of the next turn, user looses all Attack buffs/debuffs and their AP are set to 90%. 
“Psyche up” can be used to setup for a huge move during the next turn (as long as there is some way to restore the users AP so they can use them for a move). To clarify: the user has to be at 100% of their maximum AP to use psyche up, if they have a maximum of 100 and are currently at 90, the will not be able to use “psyche up” rather than loosing 90. Back to “transform”: imagine if an ally  transform into an entity that just used "psyche up". The "transform" user will gain the astronomical attack increase for 3 full turns (in accordance to “transform”s duration) even when the "psyche up" users attack is reset. The attack reset will not afflict the “transform” user as that attack only considers the state of an entity when it’s used, not any turn-timers. Hopefully you can see how “transform” can basically double the parties damage output with this simple 2 move combo, and again: consider that there’s 4 party members and that enemies may be able to use transform in this way as well.
Let’s close this post out with something easy to understand that illustrates the idea behind how I design attacks:
Restore AP AP Cost: 25% Stacks: Inf Priming Type: None | Detonating Type: Heal Targets: Single ally but not self Restore targets AP equal to 25% of the users maximum AP. If Detonating: Restore AP equal to 50% of the users maximum AP instead
At first these look like basic "restore mana" abilities. Take note of the wording though, the ability will not restore 25% of the targets AP. It will restore a flat amount equal to the number of maximum AP of the user. So if entity A has a maximum AP value of 100 and entity B’s is 40, B will gain 25 AP. If B is furthermore detonated they will gain 50 AP setting their current AP to 100%. “Restore AP" kind of trades the users AP with someone elses. The total sum of all AP in the party goes up but only if the user of "restore AP” is the character with more maximum AP than their target. If the user has low maximum AP the total sum of all AP of the party will actually go down. Not that there won’t be a move that just restores AP with no further consideration. I'm not saying AP restoration will be limited to exactly this move, instead I want every "basic" move (unlike what is so common in almost every jRPG) to have a trade-off and more strategic depth than just "this makes you stronger", “this does damage” or “this restores your ally”. In my opinion one of the greatest sins a jRPG battle system in 2020 can commit is falling back on what final fantasy 1 did way back on the NES: Just be about pressing A to heal and do damage and not let your allies die.
Tumblr media
Fig. 2: An exhaustive list of all possible active skills of the “Dancer” class in Octopath Traveler which has an estimated play time of over 60h. (image source: shacknews.com) Hopefully this post has illuminated some of my intention behind why I want my moves to be like this. I emphasize again that these moves may be used by enemies too; or maybe multiple party members have the same move. Furthermore you can freely equip moves to any of the party members when outside of battle meaning there’s a huge amount of build-variety and combo paths can be chosen by which move to equip to whom. With this, both enemies and the players party planning moves with each other and the number of interactions between entities, the combo system and different attacks I hope to achieve gameplay where every single attack is not just useful for a single, basic immediately obvious thing but instead demands knowledge, strategy and consideration. I hope that my players will enjoy this fact and the resulting battles as much as I would. 
0 notes
rat-game · 4 years
Text
Redundant Moves and why Pokémon thinks they’re necessary (even though they are not)
A move in a jRPG is "redundant" if it is objectively better in every way while also serving the same purpose as the other move it is being compared to. Let’s skip the introduction and analyze this simple reallife example from Pokémon:
“Ember” power: 40 accuracy: 100% Deals special fire damage to single target and has a 10% chance to burn them 
”Flamethrower” power: 90 80 accuracy: 100% Deals special fire damage to single target and has a 10% chance to burn them
On first glance it's obvious: Flamethrower is objectively better and there is no reason to ever choose ember over it. Why, then, does ember exist at all? I don't have any confirmation for this but I assume Game Freak had the following reasons in mind:
Pokémon learn ember first at a low level, flamethrower is an endgame attack so it should be stronger. If early game mons had access to it it would break the game
When the player receives "Flamethrower" they feel like they achieved something and teaching it to a Pokémon will feel like powering up
I will now argue why none of these reasons make Ember and Flamethrower existing at the same time a good game design decision (be sure to be careful or even ember will set this straw man argument on fire)
Currently in Pokémon (1) is demonstrably true: If your charmander could learn flamethrower before your first gym you would sweep the entire game with it. This is because of how Pokémons stat system works, the power of moves have more impact on the damage than the Pokémon using the move. The stat system is not set in stone however, remember it's decided by the same people that also chose Ember and Flamethrower to be in the game. Consider this: instead of giving the Pokémon a new stronger attack you could just make the Pokémon itself strong by giving it a boost to special attack and keeping just ember. If this boost happens all at once (for example with an item) the exact same sense of accomplishment of getting a lot stronger when receiving flamethrower as in (2) is achieved. Doing it this way also solves (1), if you want the early game Pokémon to be weaker make the Pokémon weaker, not the attack itself. Game Freak did not do this way back in red and blue, they decided that stats would scale linearly and even though they had a chance to change that almost every 2 years they never did. In rat_game both (1) and (2) are achieved completely independent of stats and leveling. Consider this hypothetical move: “Boost Fire” power: 0  accuracy: 100% For the rest of the battle, all fire attacks have 40 more power
When the player character uses “boost fire” any ember that is performed afterwards will jump to the same level as flamethrower. This means getting access to “boost fire” will result in the same emotional affect as getting access to flamethrower would. Unlike flamethrower however, “boost fire” does not make using ember an objectively worse choice. “Boost fire” will only result in a total damage increase after at least 3 turns. You could use ember turn 1 (40 damage), ember turn 2 (80 damage), ember turn 3 (120 damage) or you could use “boost fire” turn 1 (0 damage), ember turn 2 (80 damage) and then in turn 3 you deal 40 more damage than if you just used ember. This gives ember somewhat of an advantage, you’re not locked into a single attack to make your use of “boost fire” worth it, maybe other non-fire attacks would achieve more damage than “boost fire” + ember spam. You deal damage quicker which for example for a low hp enemy or an ally about to die this turn may be a better choice. If you do want the damage though you can use “boost fire” and get the same big numbers you would with flamethrower. In my opinion this creates an interesting strategy decision, neither option is objectively the best choice, “boost fire” just increases the number of strategic options to deal more damage, not invalidate others by surpassing them. I know this example isn't water tight (no pun intended) and I'd actually be interested into other peoples arguments against what I talked about here but right now I consider “Boost Fire” to be an objectively better choice game-design wise, both for my game and even for Pokémon. Similarly to this example Pokémon has a lot of attacks that are just "deal x amount of damage" with no other effect (earthquake, surfer, shadow ball). Without the type system where some Pokémon are immune or weak to certain types you could consider every "deal x amount of damage" attack to be redundant. I consider this the case for my game in specific. There should only be one attack that "just does x damage" and no other that “just does y > x damage). All other attacks that achieve more damage should interact with the game system in some way to achieve this for example through my combo system. I highly prefer complexity through depth instead of complexity through sheer number of options as so many DnD and Pokémon games love to do. 
I will use this post as a jumping off point to talk about “interesting” attacks in rat_game. I tried to toss out any redundancy in my set of attacks so stay tuned for a post where I actually show off some attacks from my game and talk about them to convince you they are indeed interesting!
0 notes
rat-game · 4 years
Text
02: An in-depth look at the Battle System
So one thing you need to know about me is that I used to live and breathe competitive Pokémon from about age 11 to 14. Like, actually go to in-person tournaments held by nintendo with actual prizes levels of “competitive”. This experience is probably the single most important inspiration for rat_games mechanics but saying that I wanted to imitate Pokémon is pretty much the exact opposite of what was my intent. Competitive Pokémon (note that 99.9% of all players will never have to engage with these system in-depth like a tournament player has to) is deep but overly complex, asinine design decisions and obtuse formulas make it so only the most dedicated of players won’t feel overwhelmed and stop caring. I choose rat_games mechanics to be equally deep but easy to understand. My game has two difficulty levels: "easy" and "intended". On intended the player will have to engage with most of the mechanics to be able to strategize as intended, however unlike for example DnD games the player doesn’t need to know everything before even creating their character. The early part of the story is all playable hidden tutorials and I only expect players to be really deep into the mechanics by the very last chapter. On "easy" people can just play it casually like they would final fantasy or something, I realize that not everyone wants to pull out the spreadsheets and spend 1h menu'ing but I also want my game to have a system that makes stuff like this interesting worth the effort if you’re that kind of person.  (This post will be pretty technical but I tried my best to make it so less mathematically inclined people still understand my reasoning and the idea behind why I implemented things a certain way)
1. Entities
I will assume you have played a turn-based jRPG before. It doesn't specifically have to be Pokémon however I'm asserting that you have basic understanding how for example the Mother series, Final Fantasy, Dragon Quest, etc. control and work. Each participant in the battle is called an entity. These can be grouped into to factions: the party are the entities that the player can control, the enemies are entities they can't. On a programming basis both enemies and party members work exactly the same. Each entity has the following properties:
class Entity {
unsigned int hp, base_hp; unsigned int ap, base_ap;
unsigned int attack, base_attack; unsigned int defense, base_defense; unsigned int speed, base_speed;
int attack_level; int defense_level; int speed_level;
int priority;
set<StatusAilment> status;}
Let's go through these one by one
1.1 HP and AP HP (health points) are a representation of the entities health. If the HP reaches 0 they will be knocked out. If they take any amount of damage while knocked out, they die permanently. In the case of enemies this means they are removed from the battle but for your party if any party member dies it's game over and you will have to reload from the last save. AP (action points) are a resource used by moves. A move is the only way an entity has to interact with the battle system: the player and the enemies choose one move for each character at the start of the turn which are then executed in order. A move could be blocking, healing your character, breathing fire at your enemy, using an item like for example eating a mushroom, not doing anything because your stunned, etc.. Each move will use a certain amount of ap given as a percentage, for example if a simple swipe says it uses 5% ap the entity will loose (0.05 * entity.base_ap) when the move resolves. If the ap reach zero they may not select any moves that would cost more than 0 ap. A move may not cost more than 100% ap for obvious reasons.
1.2 Combat Stats Each entity has 3 stats. Speed is the most important to understand. At the start of each turn a queue will be created that contains entities in order of their speed. The entity at the front of the queue will get to act first, the next one directly after and so on. The entities are ordered first by priority (possible values: -1, 0, 1) and then speed. For example if entity A has 100 speed and entity B has 80 speed and B also has a priority of 1 while A has 0, B will act first even though their speed is lower. If both A and B have the same priority then B will act first as their speed is higher than As. A stat level is the only way moves may change the value of the corresponding combat stat. The stat x will be calculated as such: (x_base * (1+(0.25 * x_level)) where level can have a value of exactly one of {-4, -3, -2, -1, 0, 1, 2, 3, 4}. For example if an entity has an attack base of 100 and an attack level of +2, their current attack will increase by 2*25 = 50% to a value of 150.  Attack and defense are used to calculate the damage of a move. Let's consider again the simple swipe attack: It may read "deals 1.1 * user.attack to target enemy". If entity A attacks entity B with this swipe, A will deal (1.1 * A.attack * (A.attack / B.defense)). Let's break that down a little: The 1.1 is the factor given by the move, it may be anything bigger or equal to 0. This value is then multiplied by the users (A) attack and then reduced or increased based on the ratio of the users attack to the targets defense. If the target has less defense than the user does attack, the damage will increase. If the target has more defense the damage will decrease. I consider this way of doing it with ratios superior as if one doesn’t it could be possible for some enemies to be completely impervious to anything which doesn’t feel great to play against. With the ratios an entity will always deal some amount of damage and to feel like you’re barely denting them their defense has to be relatively enormous to the users attack which (if properly balanced) should rarely happen. All numbers are rounded to integers. A cheeky way to make the player feel better will be that all damage numbers dealt to the party will be rounded down while all damage dealt to the enemy will be rounded up. This makes it possible to take 0 damage when attacking the enemy which feels good but only if the enemy does it.  I realize that this formula is much less easy to understand than the way speed is handled with exclusively flat values however the exact value of damage is not as relevant, enemies won't have healthbar and a player won't see their attack or defense unless using a special ability so they wouldn't be able to predict the exact damage anyway. For speed however it is incredibly important to be able to know the exact value as this will determine which of the party members will go first which as we will see in section 2 is very very important.
1.3 Status’ Status' (statusses? stati?) or Status Ailments work similar to other jRPGs. Moves may inflict one or more of the following status’ to their targets. The status’ then have an effect on the entity afflicted:
at risk: If the entities hp reach 0, instead of being knocked out first they instead die immediately
stunned: The entity may not act until the end of the next turn after the status is inflicted
asleep: The entity may not act until the 3rd turn after the status was inflicted. If the entity takes any amount of damage they immediately wake up and may act that turn. Note that only damage and not things like buffs/debuffs will wake them up
poisoned: The entity will take damage equal to 1/8 * entity.hp_base at the end of each turn. Lasts until cured.
blinded: The entity base attack is reduced by 25%. They may not use any moves that target exactly 1 other entity. Spread moves and moves targeting the user itself still work. Lasts until cured.
burned: The entity takes damage equal to 1/16 * entity.hp_base at the end of each turn. The entities base defense is furthermore reduced by 50%. Lasts until healed or until the chilled/frozen status would be inflicted.
chilled: The entities speed is reduced by 50%. If the entity is already burning when being chilled, the entity will be cured of the burn (and not receive the chill). Similarly if they are chilled and then burned, both status' will be cured. If an entity is chilled again while being already chilled, they loose the chilled status and instead become frozen.
frozen: the entities base speed is set to 0. Their priority is set to -1 and cannot be changed until the status is cured. If a burn is inflicted while frozen they become chilled instead.
Technically being dead or knocked out are also status' however these can not be inflicted by moves directly and are instead set by game mechanics based on the targets HP. Note that if an entity is knocked out all other status' are cleared. This allows for emergent gameplay where a player may intentionally knock out their own ally to cure them of all status' and the immediately help up or choose to not knock out an enemy in order for them to keep their status. While multiple status' can be active at the same time, only chilled, burned and frozen are mutually exclusive.
2. Priming & Detonating Without exaggeration the combo system is the center of rat_games gameplay and the most important thing around which every other mechanic revolves. An entity may be primed with a cretain combo type by a move. If an that specifies the same type is used on that entity, the target will detonate, removing it’s primed status and applying a bonus effect based on the move. Let's consider this example:
"recover AP" costs: 0% AP   (priming type: status | detonates: none) 25% of target ap will be restored
"cheer on" costs: 12% AP (priming type: none | detonates: status) Raise target attack level by 1. If detonating: raise target attack level by 2 instead
Let's say entity A uses "recover AP" on them self and then entity B uses "cheer on" on entity A, making entity A will receive a +2 buff to attack. A has to act before B otherwise when B's "cheer on" resolves A has no priming type at that moment. If an attack that primes is used on a entity, their current priming type is overridden. Priming lats until the end of the next turn. While these two rules at first seem innocuous they're actually hugely important. Because of this system the order of entities act in is very important. If A targets itself, directly after an enemy primes A with another type and after that B uses "cheer on" they won't detonate A. Some attacks may prime one type but detonate another. With 4 party members and any number of enemies this will get complicated fast and because of this system, speed and other such properties are vital to a players strategy. To illustrate this, let’s look at one move that costs 0 AP, can be used as often as one wants and to which all party members have access to at all time:
"link" costs: 0% AP (priming type: none | detonates: none) t User will act directly after or directly before* targeted ally or enemy during the next turn. User takes 50% less damage during this turn.
(*depending on their speed and priority. If speed and priority are the same the user will always act after the target)
This allows to "chain" your moves and it also allows to for example interrupt enemies (remember that enemies plan their moves together) from trying to execute a detonating combo by chaining to one of them. This system also has an interesting side effect on the parties build diversity. In traditional jRPGs you often have one char that does dps, one healer, etc.. In rat_game this way of pigeon-holing is actively discouraged as for example the above "recover AP" -> "cheer on" combo only works to detonate someone in one turn if the moves are spread to two different chars. You can technically set up a target and the during the next turn detonate it with the same character however since priming types can be override by enemies, this strategy is risky. I consider this fact of spreading combo moves unlike most jRPGs I have played. Moves are in-game items called orbs that you can find on the overworld and that can be equipped like weapons or gear in traditional RPGs. Each party member has a certain amount of orb slots and orbs can be freely equipped to any entity outside of battle. This means you can tweak your gear and distribution of orbs freely which allows for huge build variety and also further contributes to party members not having a set role and the player having to think involving all of them at the same time. This doesn't mean that all party member are completely identical, their base stats will differ and the type or amount of orbs or gear they can wear may differ. This nudges the player into for example giving the fastest character more priming attacks but as they could also reduce/increase the speed in battle and with other gear which makes this more of a suggestion than a requirement.
Hopefully this post was somewhat okay to follow, I'm actually curious if it was as the entire point of my system was to make the math easy enough for regular people. If you look up the formulas that make Pokémon run you will understand why there has to be damage calculator tools this complex. My goal for rat_game is to achieve the same (or even more) amount of depth with a fraction of the complexity and I’m excited to see players engage with this system and coming up with crazy builds I wouldn't have thought of. Maybe there could even be a PvP mode that could attract the same crowd I used to enjoy playing in tournaments with.
0 notes
rat-game · 4 years
Text
On adaptive AI in a jRPG context
In this piece I will talk about rat_games AI, how it will be implemented and why I choose the ways it works to... work that way. One of the main gripes with jRPGs like Final Fantasy, Pokémon and recently Octopath Traveler is the complexity of the AI. F.E.A.R, Left 4 Dead and the Sims implement revolutionary designed AI almost 15 years ago now, how is it then that playing the newest Pokémon the Trainers still work the exact same way.  While I won’t claim that rat_game is the first jRPG to go a step further, doing so is the main motivation behind my entire battle system. Not only do I want it to be easily understandable but I also want it to allow for sophisticated and intelligent AI.  It is fairly easy to write an AI that does well against the player. A trivial approach to an AI in a Fighting Game for example would be to analyze each player input, look up what move is best suited to for example block the attack and then execute this move. A lot of knock-off fighting games like Shaq Fu and Mortal Combat for the original gameboy (yes, they did that) took this approach and it is incredibly frustrating to play against. To remedy this, one approach would be to handicap the fighting game AI with input lag. Instead of processing the inputs and reacting in the same frame, the AI could react let’s say 20 frames later. The problem with this approach is that the AI is still too simple, it will always pick the same (optimal) action just delayed and the player will pick up on this and cheese them by for example spamming a move that will make them commit to a risky action every time and then just waiting it out and attacking. A good example for this is the final boss Dark Link in Zelda 2 for the NES. The fight is very difficult because the enemy can use the exact same moves Link can and you’d think that would make it a fair fight but because the AI is programmed as discussed above you can just stand in the corner making the AI jump infinitely and stabbing them while crouching to win. This exploit only works because the AI is programmed to do one thing depending on where the player is. Back to our hypothetical fighting game: the QA tells you about this problem, what do you do? The next step could be to introduce randomness. Instead of always picking the optimal action, the AI instead flips a coin, if heads they pick the optimal action, if tails they pick another action that’s suboptimal or even chosen at random. As far as I know the newer Pokémon games stop exactly there, difficulty is achieved by configuring how likely heads is in that coin toss, for wild pokemon they will always get tails and pick at random, for the Elite 4 champions they will always pick the optimal choice. I don’t like this approach because I would like my AI to be predictable, even if the enemy has a low difficulty. In my opinion the reason that AI like this doesn’t work is because it does not make use of a fundamental principal of computing: memory. Rarely (in jRPGs) will the AI consider previous moves by the player in their decision making process instead using simply the current state of the battle. For rat_game I tackled this problem maybe a little bit too hard as my AI does not only take into account the action in the current battle but (since my story is about a hivemind taking over the world and all of the bosses have literally the same brain in canon) the enemies take into account all of the players actions in all battles since the started the games story. Another intention with my AI that I rarely see addressed in jRPGs is multiple enemies planning strategies together. Even if the AI does take into account previous states, enemy A will analyze the states and pick an option and enemy B will do the same independently from enemy A. Being a hivemind I want my enemies to plan strategies together. For example one enemy could charge up a strong attack and to help them another enemy will protect them as long as they’re charging so they can’t get interrupted. How, then, will rat_game achieve these intentions? (warning for some programming stuff, it’s okay to skip the next paragraph) 
During battle every move the player does is logged into basically a giant spreadsheet. The data stored however is not the entire game state but rather the part of the state the enemies character has access too. The player for example cannot see how many potions the enemy has left and similarly the enemy should not be able to see how much potions the player has left. Limiting what the enemy can observe in this way will make sure that the player does not feel cheated, if the enemy was controlled by a human they would have the same information the player has about the enemy and my AI should too. Having now generated all this data the AI will attempt to calculate the likelihood of what the player will do next. I studied Data Science and the first thing that springs into my head reading a problem like this is “neural networks!” or “model it as a markov chain!”. While this would work really well it is also in my opinion too sophisticated for my application. My system should only use relatively basic statistical techniques. This can happen on a by-attack basis, for example if the enemy considers casting a spell that prevents healing the attack will query the data set and lookup the average percent of one of the players party members was at before they were healed. Let’s say on average the player heals character A if they go below 40% health. If A is above this threshold the enemy will instead consider other options, if they are below they will prevent healing. This way will make the player feel like the enemy predicted their move but behind the scenes the actual calculation taking place is a simple averaging of the players health. What if multiple moves would be a good choice then? What if instead of preventing healing they enemy could’ve just attack the low-health character and killed them? To allow for this a scoring system will be implemented. Each attack-type will have a way to score how good of a choice it would currently be. Considering our healing decision the AI would look at the number of players it knows to be faster than the attacking enemy. If there are no players faster than them they will give the attack option a very high score of lets say 90 while the healing option will get 40 points. Which option is picked in the end is decided by randomness but rather than a simple coin-toss between two options all decisions are pooled and the likelihood to pick them is proportional to their current score. In our example attacking will have a 90 / (40+90) = ~70% chance to be picked while the heal prevention will have a 30% chance. This approach is similar to the coin-flip discussed above but as there will be way more than just two options and the chance for each options aren’t uniformly distributed making the outcome more predictable. If there is one objectively best answer for a problem the player knows that the enemy will go for that every time and if there isn’t, the player will have to think about what option is closest to it.  Now that we know how the AI works how will we actually make it fun to fight against? Let’s first address difficulty: If every fight in the game had an AI that takes the entire data set into account it would be absolutely exhausting. Not every fight should be this much of a battle (no pun intended), hell, not even every boss should be in my opinion. My way to achieve a smooth difficulty curve is to create tiers of AI: A the very top we have the AI acting as described above: Analyzing all the players move they ever took. The only enemy that will do this is the final boss of the game. By that point the dataset will have grown very big and the more data the AI has the better it will be able to predict. Tiers below this will vary in how much data they take into account. For example the tier below the optimum could be that all moves that happened against an enemy of the same type are taken into account. The next tier could be only this battle, only the last 3 turns, only this current turn, etc.. This granularity will give me a lot of control of how to set how “smart” the enemy should act without actually implementing different AIs. The only thing that changes is how much data is considered. This inherently makes early-game enemies easier because the player just started out and the dataset will be small. This approach has furthermore the side effect that the player will be softly rewarded for switching up their strategy. If all they do is heal the same character and use the same move at first this will work but as they continue doing it the AI will score the option to counter it higher and higher until the point where the players strategy just gets countered completely. Surprising the AI with a creative approach will be the best way to catch them off-guard which may sound like it could make the AI trivial but if this is achieved by the player coming up with a new strategy every battle I am more than willing to let that happen. Another way to reduce the difficulty is a fairly obvious one: Give the enemy worse moves. If the enemy picks the optimal choice but the optimal choice is a move that isn’t that good it won’t feel unfair. This coupled with my AI will hopefully give the player a feeling that the AI does not only scale in the damage values like most jRPGs do but also in how smart it acts and that it reacts to what the player does.  Closing on a personal note I will be honest and say that I have not yet fully implemented this. My engine is already set up on a software-design level to allow for this but I have so far focused on other things. When rat_game was still just a pipe dream I promised myself to make the best AI ever and use all this crazy data science stuff but having taken a step back I realized that sometimes simple is better. What is not better, however, is simplicity to the point of reducing sophistication to the point of what I have so far observed in many of my favorite jRPGs and I hope that my system will present a battle system that’s more engaging and impressive.
0 notes
rat-game · 4 years
Text
August 2020 update
I know no one is reading these but for posterity I just wanted to say that I got busy with my degree and that’s why I haven’t been posting. I finished my thesis a few weeks ago and as I’m mentally incapable of not spending all day working  I decided to go full-time on rat-game and try to get the demo out. The plans for the near future are as follows: i) The Engine The engine for rat-game is based on SDL and while before my break I would’ve said that it’s about 60% done now that I spend half a year creating bleeding-edge perfomance stuff in C++ when I came back to my old work my eyes started bleeding at how bad it was. I’m going to have to refactor about 30% of what’s there and I’ve started doing that. Until the engine is complete enough to create a demo of the battle system I assume it’s about 100h of work away and then on top another 100 for the overworld/story stuff ii) The Story The story is done - in my head. I setup my latex stuff to be able to write a proper script. The problem with this is that I assume that my ability to write dialogue is not up to par yet (english isn’t my first language) so I think I’m just going to write a messy draft and get an editor for the dialogue stuff. I’d say writing is will take about 60h of work iii) The Art For me programming feels like work and drawing feels like free-time which means I never stopped working on the art. I just finished the UI stuff for the battle today, what will have to be done on top of that is about 20 in-battle sprites of enemies with 3 frames each and the animation for the ~40 attacks (however not all of those will be animated frame-by-frame). Assuming it takes me 1h for each frame that’s another ~100h which feels like low-balling it because I obsess about the art being perfect All in all I can’t give a deadline of when it will be done. All I can say that I have a set roadmap, I know exactly what needs to be done until the demo is ready to go public an I will spend the near future working on that as much as my body will be allow me to do. I’m thinking of going to ergo therapy and instead of doing their arts and crafts I’ll do pixelart which will help me be motivated to work on that every day. I’ve been having a rough time recently because once my thesis was done there was this void in my life that meant I was alone with my thoughts all day but planning to fill that void with work on rat-game makes me excited so I’m genuinely looking forward to it. I’ll keep you updated with story stuff as I write out the script! Thanks~
1 note · View note
rat-game · 4 years
Text
01: The Setting (non spoiler)
In this series of posts I will actually talk about the game for once, explaining in reasonable detail what it’s about. In this first installment we will be exclusively talking about the world. Note that I took care that while reading this may spoil the experience of learning about the world itself, no major story beat or reveal is described here and I am personally of the opinion that most player won’t mind reading what is written below.  Note that I won’t be covering the world in the order the story covers it, things will be described chronologically that is what events happen in the months and years before and after the takeover some of which may take place way before or way after the players story starts.
Before the Take Over A group of scientists housed in a repurposed mansion were tasked to further investigate a technique in which brain signals can be transferred wirelessly from person to person. The military is funding this research with the hope that if successful, military personal could communicate directly in the field in a way where it can’t fail, it’s instantaneously and it can’t be intercepted. Research was going great, huge advancements were made to the point where it was possible to link patients together. If one person that is part of the network chooses so, they anyone else in the network that’s spatially close enough has access to their thoughts, senses, etc.. Note that at first every person that became a “node” had to actively choose to transmit to everybody else. As the team was researching of actually becoming a node something changed, now anybody who is spatially close enough to another node becomes a node themself, without their choice. This process does not happen surreptitiously however and it does not work the same on every person. Further testing showed that wether or not a person can fight against becoming a node is dependent on a certain set of genes: if they’re present, the person becomes a node immediatly, if they are missing the process is a lot messier, when queried the person enters a dream-like state, like entering a nightmare. What happens in the nightmare is highly unique from person to person and even from attempt to attempt. The only thing that’s always the same is: if the person dies inside the dream, the network takes them over. Once they became a node they can’t undo it, they are part of the network for the rest of their life. If they survive and exit the nightmare, the person will temporarily be immunized to be taken over. As more and more people entered the same network it developed it’s own consciousness, instead of just being a line of communication ever person inside it became part of the hivemind. Once the threshold was reached and it became conscious, all people inside the compound were immediately assimilated. Two of the 65 people working there were missing the gene, within minutes of it’s birth the “source” executed them and burned their bodies. It’s goal: assimilate every single person on earth, if they resist they are killed without a second thought.
The Takeover As all the source had to do was get one of the nodes close to a person that wasn’t yet part of it, it spread like a wildfire absorbing first the entire district, then the city, then the country, the the continent. The source intentionally started to send nodes out to other parts of the world in an effort to absorb more and more people. Hundreds of millions of people perished, executed by nodes that used to be their neighbors or family because they weren’t immediately compliant, their bodies dispatched safely and cleanly. Roads and cities were build over night, with every human working in perfect unison and with the intellectual ability of an entire planet the source started shaping the world to it’s wishes.  Even though supposedly every living person on the planet is now a node, this doesn’t mean they’re not human anymore. They still need to eat, sleep, have leisure time, privacy, need their sexual and social desires full-filled, etc.. Because a happy person is capable of a more than a mistreated slave, the source aimed to construct an utopia. With every human knowing what to do at all times and working at maximum efficiency the source created mega cities, only a few per continent, in which all humans were housed. As a tired human was not worth the effort to coordinate, the source would temporarily free the humans of control. They once again regained free-will, unable to remember what happened while under control (also not remembering how exactly the take-over happened or what they did to get here). As they now found themself in a surrounding that catered to their every need, every capable human developed the same day-to-day life: go to “work”, be taken over for unknown purposes and loose consciousness, get released towards the evening and be let free to roam the cities doing whatever they wanted - for free - until they went to sleep and back to work the next day. Sanctuary While the source aimed to kill every human that did not carry the gene, hunting down literally every one was more bother than it was worth. The only reason to kill at the beginning was to eliminate the chance for a resistance. Now that the battle was won, even if there was a small community of non-node people they were of no interest to the source. Assuming if there were thousands of them, what are a few thousand people going to do against literally billions of people able to be militarized instantly, using technology that was lightyears ahead of what it had been before the takeover. Nevertheless, one of these communities formed around a small now-abandoned town, houses were ravages by the war that was the violent take-over however now as some time passed, people rebuild using the rubble and what was left of the world they once knew. A shanty-town formed, affectionately called “Sanctuary” by it’s inhabitants. Only a few hundred people lived there, there is small tavern, barracks, a school and even an old swimming pool repurposed as a space to breed fish. As the town was not connected or even near to any of the infrastructure that now became obsolete because of the megacities, living conditions were rough. Yet sanctuaries people did their best to survive, farming the land, trying to keep the spirit of what humanity had been only a year or so prior alive. Sanctuary will be the first big destination of the the players party and their interactions there will start the main plot of rat-game, note however that the main character does not originate from here. New Sanctuary The (maybe intentionally) ironically named New Sanctuary is one of the mega cities closest to Sanctuary. Towards the latter half of the game the player will have to come here to track down the center of the source. With it’s less than 10 million people New Sanctuary is by far the smallest of the mega cities, however every inhabitant was handpicked by the source because of their abilities. The best scientists, most skilled workers, most fertile and genetically optimal parents and their brightest youth was assembled here to work on a separate project in the very heart of the city. Because of how important this project is to the source, the city is specifically engineered to cater to it’s special inhabitants. Split into 5 districts: the “factory” in the center, “sloth”, “gluttony”, “wrath” and “lust” oriented radially around it, the city is an engineering marvel not comparable to anything that was possible just a year prior to the takeover. Inhabitants have free roam of the outer 4 districts to do whatever services are offered, every morning they go to work at the factory, the moment they enter it’s walls the source takes over meaning nobody with free will inside the cities knows exactly what’s going on. The outer districts are staffed partially by free-willed people and partially by nodes in order to keep the leisure industry running. The player will be tasked to navigate this city, find out about it’s secrets and figure out a way to get inside the factory and to the origin of the source.
District 01: Sloth As any human needs healthy sleep to be productive, this district is custom-engineered to offer everybody optimal relaxation. The streets are lined with cobblestones made from mattress foams, every human has their own private cabin that’s build just for them to feel as comfortable as possible. You can choose between regular or water beds, any climate or temperature, wether you want to sleep in the dark or with a nightlight, with one or more people cuddling you or completely alone or surrounded with plushies. Because millions of these cabins exist, sloth is innervated by a highly complex transport system. Humans enter the lines at multiple access points and are then transported to their own (or someone elses) cabin. While being inside, this transport system is comfortable like a train with all 1st class seeds. However since the player is an outsider they will be tasked to navigating it from the outside. Thousands of tunnels and monorails (all of course isolated so no sound disturbs anybody (unless they want it to)) will make getting around hard, at least until you have a way to enter the transport system as a clien after which sloth becomes the comfiest district in New Sanctuary.
District 02: Gluttony Like with sleep, every human needs food. Gluttony is the equivalent of a food court in a mall except it caters to millions of peoples at the same time, everything is free and any food imaginable will be served by the best cooks in the world. Fresh seafood kept in giant aquariums, vegan food made from genetically engineered plants that optimize healthiness and taste served in highly themed restaurants staffed by non-node waiters so customers will not only have a tasty but socially stimulating experience. In the back, nodes keep the place running, cooking, delivering, etc. The player will need to navigate these back alley to find out how all the garbage is handled and how the source is able to farm chickens, beef, ostrich, shark, sea cucumbers, any fruit and vegetable imaginable, literally anything that’s edible for humans all in the same facility. District 03: Wrath As pleasant as eating and sleeping all day can be, a lot of people need to blow off steam to truly relax. Wrath is made for fighting and fitness. From regular gyms to fighting tournaments, from MMA to jousting, inhabitants are free to beat each other up or watch people do much of the same as long as it doesn’t damage productivity. While this sounds fairly benign, wrath has a gated district called “inner wrath” by inhabitants. Nodes keep anyone out that doesn’t belong here, only certain people are allowed entry and it’s rumored that some never return. What goes on inside wrath is secret to outsiders yet highly “enjoyable” to only very few people. Some need the thrill of active combat, some need to have their life threatened to be reinvigorated, some people are sadists, some people enjoy being a serial killer, and some just want to watch humans revert to their most basic, beastly form. Inner wrath contains a valuable resource of information and as such creates a huge obstacle for the players party. They will have to enter inner wrath facing not the sources soldiers but rather free-willed people, trying to kill them not because they have to but because they want to.
District 04: Lust To some Inner Wrath may be disturbing however when it comes to depravity, human sexuality usually goes head-to-head with violence. At first Lust seems like a regular red light district. Thousands of brothels and clubs provide entertainment to sexually mature humans. Entering Lust you’re not presented with a train network but rather an elevator, one of many. Instead of floors the elevator asks you to select a preference: how and with whom would you like to spend the night? Straight, gay, bi, into feet, into long hair, into amputees, young people, old people, dressing up as all kinds of things, anything really that was a fetish before the take-over now has its own dedicated building. Much like with Wrath however, deep below the more usual destinations for the elevators lie the lowest levels of lust, not only literally but figuratively. The player is trying to enter a cave system underneath new Sanctuary and the best access is through the lower most part of the city, far underground. Lower Lust provides people with the option to live out their sickest phantasies, from rape to all kinds of interactions with non-humans or humans that fall outside the usual “type” of most people (for example in age), lower lust will be tough to stomach as the player tries to navigate the depth of human immorality in an effort to get even lower into... District X: The Cave When the take-over happened a lot of bodies started piling up. Running a giant city will also create a lot of waste. “The Cave” is not officially known to any inhabitants. It’s a giant cave system underneath the city and the only place with a direct link to the factory that isn’t under active monitoring by the source. In the cave there is no light, no grass, only an inconceivable amount of rubble, bodies, garbage. There is life down here however, some humans that fell through the cracks or tried to flee from their utopic yet highly constrictive life above ground ended up here stranded. They formed a small society, living, building with, breathing the garbage. They may help the players party in their effort to get into the factory or they may be the biggest threat they face so far. Addendum: In an effort to keep this spoiler-free, I intentionally didn’t talk about what the factory actually is, where the player originates and also major plot-related locations that are not necessarily part of the lore. Nevertheless hopefully you enjoyed this view into the world of rat-game. I’d like to end this by emphasizing that when the player starts their journey, the source already won. It’s over, all humans are dead or under control, the entire world as they’ve known it seized to exist. Some may describe this as post-apocalyptic but most of the mega cities inhabitants would describe it as utopic - even without the source forcing them to say so.
1 note · View note
rat-game · 4 years
Text
Why Usable Items won’t be in rat_game
So I had a realization when implementing battle abilities (sometimes called moves” or “attacks”) . My class looked something like this: class ability {    (...)    size_t _ap_cost; // number of ap used per activation    bool _stack_cost; // 0 or 1 } I originally designed my battle system in a way where there’s 3 types of abilities that can be used in battle:
abilities that cost ap (mana) (ap_cost = x, stack_cost = 0)
abilities that use stacks that refill when resting (ap_cost = 0, stack_cost = 1)
abilities that use both mana and stacks (ap_cost = x, stack_cost = 1)
Now this makes sense, it’s pretty much the DnD system. It doesn’t quite work like DnD for my game but I will just use the DnD terminology for the sake of clarity here. All types of abilities that I just noted can be modeled with the above class. However, usable items (think potions, grenades, throwing daggers) can also be modeled with it: (ap_cost = 0, stack_cost = 1). You might notice that that looks exactly the same as abilities of type 2, the only difference between them is the mechanic of when the stacks refill: For abilities it’s when you rest, for items it’s when you buy or loot more items. I don’t like redundancy, especially when I aim to make my battle system as elegant as possible so I came to think about wether I need usable items at all. It’s obviously a trope, historically, from DnD to Pokémon, almost all RPGs have them in some form. I just assumed that my game will have to have them too. But why? They’re functionally identical to abilities of type 2 in battle so the only reason to keep usable items would be for the resource management part so lets talk about that. Here’s something I feel like every person who ever played an RPG has done: You get a really powerful item, you’re aware it’s rare and using it once will deplete it. You didn’t have much problems getting through the game, you never felt like you hit a stone wall where you really needed to use the rare item so you don’t - at all. You reach the credits of the game with the item still collecting dust in your pockets; because that’s how humans work. It’s hard to make yourself let go of the drive to hang on to something rare, especially on your first play-through of a game when you don’t know what’s ahead. You might need it later after all. This effect has the counter-intuitive implication that the more useful a rare item, the less likely players are to actually use it. It would make sense to just scrap items like that entirely by making the item still useful but not very rare and purchasable at vendors, like arrows for example. However in that case they’re functionally identical to type 2 abilities, even outside of battle. The only difference is that usable items “refill” at vendors while type 2 abilities “refill” on rest. I think you can see the problem. So yeah, I’m scrapping usable items completely, type 2 abilities taking their place. The actual battle system will remain unaltered because of this. Also that way the metagame around resource management will still be a thing, except now the player actually wants to use all tools available to them because they know they’ll just get refilled anyway. This also means there is no use for gold or money, which I highly welcome (a post about why my game will have neither gold nor XP is in the works, tl;dr: it’s to prevent grinding). Scrapping usable items furthermore allows me to design fights that have savepoint (rests) right behind them (like big chapter bosses for example) assuming the player will be willing to use up every ability available: firing on all cylinders. This in my opinion makes for a much more engaging experience, opens up creative freedom for encounter design on my part and will make balancing easier because I can be sure that no player will smuggle an OP early game item into late game bossfights to break them. I’m not saying games should never have usable items again, but what I am saying is that my games won’t. 
0 notes
rat-game · 4 years
Text
How to Learn to Write Dialogue
disclaimer: I suck at writing dialogue but I at least have a plan
Much like other things, writing dialogue is a thing you get better at from actually doing it. You can read as many books and watch as many movies as you want, it won’t mean you’ll be better at writing until you actually write. What, then, do you write? Following are 3 exercises I think are highly useful. These aren’t the only way to practice but they at least give you a well-defined exercise so you know what to do and that it will help.
I can’t find the citation for this but I’m positive I watched or read Quentin Tarantino talk about his writing process when he was first starting out. What he would do is take the script of a movie he liked, pick a scene and discard all dialogue from it so the only thing left is the environment, the plot and the characters personalities established by the rest of the film. He would then write the dialogue back in with his own words. This teaches you a) how to get from a certain start to an end point within a specified time limit and b) how to implement plot, interpersonal relationships and the personality of characters into the dialogue. The nice thing about this exercise is that you don’t have to be creative at all, the scene, what happens, who speaks, what props are in the room and the context of the entire story is all already given by the scene you pick. This means the exercise is solely about writing dialogue and it will thus free you from creative burn out i.e. you not being able to come up with something in the first place and getting demotivated.
Examples include:
Jules and Vincent from Pulp Fiction talking about the french version of the big mac during a car ride. The scene ends when Vincent shoots the passenger
family dinner (with mothers and children) while planning planning to execute a murder one hour later from Godfather 2
Fem Shepards date with Garrus in Mass Effect 3: Citadel
Another exercise (and I again can’t find the citation but trust me) was Seth McFarlane, creator of “Family Guy” (yes, I know. stick with me here) talking about the writing process of their 150th episode. The episode is what I call a “conceptual bottle episode”. Conceptual bottle episodes are scenes that have a very limiting rule: over the entire duration of the scene no new characters, props, location, anything really can be introduced. The only thing you have is the things that are already there when the scene starts, including the characters. As you’ve probably heard, restriction fuels creativity and that is true here: From family guy episodes to high art theater writers have used this technique to force themself to only focus on characters dialogue and human interaction. In a conceptual bottle episode you can’t do anything else which in turn means using them as an exercise will force you to write dialogue - and hopefully get better at it.
Examples include:
characters being accidentally locked in a bank vault over the weekend
characters talking in a doctors waiting room. Once one of them is called, the scene ends
characters having dinner, the pov can never leave the dinner table
Both former exercises will help you get better at writing dialogue but both also depend on characters already having an established personality. What if that’s not the case, how do you come up with personalities? I’m obviously not the first to introduce this exercise but what I do is to come up with scenario for which both what happens and what is being said is already known (feel free to steal the scenario from another piece of media, like in the first exercise). The literal only thing that’s up to your creativity is how the characters talk rhetorically. Again, what is said when is given. This forces you to show their personality purely through tone. Write the same scene multiple times, the only thing changing are the characters, what is said to whom when stays the same between each version.
Examples include:
a parent talking to their child about something important. Swap out which parent (for example biological mother vs new step-father)
take a scene and then make it so one of the characters is forced to say the exact same thing, except sarcastically
take an already existing scene or event where someone talks, then write a character that is trying to imitate the original scenes speaker boiling their tone down to comically exaggerated things while again saying the exact same content
pick a character and write them talking to themself in the mirror about for example how they don’t look well in this dress. pick a different character with a different body-image and confidence yet the same dress and body.
Hopefully these 3 exercises will give you an idea on how to get better at writing. Even if you don’t follow them, the most important thing is: actually write something. Much like riding a bike, reading about writing or learning about writing will not make you a better writer. I know I lived with that fallacy for far to long, and maybe by keeping to employ these exercises, I can make up for that.
2 notes · View notes
rat-game · 4 years
Text
Balancing means “Eliminating the Dominant Strategy”
I’d like to talk relatively briefly on non-standard “meta” approaches I use for balancing my game. With “meta” I mean things outside of a game, for example resident evil 4 or left for dead balance their combat on a non-meta level by having a dynamic difficulty level, how hard the game is is changed depending on the players action, not just the difficulty selection. Other meta-level standard approaches are pretty obvious such as hiring game-testers and monitoring their experience or taking a fixed-sum approach. The latter is used in mario kart, each kart has a certain amount of properties such as speed, handling, weight, etc.. To make each kart be balanced yet different, one should give each kart the same pool of points and then allocated points from that pool into different properties. Under the assertion that one property is just as useful as the other ones this should mean that each car feels as strong as the others while still having wild diversity. (I’m skipping a bunch of qualifications here, mario kart isn’t nearly as well designed as that example)
Now there’s two things I came up with (I’m almost certainly not the first person to though). My game is very linear, the player gets led into relatively confined areas they can explore on their own. Let’s say for the sake of argument that an area A has 10 optional new abilities and a boss at the end. If the player already, how can I assure that each combination of items is viable? What I did for rat_game was to randomize the order of the items they get, I don’t mean they get a random item, no, for this specific area or chapter, there’s a pool of let’s say 10 optional abilities in 10 specific distinct spots but which spot gives each ability is randomized. This not only encourages replay value but also makes it so the designer has to account for every permutation of abilities including none of them (since they’re optional) at any point during the chapter. Why is this better than just making sure the player gets all the items at a certain point and balance it based on that, you might ask? In my opinion that approach makes for un-engaging decision making, the player will feel like they’re just playing the designers way rather than building their own strategy. They won’t really have to think, just use what you just got because it’s clearly the right answer. Meanwhile through my approach the designer is forced to make the boss at least beatable by every strategy, this ensures that each player can play a build they want, even though some builds will be better than others. What do we do about the build that’s objectively the best? The player will feel railroaded into using at to do as well ass possible. 
This is solved by my second idea, an “algorithm” that’s applied during game-testing that goes like this:
find the pool of all possible permutations of player expressions to draw from for example all combination of armors and equipment or all combinations of party members. 
Declare a properly defined “acceptable power level”  examples for the armor would be “the sum of the stats of this armor set is below 20″. For the party combination: “this strategy can beat 50% of encounters, for the other ones the player has to choose another strategy”
find a permutation you know is the dominant strategy (that is objectively superior to all others)
Nerf the strategy below the acceptable power level and eliminate that strategy from the pool. That doesn’t mean taking out the strategy, just in regard to this algorithm disregard it from now on
goto 3 and repeat unless the pool of permutations is empty, otherwise you’re done
What this does is a) make you aware of the dominant strategies and the interplay between the parts of your game but more importantly it will guarantee that there’s as many viable strategies as possible. Note that in step 3 you’re never buffing a strategy, only ever nerfing it. This is crucial. If the strategy is already below the power level, it means it’s bad and that’s fine. You’re not trying to make each strategy exactly equal in regards to the power level, no that would ironically also reduce player choice since they can just pick whatever, instead you will make the number of strategies that are viable be big enough to allow for player expression. Consider this graph:
Tumblr media
Figure 1: Distribution of Power Levels, the dotted line denotes the accepetable power level used for the algorithm As you can see we kind of flattened the top. In this example this now means that the player is free to choose from 6 different strategies, rather than just 1 or 2 that were dominant before. Garbage strategies are still garbage which is good, it means the player has to still be able to make a good build.
0 notes
rat-game · 4 years
Text
“It’s just pressing ‘A’ a bunch of times”: How to make turn-based JRPG Combat engaging
Abstract
In recent years many games have modified the formula that constitutes the turn-based jrpg combat systems in an effort to make the experience more engaging for players. In this article I first provide an exhaustive definition of what makes a games combat “turn-based jrpg combat” through a set of necessary properties. Additional properties that are commonly found yet not necessary are mentioned. An argument for how combat systems like this may inherently run the risk of not being engaging for plays is brought forward and multiple methods game developers have tried to solve this in the past are analyzed and evaluated: adding complexity, adding mechanical challenge through QTEs, adding visual flair, adding a gimmick and adding depth. It’s concluded that the optimal approach is using all of those methods in moderation while trying to avoid the pitfalls they come with.
I feel like in recent years game developers have come to regard turn-based JRPG combat in it’s purest form as inherently flawed. Many feel like they need to innovate, otherwise modern audiences will get bored, won’t feel engaged and play a more action-oriented or real-time strategy game instead. I would like to challenge this perception, explain ways how modern devs have tried to solve this problem.
What is turn-based combat?
First I want to define what I mean by “turn-based JRPG combat” (”tb combat” henceforth for the sake of brevity). This is not an easy task as most people will resort to an ostensive definition, naming games like Final Fantasy 7 and 3 (aka. 6), most of the Dragon Quest games, Mother 2 and 3, Suikoden, Chrono Trigger, Xenoblade, Super Mario RPG and Paper Mario, Pokémon, etc.. I agree that all of these are indeed JRPGs with turn-based combat but they’re also diverse enough that finding the least common denominator for these is anything but trivial. I think it is useful to give a well-defined description of each part that makes up the combat of games like these so I can refer to them with a general term later on. A game can be devided into what’s called scenes. Note that these are unlike scenes like those in movies or books, instead a scene in game development is a reoccurring state for whom layout, input-handling and other in-universe as well as algorithmic rules are defined. In JRPG there are often at least 3 scenes: the overworld scene is where the players moves their character, interacts with NPCs, enters houses, etc. The menu scene is where inventory managing is done, often different parameters about the game are displayed and equipment may be sold or equipped. A combat scene, then, represents the act of fighting something or someone in an abstract way. In Final Fantasy while in a designated overworld area the game may trigger a battle, encounter or what I will call “combat”. The entire layout changes, moving the cursor now selects an attack or enemy or an item instead of moving a character, you can only control the characters indirectly by selecting attacks or other such action and part of the screen has a menu from which to select these actions.
Tumblr media
Figure 1: Boss battle against Ultros, Final Fantasy 6 (1994, SNES)
It is necessary for each entity participating in combat to have the same set of “stats”. A stat of any type such as a number of string or anything, really, is a property that can be interacted with through game mechanics while inside the battle scene. An easy example is Health (”HP”), usually all enemies and allies will have a number representing their health, dealing damage to an entity lowers this number, healing raises it. If the number reaches 0 the entity dies. Other examples of stats may include Mana or Action Points (”AP”), Attack, Defense, Speed, the name of the entity, etc.. I will consider the property (boolean) of wether or not a entity is an enemy or ally as a stat as well [1]. It is vital that each entity has the same set of stats, though some games may obfuscate them (such as the player not knowing how much AP the enemy has left). While this seems functionally indistinguishable from the entity not actually having the stat, this is not the case. It becomes important when considering abilities: an ability is any action that interacts with stats of any entity (or none). Since all entities have the same set of stats theoretically any ability could be executed by any entity. In my opinion this is a vital part of tb combat and all of the games commonly considered tb JRPG combat share this property [2]. If the player sees an enemy using an ability it will seem fair, they know that there’s a chance that they may get a similar ability later in game and more importantly, they know every entity is playing by the same rules. Later on I will discuss why this is extremely important for an engaging experience. A turn is a unit of measurements of arbitrary length. Each combat scene has to have the possibility of having at least <number of different entities> many turns. During a turn exactly one of the entities may choose an action such as using an ability or item, defending themself, fleeing, etc.. It is not imperative that entities may only act (that is choose an action) during a turn though most games follow this rule. Often the order of turns (the order of who acts before whom) depends on one or more stats or another property of the world or how the battle was started. For example in Pokémon the pokemon with the highest speed stat acts first but there are also abilities that make entities ignore this rule and always act first or even reverse the order of turns. In final fantasy and chrono trigger one of the stats of the entities is slowly rising, if the precentage bar is full entity may choose to act (c.f. figure 1, grey bar on the lower right of the screen) . This makes the order, length and number of turns flexible and the time in-between turns arbitrarily long (usually enemies act as soon as they are ready but the player can theoretically not start a turn until the battle ends), yet the turns still behave like in other tb combat systems.  To summarizes, the combat scene of a game is considered “turn-based JRPG combat”, iff 
all of the entities (both enemies and allies) have the same set of stats
the battle is divided into turns during which
abilities serve as a way to represent abstract combat, choosing abilities is the main gameplay
To finish of this section I’d like to give kind of a quick-fire round of properties that are commonly found in tb combat but that I don’t consider strictly necessary:
One of the stats is a “status” one or multiple out of a fixed number of them. Being afflicted with a certain status may have effects on the entity or the battle as a whole. For example a poisoned entity may loose HP over time, being stunned makes it so they can’t act during your turn, etc.. Being dead or knocked out may also be considered a status, it’s effect is being unable to act until resurrected.
Allies and Enemies can die or be knocked out (usually when their HP reaches 0). A dead enemy is removed from the battle, cannot be further interacted with unless resurrected. If either all enemies or all allies die the battle ends in a win- or fail-state respectively.
There is a visual representation of each entity such as sprites, names along with numbers or something similar (c.f. Figure 1). Resolving an ability has a visual representation, usually either an animation or sometimes just the changing of displayed numbers as damage is dealt.
Some of the abilities are instead considered “items”. These usually act as a one-time-use abilities, each entity may have a shared or individual inventory that contains multiple of these items. If one is used in combat it may vanish from the inventory, so for example if you have 3 bombs, using one in combat it will deal damage much like a regular ability would but instead of costing AP one will vanish from the inventory so only 2 are left. I refer to items acting this way as “usable items” (or “usables”)
Interaction with the game may be a lot more complex than just selecting something from a menu. This includes QTEs to block or attack, button combinations instead of selecting attacks, etc.. I will discuss these in a future section.
Winning the battle will reward the player party with experience or gold both of which may unlock new abilities or something similar outside of battle.
The set of entities may change over the course of the battle. This includes switching out team members, creating new ones (”spawning) with abilities or more entities joining for story reasons or something similar.
The combat scene itself may have certain properties. Examples include weather effects like rain, sandstorms or hail that apply a (de)buff or damage periodically. There may even be examples where the property breaks some of the rules of combat, for example an enemy attacking immediately after being struck outside of their turn. I will refer to these as “hazards”
An entities stats are dependent on their equipment, equipment are usually items that may be associated with a character by equipping them from the inventory outside of combat. For example equipping a metal helmet may grant the wearer more defense while equipping a magic ring will increase their magic power. Equipment systems can be very important to a game but if they can’t be engaged with during battle they are not technically part of it. An example of them being able to be interacted with are Pokémons held items.
Abilities may interact with each other. For example one ability may freeze an entity and another ability shatters them. In chrono trigger the players party members can team up for a single stronger attack that is dependent on who the participants are.
This list is not exhaustive, while the core axioms of the definition may not be diverged from, other aspects of the battle systems are hugely varied.
Realizing the Problem
Now that we have the technical stuff out of the way, let’s talk game design. There are two inherent complication to tb combat and they’re on the opposite side of a spectrum. For the sake of argument lets assume the difficulty is fixed at a certain level, no matter what mechanics exist or how they’re implemented. If tb combat is either too simple (that is the game requires little effort in understanding and applying the combats mechanics during strategizing) or too complex (that is understand and applying is too hard) it will result in the player having a bad experience.  Why is that?  Tb combat by nature is not mechanically challenging (at least in it’s basic form). Furthermore tb combat inherently contains a lot of actions that will be repeated over and over such as a entity loosing health, the player scrolling through a list, selecting which character to target, etc.. Tb combat has to rely on the mental aspect of it to be sufficiently challenging, even though a player may repeat a small set of actions hundreds of times if they have to think hard which action to pick when and strategize to solve the potentially extremely complex problems it will make for an engaging experience. It’s like doing homework for a subject that is really interesting to you, it’s fun to think about what to write, the act of writing itself is not. Similarly it’s fun to think about what actions to pick when and how to equip your characters and predicting what the enemy may do, selecting the options from a menu is not. If a tb combat system is too simple the player will spend most of the time not thinking about trying to come up with a solution, they will be stuck mindlessly doing the “writing things down” (pressing A) part. Because of the mathematical nature of interactions it’s also very easy to make a tb combat system too complex, if there’s hundreds of variables and interactions all going on at the same time the player won’t be able to solve or even understand the problem. If they can’t they again can only mindlessly press A. This is also why the fact that all entities have the same set of stats is so important, if the player is able to assume that they can strategize around all the entities playing by the same rules. They will know what the enemies abilities do and how they will affect other entities. If this symmetrical nature of combat is not present, the player will have trouble strategizing as suddenly everything can happen. This again leads to the player not being mentally challenged, all that’s left is pressing A.
How to Fix it
Naturally one will ask: How do we fix that? In my observation there are multiple approaches that are not mutually exclusive. I will explain which of these game devs took, why, and wether or not it can be successful:
i) Adding Complexity
Tumblr media
Figure 2: Third party program for predicting damage dealt by one attack during a pokemon battle in Pokémon Sun & Moon (3DS, 2019)
This may be the most popular approach and can be observed in many well-reviewed successful games: If a simple battle system doesn’t engage the players, just add more. More mechanics, more abilities, more enemies, more items, more everything. A good example for this is the pokemon games. The game started out with about 150 pokémon, 4 stats, 15 types, no held items and 165 abilities (“moves”). Now, almost 15 years later we’re at 800 moves, 800+ pokemon, 18 types and countless new mechanics such as new hidden stats, held items, z-moves, mega-evolutions, etc.. I am not faulting pokémon for taking this route, one could argue it fits well with the collection aspect of that game but relating to pokémons combat specifically I think this more-is-better approach is anything but optimal. Side-Effects of using this approach are:
Redundancy: There are only so many good ideas to go around, once you go past that amount mechanics will be redundant. Pokemon may fullfill the same role, a move may have an objectively better version making it completely superfluous.
Readability: More things means more for the player to learn. This isn’t only related to tutorials, to truly be strategic and play at their best, players will have to learn bascially every move, every pokémon, every mechanic. Players who don’t won’t be able to strategize and as discussed above, this will decrease engagement.
Development Effort: This is not technically relevant to the player but more things means more chances for bugs to appear and obviously more work both as a programm, designers an artist.
Balancing: More moving parts means more interaction which makes balancing even harder. The recent pokémon generation cut almost half of all available pokemon citing the above mention growing workload and balance issues. All of the most well-balanced games from chess to star craft have one thing in common: they have as few pieces as possible. 
All in all I think increasing the complexity when you think your battle system isn’t engaging past a certain point is rarely a good idea. Games that have a story-reason or collection aspect may still profit from this approach. I also want to make clear that adding complexity inherently is value-neutral. In my opinion every game needs a minimum of complexity to not be overly simple but I see many games taking the route of adding just more complexity past a certain point triggering the side-effects.
(Other games that used this complexity approach are: Suikoden and it’s 99 party members, dragon quest and it’s many monsters and equipment, earthbound with all it’s weird status effects and hidden enemy weaknesses. Note how most of these games are still amazing games but in my opinion their tb combat system would’ve been a lot better if they turned down the complexity a little) ii) Adding Mechanical Challenge
Tumblr media
Figure 3: Action Command in Mario & Luigi: Superstar Saga (2003, GBA)
If the game isn’t engaging enough it’s not mentality challenged so the only thing left is pressing A which isn’t fun, why not make pressing A fun then? Many RPGs have gone about this by introducing timing or quick-time-event (”qte”) based mechanics tied to many game actions. Often during the attack animation a player will be tasked to hit a qte, if they fail the damage the attack may be redudde. Similarly there may be an additional input needed to defend, to flee, do certain attacks or sometimes even navigate the menu. Adding mechanical challenge will shift a tb combat system from something very abstract to something closer to resembling an action game. Games like the Mario RPG Series or Undertale have done this too great effect to the point where their battle systems only superficially resemble tb combat. While this is not necessarily a bad thing, it exemplifies my main issue with this: making the player allocate mental resources towards mechanical challenge will have to necessarily take away from the strategizing part. Again this isn’t bad or good, it simply changes the game, people who like action games will like this version of tb combat better, people who like strategizing will like it worse. Either way it’s a fact that games who went this route were highly successful and loved by many, sometimes even opening the target-audience so that some people who dislike most tb combat games will still play one that’s action-focused. I personally think the adding qtes is a valuable tool but going too far in that direction may take away from the original appeal of tb combat. Interestingly there is another option here, making the original way of interacting with the game more engaging while not adding any additional qtes or inputs: time limits. Limiting a players time in some way will make navigating menus more stressful and thus challenging. Time limit don’t necessarily have to be a ticking clock, a soft time limit such as Final Fantasies “active time battle” introduces the time limit in a way that doesn’t feel stressful yet rewards quick actions navigating the menus. [4] iii) Adding Flair
Tumblr media
Figure 4:  Animation for using a simple AoE slash attack in Octopath Traveler (Switch, 2019)
This option includes a wide selection of methods. While complexity focuses on the purely mental aspect and qtes focus on the purely mechanical aspect, adding flair will focus on the audio-visual one. The vast majority of time spend in tb combat will be watching menus and animations of the enemies moving, dying, attacks playing out, winning, etc.. Flair is not limited to visuals however, similarly adding music or even narrative elements will make the “watching things play out” part of tb combat a lot more enjoyable. Once again there is a trade-off here, if combat is too flashy the game may run the risk of reducing readability and making things hard to parse. Another common negative side-effect of this is that actions take too long to resolve because a lengthy animation has to play out. As flashy and stimulating as it may be watching the animation for the first time, if it takes 10s to finish and you will have to watch it hundreds of times it’s a good idea to give the player the option to turn off animations or give them a way to speed them up during battle. As with most games (including non tb-combat), adding flair is usually a good idea. A game that looks amazing and has a great soundtrack will usually be a better game for it. However it’s important to not go overboard as to not mar the interactivity and pacing of combat.
iv) Adding a Gimmick
Tumblr media
Figure 5: Dialogue and social interaction with enemies during combat in Undertale (PC and others, 2015) The very first thing I want to say in this paragraph is that the word “gimmick” is used as a value-neutral term here (language barrier at work). With that out of the way, in the past few years more and more developers choose the approach of adding a mechanic that is not related to the set of base mechanics for tb combat outlined above, adding a gimmick. In Undertale (c.f. Figure 5), this is social interaction with enemies: Instead of attacking the player has the option of befriending or even romancing enemies. Damage values are replaced by the enemy responding with dialogue or a certain animation. Interacting with enemies this way will have effects on the overworld gameplay. This gimmick is mostly unique to undertale, yet there are countless different games with different gimmick. Possibilities are endless which is why most games will try to find their own gimmick, a thing only that game has. Being value-neutral this may add or detract from a game in general but the effect on the tb combat system is more palpable: Going outside tb combat framework has the risk of detracting from it, much like adding mechanical challenge in ii), adding a gimmick will necessarily decrease the complexity and depth of combat both mentally and mechanically. In summary adding a gimmick can be a great way to freshen up your otherwise stale combat system but in my opinion if a game dev is striving to make a great JRPG they have to be mindful of adding things that muddle that goal. Not striving for that goal while still wanting tb combat in your game can still results in an amazing and fun experience however. v) Adding Depth
The difference between complexity and depth is subtle yet crucial. Complexity is adding an entity, ability, stat or any other property an entity can have that was not originally part of the combat. Think adding a character, adding a new attack, adding a new component. Depth however is adding another interaction between already existing entities, abilities, etc. Adding depth will make combat more complex yet may not necessarily increase it’s complexity (depth and complexity can overlap and effect each other) as described in i). Examples of adding depth include:
making the AI scripts decision process more involved, for example each enemy entity may react to each others state (ideally dynamically, that is not following a fixed script) protecting their powerful yet vulnerable mage or trying to keep everyones health above a certain threshold
making the AI remember things the player did such as analyzing which move the player likes to use often and then preparing for that move in the future
making it so passive effects are not encapsulated but may increase/decrease/interact with each other. For example a ring may increase strength but gain an additional amount of damage when the players defense is boosted. Equipping another ring that boosts defense at the cost of strength will give the additional effect of the first ring. If the player now has an ability that lets say increases each buff to damage by 50%, the player will have to think about which combination of items to use and if the interaction is beneficial. There is no easy solution
making abilities interact, for example one ability may increase the next abilities damage and another ability may bounce from enemy to enemy 10 times but only do very little damage. If the order of execution is based on the parties speed values for example, the player will have to manipulate the speed such that the damage boost happens before the bouncing effect so damage buff will increase 10 fold.
status effects reacting to each other, for example trying to burn an already frozen enemy will thaw them, cooling a burning enemy will cure the burn
You may notice a trend in these examples, a lot of them are rules in the form of “if x and y, then z” where x and y are already existing mechanics or properties. Because both x and y already exist, adding depth will bypass a lot of the pitfalls of adding complexity while still gaining most of the benefits. It will make combat a lot more complicated but also interesting as suddenly strategizing isn’t just picking the clearly optimal option, it’s thinking through all of the interactions trying to find out which combination (and order) of actions will do the most damage. The more moving parts interact with each other the more dynamic the battle will feel while still being initially easy to understand because keeping the number of entities, abilities, stats, etc. low like this will cut down on time spend learning what everything is and instead make for more time experimenting, learning through interaction and emergent situations. I’m very much in favor of adding depth but it’s not always positive. Adding too much depth will inherently increase complexity and thus cause the same problems mentioned above. Furthermore adding depth will make the combat system harder to balance: if the game dev designs the system in a way where most of the interactions are emergent and not hardcoded they will have to do more testing and thinking things through to keep stuff from spiraling out of control (though to be honest it can be very satisfying to figure out a game-breaking combination if it’s complicated enough but the point still stands). In summary trying to reach an appropriate level of depth for your combat system is always a good idea in my opinion. Be aware that going too far may make things too complicated or unpredictable though.
Conclusion
I hope I made clear that I’m in favor of all of the methods mentioned above as long as each one is used appropriately and sparingly. Sometimes it’s okay to shift the game as a whole away from combat into more action- or narrative-oriented but if the developer decides that their game should have tb combat, any of the techniques mentioned above can be a valuable tool.
Addendum: Closing words
I want to end this piece with a little personal anecdote, as you can imagine I played a lot of games with tb combat, most notably I spend most of my teens on pokémon tournaments and playing old gems like earthbound that weren’t available to me as a child. I’m going to be honest, I didn’t like most of these games. When I played LISA: The Painful, I had a hate-love relationship with it. I thought the combat was pointless and shallow, the environment art was terrible and the story was overly edgy and not subtle enough. It took me 6 attempts to finish the masterpiece that is Mother 3 and even then I gave up 70% in and watched a let’s play instead because I didn’t want to grind and the music-related combo system just didn’t work for me. I played FF6 when I was in college and I was bored to death, every time there was a random battle from walking through blank space I groaned internally, doing the battles just felt like “deal damage, then heal, then deal damage, then heal” over and over for the entirety of the game. Honestly there really wasn’t ever a game with tb combat that I though flawless or at least as good as possible. Of course because I was a pretentious amateur I figured “I’ll just make my own game and make it better than all of them”. The more I tried to actually do that the more I realized that these weren’t flaws at all. There isn’t an optimal way to do things. While I still think it’s true that all of these games didn’t live up to my tastes, that has no barring on their quality or how successful they are in realizing their vision. What I’m trying to say is: You shouldn’t try to design tb combat in a way that is the best, you should try to design it so you, the designer, will like it best. Choose from any of the design methods mentioned above but be aware that there isn’t a concrete answer, there isn’t one specific point after which the bad side-effects of certain methods kick in. Just do a game you would love, if you do that I can promise you there’s a good chance that someone else will too.
Footnotes
[1] “is an enemy” is considered a stat since the game may allow for the property to be interacted with, such as when an enemy charms an ally and makes them fight for the enemy team or when an enemy dies and is thus pacified.  [2] I realize that this assertion isn’t falsifiable since if an tb combat system doesn’t share that property, it isn’t a tb combat system by definition. Apart from that I still believe that this property is crucial and most games I can think of share it. For the remainder of this piece it is asserted that tb combat has to be symmetrical.
[3] note: I will use pokémon as example to illustrate my points, if you are not familiar with the pokemon battle system consider skimming through this article though I don’t think it’s necessary to understand the combat system fully
[4] An additional way to introduce a soft limit that I honestly have not seen or used anywhere yet is limiting the amounts of menu inputs a player can do in some way. In rat_game specifically there will be one boss that instead of attacking when it’s their turn will attack every 5 menu inputs. This means a player is not necessarily limited by time but rather has to navigate the menus as efficiently as possible, otherwise they risk being attacked more than necessary.
2 notes · View notes
rat-game · 4 years
Text
Detective in the City of Masks (Script Idea)
In this reality, every human has an ability called “changing masks”: At any point the may choose to place both their hands on their head and twist it, as if to break their own neck. Instead the head will turn a full 180°. Once it turned around that far they enter a “masked” state which completely changes their face, general appearance and personality. 
Tumblr media
Think fraternal twins, Jekyll and Mr. Hyde: the body is similar enough to believably belong to the same person yet the faces are different enough that other people can not reliably tell if it’s the same person by looking at their head. Each state (masked and unmasked) has their own personality, though they may be related owing to the fact that both share most of the experiences of the body such as their upbringing and family. They do not however share memories unless one of the state deliberately wants to transmit a thought to the other state. When a person changes masks, the new state may not know where they are or what time it is unless the other state wants them to know that information. Only the state that’s currently in control may choose to change masks, that is if state A currently controls the body and state B wants to be in control instead, A can ignore his request. Humans in this world don’t need to (and are actually unable) to sleep. Instead the body and brain recharges by changing masks, if state A is in control for a long period of time (just like humans in our reality) they get tired and worn out, instead of being tired they just feel the urge to change masks instead.�� In this world you are a police surveillance operative, you job is to infiltrate and/or monitor a person, group or general area. You are of vital importance to the state, often your data as well as your word will decide a trial. The way this universe works has some interesting implications that would in my opinion make a good detective story a lot more complex:
i) at any point in time only one of the two states can be active. This means for example if you have confirmation that during an hour where a crime happened only one of the states was out (which witnesses or security footage confirm) this means that both states have an alibi for that time, even if one of the states wasn’t even aware of where the body was ii) since each state can decide to not share information both of them can claim perfect plausible deniability, furthermore one of the states may be lying about wether or not the other state shared information. During an investigation this makes every person by themself as complex as two distinct witnesses but not completely independent as both of their bodies have to be at the same place at all times iii) states may share wrong information with the other state (intentionally or unintentionally) basically manipulating them into thinking the state that shared the wrong information is truthfully informing everybody what happened. One of the states may surreptitiously pull the strings while the other state truly believes what they’re saying because they’re being manipulated iv) since changing masks is tied to the physical action of twisting the head around, other people may sneak up on someone in their sleep or from behind too make them switch to another state. For example a group of criminals could force the switch during an incriminating situation making it so both states miss half the information which they might not be able to or want to communicate v) since appearance changes when switching every person basically has a button they can press to immediately swap into a disguise. Imagine someone only ever meeting one of the states, if that person would see the other state for the first time they may not necessarily realize it’s the same person. Matching up witness reports will become a lot more difficult by having to figure out which of the perpetrators are two states of the same person or one state from two people respectively  I won’t go into exhaustive detail as this is just an idea I’ve been tossing around but I think this one mechanical change to how people work (everything else can just be kept as if from the real world apart from things relating to sleep specifically) has extremely complex and in my opinion interesting consequences for how crime, witnessing, alibis and responsibility work. A fairly straight detective story could be turned into a complex play of charades and inter- (as well as now intra-)personal politics.
I don’t actually plan on doing anything with this idea yet but I like to chronicle ideas that take over my creative thoughts for a while, they might come in handy later. Note: Image from the movie “Oedipus Rex” (1957)
0 notes
rat-game · 4 years
Text
On non-euclidian Space
First I want to state that I’m aware of the actual mathematic definition, (non-euclidian geometry is geometry on a curved surface. if you stop asserting certain axioms that geometry is based on it  has a bunch of implication of the behavior of geometric objects like lines) but this is not what I want to talk about today, instead what I mean with “non-euclidian space” is closer to what the famously math-illiterate Lovecraft meant by using that word: the stories universe (that is the actual space actions take place in) does not follow the rules of how an objects movement relates to it’s position in 3d space. 
Tumblr media
I will drop the math-talk and use a very easy to understand example: Imagine you’re in a house with two adjacent rooms. You enter one room through the door, you close it behind you, then you turn around and exit the room through the same door yet you enter a completely different room, it’s as if the room layout changed the moment you moved. I think most of us had an experience like that while dreaming but this principle also has very interesting applications for specifically written down stories and games. It’s hard to represent non-euclidian space in a movie (though there have certainly been successful attempts like in inception) because  ultimately the viewer cannot suspend their disbelief about physics working completely different in a world that was clearly recorded in the actual world. Stories don’t have this problem as in written word you can create anything the human imagination can. With games however you’re able to explicitly decide the rules of 3d space (since you literally made them) and thus also break them. A good example of successfull usage of this is Portal (though there it is limited to the titular portals) or Antichamber which is a puzzle game that is entirely focused on mechanics revolving around non-euclidian space.  I would say that for rat_game the transition between the real world and real-world physics into a dreamscape where space suddenly (and sometimes surreptitiously) becomes non-euclidian is one of the most defining aspects of scene-to-scene editing. I will go into more detail in a later post but in rat_games world at any point if you are close to someone who is part of the hive mind they may try to take over your mind. From the perspective of the target this manifests as entering a dreamworld - like a bad acid trip. If you die or give up while there, the hive mind wins control. This transition from walking around the normal world to going into whatever I can come up does not have to happen instantaneously. Maybe the target enters a room and nothing seems off, they explore further and slowly they may feel like something isn’t right, they may turn back and exit through a door much like in the example above and suddenly they’re in the same room, P.T.-style. The rooms may loop, become mirrored, doors may move as they walk towards them, etc.. I heavily use the transition into non-euclidian space as the main vehicle of pacing, going from story-scenes to fight-scene, going from one location to another. Having the option to intentionally break any sense of space and familiarity is hugely freeing creatively without sacrificing tension or a sense of realness and I also hope that it will make for an engaging and unnerving experience.
Note: Usually game engines are written in a way where 3d space works as you would expect it to, instead developers use tricks to seamlessly make it seem like the space is working differently. For the door example above one would simply teleport the player into another room after they try to step back out, if the teleport happens in a way that isn’t perceivable to the human eye it will seems like space is distorted. There’s a risk of the player peeking behind the curtain by experimenting with it ruining immersion so developers have to be careful to not overdo it or have half-assed transitions like loading a room in longer than one frame or even worse have a load-screen in between. I hope that I will be able to do this well enough to preserve the magic but only time will tell
3 notes · View notes
rat-game · 4 years
Text
Diary Entry: Getting Better at Doing Worse
I’ve been working on a banner for this blog and I came to think about my skill over the course of this game. I’d like to think I can draw okay, I’m nowhere near a professional artist but I’m (hopefully) not completely terrible. In the making of FEZ, Phil Fish commented on how once he was done with all the pixelart for the game he realized that while doing that, his drawing increased so much that he no longer felt the things he worked on in the beginning of development looked up to par so he redid pretty much all the graphics. Now this is commendable but for a one-man-operation (with or without funding) it’s kind of irresponsible. I’ve been in the same boat lately: demotivated by depression I kinda stopped painting and drawing which I used to do around once every 2 days. Instead I focus on one of the multiple skills I need to make my game specifically: programming. I’m working on my thesis as well which commands a lot of time and also getting a lot better at C++. Basically I’ve substituted all of my hobbies except gaming with just programming. Because that is also my realy career though it makes it feel like work. Drawing and writing never felt like work which is why I’ve been trying do draw and write more (mostly for this blog (thanks for reading <3) This worries me deeply, I have terrible self-esteem and tend to over-critize my own work which makes me feel that it’s inevitable I’ll be in the same situation as Phil Fish. I don’t have a solution to that, as long as I can’t pay someone else to do the work for me I will get better while doing it and bc of my mental issues, I will also get more and more critical of old work. Hopefully I can get to a point, not skill-wise but mentally, that I can look at my work, know I did the best I can and judge it to be adequate. This also makes me worried about 2 things specifically. First we have animating which I have enough theoretical knowledge about to know how to do (after all I implemented an animation system basically from scratch) and I’ve dabbled in but also there’s music. You wouldn’t know this unless you know me personally but I was hugely in music theory and I used to play on piano competitions when I was younger. I never however learned to jam with other people, compose (unless only on paper) and create music electronically as well as sound effects. I caught up on the knowledge I need for the latter but I never actually made anything. Or at least didn’t delete after I was done. I may have enough knowledge but I don’t think I have enough time to get “adequate” at actually doing it so right now I’m kinda just hoping for a miracle or that I can make a single good song à la megalovania to carry my kickstarter demo. PS: I’ve been putting my bird on my desk while he sleeps because it’s far away from where I sit at night in my one-room apartment. This means though that I can’t do irl painting anymore, I need a desk for all the brushes and stuff. What I should do is just work during the day like a normal person but it is kinda hard for me to convince myself of doing that. Also my bird sleeping well is a lot more important to me than having full-filling hobbies (it really is) but in the future I will try to balance both. Maybe he can be my critic instead
0 notes
rat-game · 5 years
Text
On Allegory and Authorial Intent
For my first real post I’d like to share this story from my personal life. It was the single most important event related to my game and I don’t think that will ever change. I wrote the story of my game in a way where at first I didn’t have a beat-by-beat script and I barely knew the locations and order of events, I had a rough idea of the themes and the way the story will shape but the very first thing I fleshed out apart from the battle mechanics, story-wise, were the characters. I’ll stay vague for now but the personality of the main 5 and the antagonist were fully formed at this point, I would do writing exercises where I’d have them talk about something completely unrelated to the game to flesh out their manner of speaking and interpersonal relationships (maybe I’ll post one of these in the future) and it felt incredibly natural, like chatting with a real person, I didn’t have to think about it whatsoever. At this time I was playing a game called Celeste (which I highly recommend btw). It’s a platformer about climbing a mountain, it has little story-segments in between stages where the main character talks to someone, I won’t recount the story here but in one scene the MC (main character) says in no uncertain terms that climbing the mountain is an allegory for her struggle with anxiety. One of the level mechanics is a chase-scene autoscroller where an evil version of the MC chases the MC around, taunting her. Story-segments containing the evil version make it very clear that the evil version an allegory as well, it’s an anthropomorphized manifestation of the MCs inner struggle, her inner critic and her low self-esteem. Throughout the game the MC learns to work with the evil version rather then against it. Empathizing with it and working together will help them longterm and make them (literally) stronger. Now, I’m going to be honest and say that I don’t think celeste is very well written, it’s not particularly subtle and also it’s unspecific enough to make basically everybody be able to project their internal struggles onto the story. I read in an interview that the games designer, Matt Thorson, himself struggled with anxiety and depression. He talked about how finishing the game became his “mountain to climb”. After watching this in-game cutscene, I suddenly completely broke down sobbing for what felt like hours. I didn’t really know why at first, my body just reacted. Interestingly this wasn’t at all because celestes story resonated, I wasn’t attached to the mountain metaphor or the evil self-doubt version or anything inside the game at all, none of that had any direct impact on me emotionally. Why then, did I break down?
Well, it was because I... I realized that I wrote my games story as an allegory for my life. I’m just going to assert that you believe me when I talk about this so and skip to the next question: “Wtf does this mean and how did you not know that? How do you write something down - in detail - and not realize it’s literally you?” Now this will probably illicit a strong reaction in some readers, so I’d like to give context to this: I have a mental disorder called OSDD (better known as DID: Dissociative Identity Disorder). It’s a trauma disorder that forms from prolonged repeated life-threatening trauma from the ages of 4 to about 9. Many people know this as “Multiple Personality Disorder” (this terminology has been deprecated for over 25 years, please give the wiki article a read to educated yourself on this). It presents as a person having multiple distinct, disjunct personality states. Each state has their own identity, their own body image, tastes and personality and most crucially: their own memory. During formation of the personality in childhood, the brains way to handle the terrible trauma-inducing things is to encapsulate them, to store them away in another personality, wrapping it in total or partial amnesia so the childs main personality can be unaffected . If the brain didn’t do this, the child would seize to function. I think the best way of introducing this concept to people is with soldiers: A soldiers personality is intentionally split during training, they have their regular self, functioning in society and with their family like a regular person, and they have their “soldier” self. The latter is the person fighting in active combat, able to kill or see their friends be killed without second though about it, able to take tremendous amounts of stress and pain while still functioning. The “soldier” personality state is the difference between a swat member clearing and entire complex, gunning down dozens of opposing soldiers without a second thought and a regular person in a disaster scenario, fearing for their life and breaking down from the stress because of it. Unable to think, move or maybe even save themself. I won’t go into specific detail but for my case, I know of 5 of those states in me. For the attentive of you, you may recognize that number: Every of the main characters in my game are literally one of my personality states. I’m not using literally fallaciously here, they’re not representation of them, they’re literally the personality state plugged out of the context of the real world and my brain and into the context of the game. This explains why writing dialogue for them felt so natural immediately, it’s what happens every day, every minute of every hour inside my head. I don’t have a singular inner voice, I have multiple. If I think about what to cook for dinner tonight, two of the states may argue about what they want, if I fail at an exam some of them may want to support me to feel better while others want to punish me and make me feel even worse. All 5 of those are in my game, you can imagine which of them will be the supporting cast and which of them will be the villain.
I actually stated that the games story is an allegory of my life, so how does entirety of the games story fit that description? For that I need to explain a little bit further, I’ll go into actual detail at a later point but my games story revolves around a hivemind that has taken over the world. This has already happened, the damage is done and irreversible and the entire world has been restructured or destroyed because of this. The main party was assembled from circumstance but has a main goal of “defeating the evil”. They force themself further and further into the center of the hiveminds society, believing that if they can defeat the core, the world will be saved. Spoiler alert: it won’t. It’s over, you lost before you even started playing. You can’t do anything about it but it’s still emotionally valuable to want to try. To just do your best just so you can say that you didn’t give up. As long as you fight, things will get better. Not because the evil is getting weakened but because you, as a person, will grow and heal and get used to the way the world is. I want you to read the past couple of sentences again. Done? You might have noticed that this sounds a lot like something a trauma therapist would tell their patient. You can’t “heal” trauma, you can’t revert the fact that a person is traumatized. It’s not possible for it to ever go away. Actual healing requires accepting this fact, learning how to work with the circumstances in order to be able to live a fulfilling life. That’s what I mean with the story being an allegory, the hivemind is basically trauma itself, fighting it mirrors the healing process, the entire party is literally me and their fight and the mechanics and ways to “win” are the same as with my healing process.
Now that you know what part of my game is allegorical, you may still ask: “How did you not notice this while coming up with the idea?” Supposedly the game retroactively became high-concept allegory for something incredibly personal to me, how could that have gone unnoticed and unconscious for so long? I honestly can’t answer that. Instead I’d like to instead share how my therapist answered that question: “maybe... someone else just wanted this to help you”
0 notes
rat-game · 5 years
Text
On creating this blog
I don’t expect to have even a few regular readers but as long as I have at least one person and/or myself checking in, I’m motivated to keep updating this. It’s like an actual diary, less about sharing your thoughts and more about keeping a log of them for yourself.I don’t really use tumblr or any social media for that matter but I feel like this is the best way to do that. I have a backlog of essays I half-finished so I’m thinking of rewriting them in a more stream of consciousness tone as well posting art as I work on it. If I feel like formatting code and math-things I’ll post those here too, I think.
Above you will also find my personal twitter, it’s literally my private one and has very few to do with the actual game but feel free to go look at videos of my bird aswell as videos of others peoples birds that I liked.
1 note · View note