Tuesday, April 13, 2021

Irons in the Fire #2: Observations on Scope Creep


Let's do another projects update! The last one was pretty fun. It's like I'm making new content without actually having to release anything!

Over the last month or so I've had a number of nice creative epiphanies regarding my ongoing projects. All three of them were getting a little intimidating to me -- I was struggling to actually visualize the path to finishing any of them.

Scope creep is something every hobbyist artist deals with I think. You get an idea and you start fleshing it out in your head, maybe you even start making something. But in the process of making the thing in your brain, it turns out to be more work than you thought it would. And while a lot of that work is fun and energizing, a lot of it doesn't spark the same kind of creative satisfaction.

I think the way forward for me as a hobbyist creator is to scope the project around maximizing the work that's FUN for me... and minimizing the work that isn't. Because when I really critically think about the stories I want to tell, a lot of the not-fun parts I'm dreading aren't actually necessary at all.

I've cut lots of not-fun-to-make game chunks from my outlines in the past. I've never once regretted it. Mostly this manifests as thinking I need to do an elaborate intro or ending cutscene for a game and then 98% through dev realizing I don't need or want one. Quarantine, Fugitive, Frog Adventure, and Kikai specifically all had plans for big cutscene beats that ultimately just weren't necessary for those stories.

Her Lullaby, Atop the Witch's Tower, Facets, and Expanse all came together pretty easily because nearly every part of each game that I worked on was creatively exciting to me. The stories were all important to me, but the medium I was working in was cool too! I'd never seriously played around with Ren'Py/VN language, ZZT, RPGMaker battles, or traditional arcade shmup structures before. I was constantly making joyous formal discoveries making these games, and their stories evolved to accommodate and incorporate those discoveries.

I have to care about the story I'm telling, sure. But I have to care about the language I'm telling it in too. The process of making the thing can't be an obstacle in the way of having a finished story -- making it should be the fun part!


Mystery Visual Novel

I have a finished first draft of this, which feels wild and rad since it's the biggest prose thing I've ever worked on. I'm editing chapters now and feeding 'em to a couple test readers as I go, and it's been super-fun and fulfilling. I like working with words and I've done very little fiction writing the last few years. The whole project's gotten a bunch of long-neglected synapses firing off for the first time in a while, it's really nice.

The epiphany moment with this one was realizing I wasn't really excited about any of the VN-specific language stuff -- in six months I didn't put a single word from my big draft into Ren'Py. It was all still sitting in a google doc. Even after getting a cool Higurashi-style presentation template from Polly, and a couple pieces of gorgeous test art from two good friends I really wanna work with on something in the future.

I got a friend to test-read the first chapter. He liked it! It was the first time anyone had looked at the story, so it felt really good to get some validation. And that's when I thought "boy it'd be nice to have this done in the next couple months instead of, MAYBE, sometime late this year."

So instead of a videogame... I'm just making a little book instead! I think I just felt insecure about the idea of putting out something that was JUST my words. I thought fewer friends would care if I put out a book than a videogame. That's probably true, but who cares! I thought my writing wouldn't be strong enough to stand on its own without music and art. That could be true too. And who cares! If I care enough to finish it and make it as strong a story as I can, whether or not I'm an "objectively skilled" writer yet, someone else on the planet will probably get something meaningful out of it.

It was gonna be a kinetic VN with no choices already, so making it just a book doesn't really change the story at all. But Afterward was also a kinetic VN -- that game did a ton of stuff with the presentation that excited me and helped the story. That there were no VN language tricks at all in my head that felt essential to this story is maybe another sign letting go of the medium altogether was the right call. Maybe sometimes words are enough.

The story's a prequel to my game Facets. It's about how Lacy and Alyssa (two important characters from that game) first met. It's gonna be sad and scary and cathartic and gay. It's a lot like Facets, but I think the fundamental vibe and ethos are a bit different, since I'm pretty different from the person I was when I made Facets.

It's a little weird to write a non-interactive prequel to what is by far my hardest game. I'm looking into ways to make the story of Facets approachable to more of my friends. I think I want to do a v1.1 release that fixes a couple bugs, adds an ATB wait option, and maaaaaaaaybe adds an Easy Mode. There's still a part of me that doesn't like the idea of a difficulty select for this specific story, just on a visceral aesthetic level, but since the game's been out for three years I feel like I can afford to be less precious about it.

If that all works out, I'll release the v1.1 version and the book at the same time. Facets' three year anniversary date is coming up soon, I'll shoot to have everything done by then.

I can't guarantee you'll like the book. All I can promise is that I'm bringing the same level of care and love to it I've brought to my game projects. If that sounds exciting to you, maybe give it a read when I'm done!


Collab action explorey game

Y'all I just love making big videogame maps so much. I like arranging thousands of tiles on a big dumb grid and seeing a world come into existence in front of me. And it's different from just drawing a pretty picture -- tiles on a game map are imbued with formal meaning by the player character's verbset. So seeing a bunch of carefully placed tiles, and knowing they were all put there to interact with a player's play and psychology in a certain way, and knowing -I- put them there... it's just heaven.

I've made some FAT GORGEOUS maps for this game.

The epiphany part of this was realizing how terrified I was of all the unfamiliar tech in this game. It's made in LOVE, and all the actual engine coding is in Lua. I think if I was in a better headspace I would've had fun digging around the engine and learning all the code stuff, but unfortunately I started work on it only a few months after having covid for six weeks when my brain was pure mush.

So I finally realized I could just ask for Toby's help on all the hard tech stuff! I'm done with my part for the time being -- once I stopped being terrified of all the complicated stuff I thought I'd have to do later on, it was a lot easier to finish my maps. I'm real excited to help tie the full thing together when the time comes.

Give Toby's games a play over here!! They've released a ton of good games already, and they're also currently wrapping up a big mega-project they've been working on for literal years and it's gonna rule. And then sometime after that you'll get to play this cool metroid-y game I helped out on! Now's as good a time as ever to jump into their backlog of rad work!!


RPG explorey game

I was ready to let this one go. I still might be honestly.

It was just such a massive vision. One big island, made up of six by six maps, each of which was sixty by sixty tiles. AND a bunch of turn-based combat design and character progression. AND five dungeons. AND a pretty in-depth story.

If I return to this one, I'm slashing it down aggressively. I don't want ATB fighting, I don't want dungeons, I don't want a big portentous narrative. The maps are the part I'm excited about, so I want to refocus the project around them. I still like a lot of my ideas for the story and fighting, but they'll work just as well as part of a concise dedicated dungeon crawl game down the line, if I feel so inclined. Better to focus on what's exciting me Right Now and actually finish the project then get lost in the weeds tying a bunch of disparate ideas together.

I still feel like I need some kind of fighting and character progression, because I want there to be resistance/structure to exploring the maps. Blocking specific pathways with hard monster fights and making the player accrue resources to beat them is one organic way of shaping a top-down world like this. Since I'm not interested in adventure game puzzles for this story, it's the approach that makes the most sense to me.

Honestly I've thought from the beginning "I wish this was like Ys or Hydlide". Those games had the balance of simplicity and resistance I'm basically after. But I didn't think I could program that in RPGMaker, and I certainly didn't think I could code action game bosses that were suitably ostentatious to match the Epic Story I had in mind.

But if I didn't care about having an epic story, if I let it just be a light silly game, maybe a streamlined combat system was an idea worth revisiting. And while making an Ys or a Hydlide in RPGMaker still seems beyond me, I could actually picture the (VERY cute) system from For The Frog The Bell Tolls working nicely with RPGMaker events.

Three hours of fiddling later, I had this. It feels good and right. I'm pleased with it. I might be excited to work on this project again, maybe.


I'm like most people on earth in that I'm stretched pretty thin most of the time. I work a full-time job, I have people I'm close to I like spending time with, I have other interests I dedicate a lot of myself to. If I want to be a creative person, I need to find ways of being creative that fit in around everything else going on in my life.

That means I can't force myself to work on projects I'm not enjoying, because I over-scoped, because the fun parts of creation are out-weighed by the not-fun parts. When I say "I can't" I mean it literally -- my body will not let me work on art if I'm not enjoying it. I don't have enough energy for that. So instead I spend months dreading the stuff I "have" to do sometime in the future, and I let that dread poison the rest of the creative process.

Maybe this is a naïve way of telling stories. Maybe continuing to chip away at projects even when they aren't satisfying to work on is the mark of a real, disciplined artist, and I'm revealing myself to be a hobbyist pretender. If so, fine. At least I'm having fun again.

Facets Spoilercast with Rayven

Art by Rayven!

My friend Rayven played through my game Facets on their Twitch recently; I had a ton of fun watching the playthrough! Afterward they invited me onto their stream for a spoilercast/interview and picked my brain about the game.

You can listen to the interview here. It was a blast -- I love talking about my games, and Facets is particularly close to my heart. I yapped a bunch about the dev process, things I love about it, and weaknesses in its perspective I'd like to address in future games. Give it a listen!

Thursday, October 15, 2020

Irons in the Fire

Hi there! It's been a bit huh? I hope you're hanging in there okay. 

I've done very little creative work this year, like a lot of folks. I'm trying to be gentle to myself about it. I contracted covid in June, and while the symptoms weren't too serious, I took a full six weeks to test negative and finally leave isolation. It was pretty traumatic and miserable!

I did contribute to the SMPS Game of the Decade list. This is our best and most expansive list project ever -- everyone was allowed to contribute up to 100 games, which means there are a LOT of oddball non-obvious picks. I think it's a lot more interesting than comparable lists from big games sites. Give it a read! We also did a long live podcast counting down the top 100 games on the list. You can listen to that here.

I don't usually talk much about in-progress creative work. I'm fickle and often drop projects that aren't working out for whatever reason, so I don't like feeling socially "locked in" to certain projects. I also just think it's self-indulgent -- I'd always rather hear about finished projects from a dev than see pretty gifs for something that might be finished, someday, maybe.

That said, I think I'm entitled to be a little self-indulgent.

RPGMaker explorey game

This project started off as a sort of indirect Facets sequel. The idea was that you'd play as a bunch of dead people going through dungeons in purgatory, including Alyssa, and there'd be sad Persona-y setpieces where they'd confront their regrets. I finally stopped work on it 'cause it was just really goddamn bleak.

However, I'd already started working on the first dungeon, which was going to be a forest/mountainy maze. I really loved what I was doing with the maps. I thought about making a game that was just one big forest/mountain/cave dungeon (all tiles handily baked into RPGMaker 2003), and what kind of story would suit that. 

After a while, I figured out the story I wanted to pursue. Then I experimented in RPGMaker and figured out some neat aesthetic ideas, and finally some nifty combat/character progression/navigation rules. Then, early this year, I made over a dozen huge detailed maps, about a third of the ones I'd need for the blown-up scope of the final game. It's really fun to run around the maps and explore. Most of my level design work is pretty abstract and gamey, so it's nice to work on a game that feels like a real place for once.

Facets was a taxing Yume Nikki/SaGa 1/survival horror-type game, a kind of game I love. This one's shaping up to look a little more like Skipmore or certain Falcom games: big pretty maps to explore full of grass and trees, backgrounded story, nice music, actual leveling and character progression, not too demanding. It's a kind of game I adore, and it's completely different from any of my past work. If I can land the story I have in mind, I think it has the potential to be really special. 

I stopped work entirely on it shortly into quarantine. And right when I was starting to get my groove back, I got covid. I'm working on other stuff now. I want to finish a few smaller projects before jumping back into my next big RPGMaker opus -- it's just too intimidating for where I'm at right now. I know it'll still be there for me when I'm ready.

Collab action explorey game

I'm really excited about this one x) My friend Toby Alden invited me to contribute a "New Game +" remix map to an action/explorey game they're working on. The base game is already basically finished (and excellent), now it's all up to collaborators like me to finish our contributions and help Toby's good work shine as bright as it possibly can.

I think this game's gonna be really good, and I'm excited to be a part of it! Toby has a fantastic backlog of work you can play here. Go enjoy it if you haven't already!

Mystery visual novel

Crediting this one entirely to reading Higurashi for the first time (after adoring the show ten years ago) and getting super-energized about visual novels and stories in general all over again. (Higurashi is really good. The first game is currently free on Steam and GOG, and it's a very exciting satisfying journey on its own. Give it a look!)

I shouldn't include this one 'cause I'm not too far into it, but I've got a pretty decent chunk of the first draft done and I'm REALLY excited about it. If the draft comes together the way I want, I'll start work with an artist friend or two and get a real game together. Please look forward to it!


Thanks for reading! Rest up and take care of yourselves friends. The next couple months are gonna be... a lot, probably.


Friday, August 23, 2019

Expanse


I made an arcade-style shoot-em-up! I've wanted to for ages; it's one of my favorite genres. I've made shmups before, but never the kind with lives, score, separate stages, all that good stuff.

It's called Expanse. My goal was to make an action game more varied than my past work, so it has a lot of different enemy types and set-pieces. It took about two months to make, and I'm very pleased with how it came out!

I released it about two weeks ago. My players seem to enjoy it a lot. The main game is gentle by shmup standards, but still pretty tricky. There's a practice mode so you can drill any stage you've reached in the main game. I hope you give it a look!

Current high score belongs to Polly!

Monday, August 19, 2019

Source Projects Uploads


I finally uploaded the source projects for all the games I've worked on to Itch. I've been meaning to for ages, just kept putting it off.

Be warned -- because my projects are generally small-scale and solo-built, I rarely put much effort into keeping the code clean and readable. But now it's accessible, in case you want to poke around and see how I implemented certain ideas. I also had a friend float the idea of doing a Scratch-style aesthetic remix of one of my games, something I wholeheartedly support.

To review, here's what each game is made in:

Game Maker Studio 1.X - Quarantine, Fugitive, Into the Vortex, Dance Party, Ants - A Love Story, Operation K.A.T.B., Frog Adventure, Hummingbird Lovers, Kikai, and Expanse.

All these projects should compile in Game Maker Studio 1.4 except Fugitive, which uses several obsolete features from Game Maker Studio 1.2. You can still look around the project without compiling however.

If you have an idea for a 2D game, you can probably build it in Game Maker. These days I like working with simpler, stricter tools, but Game Maker's still my editor of choice for anything action-focused.

If you do not already have a license for Game Maker Studio 1.4 (the final release before version 2 took over)... you can't get one anymore! Sorry! If you do have a license you should still be able to download the installer from YoYoGames' site.

Puzzlescript - Spider's Hollow

Puzzlescript is a tool for making Sokoban-style block-pushing puzzle games. It has a beautiful coding language for creating new and interesting rules, and the aesthetic restrictions are tactful and lovely. It's available for free right here.


Ren'Py - Her Lullaby, Afterward

Ren'Py is a tool for making visual novels, which as everyone knows are the best kind of videogame. The online documentation is pretty rough, but the tool itself is excellent and accessible. It's available for free right here.

ZZT - Atop the Witch's Tower

ZZT is an ASCII adventure game from 1991 by Epic MegaGames. It also has a VERY robust level editor that spawned a small community of hobbyist game developers, a community which lives on to this day. You can download ZZT and countless ZZT levels for free off Archive.org.

RPGMaker 2003 - Facets

If you haven't doodled around in at least one RPGMaker variant then you're not a real game developer. There's no source download for Facets on its page -- that's because you can take the game download as is and load it up in RPGMaker.

You can purchase 2003 or many of the other releases on Steam. Besides the classic 2000/2003 releases, I'm most partial to VX Ace.

Flickgame - My Wish For You

I didn't actually upload this game's source project (to preserve the web page's aesthetic), but it's really not hard to see how I made it. Flickgame is the simplest editor on this list, and I cherish it.

I hope these resources are of use to you!

Wednesday, July 31, 2019

Saber's Mark


A couple months ago I threw the words "my noble phantasm is" into a Markov text generator, and I found the results weirdly evocative. I expanded the text into a short story as an exercise, and wound up liking it so much I posted it on AO3.

I wrote a follow-up to that story called Saber's Mark. It's about three times as long and much more ambitious. I'm really happy with it! It's all original characters, so you don't need to be familiar with any specific Fate/stay night story to enjoy it. (It does assume some basic knowledge of the setting.) I hope you'll take a look!

Friday, July 12, 2019

Combat Design in RPGMaker 2003 — A Technical Rundown of Facets’ Bosses

I've heard a few friends ask about how to program complex enemy behaviors in RPGMaker. There are lots of conceptual resources on this, but not as many technically-focused ones. I spent a lot of time last year fiddling with RPGMaker 2003's combat tools, so I'm going to go over what I've learned by explaining how each of the bosses from my game Facets work on a back-end level. This documentation assumes a basic level of familiarity with RPGMaker. I’m focusing on the 2003 version, but a lot of these principles are applicable to other versions as well. My hope is that this post will serve as a reference to readers who want to make interesting combat encounters in their RPGs. I’m not an expert obviously, but I want to help developers expand their toolbox for this sort of game design. Feel free to download Facets and open the game in RPGMaker 2003. The RTP assets might not load correctly because of differing folder paths, but you should still be able to look at the back-end scripting in the database and follow along. Note that I left in all the default skills and monsters, so you’ll want to scroll to the bottom of each tab to see the ones actually used in the game.1
The Crawler is probably the first boss a player will fight in Facets, and it’s one of the simplest. The Crawler randomly picks between just two attacks at first: Attack and Fire. Attack is one of the default abilities available to every enemy. Its damage is determined by the enemy’s attack stat and the target’s defense. Fire is a skill, so the damage it deals is mostly determined by its “Effect Rating.” It deals about 30 damage, with a variant of 5 or so. You can see that because the Crawler uses Fire, I also made it strong against fire based attacks and weak against ice. It has an “E” rank for fire meaning it takes very little damage, and an “A” rank for ice meaning it takes about double damage. (You can change these percentages in the attributes tab.) You’ll note that both Attack and Fire have the same Priority in the Crawler’s movepool: 50. In my experience, if you set a single move’s priority to 100 and the other to 50, it will use the one with 100 every single turn. I mostly only use priority to let bosses choose randomly between a set of 50-priority moves, or to force the use of a single 100-priority move with switches. You can control what moves a boss has available to it by setting “prerequisites” to moves in its move pool. This is how I change the Crawler’s behavior in the second half of the fight.


Once the Crawler hits half HP, it has a chance to activate its “Power Up” cycle. Power Up is a buff that raises the Crawler’s attack, and I’ve included the same skill three times in its movepool. The first Power Up becomes available at <50% HP. Once it uses that first Power Up, a switch is turned on and the second 100 priority Power Up becomes available. It will always use this on its next turn, because all other available moves are 50 priority. This second Power Up in turn activates another switch while turning off its own switch, so now once again there’s only one 100 priority move available: the third Power Up. Which in turn turns off its own switch and activates a final switch. This switch turns on the 100 priority Attack move. The end result of all this? A little after the Crawler hits half HP, it uses the Power Up buff exactly three times in a row to dramatically raise its attack. Then it starts using exclusively physical attacks and one-shotting your characters. The player has just enough time to kill the Crawler before it starts getting off these attacks, so it turns into a race to kill the Crawler before it finishing buffing itself. It’s pretty exciting! And all it takes is a few switches and no custom battle events. By manipulating the available move pool of your boss with HP totals and switches, and selectively forcing certain actions with 100 priority moves, you can make interesting behavior with very little programming logic.
The Medusa functions similarly to Crawler, except she doesn’t use any switches at all. She just has two different movepools dependent on her HP total. At 50-100% HP, she uses Attack and Bolt. Under 50% HP, she uses Attack, Double Attack, and Gaze (a skill that deals no damage but has a chance to insta-kill your characters). It’s not complex, but by giving the boss two action pools dependent on her HP it immediately feels more dynamic than an enemy with a static move pool. Note that her agility is slightly higher than the Crawler, so she attacks more often and feels a bit more dangerous as a result.
I had to squint a bit to remember what was up with the Mimic -- its action pool looks more complicated than it is just because I wasn’t ready to make custom battle events when I first made it. All it boils down to is that the Mimic uses Attack OR Ice three times in a row, then uses “Regenerate” (which fully restores its very low HP). The first action turns on the Mimic1 switch, the second turns on the Mimic2 switch, the third turns on the regenerate switch. Then it starts over from the beginning. The switches work the same way as in the Crawler fight -- it still uses three actions in a row, and then a different fourth action. But those three actions can each randomly be either Attack or Ice, and after using Regenerate it starts the cycle over again by resetting its switches.
The Lamia is the first boss the player will encounter that uses custom battle events to govern her behavior. Battle events are bits of programming logic you set at the encounter level that let you design more sophisticated enemies. You can view these battle events under the “Monster Group” menu. Like actions in the Monster tab, each battle event has a precondition, and the game checks all of these preconditions once per turn. If a precondition is true, the event activates. You can set an event to activate once every turn by setting it to “1x turn”. You can also set it to activate when a specific enemy’s HP is low, or when a switch is activated.2 The Lamia is one of the most complex enemies in the game, because I had a very specific effect in mind I was going for and I really wanted to shoehorn into RPGMaker’s engine. She has a pool of four actions from 50-100% HP: Attack, Constrict, Venom, and Fire. It works the same way as the previous bosses we went over. At 50% HP, the “Unhinge Jaw” skill is activated by a battle event. This is a blank skill that does nothing -- when the Lamia uses it, she flashes for a second, and then the text “Unhinge Jaw” flashes across the top of the screen. Blank skills like this are the ONLY way to pass messages in the small window at the top of the screen, and you CANNOT activate skills directly from the custom battle events. Whenever you want to have a battle message like this, it has to be in the form of an actual enemy action. (You can activate normal text boxes in battle from the battle events, but these take the place of the battle action window and generally feel clunky.) The Unhinge Jaw action turns on a switch, forcing the Lamia’s next turn to be the Swallow action. Swallow is another blank skill because its behavior can’t be defined in the Skill window. It just activates a switch that in turn activates a custom battle event.





The battle event activated by the Swallow switch removes a party member from the battle, permanently. Specifically, it flashes a “Bite” battle animation across the chosen player character, waits for the animation to finish, flashes the screen white for 0.5 seconds, and then during that flash removes the character from the party. The battle events keep track of how many characters have been Swallowed with a variable, and after a certain number of turns it reactivates the “Unhinge Jaw” skill, setting the process in motion again. The code for this is much more complicated than it needs to be because I originally wanted the Swallow event to select a character randomly. That’s why there are so many extra branch events. I ultimately settled on it activating first on Rory, then on Claire, then on Ellis. This was simpler both to code and to balance, and I think it’s a better player experience. There’s a problem though: RPGMaker doesn’t let you remove the final player from the party. Ideally, the Lamia should be able to Swallow the last character and then trigger a Game Over. I got around this by adding a fourth, blank party member to the team during the flash and then immediately removing Ellis. This allows the game over to work like normal. (Note that the player can see the blank party member added in the battle menu, so it’s still not a perfect solution.)

The Bat is much simpler. It uses the “Triple Guard” action immediately at the start of the fight. This is an empty skill that does nothing but play the Triple Guard battle animation over the Bat. The bat has very high defense and needs to be attacked with Magic -- the Triple Guard animation is just there to telegraph the bat’s high defense and explain why it’s there.3 Immediately after using Triple Guard, it uses “Toxin”, which poisons all party members. After that its movement pool is limited to just “Life Drain” and “Magic Drain”. Its only custom battle event is a timer, which turns back on the Toxin skill switch every 20 turns.
The Carbuncle is mostly simple: it uses all three elemental spells and the heal move. At 50% HP, a custom battle event turns on the “End of Us” ability, a blank skill which activates a custom battle event with a switch. Said battle event plays a pretty rainbow animation, stores each party member’s HP into a variable, and then subtracts that value - 1 from their HP. This multi-step process is necessary to set every party member’s HP to 1 -- you can only add or subtract party HP in battle events, not set it directly. A switch ensures The End of Us is only activated once per battle.

This is mostly straightforward, especially compared to the Lamia. Where it gets tricky is the Carbuncle’s “Barrier.” At the start of the fight, the Carbuncle uses a skill called “Barrier - 200 HP”. This plays an animation and turns the Carbuncle a different color. If you deal any damage to the Carbuncle while it has the barrier up, it heals to full HP on its next turn. If you deal more than 200 HP worth of damage in between the Carbuncle’s turns, an animation plays, and it changes back to its normal color. Basically, the Carbuncle puts up a “Barrier,” and you have to deal a lot of damage to the barrier in one set of turns in order to break it. Only then can you start dealing damage to the actual boss.






I made this effect by creating three separate Carbuncles. All three are present in the Carbuncle Monster group, just layered on top of each-other. The first is the only one set to “visible” at the start of a fight, and it does nothing but activate the barrier skill. This blank skill turns on a battle event which plays an animation, makes the differently colored “barrier” version of the Carbuncle visible, and erases the first Carbuncle. “Visible” is a misnomer in RPGMaker -- an enemy set to “invisible” is completely inactive. It makes no actions, and if you kill all visible enemies the encounter ends. Keep that in mind.
The Barrier version of the Carbuncle has access to all the skills of the “real” boss: Fire, Ice, Bolt, and Heal. But instead of 900 HP, it has 20,000 HP. This high number is to ensure that the player has no chance of killing it normally. A battle event checks whether the barrier Carbuncle has less than 20,000 HP, and turns on a switch if it is. This switch activates the “Barrier regenerates” skill which activates a battle event that heals the Carbuncle by exactly 200 HP.4 If the Carbuncle battle events detect that the barrier’s HP is less than 19,800, it plays an animation, makes the final Carbuncle visible, and erases the barrier Carbuncle. From there the fight proceeds normally with no other barrier trickery.


The two kinds of Sylph encounters are trivial programmatically. The first two have high HP and escape immediately at the start of the battle, so there’s no chance of the player killing them. The last one does nothing but Attack very weakly, Defend, and attempt to Escape. Because this fight is activated in the pincer formation, the escape attempts always fail.

The Wyvern doesn’t use any principles we haven’t already gone over. The boss attacks or does nothing for a few turns, and then starts counting down from 5. At the end of the countdown, it uses “Explosion”, which deals enough damage to kill any player character not using the Defend.5 The countdown numbers are just blank skills that manipulate switches. The time between countdowns is controlled with a simple counter battle event. Easy peasy.

The Slime is the only fight where I’m not fully satisfied with the implementation programmatically. The slime’s main gimmick is the “Multiply” move, which spawns another slime. I accomplished this by adding a single visible slime and then seven invisible slimes, then putting the Multiply move on a timer with battle events. The Multiply switch is turned on by the timer, forcing the slimes to use the Multiply skill, which itself turns on a "Multiplying" switch which activates a battle event. The battle event spawns another slime by flashing the screen, playing a sound, and making the next slime visible. It knows which slime to make visible because the events keep track of how many slimes have been spawned with a variable.


The issue with this is that only one use of Multiply should occur when the timer activates the multiply switch -- using the Multiply skill turns off the switch and makes it unavailable. But sometimes two slimes will queue up the multiply move at the same time and use it one after the other, spawning two more slimes instead of one. This is a much harder challenge to deal with for the player, and it occurs very randomly. I couldn't figure out how to fix this.6 The slimes themselves are very basic -- outside of Multiply, their move pool consists of Attack, Venom, Regenerate, and an elemental spell corresponding to their color and weakness.
The Phoenix is the final and hardest fight in Facets, and it’s actually made up of five distinct encounters, each one slightly different. They break down roughly into three phases -- the first fight, the middle three fights (which mostly share the same behaviors), and the last fight. It’s an intense set-piece, but easy to program because it has very few unique behaviors. Almost every part of the fight borrows from earlier bosses. The first fight is straight-forward. At 50-100% it pulls from a static move pool: Attack, Double Attack, and Fire. Under 50%, it starts counting down from five, just like the Wyvern did. It uses “Inferno”, an attack that looks different but is functionally identical to the Wyvern’s explosion. All of this is stuff we’ve implemented before. 

The second, third, and fourth fights are unique in Facets because they use actions in a static, cyclical order from start to finish. This was simple to implement: I just used the “turn on and off switches on 100 priority attacks” structure we’ve been building on since the first fight. Almost none of the attacks are new as well. Phoenix-2 uses Attack, then Constrict, then Life Drain, then Flame (a unique move to the Phoenix, but functionally just a stronger Fire with a different animation). It also has only 1000 HP instead of 1500 like the rest. This was to tighten up the pacing a bit, since the player was fighting five bosses in a row.


Phoenix-3 adds a few more moves. It uses Attack, Constrict, Venom, either Life Drain OR Magic Drain, Gaze, Flame, Regenerate, then Observe Battle (which does nothing). It also has a 200 HP Barrier set up at the start of the fight, the same way the Carbuncle did.


Phoenix-4 sets up a 300 HP barrier (with a different color) instead of a 200 HP one. It exclusively uses Magic Drain instead of choosing between that or Life Drain. It adds The End of Us after Flame. And it uses Power Up after the Observe Battle step. A ten action cycle. (It also uses “Piercing Gaze” instead of just Gaze, but from my testing it doesn’t insta-kill characters any more consistently, even though the effectiveness is set much higher.)
Phoenix-5 is a puzzley gimmick fight to follow the real climax (Phoenix-4). All it does is count down from 3, then use “Immolate.” Immolate is a copy of the Inferno ability that insta-kills your party if they aren’t Defending; the only difference is that it also deals 400-500 damage to the Phoenix, and it counts down from 3 instead of 5. All simple changes to implement (the self-inflicted damage is triggered by a battle event).

Fifteen fights and ten bosses total, all differentiated enough to be interesting set-pieces, and all concocted with only a handful of tools:
  • Altering movepools based on HP.
  • Forcing specific actions using switches and custom battle events.
  • Building actions in the custom battle events and activating them with switches triggered by blank skills.
  • Stacking invisible enemies on top of a visible one and changing them out in a battle event, or spawning new enemies entirely.
If you learn how to control these tools, there’s no limit to the enemy encounters you can craft in RPGMaker! Even if you reproduce these fights exactly (as I reproduced fights from Final Fantasy), they’ll be changed by the context of your player characters’ abilities and by the context of your story.
So open up an editor and figure out how to use a few of these tools. Start off copying from here or from stories that are important to you. Before too long, you’ll have something that only you could have made. Please let me know if you do. I’ll be happy to play it <3



Footnotes
1 Facets uses almost exclusively default resources, but I did add two small custom scripts at the start of development. One of them removes the Fight/Auto-Battle/Flee choice prompt at the start of battle. The other removes the Row command. These cannot be turned off from within RPGMaker 2003 itself. I found the scripts with some quick googling, and all it took to implement them was dragging some DLLs into the project window. 2 This is why all encounters have a Bomb and Dream Catcher event. These are items the player can use in battle that do nothing but flip on switches. The actual item effects are defined in the battle events activated by these switches. 3 I originally wanted to give the bat very high evasion, so it could dodge your physical attacks instead of tanking them. I couldn’t figure out how to do this consistently in RPGMaker, so I settled on the Triple Guard solution. 4 I used a battle event instead of a normal skill so I could set it to heal by precisely 200 HP, preserving the illusion that the barrier has 200 HP and not 20,000. Note that the Mimic’s regenerate is just a skill, so it heals a semi-random amount HP that’s only close to 400 HP, not 400 exactly. I hadn’t figured out how to heal exact numbers with battle events when I made the Mimic, and I didn’t think to go back and change it later. 5 I originally wanted the Explosion to deal more damage and require you to use Guard several times to withstand it. But defense buffs only work against basic physical attacks. I couldn’t figure out how to have a buff raise the player’s defense against skills like Explosion in RPGMaker 2003. 6 A few months ago I fiddled around in RPGMaker and realized enemies can actually revive each other after death, completely separate from the visible/invisible setting. If I do another RPGMaker game, I'm going to experiment more with this skill and see what I can accomplish with it.