What if summoning spells happen to include a sort of love spell to make the summoned creature loyal to the person who summoned them.

Bascially a succubus was summoned here from their twisted sexual world where things work differently, and they're making amusingly kinky assumptions about how to solve the monster problem here in order to protect the person who summoned them.

None of this is obvious to the player right away.  There are various twists and discoveries that reveal themselves during the game.



8:07 PM, 8/7/2020
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 each of their fates.
Describing this as "their fate" seems kind of ominous.  None of the endings are particularly "bad."  I personally don't enjoy bad endings.  They don't feel like a fitting reward for finishing any game.  Besides, choosing endings in my games is mostly just a way for the player to choose what they want to see.  There's no need to punish this type of choice.




10:31 PM, 8/7/2020
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 super clear what she secretly wants.



8:16 PM, 8/7/2020
As I was placing characters in each of the maps, it became painfully obvious how little actual gameplay this "game" has.  Most of the fun in this game is just finding situations and discovering details about what's actually going on. But the maps were copies from a different game, and they don't always lend themselves to this approach very well.  Sometimes they player is wandering 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 to 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 mostly played Humongous' kiddy adventure games so most of the fun I had with them was just clicking on random things to see all the interesting things that can happen.  That approach would mean giving the player a way to interact with random things and having most things react in interesting ways.  An RPG already has a contextual "talk" or "interact"  so... make things animate in amusing ways when you "talk" to them?  That seems too non-sensical for a story like this.

- Final Fantasy games a story-driven but fill their exploration with an unrelated combat system 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."  Sure it works.  But it doesn't make sense in every situation or story.

Gameplay isn't about mechanics anyway.  It's about the game you're playing with the player.  Guessing.  Hiding.  Searching.  Chasing.  Escaping.  Aiming.  Evading.  It's what you're asking the player to accomplish.  Mechanics are just a means for the player to attempt those goals.


... or maybe I can just replace the boring maps with ones that lend themselves to story interactions.  It's interesting to explore towns filled with characters to talk to when "talk" is your main way of interacting with everything.

Which makes all the places without characters to talk to into boring places.

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.



9:10 PM, 8/13/2020
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?



9:12 PM, 8/13/2020
Okay, a princess who's constantly masturbating can't exactly 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.



9:16 PM, 8/13/2020
In fact... I should probably make ALL the character's endings equally unique and unexpected.
I guess I re-think all the other endings now.



10:33 PM, 8/13/2020
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.



10:51 PM, 8/13/2020
I think I've achieved a good balance in situation variety AND managed to keep most of the interesting ending ideas.



10:53 PM, 8/13/2020
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 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.



11:08 PM, 8/13/2020
I think 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.

I think it makes more sense for Julia to choose to become the succubus' sex-pet. It completes her character-arc better. And it makes more sense.

The other ending has her mother being replaced by a bunnygirl. But it wouldn't makes sense for her mother to end up trapped making bunnygirls AFTER all the other girls get released from making bunnygirls.



10:58 PM, 8/14/2020
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.


10:59 PM, 8/14/2020
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.


9:00 AM, 9/7/2020
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.


1:08 AM, 11/11/2020
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.

2:08 AM, 11/11/2020
The reason why the maps ended up too big was I copied their layout from another very old game I used to play in he 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.

3:08 AM, 11/11/2020
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 dangerous, people just assume they are.

4:08 AM, 11/11/2020
I'm also reluctant to add combat only for the sake of gameplay. It feels like combat is a game-design cop-out. It will work, even when you don't understand why it works. But it's not the only way to make a game fun. I'd prefer to actually understand the design of my own game.

5:08 AM, 11/11/2020
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.

6:08 AM, 11/11/2020
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.

7:08 AM, 11/11/2020
The game doesn't necessarily need more mechanics. It needs more gameplay in its explorable areas. Gameplay is not mechanics, it's just the game that you're asking the player to play at that moment.

8:08 AM, 11/11/2020
Gameplay comes from interesting and varied tasks. Guessing, dodging danger, aiming, searching for something hidden, hiding, chasing, navigating mazes, noticing odd details, figuring something out from clues. These can be created out of simple mechanics and interesting situations


9:08 AM, 11/11/2020
Challenge the player to accomplish something interesting. Then add a twist or throw fun monkey-wrenches in their way.

10:08 AM, 11/11/2020
My favorite example of this is Final Fantasy Adventure on the Game Boy. That game is downright primitive, but it uses simple features in very smart ways to create a ton of interesting gameplay. It's not perfect. Using up mattocks to find hidden walls is aggrevating without hints

11:08 AM, 11/11/2020
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.

12:08 AM, 11/11/2020
Zelda Link's Awakening made secret seashells collectiable. 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.

12:09 AM, 11/11/2020
The princesses in my game are like Zelda's seashells. It's implied that something will happen when you find them all.

1:08 PM, 11/11/2020
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.

2:08 PM, 11/11/2020
I can just add unexpected twists to seemingly famailiar settings and situations. 

3:08 PM, 11/11/2020
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.

4:08 PM, 11/11/2020
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.

5:08 PM, 11/11/2020
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 games.

6:08 PM, 11/11/2020
My game isn't all dungeons either. There are a few towns with interesting characters and an overworld. So those places should probably provide a different "game" to play. Different game-play. Cycling back and forth is basically a gameplay loop.

7:06 PM, 11/11/2020
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.



7:07 PM, 11/11/2020
So far, my list of possible quest / situation gameplay is something like this... 

Guessing
Hiding
Searching
Chasing
Escaping
Aiming
Dodging danger
Searching for something hidden
Navigating mazes
Solving Mysteries
Figuring something out from clues



7:08 PM, 11/11/2020
Maybe a pacing-loop like this?

side-quests => earn money
money => buy ability
ability => dungeon access
dungeon => sexy scenes  +  more side-quests unlocked  (implied passage of time,  not tied to any character)



7:18 PM, 11/11/2020
My game's too small to need side-quests, so I think I'll go with this...

1) money => buy ability
2) ability => access new area
3) new area => money + sexy scenes
repeat

ability => unlock new NPC hints about new scenes/places you're able to find.



8:08 PM, 11/11/2020
The best gameplay pacing loop I ever created was my Tears of Inferno game.
 http://www.humbird0.com/content/show.htm#/games/tears_of_inferno

That game entertained the player in 3 ways:
1) gameplay
2) sex scene
3) storytelling



8:18 PM, 11/11/2020
In practice, that game's loop was basically

1) Zelda-like dungeon puzzles and combat.
2) A sexy scene at the end of each dungeon.
3) Get a new ability.
4) Re-explore the town after each dungeon to discover new side-quests.
5) Sleep to see a mysterious dream to keep the story interesting.
6) Next day, people give clues about where to find the next dungeon.


8:28 PM, 11/11/2020
The town changed after each dungeon like Paper Mario, with the characters all doing different things


9:08 PM, 11/11/2020
Snes Drunk on YouTube recently reviewed an interesting SNES game called Ihatovo. No combat. Just story and fetch-quests. kind of a 2D walking-simulator. Seems boring but it has an interesting structure.
	(https://www.youtube.com/watch?v=LNp0n6LAGSY)

10:08 PM, 11/11/2020
The "quests" aren't missons. People just casually mention peculiar things. Your curiosity drives you to seek those 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 mention what they desire or odd things they saw.

11:17 PM, 11/11/2020
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.

01:52 PM, 11/24/2020
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.

02:52 PM, 11/24/2020
The idea is kind of inspired by a collectable in the game Psychonauts where you open mental safes to learn a character's backstory.

03:52 PM, 11/24/2020
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.

04:52 PM, 11/24/2020
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.

05:52 PM, 11/24/2020
It also lets me adjust the hilights to be a slightly different color. What's better than colored crystals? Iradescent colored crystals!





9:28 PM, 11/27/2020
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.

9:38 PM, 11/27/2020
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.

9:48 PM, 11/27/2020
It would also add some tantalizing foreshadowing for a different town that's in the middle of being invaded.

11:43 PM, 11/29/2020
Added a map system. This lets me add another item for players to find (the map) and it can provide Super Metroid style hints for the player to search for hidden passages.

8:50 PM, 12/2/2020
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 relevent.

9:50 PM, 12/2/2020
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 do to be interesting to explore.

10:56 PM, 12/2/2020
When you get a new ability, you can access new places. So characters with new relevent hints should move to new 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.

11:16 PM, 12/2/2020
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.

11:26 PM, 12/2/2020
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.

12:35 AM, 12/4/2020
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.
https://www.youtube.com/user/Warbot40

12:45 AM, 12/4/2020
I don't need text in 3 places when I have a permanent textbox at the bottom. I should just re-use that. Then again, I kind of like how the shop-keeper seems to describe the items when you highlight them. Maybe I should turn the bottom textbox into a speech balloon when shopping.






10:13 PM, 12/5/2020
I was thinking about ways to show the character's personalities, and I realized that when the textbox doesn't interrupt the player, then the player needs to choose to talk to each of the characters to advance a conversation manually.

10:23 PM, 12/5/2020
This led me to a clever idea. I love when characters banter or comment about things that are happening, so what if a party member can step aside to stare at something and you have to talk to them to learn their thoughts about it?

10:23 PM, 12/5/2020
And if you wander away, the party member automatically rejoins you. There's absolutely no interruption. The player can just keep walking and ignore the potential scene completely if they want.

10:33 PM, 12/5/2020
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 beautifullly!
	(standaside-scene-banter.mp4)

10:43 PM, 12/5/2020
The tricky part is I want to pull a switcheroo. The "follower" character moves to a spot and then 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.

10:44 PM, 12/5/2020
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.

10:45 PM, 12/5/2020
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 already had a SWF plugin that causes sprites to chase other sprites, so I just used that.

10:46 PM, 12/5/2020
This party member scene setup would have been nice in the pokemon game, but it currently has limitations. To make this elaborate script reusable I needed to simplify what they do when you talk to them to a single textbox, so I can pass their dialog in as a variable.

10:47 PM, 12/5/2020
I've been wanting to add some kind of override to the copySprite feature for awhile now. It's currently kind of limited. When I want to re-use a sprite, I have one sprite overwrite ALL of its data with the data from another sprite. It would be nice to be able to mix scripts.

10:48 PM, 12/5/2020
Ah screw it, I'm just gonna add it now. It probably won't even be that hard.

10:49 PM, 12/5/2020
Yup. It was easy to add to the game. Should have done that a long time ago. But the RPG Maker doesn't make it very clear what's happening. That part will be tricky. I'll deal with that some other time. A UI design and coding challenge.

10:50 PM, 12/5/2020
These character cutscenes are easier to find in the editor since they have their own sprite instead of the old way of hiding a scene inside an IF statement of an NPC
	(old_princess_reaction2.png)
	(new_princess_reaction.png)





2:47 PM, 5/14/2021
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.
	(rm2k-collection.png)

Hmm... I guess I'm supposed to give credit to www.rpg2knet.com
	(rpg2knet-readme.png)

... which doesn't exist anymore.  (yes, this is actually what's on their page now)
	(rpg2knet-died-4x.png)

Maybe I should upload all these old files somewhere later. You probably can't find some of these anymore.
	(rm2k-collection.png)

Hmm... I think I could make this work. Just gotta remove the grey pixels.
	(edochip1.png)

This old RPG Maker 95 chipset has some NICE stone walls!
	(mchip2.png)

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 nagivate the maze.
	(add-on_5.png)

That's a nice archway. It might go well with the stone walls.
... after I change the colors to match.
	(add-on_5.png)

A royal garden should probably have some opulant pillars too.
	(terranigma_3_pillar.png)

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.
	(planning-palettes.png)

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.
	(photoshop-swatch-window-sux.png)

Even the Indexed Color palette has no way to sort the colors.
	(photoshop-palette-window-sux.png)

But there is one other way... ye olde ancient Save for Web dialog box CAN sort palettes!
	(save for web.png)

Just recalculate the palette by choosing one of the options.
	(recalculate the palette.png)

And use the fly-out menu to sort the palette.
	(sort by luminance.png)

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.
	(copy palette from screenshot.png)

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.
	(palette-remapping-p1.png)

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.
	(palette-remapping-p2.png)

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 a replacement colors from either the left or right. Then ALT+Enter to fill.
	(pillar-remapped.png)

I changed the colors, but the lighting is off. So I'll just recolor the top entirely.
	(pillar-relit-top.png)

... 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.
	(pillar-relit-side.png)

Now where am I going to find some wroght iron garden gates?
Ooh!  Terranigma's tiles have some NICE rusty prison bars.  These are definitely iron gate colors!
	(terra12.png)

Just chop off the tops, make them pointy, and make the whole thing about 1 tile shorter. That's a pretty good iron fence.
	(ironFence.png)

What about the door? I guess I couuuld just recolor the old RPG Maker prison door I've been using.
	(rm2k-prison-door.png)

... 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.
	(gate_R.png)

I kind of want a double-door for the gates. I guess I can just horizontally flip these frames.
	(gate_L.png)

But maybe I should reshape that arch to point up where the doors meet instead?
	(gate-arch-2.png)
m
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.  DAMMIT!
	(castle_outside2.png)


Damn, I just finished and then remembered that Secret of Evermore literally has a hedge maze in it. I could have just used that.
	(soe-hedge-maze.png)
	
Hell it has MULTIPLE maps with foliage mazes!
	(soe-jungle-maze.png)

... and an archway.
... and an iron gate.
	(soe-archway.png)

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.
	(soe-statues-pillars.png)

Welp, at least I have options now. I might stick with the square style hedge tiles. A royal garden would be well trimmed.
	(hedgeMazeTiles2.png)

Hmm... remapping the colors of the Secret of Evermore pillar is looking kind of... ugly.
I guess I'll cheat instead.
	(sor-pillar-remapped1.png)

First, I'll match the overall contrast of the stone wall by converting to greyscale and using auto-levels...
	(soe-pillar-auto-levels.png)

... then apply a gradient map using the stone wall's darkest and brightest colors.
	(soe-pillar-gradient-map.png)

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.
	(soe-pillar-add-extra-color-stops1.png)

Then replace a few colors using the stone wall's palette and slide them where their brightness seems to go.
	(soe-pillar-add-extra-color-stops2.png)

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 lion-heads will provide better landmarks for the maze.
	(soe-pillar-comparison.png)

Whoops... my hand slipped.
	(soe-statue-boobs-anim-3x.gif)

I mean, technically it's more authentic.
	(nude-greek-statue.jpg)

I think I'm just about ready to turn this into a tile set.
	(garden-tiles-prepared.png)

It's pretty easy if you set up a 16x16 pixel grid with snapping.
	(making-garden-chipset.mp4)

And a quick test map so see how it all looks together. I ended up switching the grass tile to something darker.
	(garden-result.png)

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.
	(statue-sprite.png)

Hmm... by that logic the trees should probably also be sprites. Placing and overlapping them is a pain when they're tiles.
	(tree.png)

BUT!  Sometimes I want house tiles to overlap trees.  So I do need tree tiles for towns.
	(houses-overlap-trees.png)

But the garden doesn't need tree tiles. I decided to rearrange the chipset and add path edges for the stone tile.
	(stone-path-edges.png)

I'm using smart objects and masks so I can easily replace all grass or stone tiles.
	(stone-path-masked-objects.png)

The logic of this new arrangement is the more floor tiles can go alone 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.
	(garden-chipset-2.png)

s*
Almost done with the layout. I can't believe I did ALL that in just one day!
	(mostly-fairy-garden-done.png)

dts* 2021-06-24_12-09
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!
	(phantasia-gates.png)

dts* 2021-06-24_12-19
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.
	(fairy-garden-old-fences-bad.png)

dts* 2021-06-24_12-29
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!
	(ironFence-revision-tests.png)

dts* 2021-06-24_12-39
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.
	(new-iron-fence.png)

dts* 2021-06-24_12-49
Wait, Tales of Phantasia ALSO had half-naked statues all along?? Damn now they're just rubbing it in.
	(phantasia-nude-statue-tileset)

dts* 2021-06-24_12-59
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.
	(evermore-boobie-statue.png)
	(phantasia-boobie-statue.png)

dts* 2021-06-25_01-09
These new statues blend in way too much. You can barely see them.
	(statues-blend-in.png)

dts* 2021-06-25_01-19
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.
	(statues-darken-outlines.png)

dts* 2021-06-25_07-03
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.
	(statue-contrast-comparison.png)

dts* 2021-06-25_07-13
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?
	(statue-change-color-gradient.png)

dts* 2021-06-25_07-23
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.
	(garden-landmarks.png)

dts* 2021-06-25_07-33
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?
	(statue-recolor-overkill.png)

dts* 2021-06-25_07-43
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.
	(statue-recolor-compromise.png)

dts* 2021-06-25_07-53
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.
	(statue-phantasia-blueFade)

dts* 2021-06-25-08-03
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.
	(statue-tweak-comparison)

dts* 2021-06-25-08-13
The raised arm of the left statue provides a dark backdrop for the boobs that gives them good contrast. 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.
	(statue-arm-fabric-shape)

dts* 2021-06-25-08-13
... It also lets me do this.
	(statue-boob-joke)





dts* 2021-06-27_06-49
Man, I put WAY too much effort into this visual gag.
	(statue-dragon-lewd1)

dts* 2021-06-28_09-18
Much better!  I just couldn't ignore how bad those wings looked.
	(statue-dragon-lewd2)

dts* 2021-06-28_09-28
Now it resembles the dragon statues I was trying to imitate.  I'm not sure what game they originally came from.
	(statue-dragon-reference1)





ts* 2021-06-14_11-33
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.

ts* 2021-06-14_11-34
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.

tds* 2021-06-14_11-35
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.

tds* 2021-06-14_11-36
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.

tds* 2021-06-14_11-37
In contrast, just running a few functions each frame is so much faster.

tds* 2021-06-14_11-38
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!

tds* 2021-06-14_11-39
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.

tds* 2021-06-14_11-40
So it doesn't even matter how efficient the sprites are, the only solution is to reduce the number of sprites.

tds* 2021-06-14_11-41
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.

tds* 2021-06-14_11-42
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.

tds* 2021-06-14_11-43
The invisible walls only need to accomplish 2 things. Block the player, and animate when the player hits them.

tds* 2021-06-14_11-44
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.

tds* 2021-06-14_11-45
So all that needs to happen is spawning animations when the player bumps into certain map walls.

tds* 2021-06-14_11-46
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.

tds* 2021-06-14_11-47
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.




*st	2021-06-14_11-57
https://twitter.com/humbird0/status/1451709352977575943
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.
	(can-only-hit-2-tiles-at-once)

*st	2021-06-14_12-07
https://twitter.com/humbird0/status/1451716778208505858
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.
	(invisible-walls-working)

*st	2021-06-14_12-17
https://twitter.com/humbird0/status/1451718757278224389
This is probably good enough, but I bet I could optimize all the cracked walls like this too.
	(cracked-walls)

*st	2021-06-14_12-27
https://twitter.com/humbird0/status/1452044264133828613
Before doing that, I can check the potential performance gain by making the all 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.
	(remove-all-cracked-walls)

st	2021-06-14_12-37
https://twitter.com/humbird0/status/1452819166134558729
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...

*st	2021-06-14_12-47
https://twitter.com/humbird0/status/1452819348339363846
...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.
	(cracked-wall-shared-code)

*st	2021-06-14_12-57
https://twitter.com/humbird0/status/1452819466841063426
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.
	(cracked-wall-image-and-id)

...  (additional posts from Twitter not yet included here)



























--------------------------------------------------------------------
--------------------------------------------------------------------
			START  (not yet posted anywhere)
			"1  posts - tweets left to upload.txt"


	Append these after tweet:
*st	2021-06-14_12-57
https://twitter.com/humbird0/status/1452819466841063426
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.
	(cracked-wall-image-and-id)
-------------


***  SECRET BLOCK HINTS  (part 1)  ***

*u	2021-06-15		(u = update feed,  still needs blog post)
Everything's working pretty well! Now I just need to figure out how to make all these "secret" blocks show up when the player uses the scanner item.

2021-06-16
The old way was to have each sprite react to the item being switched on by displaying a hint animation inside each of their sprites. But since none of these are persistent sprites anymore I need a new way.

I could make the scanner use a single image and then have code detect each of these things and modify pixels in different parts of that image.

But I don't want the scanner or the game to make assumptions about which objects are in a game, so I'll create separate code to detect things like collision ID's and tiles that use certain chipsets and announce events that the scanner can detect.

The key is these things should not make any assumptions about what exists in any game and they should not need to directly know about each other. I generally accomplish this by having things announce events, and any other code that cares about the events can respond to them.

In practice, the invisible wall code announces the positions of all the invisible walls as "invisible_wall:add"  Then I have another piece of code I can import with settings that converts these events into secret:add with an image file I can choose.

Sure a lot of events will be firing. But it only needs to happen one time. So the worst case scenario is 1 frame of animation will be slow before the map fades in.

The cracked walls use another piece of code I can import into the game that scans for a collision value and sends secret:add events. Again I can tell it which collision value to search for and what event name to send.

The game also has fake walls. They always use a faint outline as a subtle visual hint, so these can be detected by the unique chipset with the outline. So another re-usable piece of code with settings. Choose the chipset, event name, and image path to include with the event.

All these pieces work really well together but can theoretically interact with other things I make in the future, and the performance is great because the scanner's display is now just a single image overlayed over the map.

...

The thick outlines for secret tiles were TOO noticeable, to the point of being pretty distracting. So I'll try using a dithered outline.

This looks nice! The dithered look kind of reminds me of the secret passages in Final Fantasy 4. There's just something about dithered lines that suggests something is a secret.

The square outlines are actually hard to notice on bushes with items hidden inside them. Maybe I'll try using a bush-shaped outline.

That's interesting. It makes it look like the entire bush is flashing because all the darkest colors turn into bright colors. It's interesting, but I don't think I want it to stand out THIS much. These are supposed to be hints, not sirens.

Dithering it looks better. Maybe I should just dither all of the scanner hints so they have the same style.

The dithered hint on the bush kind of makes it look the entire bush has dithering covering it. Maybe I should only highlight the outline instead.

I like it. Not too noticeable. You almost have to look for it now. This might even be too subtle, but I personally prefer secrets with subtle hints. Besides, the player will likely keep the scanner on all the time so I don't want the hints to be too distracting during gameplay.

I like secrets that use subtle visual hints. Super Metroid is my favorite example. Even without the scanner every secret in my game already has a visual cue. The scanner just makes them easier to see.

...

The main reason to avoid completely hiding secrets with no clues is because when the player finds a scanner they feel like they have to backtrack and re-explore EVERY. AREA. IN. THE. ENTIRE. GAME... again! It doesn't matter if the rewards are optional. Repeatition is boring.
	(shantae seven sirens)

So most secrets should never be 100% hidden.
	(shantae seer ability)

But backtracking itself isn't automatically repetitive. You can add variety to each visit, or set up a different experience for the player based on which direction they're travelling through an area.

I used a technique like that in my Castlemania game, where enemies reacted to the player's position so the challenges are different when the player travels through the same room in different directions.
	(castlemania wolf drop-down chase corridor)





***  ADD MORE PLACES  ***

The overworld map that I copied from Yipe 3 has some large empty areas that feel a little too empty. I should add a few minor places to it.

First of all, these buildings were originally a casino and a shop in Yipe 3. I think I'll keep the casino and hide an optional ability there as a reward for a kinky dart game.

But my small game only needs one shop, so I should turn the other building into something else.

And maybe 2 more random places out in the middle of nowhere. So I want a casino and 3 other places.

Before I brainstorm ideas, let me look at the themes of the existing areas. I'll count how often each fetish occurs. That way I can avoid over-using the same ideas.

The overall list is kind of short. Maybe I can add a few of my other interests to add more variety.

Now I made a list of various kinky situations, and then sorted it by how effective I think each one is. I've tried to re-incorporate existing characters from the game so these places feel like they belong within the existing game.

The fairies should probably appear more than just one time. And the bunnygirls are supposed to be increasing in number so they should appear more often. The magic squirrel monster is another one-off I might consider showing again.

One place I'm adding will actually be more story-related to tie up a little plot hole. So now I'll pick 2 of the ideas based on effectiveness and how unique their situations are from the rest of the game.

Oh wait, I forgot about this random desert cave. It used to be one of the dungeons until I had a better idea for it.

This idea actually involves 2 places, so I can use that to populate both this cave and a building.

This situation involves a sequence of events. I guess I'll tie it to the player's overall progression by basing it on how many abilities they have acquired. Since one ability is optional the very last scene should also be optional.

I've finished it, but I wonder if I should handle the progression of this little story differently. Maybe I should make it more like a traditional side-quest so the story starts only after the player finds it, and continues due to player actions.

If events progress while the player is away doing other things, it might feel like a chore if they "have to" check back repeatedly over and over "just in case" anything changed.

But there are no item rewards so it's not like the player will be cheated out of any loot. But then again... the player doesn't know that, so they might feel like they "have to" come back, just in case.

Then again, having events ocurring while you're away might make the world feel more alive. I think I'll go with the experimental option and just leave it like that. I think this scenario will be entertaining even if you only catch glimpses of it.





***  SECRET BLOCK HINTS  (part 2)  ***

I kind of want to re-design the hint tiles. I've been using square outlines. Yes, these generally work but they tend to be too obvious when placed side-by-side because their outlines combine to double width, thus doubling how visible they are. I need something more consistent.

In final fantasy 4, hidden passages were marked with a distinct pattern. I like the idea of patterns having meanings.

I already use a dither pattern for all scanner hints.

I think I'll steal Final Fantasy 5's idea and use horizontal lines for fake walls.

Now, what about floor tiles with a secret? A square would indicate a tile pretty well. To make it a pattern I'll put squares within squares. But to avoid the issue with outlines combining when side-by-side, maybe I should offset the lines inward so they always have a margin.

These hints show up differently on different map tiles. Sometimes they're obvious and sometimes they're hard to see. So I need different intensities.

To test this quickly I'll just put some screenshots into Photoshop and use smart objects to display the same tile in many places at the same time. When I modify the tile, every copy of it will automatically change so I can see the result in every situation.

I've settled on 3 intensities for each style of hint.

To keep things consistent in the game, I've put together these reference guides, showing which intensity is right for each situation.

Another advantage to using different hints for walls and floors is that the scanner can highlight these patterns differently, instead of always using a square outline.

...

Welp, I finally got around to modifying my RPG Maker to allow me to use more collision ID's.  Now I can improve the game's performance in the garden by turning all the bushes into tiles, and having a single script react whenever the player "talks" to a tile.

This helps a little. But it turns out that the garden just happens to have a ton of little story scenes, so I can't entirely avoid having a ton of sprites. Hopefully the performance will be fine when I try it on a normal desktop computer. Mine is stored away at the moment.



***  FAIRY GARDEN MINI-MAP  ***

Out of all the dungeons in the game, the fairy garden NEEDS a map the most.  But how am I going to make it?  The map is huge and it's all on one screen.

What if I shrink a screenshot of the entire map down so that each tile is 1 pixel?  Nope, it's STILL too big!  The map would still cover up too much of the screen.
	(debug room with garden mini map)

Wait, what if I add a picture of the garden to the image gallery?  That picture can be MUCH larger, and the player can just toggle it on and off the screen with a single click.
	(video of opening the gallery, zooming in on this picture, then toggling the gallery off, on, and off again)

Image galleries don't HAVE to be just for porn.  They can have useful pictures too!

It won't show exactly where the player is on the map, but it'll still help a lot.

I can still give this to the player as an item. I'll add a reaction to the "gotItem" event in order to manually add this picture to the gallery, and then display it.
	(show these 2 events)

Now... where should I hide this new item?
Wait a minute. This is supposed to be the royal gardens, so... the castle would have a map to its own gardens, right?

I needed to figure out what to put in that treasure chest anyway.



***  SUCCUBUS DESIGN  ***

*  2021-08-22
Welp. I finally sat down, gritted my teeth and made the teeny-tiny modifications needed to create the succubus character I've been procrastinating on for a month. Why dis happun?

The biggest part was adding horns. That's it. The rest was just changing the colors.

WeasleX had already made a couple succubus sprites I could use, but they were waaaay too obvious for my game's story. But that's not their fault. I didn't tell them anything about the plot.

Anyway, I didn't want the whole sprite to just be different shades of purple. The flaming red hair added a good contrast.

It wouldn't make sense to get too carried away with this sprite anyway, since you only see it, like... twice in the entire game?



-------------
			END  (not yet posted anywhere)
			"1  posts - tweets left to upload.txt"
--------------------------------------------------------------------
--------------------------------------------------------------------




























dts* 10:14 AM, 12/8/2020
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.
	(npc_complex.png)

dts* 10:24 AM, 12/8/2020
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.
	(npc_complex_teleports)

dts* 10:34 AM, 12/8/2020
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.
	(npc_complex_other_maps)

dts* 10:44 AM, 12/8/2020
Maybe I'm overthinking this. If an NPC is going to say different things in different places, then just make each of these into seperate NPC's with only one thing to say and change their spawn conditions. The editor can already do that easily.
	(npc_complex_multiple1)
	(npc_complex_multiple2)

dts* 10:45 AM, 12/8/2020
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.
	(npc_complex_conditions1)
	(npc_complex_conditions2)

dts* 10:46 AM, 12/8/2020
... Otherwise I'm likely to have multiple versions of the same NPC appearing in multiple places. I need an override system.
	(npc_complex_accidental_multiple)

dts* 10:47 AM, 12/8/2020
I guess the solution is to try to keep the conditions simple for the NPC's. What if I use a single variable to represent a complex condition, and then have a COMMON sprite handle that variable? A "common" sprite exists all the time no matter what map you're on.

dts* 10:48 AM, 12/8/2020
Hmm... even with simple conditions I still need an override system. A SHARED state for multiple versions of an NPC. I could give each NPC 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.
	(npc_spawn_controller)

dts* 10:58 AM, 12/8/2020
... 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.
	(npc-intentional-duplicate)

dts* 10:59 AM, 12/8/2020
This will also be easy to preview in the editor since it already lets me preview sprites based on spawn conditions.
	(spawn_filter_preview)

dts* 11:32 AM, 12/8/2020
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.
	(two_editors_at_once)

dts* 11:34 AM, 12/8/2020
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.
	(there_are_many_npcs)

dts* 11:35 AM, 12/8/2020
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.
	(marle-garden  marle-home)

dts* 11:36 AM, 12/8/2020
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.

dts* 11:37 AM, 12/8/2020
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.
	(npc_centralized_spawn_complexity 1 2)

dts* 11:38 AM, 12/8/2020
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.

dTheir master script chooses what they do. The sprite itself handles the details of <em>how</em> they do it. 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.
	(npc_centralized_spawn_complexity 1 3)

dts* 11:39 AM, 12/8/2020
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.
	(npc_easy_to_track.png)

dts* 11:40 AM, 12/8/2020
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.
	(newmap-trigger)

dts* 11:41 AM, 12/8/2020
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.
	(sprite-update-delay)

dts* 11:42 AM, 12/8/2020
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.
	(tired)

































--------------------------------------------------------------------
--------------------------------------------------------------------
			START  (not yet posted anywhere)
			"2  posts - tweets left to upload.txt"
---------

***  NPC  ***

11:52 AM, 12/8/2020
If you're wondering why I have separate events for leaving a map and entering a map, it's because the map transition takes time and sometimes I also want to do last-minute things before leaving a map.
	*

11:53 AM, 12/8/2020
For example, if the player chooses to walk away from a situation, it could be a significant decision, and the game can detect this happening using the exit-map event.
	*

11:54 AM, 12/8/2020
After revising the sailor man, it looks like the global NPC spawn control approach will work nicely.
	*

11:55 AM, 12/8/2020
Good programming is only partly about knowing what to type. A lot of it boils down to organizing information well, or finding simpler ways to accomplish things.
	*

12:19 AM, 12/8/2020
Some characters just follow other characters around. I could either have both share the same variable, or have one read the other's variable while doing their own logic checks.
	*

12:20 AM, 12/8/2020
I prefer not to share variables so I can keep the possiblity of the characters doing separate things too.
	*

12:21 AM, 12/8/2020
Of course that means that the order will matter. The bunnygirl needs to know when the boy's position has finished being figured out. I happen to have a "wait" command that can pause until a script finishes.
	(npc_dependency_wait.png)

12:22 AM, 12/8/2020
This seems to work, updating the data correctly, but the NPC isn't spawning where their data says they should be.

12:23 AM, 12/8/2020
It was a timing issue. That wait added a delay, so the game spawned all the map's sprites before this variable was finished being figured out.

12:24 AM, 12/8/2020
Manually repeating the spawn-check afterwards fixes this. This option just tells the game to check the variables and spawn conditions for the current map again. This might seem inefficient, but the game only adds or removes sprites that change and leaves the rest alone.

12:25 AM, 12/8/2020
That boy was probably the most complicated NPC in the game. If I got him working with this approach then any NPC should be fine. The queen might be trickier since her conditions can change within the same map.

12:26 AM, 12/8/2020
The house o' lesbians definitely needs this. Coordinating all of those characters is an if-then nightmare. I might even have them all share a single variable. They tend to move as a group.

12:27 AM, 12/8/2020
I'll think I'll have a "lesbian_group" variable that they can fall back on if their individual conditions don't apply. They can wait for that the same way the bunnygirl character waits for the boy.

12:28 AM, 12/8/2020
The queen and witch might be tricky since their reactions change based on what's happening in current map they're on. I could just put all that logic inside their sprites directly, and have a shared variable if they go somewhere else like the other NPC's.

12:29 AM, 12/8/2020
In other words, the witch's shared variable places her in her room, then her sprite's logic handles all of her reactions within that room. If she goes somewhere else, none of those complex reactions would apply anyway.

12:30 AM, 12/8/2020
If her complex behavior needs to exist on other maps, then I can just use the copySprite feature to place another instance of the same sprite in more than one place, and reference her original sprite. Her spawn condition can still control where each of those instances appear.

1:00 PM, 12/10/2020
Hmm... This is one case where I don't want the witch to immediately switch states. So I'll just set the flag when the player leaves the map. But I need to set a flag to tell the witch to set a flag when the player leaves. It makes sense I promise!
	(witch_sexy_too_early.png)
	(witch_staging_a_flag.png)

2:00 PM, 12/10/2020
Mostly finished re-scripting the witch and daughter's cutscenes. A ton of things happen in this room. But now they're both single sprites instead of multiple sprites each with their own complex spawn conditions. If I ever change anything, it's all grouped into two places.
	(witch_states_1.png)
	(witch_states_2.png)


2:10 PM, 12/10/2020
Two places because her daughter might do things independently from her. Sometimes she's not even home.
	(witch_girl_states.png)

2:10 PM, 12/10/2020
The witch sometimes also runs a fortune-telling shop, or she's too busy fucking to talk. Or the situation changes in the SAME ROOM. All of that is accounted for in one place now. She'll even tell you why she's too busy.
	(witch_update_state.png)
	(witch_explains_why_shop_is_closed.png)

2:20 PM, 12/10/2020
Nothing is too complex if you break it into small enough pieces.
	(divide_the_problem.jpg)

2:30 PM, 12/10/2020
Of course I haven't TESTED any of this yet. Generally a bad idea to do a ton of programming without testing along the way.

2:40 PM, 12/10/2020
The queen does similar things. Probably simpler compared to the witch. If I'm smart I'll test the witch's scenes and then re-script the queen while this approach is still fresh in my mind. But I'll take a break first. I'm a little burned-out. Revising the witch took hours.
	(tired.gif)

10:14 PM, 12/11/2020
Some NPC's had dialog for a bunch of very specific conditions. It'd be hard to enforce dialog based on time-of-day, so I guess I won't for these characters.

10:24 PM, 12/11/2020
Normally an NPC's position is also supposed to change for each time-of-day. But since the purpose is showing the player when they have something new to say, I guess I'll just give them a different position for each dialog instead.

1:45 AM, 12/12/2020
I think I figured out how to add hints and time-of-day dialog to the more complex NPC's. When you have the ability needed to help them, an ability hint overrides their start-game state. And their end-game state should have 3 versions for each time of day.

1:55 AM, 12/12/2020
It's sort of a compromise since their dialog won't ALWAYS change after every time you get an ability, but after helping them they'll change 3 times during unrelated game progress.

2:05 AM, 12/12/2020
On second thought, maybe I should have 3 versions of their start-game state for each time of day, instead of 3 versions of their last state? Just have one end-state. The start of the game is when the player needs these hints about how the game works.

2:15 AM, 12/12/2020
I guess I'll make an exception for prisoners since they kinda... can't move.

3:43 AM, 12/12/2020
Jeez. I spent my entire week off from work re-coding all the NPC's. I had hoped to use this time actually adding new things to the game, not just make it do the same thing with new code.







***  PERFORMANCE  ***

12:03 AM, 12/8/2020
The frame-rate in maps with lots of NPC's is getting pretty bad for some reason. Are they all checking the player's onTileChange event or something?

12:13 AM, 12/8/2020
Deleting the COMMON level seems to help a lot. Maybe all the common sprites are reacting to something?

12:14 AM, 12/8/2020
The water-drown check was running on every tile-change to see whether the player was standing on water. But it only needs to check when they land from a jump because water acts like a wall when they're not jumping.

12:15 AM, 12/8/2020
That might not be the only thing causing it, but frequent reactions are likely to contribute a lot.

12:16 AM, 12/8/2020
The player abilities check for key presses on a loop, but they pause the loop until the key is pressed so they're not likely to cause slow-down.

12:27 AM, 12/8/2020
Unless that key is being HELD. Apparently I programmed the key-detection to react to the keyboard's auto-repeat. I probably don't need that.

12:18 AM, 12/8/2020
I fixed that key-repeat quirk, ironically by rewriting the keyDetect to use a looping check inside the ActionScript. This will still be more efficient because it avoids running my RPG scripts more than neccessary, which are inherently less efficient than ActionScript.

3:15 PM, 12/13/2020
I think I fixed the performace problems. I added some output that tells me each time a script is run and how many commands it runs. This helped be located the ones that were running repeatedly.
	(detect-running-scripts.png)

3:25 PM, 12/13/2020
The problem turned out to be that nearly all the prototype versions of the re-usable sprites were running even when they weren't placed in a map. A simple IF statement fixed that.
	(common-events-were-running.png)

3:35 PM, 12/13/2020
The character reactions were waiting for events inside a loop, but that wait finishes if whatever they're waiting for doesn't currently exist, causing the loop to run continuously. Another IF statement fixes this. Check if something exists before waiting for it.
	(check-before-looping.png)

3:45 PM, 12/13/2020
The reason why I want "waits" to resume when they're impossible is because a stalled script might stick around between maps, causing a memory leak. These can massively accumulate over time. Switching maps should explicitly abort all scripts, but it's safer to have this too.

3:30 PM, 12/13/2020
The slow performance was driving me crazy the past few days. I don't know why I didn't try to fix this sooner. I guess I thought it would be hard to figure out? Maybe this kind of intimidation is how technical debt happens?


7:59 PM, 12/18/2020
I had an idea to make every tree in the overworld burnable if you have a certain ability, but... after adding about 170 tree sprites the frame-rate tanked... BADLY. Yeah I know... big surprise.

8:00 PM, 12/18/2020
So I approached this similar to when all those "common" sprites were slowing things down. I looked for loops. 

8:10 PM, 12/18/2020
It turns out all of my sprites always do 3 things on each frame. Check for collision with the player, check for line-of-sight with the player, check if the sprite is being scrolled into view. They do these even when they don't have reactions for those things. Kinda wasteful.

8:20 PM, 12/18/2020
Sprites already have flags for enabling and disabling these features, so I made it so each of these loops are turned off when their corresponding flag is off. Seems obvious, but programming it took a moment to figure out.

8:30 PM, 12/18/2020
Turning each of the flags into "properties" would allow them to run functions when they change, but that would involve a lot of boilerplate code. Then I remembered an obscure little Flash feature I forgot all about. watch()

8:40 PM, 12/18/2020
You tell it to react to a specific variable changing, and a function runs whenever it does. I had written this off in the past because it cannot be set up to run multiple reaction functions for the same variable.

8:50 PM, 12/18/2020
But... what if that function fires an event? NOW multiple things can react to that variable changing. It seems so obvious now. I don't know why I didn't figure that out years ago.

9:00 PM, 12/18/2020
Anyway, that improved the framerate slightly. Another trick I could use is to disable the sprite's collision check and just modify the map's collision data instead. After all, trees don't move.

9:10 PM, 12/18/2020
I've used this trick before in my Pokemon Hentai game for some of the sprites. Map collision is super efficient because the player only checks 1 or 2 tiles in a 2-dimensional array at any time instead of looping through every sprite.

9:20 PM, 12/18/2020
Even so, none of these tricks were helping much with 170 sprites on the map. But what DID help was just running the game in Flash Player 9 instead of version 8. Apparently that version is just faster with some things. Now it runs at a brisk 15 FPS instead of 2.

9:30 PM, 12/18/2020
But there's still another problem. Going to the overworld map temporarily freezes the game for a full 4 seconds while it initializes over 170 sprites at once. Maybe I could completely re-write the sprites to use a traditional Class with shared code or something?

9:35 PM, 12/18/2020
That's very theoretical. I never liked coding with classes, and each sprite would still need to individually initialize its own scripts which is where the bulk of its complexity comes from anyway. So I doubt the hassle would even pay off.

9:40 PM, 12/18/2020
Yeah... I think I'm gonna give up on the idea of being able to burn EVERY tree in the overworld. I only really need to add "special" trees here and there that can act like doors. It accomplishes the same thing from a design standpoint. But at least my game is faster overall.







***  GAME DESIGN ***

7:40 PM, 12/16/2020
My game doesn't have enough structure. There are many towns, but only one has the ability shop. The queen asks you to look for a different princess after each dungeon, but how does the player discover that? They need a reason to go back to the queen in the first place.

7:50 PM, 12/16/2020
Multiple towns also makes it hard for the player to know where to look for clues.

8:00 PM, 12/16/2020
The queen could tell you where you go. And the destination could have NPC's who fill you in on the rest. But the player might need a hint about where the destination is.

8:10 PM, 12/16/2020
So even though it's a fairly open-ended game, each task needs to start with a predictable and linear way of learning where to go.

8:20 PM, 12/16/2020
The blunt way is for the queen to just tell the player everything and they'll ignore all the other NPC's with (what they assume) is canned repetitive dialog.

8:30 PM, 12/16/2020
But what I want is for the queen to give you a destination, and the NPC's you pass along the way give you clues about the situation there and hints about secrets you can find along the way.

8:40 PM, 12/16/2020
My Tears of Inferno game had a predictable structure for the player. Wake up in your house, the people in the game's only town talk about something that happened that day and where it occurred, you explore a dungeon at that place to discover the juicy details, get an ability...

8:50 PM, 12/16/2020
... explore a little more of the surrounding area with that new ability to find rewards, return to town to buy stuff with the money you accumulated, look for new characters and amusing side-quests in town, then go to sleep and repeat.

9:00 PM, 12/16/2020
The player starts in the same place and talks to the same relatively small group of people to learn where to go. The repeating pattern means the player knows what to do each time the game's structure loops.

9:10 PM, 12/16/2020
In my new game, the intended player-path is castle, dungeon, town, castle. Learn about a place to go, go to that "dungeon", return to town to buy a new ability, then learn about a new place you can go with your new ability.

9:20 PM, 12/16/2020
Getting to the dungeon can be open-ended exploration. But an incentive and convenient travel need to bring the player back to the main town and the queen.

9:30 PM, 12/16/2020
So first the player needs to learn that the queen exists, learn that an ability shop exists, and have a reason to come back. The player needs to know what these are for.

9:40 PM, 12/16/2020
Therefore, maybe start the game linearly so that the player can learn these things. Then after the loop is clearly understood, then open up the world.

9:50 PM, 12/16/2020
Maybe they start in the castle. Learn where to go. Pass through a linear town along the way out. Place an obvious shop near the exit. Lock off access to most of the world except for the first dungeon...

10:00 PM, 12/16/2020
After the dungeon the player has money and can only return to the main town. The shop is immediately available. Something reminds them to return to the queen. And nothing else is worth paying attention to until after you speak to the queen again.

10:10 PM, 12/16/2020
After speaking to the queen, the town should change indicating that everyone has something new and relevent to say. And the cycle can repeat with much fewer restrictions. But travelling back to the "main" town needs to be quick and easy after each dungeon.

10:20 PM, 12/16/2020
But each "adventure" doesn't necessarily end right after finishing a dungeon. There's usually another town nearby that concludes that particular situation. So I don't want an instant fast-travel available right after the dungeon or the player will miss that part.

10:30 PM, 12/16/2020
Dragon Quest Builders had warp beacons. You could only fast-travel to those beacons. I think what I need is the opposite. I need warp points that send you back to the main town, but they need to be accessed only after you leave the dungeon and pass through its nearby town.

10:40 PM, 12/16/2020
So the game could funnel you out of the linear castle and main town, let you explore the world, the current destination funnels you into another town and a dungeon.

10:50 PM, 12/16/2020
Then after finishing that dungeon, the player gets funneled back to the nearby town, leading to a convenint warp back to the main town, and then to the castle.

11:00 PM, 12/16/2020
Almost there... I want the player to return to the shop and then the queen. So maybe I should reverse their placement? Start at the shop, then the castle, then the town on the way out... Then later the player warps back to the shop and has to pass the castle on the way out again?

11:10 PM, 12/16/2020
Or keep the castle first and provide a strong incentive to go back to the castle after returning to the shop. This is a hentai game, so the promise of a sexy scene when you get back could work.

11:20 PM, 12/16/2020
Many of the pieces are already in place. But I don't want to give away the sexy secret about the castle right away.

11:30 PM, 12/16/2020
But I have an idea. If the first dungeon is guaranteed, maybe the first new ability you buy should unexpectedly lead you back into the castle when you try it out?

11:40 PM, 12/16/2020
Create a direct path from the shop to the castle that the player explores out of curiosity? They don't know that it returns to the castle. They're just trying out their neat new ability and the new path just happens to emerge there.

Starting the game with the player forced to pass through the town to access the rest of the world felt annoying and too restrictive. But completely removing the barrier makes to too easy to forget to visit the town.

Hmm... If I keep the funnel but open up its left and right sides like this, the player still tends to visit the town, but it doesn't feel like you're trapped. There's some interesting psychology going on here. I think this is the best solution.
	(funnel-toward-town.png)





9:33 PM, 12/21/2020
So after spending a solid week revising every NPC in the game to accomodate the day-evening-night cycle so the player can see when every NPC has something new to say... and then adding structure to the game-flow... I realized I don't even need the day-night cycle.

9:43 PM, 12/21/2020
With a clear structure, the player only needs to seek hints in the "main" town and quest destination. I could have the situation at the destination change drastically during that area's quest, so the player won't need time-of-day to imply those characters have new things to say.

9:53 PM, 12/21/2020
If the destination town is suddenly in the middle of an invasion the player can probably figure out the characters in that area have something new to say.

10:03 PM, 12/21/2020
This also has the benefit of the player not needing to re-explore the entire goddamn planet for hints every time they have a new quest. That wouldn't be fun for the player and it would be a lot of extra work for me.

10:13 PM, 12/21/2020
But I kind of want to keep the existing time-of-day system for some other non-critical but amusing scenes. Optional bonus stuff the player can discover if they feel like looking. But how can the player know it's optional? New content can feel like an obligation.

10:23 PM, 12/21/2020
That aside, could the game be simpler if I didn't have that? The huge revision of every NPC in the game that I already did might still be potentially useful for this new approach. The only way to know is to consider what I'd do when creating one of these places from scratch.

10:33 PM, 12/21/2020
I feel like I should be selective with visual hints for the player to talk to NPC's, otherwise I'll waste their time with characters who have nothing new to say and the change in visuals will lose its meaning. So maybe just let it be meaningless? or...?

10:43 PM, 12/21/2020
There is already one INN in the game that you can find late in the game that lets you deliberately change the time of day. Maybe that can give the player a new way to explore the game near the end? So maybe the time of day never changes on it's own. You have to use that INN.





8:20 PM, 1/11/2021
Looking for secrets and finding hidden goodies is fun. But I just don't have enough items worth looking for. I could add hazards and HP to create a desire for HP upgrades like pieces of heart, but I want to challenge myself to make a fun exploration game without combat.

8:25 PM, 1/11/2021
So I'm going to re-use a little trick from my "Tears of Inferno" game. Picture puzzle pieces. Find all pieces in a set to add a sexy picture to a gallery. But I can do better. Maybe introduce players to awesome hentai artists by adding a description of their specialty and a url.

8:30 PM, 1/11/2021
I have collected a LOT of pictures over the decades and kept track of who drew each of them, so I definitely have useful info to share.

8:35 PM, 1/11/2021
It might also be more fun to actually have to assemble the pieces instead of having them automatically turn into a picture.

8:40 PM, 1/11/2021
Since I only want each picture to require 4 pieces, I should display ALL the pieces you've collected for multiple pictures, so you're assembling multiple jigsaws at the same time.

8:45 PM, 1/11/2021
And to make things less obvious the pieces look similar to each other, so I'll make them black-and-white and use a clever photoshop trick to make them all look like line sketches. That should make the process elaborate enough to be interesting.

7:20 PM, 1/16/2021
Oh man, if you want to give yourself a solid programming challenge, try programming a jigsaw puzzle. It's not as simple as you'd think, especially if you want to allow multiple puzzles to be assembled at the same time.

7:25 PM, 1/16/2021
I can see why Nintendo wimped out and used simple tiles for their 3DS streetpass. But I'm gonna stick with it and make a real jigsaw system. It's no fun if the "pieces of heart" assemble themselves. I want to give the player a little challenge.

7:30 PM, 1/16/2021
I messed around aimlessly for awhile thinking about how the data should be stored, and realized the data tends to organize itself when I start with the UI for making the puzzles in the game editor. It's definitely coming together, slowly, day by day.

9:28 PM, 1/20/2021
I wasn't sure how I wanted to present the jigsaw puzzles in-game so I sketched up a few thumbnail mockups. I think I'll go with the middle one. Loose pieces on the left, puzzle areas on the right. Looks pretty intuitive.

9:30 PM, 1/20/2021
Building the in-game jigsaw puzzle system is proving to be pretty complex. The "loose" pieces on the left work differently than the pieces on the right and it's getting hard to handle drag-and-drop between them.

9:35 PM, 1/20/2021
I think better on paper, so enjoy my crappy handwriting! The first thing I realized is that I sould make all the pieces act the same way no matter which "section" they're in.

9:40 PM, 1/20/2021
In fact, if I make the puzzle "areas" on the right be just decorative backgrounds then this whole thing becomes massively simpler! Just let the player build the puzzles anywhere they want! And the pieces can always snap to an invisible grid to make it easy to line them up.

9:45 PM, 1/20/2021
Sure, I'll need to redo the interface again from scratch, but making it this way will be MUCH easier to code AND be more intuitive for the player. A good idea goes a long way.

3:48 PM, 1/26/2021
(talk about silly jigsaw puzzle curveball ideas)

7:40 PM, 1/31/2021
The UI is done, keyboard control is done, and I even managed to make it resize and scroll itself if it's loaded inside of a scrollPane. Now I just need to figure out how to make it communicate with the game. I'm think I'll use events at the game's "root" to do that.




***  PUZZLE PIECES ***

8:27 PM, 2/7/2021
I think I'll have the player find puzzle-pieces randomly. But I don't want duplicates so I'll make a list of every piece in the game and then shuffle it.

8:30 PM, 2/7/2021
Huh that's weird, I could have sworn Flash had an array.shuffle() command. I guess I'll have to make my own.

8:40 PM, 2/7/2021
I think the most efficient way to do this is to sort using a comparison function that makes random decisions. So it just spits out random values between -1 and 1 and the array rearranges each of its items based on these.

8:50 PM, 2/7/2021
Now I'll just grab and remove items from the start of this randomized array. So there are no duplicates and the player is guaranteed to get every piece eventually.




***  JUMP ABILITY ***

2:36 PM, 2/8/2021
I've been playing some Zelda Randomizer and I gotta say I just LOVE exploring Death Mountain. The layout of that place is so clever! Especially all the ways it created puzzles around falling off ledges and into holes.

This got me thinking about other ways I can use the jump ability in my game, and alternative things the other abilities can do.

I added the ability to jump over fences and jump up and down from ledges. Hopping over fences seems like such an obvious thing you should be able to do, and it adds a fun way to explore new parts of towns you've already been to.







2:36 PM, 2/9/2021
 (editing jump interactions with fences and walls.)

2:46 PM, 2/9/2021
 (Landing on bushes was unreliable and very slow to respond for some reason. Every bush in the map reacts and checks if the player has landed on it. Realized that it's much more reliable and faster to just trigger every sprite on that tile instead of using event reactions. Also ended up making mine carts much more reliable too.)

2:56 PM, 2/9/2021
 (Now everything is reliable enough to for the player to fall off a ledge, land on a fence, and fall off into a nearby puddle and drown. Basically a chain reaction of unrelated features responding to each other)





***  TOWN OF NOSTRUM  ***

8:34 PM, 2/11/2021
I already decided which abilities give you access to which dungeons, so I have an idea about what kinds of puzzles each dungeon should have.
These jump gimmicks will be handy when I create the "monster town" dungeon.



Should I build this new town out of simple tiles like the old maps I copied?
Nah, I already went all-out with the other towns.
Building this place is turning out to be a ton of fun! The player can only reach this place after they get the Jump ability, so I'm designing the exploration of this place to use a bunch of jump puzzles. I've taken some inspiration from Death Mountain in Zelda Link to the Past, and maybe a bit of Illusion of Gaia.




The monster town is really coming together!
The original idea was for a town that has been invaded by monsters, with people still living there.
My current idea is that the "monster invasion" is just a rumor and the town's actual situation turns out to be something differnt.

The general idea is that a small mining town is stranded on an island surrounded by a rapid rivers after most of the miners run away and the only bridge out of town gets destroyed.

The escaped miners lie about what happened. But the player won't know this until they visit and see for themselves.

I thought about the situation of the people stranded there, the various opinions the they might have about all this, and the solutions they would consider or attempt.
I imagined how their discussion would go, and this turned into a story scene and plot events that would occur while you're visiting.

Then I thought about how they're no longer mining, so I considered how the caves are being used now. This suggests some interesting places to build and things to put in there.

Then I organized the plot events into a sequence of states with key-events that transition between them. In other words, what are people doing in the town before they meet to discuss what to do? What are they doing after the discussion? When you come back later, does their plan work?

Then I figured out how many people are needed to make these scenes. So now I also know the town's population.

I'm trying to be vague about the story because I don't want to spoil the juicy details. But it ends up with a very interesting and sexy situation. Also there are dragons involved. Let's leave it at that.




10:21 PM, 2/11/2021
Hmm... does this raft look crappy enough?
	raft_janky_4x.gif

10:31 PM, 2/11/2021
Those threads barely holding it together are supposed to match up with these character's outfits, for um... story reasons.
	raft_outfits_4x.png

10:41 PM, 2/11/2021
Obviously those outfits won't be intact after the raft is built. ;-)





***  TOWN OF QUIZILOG  ***

9:29 PM, 2/15/2021
While thinking about how to place the escaped miners in other towns, I had an idea about what one of them might be doing in the desert kingdom. He could be the cause of the monster invasion there.

9:35 PM, 2/15/2021
So I relocated the nearby ice dungeon to be inside a mountain with an icy peak. The idea is that the temperatures inside are balanced between the desert heat and the cold mountain peak so the monsters could come from there.

9:40 PM, 2/15/2021
This also led to ideas about that town using its desert as a natural defense against monsters and not thinking they need guards.

9:45 PM, 2/15/2021
But now I want to tell the player about all this interesting stuff, so I added a new state to the town. Now the player can now visit the town before it gets invaded by monsters and hear about this stuff and see the miner working on the mountain.

9:50 PM, 2/15/2021
The idea is that when the player finds the ability that allows them to explore the ice dungeon, the town start being invaded.

9:55 PM, 2/15/2021
This change also has the nice side-effect of allowing the player to explore more places at the start of the game. I originally started the game with them only able to visit the 1st town and the 1st dungeon. But that honestly felt kinda closterphobic.

10:00 PM, 2/15/2021
I also had a better idea about how to handle the player's return to the main shop after each dungeon. Instead of designing the world map to force them to go through a town after leaving a dungeon to reach the fast-teleport back to the shop, I can put the teleport INSIDE the town

10:05 PM, 2/15/2021
The player will want to go there for convenience, but they won't feel forced to. And this will still lead them to return to a nearby town after finishing a dungeon so they'll see the rest of the story for that place.




8:52 PM, 2/18/2021
design concept - character-reaction scenes.txt

8:53 PM, 2/18/2021
design concept - cascade-scenes.txt

8:54 PM, 2/18/2021
design-concept - character interviews.txt




***  CHARACTER REACTIONS  ***

7:46 PM, 2/19/2021
I tried creating a "character interview" situation, but the current character reaction code isn't quite working right. They don't tend to respond well to interruptions.

7:56 PM, 2/19/2021
That's not surprising. Character reactions were originally programmed to be one-off reactions, not chain-reactions. I intentionally programmed them to ignore interruptions for the sake of reliability. Trying to make them chain-together like this is kind of a hack.

8:06 PM, 2/19/2021
Welp... "Don't make it a hack, make it a feature."  I should probably completely rewrite the reaction code to support doing this. That should make it reliable.


8:16 PM, 2/19/2021
It would be easy to just give up on this idea and continue using the existing code for reliable one-off character reactions. But this idea is just too damn good. It accomplishes so much storytelling in such a clever and efficient way. I WILL make this happen!

8:21 PM, 3/16/2021
I realized I don't need to completely re-do this script. Its reaction just needs to branch. Either a follower to transitioning to a scene, or a scene is transitioning to a scene. The rest can stay the same.

8:31 PM, 3/16/2021
This "little" change took more work than expected. I decided I wanted to simplify and clean up the script first. Too many functions calling functions calling functions.

8:41 PM, 3/16/2021
After about an hour or two of modifying the script everything worked perfectly. Wait… it actually worked? On the first try?? That's weird. New code normally has some mistakes the first few times I test it.

8:23 PM, 3/19/2021
I made a conversation between people in a town in a similar style to the party member conversation. And it works fine, but... it took hours to do the scripting. The conversation is fairly simple, but the way I coordinated the NPC's for this is more intricate than it needs to be.

8:33 PM, 3/19/2021
I should probably just use a single shared variable instead of giving each character their own independent states. It's one conversation, so what they're doing SHOULD be interdependent. It would also be a lot easier to navigate their scripts if they all match up with each other.

8:43 PM, 3/19/2021
Maybe I could take this a step further and put this entire conversation into a single script, with each character triggering different parts of it. That way I could see and edit everything that's happening all in one place.

8:53 PM, 3/19/2021
It's not immediately obvious how to pull that off, but I think it might be doable if I get creative. A structure like this would make other similar conversations much faster to create.



***  TOWN OF NOSTRUM (2)  ***

8:50 PM, 4/15/2021
I want each "dungeon" to have different gameplay. One of them is supposed to be a puzzle where the player needs to find the path that leads to the top of a mountain. But I just realized they're not given a direct reason to go up there.

8:52 PM, 4/15/2021
My original assumption was that curiosity would be enough of a reason to explore, but maybe a hint might be a good idea.

9:00 PM, 4/15/2021
I decided to use a couple "character reactions" to direct the player's attention to a seemingly inacessible ledge. It's not elegant. They're not reacting to what the NPC is saying, the characters "just happen" to become curious about something nearby.

9:10 PM, 4/15/2021
I decided to use 2 character reactions because there's no guarantee that these characters will be present in the player's party. The idea is that hopefully one of them happens to be there. Maybe I should add a 3rd character to improve the player's chance of getting a hint?

9:20 PM, 4/15/2021
Part of the puzzle involves jumping over fences. So if I add a treasure chest surrounded by fences, then the player will naturally suspect there's a way to get it, encouraging them to experiment. This kind of hint doesn't require any particular character to be with you.



9:13 PM, 4/15/2021
I replaced the Breeding Cave with an entire whole town, but the old cave had a neat part where a dragon captures one of the girls in your party and when you find them you can see their reaction and optionally choose to get them back or leave them there.

9:23 PM, 4/15/2021
The new town also has a dragon, but it's already in its lair. There isn't really another place for the dragon to carry the character away to. I suppose I could just have the reaction scene play out on-the-spot when you talk to the dragon.

9:33 PM, 4/15/2021
But it would be more fun to search for the abducted character. Maybe each character gets taken to a different place? The story implies the dragon leaves the town alone, but maybe I'll bend the rules and have it roam around a little... for the sake of gameplay.




***  ITEMS  ***

10:08 PM, 4/28/2021
I've been adding hidden treasure chests to towns and areas outside of the dungeons but I don't want to put money into them because buying abilities controls the player's progress in the game.

10:18 PM, 4/28/2021
If I put money in these hidden chests, the player would be required to find them to progress in the game. I don't know exactly how many there will be yet, and it will likely vary as they player gains access to new areas.

10:28 PM, 4/28/2021
I want game progression to only be tied to exploring the dungeons, and these outdoor treasures should just be optional goodies. So I guess I'll make them jigsay puzzle pieces. But I'll need to add more pieces to the game.

10:38 PM, 4/28/2021
I currently have the game coded to add new jigsaw pieces to the game based on your current mission so that the pictures you find represent the current characters and situations.

10:48 PM, 4/28/2021
But if the player starts finding dozens of extra puzzle pieces outside the dungeons, they'll quickly run out of pieces to find. So I guess I'll add some "filler" pictures that are not directly related to any particular quest.

10:58 PM, 4/28/2021
So how can I make it so the player still finds "Relevant" pieces first during quests, while adding all these random filler pieces to the pool?

11:08 PM, 4/28/2021
The game currently makes a randomly shuffled list of all currently available pieces. When you open a treasure chest it just takes the first thing in the list.

11:18 PM, 4/28/2021
Is there a way to always have the filler pieces at the end of this list?

11:28 PM, 4/28/2021
Wait a minute, if the behavior I want is to only use filler pieces after quest pieces run out, then maybe I should have a 2nd list of pieces containing only the filler pieces. And then a treasure chest only grabs from this list if the other list is empty.

11:38 PM, 4/28/2021
This way, all the pieces are still be found in a random order, and if a set of relevant puzzle pieces gets unlocked later on, the treasure chests will still prioritize acquiring those first.





***  FAIRY GARDEN LEVEL DESIGN  ***

3:15 PM, 5/16/2021
Let's figure out what I want in the Fairy Garden maze. It's easier to make a map if your ideas aren't starting from complete scratch. I think better on paper so... crappy handwriting time!
	(blank slate writer's block)

This map is going to replace the "hot cave" dungeon, so it'll have the same story scenes where you meet a new party member and the same overall goal of rescuing 3 people. So I need places for each of these things to happen in.
	(a hot cave scene)

I already know which ability you need in order to access and complete this place, and which items will unlock the bonus treasure chests.
	(ability-allocation_2021-05-16.png)

Okay, what kind of puzzles can I create with the main and secondary abilities?  What scenes and situations are needed to teach the player about these puzzles?  And story continuity... how did that other character manage to get in?
	(Fairy Forest design notes 1.jpg)

With that to-do list in mind, let's figure out the minimum amount and types of things I want in this level. Now I'm starting to get a few neat ideas. Multiple enterances? Player has to figure out which enterance is real. What do the fake enterances show the player?
	(Fairy Forest design notes 2.jpg)

Let's see... if each major area takes up 1 screen, then I draw a grid, that's means... about 10 screens wide and 10 screens tall?
	(fairy-garden-map-size.jpg)

Oh wait, my RPG Maker can't make maps that huge... so that would probably be way too big anyway. Let's go with half that size. 5 screens wide and 5 screens tall?
	(10x10-screen-map-is-too-big.png)

Let's start with the multiple enterances. This is a place of magic illusions.  How can I mess with the player?  False walls. Normally a level design taboo, but the player can get an optional item that reveals completely hidden things. I'll only use this for optional bouses.
	(fake-enterance.png)

Walking all the way around the outside of this huge maze would be tedious, so I think I'll put all the enterances at the bottom and block the player from going too far up the sides. It's for their own good.
	(fairy-garden-prevent-long-walks.png)

Oh, and what if there's a secret enterance too?
	(fairy-garden-secret-enterance.png)

Okay according to my notes the correct path needs a few tutorials.  Teach the player to look for breakable walls.
	(fairy-garden-tutorial-1)

Break bushes to search for hidden magic teleport statues, and demonstrate what they do.
	(fairy-garden-tutorial-2.png)

The 1st big room can also have the 1st scene with the new character.  And for fun, let's make the exit slightly hidden.
	(fairy-garden-tutorial-3.png)

And I also need to teach the player how the maze's biggest optional secret works. Light all the torches to open the path. But how can I show this? Let's have 3 matching torches inside that ignote when you light a torch outside. This shows the player there's 3 to find.
	(fairy-garden-tutorial-4.png)

I also need to show the player the overall goal. Each trapped person is inside a room like this. The player has already seen how the teleports work, so now they just need to search for them.
	(fairy-garden-tutorial-5.png)

And finally, the last scene with the new party member before they join you. All tutorials are done, so no need to railroad the player, NOW the maze can start branching like crazy.
	(fairy-garden-tutorial-6.png)

Let's throw in some invisible walls. Hidden barriers that briefly appear when you bump into them. I used a similar gimmick in my Castlemania game.
	(fairy-garden-invisible-walls.png)

Now to really mess with the player. This is a layout I call a "lost loop." A large elaborate section of maze that just loops back on itself and ultimately goes nowhere. The real path forward is hidden somewhere before you even reach the loop.
	(fairy-garden-lost-loop.png)

I'll play fair though.  First I'll teach the player what secret passages look like. A treasure chest with no way in? There's gotta be a way.
	(fairy-garden-tutorial-secret-passages.png)

These stone walls hide their secret cracks a little TOO well... Maybe? I dunno. I like subtle secrets.
	(fairy-garden-cracked-wall-hard-to-see.png)

These "inacessible" treasures should clue in the player to look for secret passages in the stone walls.
	(fairy-garden-lost-loop-chests)

Add a distinct landmark to the beginning of the "lost loop" so when the player loops around and sees it again, they'll KNOW thay're lost.
	(fairy-garden-lost-loop-landmark.png)

Add a few invisible blocks to make seemingly open passages into walls. Then hide the real exits.
	(fairy-garden-lost-loop-hidden-walls.png)

The problem with putting the entire maze in one map is that all the sprites are making the framerate really tank! There's over 130 invisible blocks and each one is checking for collision with the player. I need to make these a lot more efficient.
	(fairy-garden-slow-framerate)

They're very simple sprites with standard tile-sized hitboxes. So what if I use tile-based collision instead of hit-box based? Since the player only collides with one or two map-tiles at a time this should massively boost performance.

I already used a similar trick in my pokemon game to speed up the Tauros milking factory. I can make a sprite "turn off" its collision and modify the map's collision data. But I want these invisible blocks to animate when the player walks into them so I'll need to add that.

6:01 PM, 5/22/2021
I changed the way the player collision loops through sprites, Now the collision only checks sprites that are less than 2 tiles away from the player and ignores anything further away. This means that adding tons of sprites no longer slows down collison.

The old way would check for collision against EVERY sprite in the map on every frame. The new way only loops through all the sprites when the player steps on a new tile to make a new list of nearby sprites, and the every-frame collision only loops through that short list.




------------------------------------------
	(ALREADY POSTED)
*dts 2021-08-07_17-57
Okay so, I just spent the past few hours working on a, um... walk cycle?
	(tentacle-walk-photoshop)

*dts
Are these tentacles?  Kinda. They're roots.
	(tentacle-walk-roots)

*dts
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.
	(tentacle-walking-bush)

dts
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.

*dts
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?
	(tentacle-walk-construction)
------------------------------------------





***  CASINO MINI-GAME  ***

12:33 AM, 07/10/2021
all player abilities unlock access to new places... except the scanner.
make it a bonus item you can win at the casino
casino idea is copied from the original Yipe 3 Macintosh game.
re-create a dart game from the original yipe 3
I put a naughty spin on it when I modded that old Macintosh game back in 1998
Re-create the game using my current game engine. Instead of having a completely seperate screen, the player just walks up to the counter and "talks" to throw a dildo-dart.



***  RE-CODED THE LASER  ***

12:33 AM, 07/20/2021
make the laser more flexible by making it send events instead of just calling functions within sprites.
this allows scripts to respond to the laser hitting tiles without needing it to always hit sprites.
allows better performance, since I can make things like bushes and ice blocks into map-tiles with unique collision values instead of individual sprites.



***  RE-DESIGNED ZYPHER CAVE  ***

12:33 AM, 07/30/2021
already finished a basic version of the Zypher Cave dungeon using some of the original maps from Yipe 3
only contains story scenes
my to-do list said "add gameplay" to the zypher cave
I could just insert new maps between the existing ones, but I don't think it would completely make sense, because the gameplay I plan to add uses stuff that is missing from the existing maps, such as THE ENTIRE DUNGEON BEING COVERED IN ICE
I also have ideas to improve the existing scenes and places, to give them more of an identity.
The idea of completely re-doing the entire dungeon is kind of intimidating.
This kind of intimidation comes from looking as a "blank slate" and not knowing where to start.
The best remedy for this is to plan out what you're going to do in however much detail you need to stop feeling lost.
I decided to figure out what each room should generally have in it, and what I want it to accomplish.
I ended up with a design that switches back and forth between story scenes and gameplay.
But now the story areas take place in old ruins that have started thawing out due to the recently opened cave letting in hot air from the desert outside.
This dungeon isn't just another "cave" anymore.
The gameplay rooms each present the player with a different challenge to overcome or a different spin on previous challenges.
Nothing particularly difficult. It only needs to be just complex enough to make the player stop and think for a moment. Kind of like Zelda Breath of the Wild's shrine puzzles. Just one step up from being obvious. Just enough to be interesting.
Besides, this is a porn game. Players looking for porn usually won't have the patience for hard challenges.

alright let's make another room. I'm already feeling kind of intimidated by this next one because it's supposed to be a whole town. Even though I already planned out what to do. But let's start by tweaking the previous room. I love tweaking and adjusting things. It's a good way to get the ball rolling.






***  SHOPPING AT DIFFERENT TIMES OF DAY  ***

6:11 PM, 11/20/2021
At different times of day, the main shopkeepers can be away from the counter talking about different things, but I still want the player to be able to shop.

* 6:12 PM, 11/20/2021
My solution so far has kind of weird. The first time you talk of one of them they'll tell you you can still walk up to the counter to shop. And if the you talk to them again they'll say their new idle dialog.
	(yipe shop bad hint)

6:13 PM, 11/20/2021
But this is always a bad design, because there's no indication that a character has more dialog for talking to them repeatedly. I need a different approach.

6:14 PM, 11/20/2021
My new idea is that when the player passes in front of the counter, the shopkeeper will walk behind the counter. And when the player steps away the shopkeeper will go back to what they were doing.

6:15 PM, 11/20/2021
This should be much better because a character moving to different locations implies they'll do different things when you talk to them.

6:16 PM, 11/20/2021
Good thing I still have my old A-Star path finding code from my Pokemon Hentai game.

* 6:17 PM, 11/20/2021
They probably shouldn't be passing through this jump-barrier like a ghost.
	(yipe shop path-finding pass through jump barrier)

* 6:18 PM, 11/20/2021
I should make them jump over it. As a bonus. this also demonstrates to the player how to interact with this obstacle. So it'll also act as a micro tutorial.
	(yipe shop path-finding jump over barrier)
	
* 6:19 PM, 11/20/2021
I think this works so much better.
	(yipe shop better hint)


---------
			END  (not yet posted anywhere)
			"2  posts - tweets left to upload.txt"
--------------------------------------------------------------------
--------------------------------------------------------------------




















***  FAIRY GARDEN TILES  ***
Sprite trees are so much easier to deal with.
	(easy-trees.png)





_____________________________________
12:38 AM, 12/28/2021
Sounds effects are done, endings are debugged. I think I'm just about ready to wrap this whole thing up.
	(thats-a-wrap.jpg)

There's quite a lot of old unused maps and places that were scrapped, not to mention the debug rooms. Anyone who downloads the level editor might enjoy exploring these, so let's go in and adjust all their old teleports to still work without trapping the player.
	(D:\www\website\_ SRC\content\experiments\designing-yipe-fake-queen\leftovers\)

When it comes to game design, I like to reward curiosity.
	("D:\www\website\_ SRC\content\experiments\designing-yipe-fake-queen\the-cutting-room-floor.png")

The self-continaed EXE version of the game won't have that extra stuff in order to cut down on how many characters and images I have to import. Importing everything to turn the game into a single EXE is already a tedious process that takes hours.
	(D:\www\website\_ SRC\content\experiments\designing-yipe-fake-queen\importing-to-exe)

But maybe I can hide an easter egg in that version too in case anybody wants to explore it with a SWF decompiler. After all, my pokemon game has a similar easter egg.
	(D:\www\website\_ SRC\content\experiments\designing-yipe-fake-queen\pokemon-easter-egg\)



Naming things is surprisingly tricky sometimes. For this game, I kind of wanna go with "The Princesses of Yipe" because it focuses on the game's premise of finding princesses without revealing too much, but... this isn't an official "Yipe" game.
	(D:\www\website\_ SRC\content\experiments\designing-yipe-fake-queen\naming-is-hard\)

Yes, that is a thing.
	(https://www.yipesoftware.com/yipeiii_screens.html)

I have a lot of nostalgia for The Quest of Yipe 3 on the old Macintosh. My weird game makes some odd references to it, and I like revealing the inspirations behind these things, but I did not make the original Yipe games, and I don't want people thinking that I did.
	(D:\www\website\_ SRC\content\experiments\designing-yipe-fake-queen\great-artists-don't-steal\)

Also, the old "Yipe" games are still being sold... as shareware! It's kind of quirky and charming. I respect that.
	(D:\www\website\_ SRC\content\experiments\designing-yipe-fake-queen\shareware\)

But I think I can have it both ways. I can just pick a different name to avoid confusion with the official games, and I've already mentioned the Yipe games in these behind-the-scenes progress tweets, so the inspiration is clear.
	(D:\www\website\_ SRC\content\experiments\designing-yipe-fake-queen\knockoff-names\)

Someday I might talk about my weird history with that old Macintosh game. It's a bit more than just nostalgia. It's the first game I ever modded, and ties into my obsession with including level editors and adding fun kinky twists to games.
	(D:\www\website\_ SRC\content\experiments\designing-yipe-fake-queen\resedit\)




