# I've come up with an intriguing idea about how a succubus could perform summoning in my game's story. It's a much more sexual process that's very different from a witch's spell. I won't spoil anything, but it ties in nicely with some other events that are occurring in the game.
# I think I've finally made up my mind about what I want the "villain's" plan and motivation to be. It seems much more interesting for them to have good intentions but a flawed or misinformed approach to accomplishing their goal.
# I've been figuring out a bunch of various endings for the game. You rescue a bunch of girls, and where you choose to take them afterwards will determine what happens to them.
# None of the endings are "bad." I personally don't enjoy bad endings. They don't feel like a fitting reward for finishing a game. Besides, choosing endings in my games is mostly just a way for the player to choose what they want to see. No need to punish people for having personal preferences.
# I've been trying to find ways to show the personalities of each of the girls. It's harder to do with a single on-screen textbox that limits how much text you can show to the player at any moment.
# I particularly want to do this with Julia to show her being shy but secretly curious about everything. That will make her endings more comfortable since you'll already know she's curious about the things that will happen to her later.
# I decided to give Julia an obsession with a specific kink that she keeps casually bringing up. It makes it very clear what she secretly wants.
# As I added characters in the maps, it became painfully obvious how little gameplay this "game" has. Most of the fun is just finding situations and details about what's really going on.
# But I copied the maps from another game out of nostalgia, and they don't lend themselves well to this approach. The player wanders through too many areas with nothing really happening in them.
# Adding some traditional game mechanics might fix this, but the motivation for adding it is "filler" to make the areas between story less boring. That doesn't seem like a good reason to do anything. Ideally a game's mechanics ARE the reason for the game existing.
# Maybe I should think about this another way. How do story-driven games make exploration interesting from moment to moment?
# Phoenix Wright games are mostly a series of puzzle scavenger hunts.
# What about point-and-click adventure games? I played some as a kid and most of the fun I had was just clicking random things just to see what would happen. That approach means giving the player a way to interact with anything and having everything react in interesting ways.
# An RPG already has a contextual "talk" to interact so... make things animate in amusing ways when you "talk" to them? That seems too nonsensical for a story like this.
# Final Fantasy games are story-driven but fill their exploration with unrelated combat that tends to have very little to do with the story most of the time. It's just sort of gameplay existing along side the story. But those games design their gameplay well enough to work.
# I tend to feel that adding combat to a game is kind of an over-used generic approach to "gameplay." Yes it works. But it doesn't make sense in every situation or story.
# Gameplay isn't about mechanics anyway. It's about player objectives; the goals and challenges you give them. Guessing. Hiding. Searching. Chasing. Escaping. Aiming. Evading. Gameplay is what you're asking the player to accomplish. Mechanics are just ways for the player to attempt those things.
# You don't necessarily need elaborate game mechanics to make gameplay. Final Fantasy Adventure on the gameboy had a huge variety of interesting gameplay built out of very primitive mechanics. Maybe I should play that game again to get some ideas.
# Maybe I can just replace the boring maps in my game with ones that lend themselves more to the story interactions? It's already interesting to explore towns filled with characters to talk to since "talk" is your main way of interacting with everything.
# ... which would make all the places without characters, boring places.
# I need to flesh-out Marle's ending better. "Addicted to sex" is kind of a vague outcome. What does she actually DO? Where does she do it? What's the situation?
# Okay, a princess who's always masturbating can't just walk into their home in that state. Not daring to return, she goes "feral" ... a sexy kind of feral. But she still considers herself royalty so, she makes herself an Amazon queen. There! An interesting and unique ending.
# In fact... I should probably make ALL the character's endings equally unique and unexpected. I guess I'll re-think all the other endings now.
# Re-thinking and replacing various ending ideas to create a "balanced" variety of situations. But I have a few favorite ending ideas that are just too damn good. I can't bear to replace them, which means I'll have to replace other endings to achieve balanced variety.
# I think I've achieved a good balance in situation variety AND managed to keep most of the interesting ending ideas.
# I admit I kind of liked the ending idea where a bunny follows Julia home, her mother assumes it's a pet and insists that she regularly take it for walks, where it secretly molests her. but...
# Julia is obsessed with becoming a sex-pet. It's her obvious secret kink and a concept that she keeps mentioning during the game. So she kind of HAS to have at least one ending where she ends up as someone or something's pet.
# I think I managed to come up with a "sex-pet" ending for her that's almost as interesting.
# I figured out a clever way to turn the bunny-pet ending into a sex-pet situation. So I get to have my preferred ending and still maintain a balance of ending situation variety.
# Both endings are good... hard to decide which one to use.
# It makes more sense for Julia to choose to become the succubus' sex-pet. It completes her character-arc better.
# The other ending has her mother being replaced by a bunnygirl. But it wouldn't make sense for her mother to end up trapped making bunnygirls AFTER all the other girls get released from making bunnygirls.
# ... oh by the way, spoiler alert, I guess.
# Discovered it was possible to leave a character behind in a cave after disbanding a cult, which means the "left with cult" ending wasn't guaranteed.
# So I decided the freed lesbian cultists will take the girl with them if you leave the girl behind. Later on you can find her at their home. This also enables another sexy ending if you leave her with them.
# Discovered it was possible to leave another girl behind in a cave regardless of whether the cult is there. The cave is where you first meet this character.
# I decided to make this situation unlock another ending, but I needed to add some more characters to the cave for the girl to interact with in that ending. Well... I say "characters" but in this case, I mean a pack of wolves.
# I think I should make all the girls' "drop-off points" reversable so the player can easily experiment with different endings from the end of the game instead of having to replay the entire game. In most cases, this is a surprisingly easy change to make.
# My game is technically "done" as originally designed, but... many of the maps feel too large and empty, with nothing to do except pass through them. I need to add gameplay to this game. I probably shouldn't have waited until the END to consider that.
# The reason why the maps ended up too big was I copied their layout from another very old game I used to play in the 90's. The Quest of Yipe 3 for the Classic Macintosh, a primitive RPG. It was the first game I ever modded, so I copied the maps out of nostalgia.
# You can tell I was 14 when I modded this.
# But those maps were designed for treasure hunting and enemy encounters... which my game doesn't have... it could have them, but do I want that? A major theme of my game's story is that the monsters aren't actually dangerous, people just assume they are.
# It would be nice to find items. I always enjoy treasure hunting in games. Maybe new abilities? I can make these rewarding by having them give you access to places with sexy scenes.
# But adding a hundred abilities and moves would be kinda ridiculous. So maybe you find money and BUY the abilies? That could work, but finding nothing but money all the time might get boring.
# The game doesn't necessarily need more mechanics. It needs gameplay. Challenge the player to accomplish something interesting. Then add a twist or throw a fun monkey-wrench into the works along the way. An adventure is a plan going wrong.
# I mentioned how clever Final Fantasy Adventure was, but it's not perfect. Using up mattocks to find hidden walls is aggravating without hints.
# Zelda did the same thing with bombs. But Zelda Link to the Past added hints about where to use them to remove all the expense of random guesswork.
# Zelda Link's Awakening made secret seashells collectible. How did it do that? A promise of a mysterious reward? Periodic rewards for every 5 or 10 shells? A variety of ways to discover them? It also had a clear place to take them to.
# The princesses in my game are like Zelda's seashells. It's implied that something will happen when you find them all.
# Gameplay ultimately boils down to different ways to entertain the player. Interesting situations and concepts can also entertain. Maybe the first cave should be a mine overgrown with plants that turn out to be intelligent? That would be interesting for the player to realize.
# I can just add unexpected twists to seemingly familiar settings and situations.
# Maybe add another "hero." A character obsessed with glory who always shows up and cluelessly makes situations worse, turning them into unexpected challenges for you.
# Maybe that "hero" got defeated and ran off, leaving behind a key you need... somewhere. Then something else picked it up. Now you have to follow the correct footprints, while ignoring the wrong footprints. That's a situation that creates gameplay. These would make good sidequests.
# I could use puzzles to add gameplay to my "dungeon" areas without adding combat. But my game shouldn't just be puzzles. Doing the same kind of thing over and over gets boring. Gameplay variety is needed. Pacing. Switch between at least 2 types of fun.
# But I want to avoid fetch-quests. They get overused for side-quests. They're not even all that fun. They're better used as a ruse to lead the player to a fun situation. An adventure going wrong.
# So far, my list of possible quest / situation gameplay is something like this...
# Maybe a pacing-loop like this?
# My game's too small to need side-quests, so I think I'll go with this...
# ability => unlock new NPC hints about new scenes / places you're able to find.
# That game entertained the player in 3 ways:
And it had a repeating structure of situations that basically amounted to each these forms of entertainment "taking turns," so the game stayed fresh and the pleyer never got tired of any one of them.
# In practice, that game's gameplay loop was something like:
# The town changed after each dungeon like Paper Mario, with the characters all doing different things.
# Snes Drunk on YouTube recently reviewed an interesting SNES game called Stories of Ihatovo. No combat. Just story and fetch-quests. Kind of a 2D walking-simulator. Seems boring but it has an interesting structure.
# The "quests" aren't missons. People just casually mention peculiar things. Your curiosity drives you to seek them out, causing story to happen. It would be a good way to handle side-quests. NPC's don't ask you to do things. They just mention what they desire or odd things they saw.
# So far I've already created a surprising amount of fun just from level gimmicks. Some statue-pushing puzzles with a clever twist. A mine-cart that breaks open walls. All without any added abilities. Do I even NEED abilities? Well… I DO want treasure hunting so… probably yes.
# In an effort to add more treasures to search for, I think I'll add fortune crystals to the dungeons. Collecting them all and taking them to a fortune teller will reveal background events of how one of the girls ended up in that particular place.
# The idea is kind of inspired by a collectible in the game Psychonauts where you open mental vaults to learn a character's backstory.
# I chose to color each crystal set to help the player keep track of which ones go with each dungeon. I experimented with using one image of a crystal and then subtracting color channels to change the color to whatever I want. Good results, but takes trial and error to tune.
# I decided to just pre-render the different colored crystals as separate image files. This makes it much easier to display them in things like item menus. This also lets me fine-tune the exact colors of each.
# It also lets me adjust the highlights to be a slightly different color. What's better than colored crystals? Iridescent colored crystals!
# There are too many dragons and too many caves, maybe I should re-theme one of the dungeons. I think I'll replace the "fire cave" with a magic forest. And replace the dragon ladies with fairies. This also matches one of the player's abilities better.
# Another cave, another dungeon to re-theme. Maybe a town that was invaded by monsters long ago? This would tie into why one of the towns has an orphanage in the first place. They're refugees. Also this town could have an interesting new culture because of the monsters.
# It would also add some tantalizing foreshadowing for a different town that's in the middle of being invaded.
# I added a map system. This lets me add another item for players to find (the map itself) and it can provide Super Metroid style hints for the player to search for hidden passages.
# I've decided to avoid additional side-quests and instead just have all NPC hints refer to whatever main quests are currently available to do based on your current abilities. This leaves no room for confusion about what to do next to progress the story. All quests are relevant.
# I can still hide bonus items in the town areas. But they already have interesting characters so they don't need as much help as the dungeons to be interesting to explore.
# When you get a new ability, you can access new places. So characters with new relevant hints should move to different places to hint to the player that they have something new to say, otherwise the player would just assume these characters would just say their original lines.
# I might add a day-evening-night cycle to hint to the player that all NPC's might have new things to say. Time progresses each time you acquire a new ability, which enables access to a new place, which unlocks new hints from characters about seeking those places.
# It's natural for people to be in different places at different times of day, doing and saying different things. It creates the illusion of an overall story progressing, even though the dungeons can be done in any order.
# I've been watching a YouTube series called "Good Design, Bad Design" about how games succeed and fail at making good menus and things. It got me thinking about how I might make my little shop system more elegant.
# I was thinking about ways to show the character's personalities, and I realized that when a textbox isn't interrupting the player like in most RPGs, then a conversation can only start when the player chooses to talk to someone.
# This led me to a clever idea. I love when characters banter back and forth with each other or comment about things that are happening, so… what if a party member stepped aside and started staring at something, and when you talk to them you'll see what they have to say about it?
# But if you wander away, the party member automatically rejoins you. There's no interruption. The player can just keep walking and completely ignore the potential scene if they want to.
# This took some tricky scripting, and I even had to add a new feature to the RPG Maker so scripts can wait for program events. But the result is working beautifully!
# The tricky part about this is that it pulls a switcheroo. The "follower" character turns invisible revealing an identical "scene" sprite that you can talk to. Wandering away from the scene sprite switches back and reveals the invisible follower again.
# During a scene the original invisible follower is still chasing after the player. When it's time to end the scene, the "scene" sprite needs to walk to where its invisible clone is and turn invisible while un-hiding it in order to switch back seamlessly, so there are coordinates to juggle.
# I discovered it was easier and more seamless to have the scene sprite literally chase the follower instead of walking towards its coordinates from a half-second ago. I had already created a SWF plugin that causes sprites to chase other sprites, so I just used that.
# These character cutscenes are easier to find when editing the maps since they have their own sprite instead of the old way of hiding a scene inside an IF statement of another NPC sprite.
# Alright, let's finally take a shot at the fairy garden tileset. But... browsing through my old downloads of RPG Maker chipsets, there's pretty much nothing that looks like a hedge maze. Looks like I'll have to just roll up my sleeves and make one myself.
# Hmm... I guess I'm supposed to give credit to www.rpg2knet.com
# ... which doesn't exist anymore. (yes, this is actually what's on their page now)
# Maybe I should upload all these old files somewhere later. You probably can't find some of these anymore.
# Hmm... I think I could make this grass work for a hedge maze. Just gotta remove the grey pixels.
# This old RPG Maker 95 chipset has some NICE stone walls!
# Ooh, this fountain is nice! The fairy garden is supposed to be a royal garden that was taken over by fairies, so decorations like these would make a lot of sense. They'll also provide useful landmarks for the player while they navigate the maze.
# That's a nice archway. It might go well with the stone walls... after I change the colors to match.
# A royal garden should probably have some opulent pillars too.
# When remapping colors I usually use the pencil tool to place every color in order of brightness and place the two palettes next to each other so that colors of the same brightness match up.
# God, Photoshop's swatch window is completely useless. It's a pain to use. I can't sort the colors or even manually rearrange them to match them up with each other.
# Even the Indexed Color palette has no way to sort the colors.
# But there is one other way... ye olde ancient Save for Web dialog box CAN sort palettes!
# Just recalculate the palette by choosing one of the options.
# And use the fly-out menu to sort the palette.
# Now I just need a picture of this. Screenshot time! Aaaand just use the pencil and hold ALT to temporarily use the eyedropper to grab colors from the screenshot.
# A big part of the reason why I like the look of this stone wall are all the little colors mixed into it. But that also means it's not going to be a direct monochromatic remap. I'll put the palettes on their own layer.
# Many of the colors are simlar brightness to the greys, so I'll put them side-by-side. Colors on the left, greys on the right, original palette in the middle. I don't care if the pillar gets darker.
# Now just select the pillar's layer. Grab the magic wand, sample all layers, pick the original colors from the center palette and eyedrop to grab replacement colors from either the left or right. Then ALT+Enter to fill.
# I changed the colors, but the lighting is off. So I'll just recolor the top entirely.
# ... and tweak the left side a little. The light is not perfectly front and above, but it's closer. Hopefully it'll fit in convincingly.
# Now where am I going to find some wrought iron garden gates? Ooh! Terranigma's tiles have some NICE rusty prison bars. These are definitely iron gate colors!
# Just chop off the tops, make them pointy, and make the whole thing about 1 tile shorter. That's a pretty good iron fence.
# What about the door? I guess I couuuld just recolor the old RPG Maker prison door I've been using.
# ... aaaand round off the top into a fancy arch. Not bad! Now I just need to create the opening frames, so... indexed palette, perspective skew distortion, and scale to shrink the width. That'll work.
# I kind of want a double-door for the gates. I guess I can just horizontally flip these frames.
# But maybe I should reshape that arch to point up where the doors meet instead?
# Waiiit a minute... I already MADE a good tileset for a stone garden! Those leaves on the left will even tile together to make a hedge maze. Didn't I use this in my last game? Royal Pets? Yeah, there was a hedge maze at the end of that game. DAMMIT!
# Damn, I just finished and then remembered that Secret of Evermore literally has a hedge maze in it. I could have just used that.
# In fact, it has multiple maps with foliage mazes!
... and an archway.
... and an iron gate.
# It also has some nice statues and pillars I could have used. They even have the right lighting to match the stone wall and archway. Yeah... I think I'll use these pillars instead.
# Welp, at least I have options now. I might stick with the square style hedge tiles. A royal garden would be well trimmed.
# Hmm... remapping the colors of the Secret of Evermore pillar is looking kind of... ugly. I guess I'll cheat instead.
# First, I'll match the overall contrast of the stone wall by converting to greyscale and using auto-levels...
# ... then apply a gradient map using the stone wall's darkest and brightest colors.
# And now to add a few of those interesting colors. I think I'll start by adding a few more color stops along the gradient.
# Then replace a few colors using the stone wall's palette and slide them where their brightness seems to belong.
# Well that's... a bit better than before. At least the lighting flows more smoothly, which was the main issue. I suppose I can use this. The small pillar on the right still looks nicer, but the goat-heads will provide better landmarks for the maze.
# Whoops... my hand slipped.
# I mean, nude statues are more authentic.
# I think I'm just about ready to turn this into a tile set.
# It's pretty easy if you set up a 16x16 pixel grid with snapping.
# And a quick test map so see how it all looks together. I ended up switching the grass tile to something darker.
# The doors and statue are sprites. Which is easier for me to add since I'll never want to place pieces of the statue on the map.
# Hmm... by that logic the trees should probably also be sprites. Placing and overlapping them is a pain when they're tiles.
# BUT! Sometimes I want house tiles to overlap trees. So I do need tree tiles for towns.
# But the garden doesn't need tree tiles. I decided to rearrange the chipset and add path edges for the stone tile.
# I'm using smart objects and masks so I can easily replace all grass or stone tiles.
# The logic of this arrangement is additional floor tiles can go along the top, more path tiles can go below the stone tiles. Walls can go below the walls. And stuff I'm less certain about are placed farther away.
# Almost done with the layout. I can't believe I did ALL that in just one day!
# So I've been playing through Tales of Phantasia lately, and then I come across this place. Dude, that is one fancy looking iron fence down there... Hey, wait a minute!
# My fairy garden has iron fences. And they look kinda crappy compared to those beauties. In fact, a royal garden's fences probably should be fancy. Let's fix these.
# I considered just using the ones from Tales of Phantasia instead, but I'd still need to recolor them to match the other tiles. Also their contrast against the grass is bad. Even if I add an outline their light direction still needs to be changed to come from above. I might as well re-make them from scratch... but now with damn good reference material!
# It took awhile, but these look much nicer than the old ones! Not surprising. The old ones were built while referencing iron prison bars from Terranigma. But... this isn't a prison.
# Wait, Tales of Phantasia also had half-naked statues all along?? Damn now they're just rubbing it in.
# Hmm... decisions, decisions. I kind of want to stick with the Secret of Evermore statue because I'm proud of my boobie edit and its blocky base works better for the garden puzzle. But the Tales of Phantasia statue has a delightfully less tasteful pose.
# These new statues blend in way too much. You can barely see them.
# Adding some darker outlines and brightening the shades helps a little, but the details are still too busy and get lost in the background walls. I think I might keep using the old statues instead.
# But before I give up, there's a couple more tweaks I can try. First of all the reason the old statues work better seems to be that they are brighter overall than the walls. While the new statues have more contrast but also more dark areas, and those tend to blend into walls.
# The 2nd thing I might change could be the color. So far I've been trying to give most things the same general colors as the stone walls so they look like they belong together but this can also potentially make stuff blend together. So what if I just use a different color?
# I already do this with the tables and fountains because they're meant to stand out as landmarks. The statues serve the same purpose so it would make sense if their colors match these objects.
# But this might be overkill. These objects almost look like they're glowing. I should probably tone it down a little. Maybe turn down the saturation?
# Hmm, this is an interesting compromise. I just overlapped the blue version of the statue over the dark version and faded it halfway. This looks kind of like faded marble. I like it.
# But the only way to know for sure if it "works" is to see it in-game. Hmm... sure the blue tint helps it stand out, but... now it looks completely out of place. You'd think it was hiding a secret switch or something.
# So I'm back to my original conclusion that I should use the old statue. Making the new statue brighter sort of works but the boob details get lost in the highlights. Making it blue keeps the contrast but makes to look completely out-of-place.
# The raised arm of the left statue provides a dark backdrop for the boobs that gives them good contrast no matter what's behind the statue, and the fabric uses bright faded details that don't break up the statue's overall shape, allowing it to stand out better against busy backgrounds.
# ... It also lets me do this.
# Man, I put WAY too much effort into this visual gag.
# Much better! I just couldn't ignore how bad those wings looked.
# Now it resembles the dragon statues I was trying to imitate. I'm not sure what game they originally came from.
# Okay so, I just spent the past few hours working on a, um... walk cycle?
# Are these tentacles? Kinda. They're roots.
# A grateful witch offers you a reward, and when you step outside her house one of the bushes stands up and WALKS AWAY... allowing you to access a treasure chest.
# Maybe I could have just made it levitate or vanish with some magical sparkles or something, but nope! I felt like animating WALKING TENTACLES today.
# It's kind of an interesting challenge. Drawing it was easy, but how does it "step?" How do the roots bend to support weight? How do I keep track of its movement across the ground?
# Welp, the roof blew off my house so I packed up all my stuff to keep it safe until that's fixed. In the meantime I'll be tinkering on projects using a little old Intel NUC computer.
# My game sometimes chugs on this underpowered computer. I guess it's time to optimize the performance. Most of it runs fine, but the magic garden hedge maze is slowing the game to about 5 or 6 FPS.
# I have massively improved how the game handles player collision so that map size and number of sprites no longer matters. Just check for collision against sprites that are near the player and ignore the rest. But the garden maze still chugs.
# I discovered that firing an event every frame is actually pretty hard on the CPU. That might not even be a flaw in my code. Flash's built-in event system might be the cause.
# In contrast, just running a few functions each frame is so much faster.
# Either way, I can just avoid this problem entirely by not using events for looping code. I've switched the sprite code to just call an array of functions each frame. This is still fairly modular, but much faster. Now the garden maze runs at 8 FPS instead of 6!
# As an experiment, I tried removing ALL THE CODE from game sprites. It turns out that just having 200 empty movieClips in existence is enough to slow the game to 20 FPS.
# So it doesn't even matter how efficient the sprites are, the only solution is to reduce the number of sprites.
# I could break the garden maze up into multiple maps. That could work. Less scrolling will tend to make each map feel like its own "place" which makes navigation easier for the player.
# I had another idea. The main culprit are the invisible walls in the garden maze. There are a TON of them. But the thing about invisible sprites is, they don't need to exist... most of the time. The player only needs to see an animation when they collide with those tiles.
# The invisible walls only need to accomplish 2 things. Block the player, and animate when the player hits them.
# The actual collision can just be handled by the map itself. Maps already have solid walls, but nothing requires them to be visible. I can assign a "wall" collision-value to any spot on the map no matter what it looks like.
# So all that needs to happen is spawning animations when the player bumps into certain map walls.
# So I plan to create a new kind of sprite. A dedicated "invisible wall" sprite. I can conveniently place these in various places on the map using the editor. But when the game runs, they store their tile locations somewhere and then immediately delete themselves.
# Then I can just have a single piece of code that stores a list of tile locations and detects where the player is colliding. When the player moves it spawns collision animations when they touch those tiles. Only a few animations would exist at a time. And therefore only a few sprites.
# When I think about it, the player can only actually collide with 2 wall tiles at a time. If I wanted to be super-stingy I could cap the animations to a maximum of 2 existing at a time. If a third one spawns the 1st one can immediately de-spawn. But that's probably not necessary.
# I got it all working pretty quickly (maybe an hour?) It works pretty well. The garden maze now runs around 15 FPS on the Intel NUC, and probably faster on a "real" computer.
# This is probably good enough, but I bet I could optimize all the cracked walls like this too.
# Before doing that, I can check the potential performance gain by making all the cracked walls remove themselves to see what the framerate would be. It looks like it would hit 20 FPS instead of 15. That seems minor, but it feels noticeably better to play.
# So the plan for the cracked walls is they just need to set map collision to be a "wall"... change the map tile to a "cracked" image...
# ...and then a single piece of code can detect when the player presses the "talk" button. Make them do a "claw swipe" animation. Spawn a crumbling animation at the tile location, then remove the collision and the wall images.
# These might not even need to be placed using sprites. I could just place these as map tiles with a unique collision value, and have a game script detect when the player "talks" to any of these tiles.
# Programming the various townspeople to say different things based on what abilities you have OR based on time of day is trickier than I expected. I can do it, but it's much more complex.
# It's much harder when I want to put the same NPC in different places to hint to the player they have something new to say. If it's the same map, I could just teleport them to different spots, but it's hard to keep track of in the editor.
# It gets even harder if I want them to be on different maps, such as inside or outside houses. Do I make separate copies, or try Skyrim's technique of having one copy of the NPC in the game and just place them? I'd need to alter the editor to make that intuitive.
# Maybe I'm overthinking this. If an NPC is going to say different things in different places, then just make each of these into separate NPC's with only one thing to say and change their spawn conditions. The editor can already do that easily.
# The problem with this approach is that if any version of an NPC requires complex conditions, then the other versions need to explicitly exclude that combination of conditions. It would be better if these different versions of the same NPC did not need to know about each other.
# ... Otherwise I'm likely to have the same character appearing in multiple places by accident. I need an override system.
# I guess the solution is to try to keep the conditions simple for the NPC's. What if I use a single flag to represent a complex condition, and then have a COMMON sprite handle that flag? A "common" sprite exists all the time no matter what map you're on.
# Hmm... even with simple conditions I still need an override system. A shared state for multiple versions of an NPC. I could give each character their own variable, and have its value control which version of them appears. Yes, I think that might be the simplest way to handle this.
# ... So instead of using multiple flags, I use a single variable with multiple values. This means only one condition exists at a time. This helps with continuity. It guarantees the character only appears in one place at a time.
# This will also be easy to preview in the editor since it already lets me preview sprites based on spawn conditions.
# I could even have 2 copies of the editor open in case I want to easily change these without switching back and forth between maps. It's fine as long as both editors aren't trying to edit the same map. I'll just keep one on the COMMON map.
# I should probably try this with just one NPC before I jump straight into revising the ENTIRE GAME. That would probably be wise. If this idea is flawed then the flaws should hopefully emerge while revising one NPC.
# I just realized I was already doing something similar to this with all the "princesses" you rescue, because I wanted the game to keep track of their locations to determine each of their endings when you finish the game.
# The actual code is similar but it just sets a single variable's value. Which acts as a spawn condition for the NPC's sprites.
# Each appearance of a particular character is a separate sprite using a single variable as a simple spawn condition. The complex conditions behind each spawn are handled by its master script so the sprite itself can be simple.
# By moving the spawn complexity outside of the NPC itself, its master script can choose where they are and what they're generally up to, simply by setting that single variable. That variable acts as their global state.
# Their master script chooses what they do. The sprite itself handles the details of how they do it. And since this character's sprites use the same variable with different values, they become mutually exclusive. Only one will appear at a time. This helps avoid spawn mistakes.
# This also makes any NPC easy to keep track of because everything they're doing is grouped together all in one place, so it's easy to look up and change.
# Now the question is WHEN should these checks occur? Probably when switching maps. My exit-map trigger is still flakey, so I guess I'll use the enter-map trigger and then update all sprites after a short delay.
# Time-based hacks like these are always lame, but I don't have a choice until I can get my exit-map scripts to fire reliably.
# Obviously the right decision is to fix that bug instead of hacking around it. But I already spent most of last night trying and failing to fix this. I'm tired of wrestling with it and I need to do something else for awhile.