Texture errors



I was optimizing some graphics code. Here's some of the bugs that happened in the middle! Featuring Ghost Cleru, extremely transparent dog with eyeball tornados, and SHADOW BUNS
2021-03-29 22:08:08 +0000 UTC View Post



I was optimizing some graphics code. Here's some of the bugs that happened in the middle! Featuring Ghost Cleru, extremely transparent dog with eyeball tornados, and SHADOW BUNS
2021-03-29 22:08:08 +0000 UTC View Post


These are jackalopes, but most people just call them buns. They come in all sorts of colors and patterns, and no two of them are exactly alike! They're a bit skittish, but you can get one to approach you if you offer some berries. They make good pets, but they need to have enough room to fly around, so most fluffs usually keep them outdoors during the daytime where they can play with other buns.
2021-03-13 00:24:46 +0000 UTC View Post
Here's a mechanic we never really showed before. At certain spots, you can go into the background! It'll mean things can have a more natural layout instead of every important object all being on one plane.
This is the last post in this series, until we get work done on the buildings and critters. Wish us luck!
2021-02-13 23:48:29 +0000 UTC View Post
They're SO bouncy!
2021-02-10 22:38:44 +0000 UTC View Post
The clouds are solid enough to build things on, but they shift around every day. Sometimes you'll have to make some big jumps to get to things that were easy to reach before... but sometimes you get lucky, and there's squishy rainbows to help you get around!
2021-02-08 22:59:04 +0000 UTC View Post
Here's what we've been working on for the past few weeks! This is the outskirts of the sky city that Cleru lives in. It'll act as a hub world, so we're making it extra-pretty! We don't actually have a name for this place yet though, so leave your ideas in the comments.
We'll be posting a new gif every few days for at least the next week, and hopefully longer!
2021-02-07 00:21:27 +0000 UTC View Post
Full comic link: http://entanma.com/nhimor-patronsonly/day56.html
This is the start of a new plot arc! The index page is here.
If it's not obvious from the URL, don't share this anywhere! The public version will be posted on January 30th, at the main site.
2021-01-20 06:15:51 +0000 UTC View PostHello, Azure here! I just released a little browser game called Panel Flux, which is a random puzzle generator based on Panel de Pon. It has a bunch of difficulty settings, sick chiptunes, and a gif export button, so go check it out!
The generator was super fun to write and I think the logic is really interesting, so I thought I'd write an article about how the algorithm works. This shouldn't get too technical, so you should be able to follow along even if you don't know anything about programming or the game itself.

The basic gameplay is that you get a limited number of moves to try to make all the blocks disappear by matching 3 or more in a row or column. You can swap them horizontally (but not vertically), and they fall down if nothing's below them. You can easily undo your moves to try different combinations, until you figure out the perfect sequence that makes the entire thing collapse!
Every puzzle is solveable in one giant chain – that is, only the final move will break any blocks, and it'll clear the entire stack as they all fall into place step-by-step. This is a restriction in the original Panel de Pon games as well (although they have a few exceptions), and it's key to making the entire thing feel satisfying.
This "chain rule" is also the backbone of the entire generation algorithm, which works backwards. The first task is making the completed puzzle state, as a big chain reaction that'll collapse on its own.

First, the generator places a set of blocks at random. This will be the final step of the chain. The generator runs through a few checks after placing each set, but none of them are relevant for this first one, so I'll just skip to the second set and explain from there.

Here's the second step, which displaces any existing blocks upwards. Each set of blocks is a random color, and it can be horizontal, or vertical, or one of each (crossing each other, but not necessarily in the middle). It doesn't always have to be at the bottom, but in this case it needed to be. The generator can also place more than one set in a single chain step for more complicated clears, which can look super cool! (There's some examples of that later.)

Here's a few possibilities for the third step, but there's a catch. The one on the far right doesn't actually form a 3-chain like the rest, since it didn't displace any of the cyan blocks from the second step! The check to prevent that is pretty elegant, though, and it weeds out a ton of more complex generation issues too.
It turns all the newly-placed blocks unbreakable temporarily, and then runs a really quick check to see if any of the other blocks are lined up in a matching set of 3. If none of them break, then that means the new ones displaced the old ones so the chain's good! If any do break, then it knows this setup's faulty, so it retries until it finds one that works. (If it fails too many times in a row then it undoes two steps instead of one.)
It turns the new blocks back to normal, and then runs the sim to see if the puzzle solves itself. This step is necessary to make sure that the new blocks didn't interfere with any of the existing ones, like if it placed two sets of the same color too close to each other.
Here's the full sequence for building this puzzle. Note how each step pushes the other blocks upwards:

So, now it has the completed state! Next step is to shuffle it so it's an actual puzzle. It picks a block at random, and moves it to anywhere that it could have come from. This can be as simple as swapping it with the block next to it, but also includes stuff like putting it up in a place that it could've dropped from (while displacing all the blocks above it). After every move, it checks to see if any blocks break, and if any do then it retries until it finds a move that makes the stack stable. It does this whole thing a different of times based on the current settings, with higher difficulties requiring more moves to clear.

Here's the shuffle steps that it picked. And now the puzzle's done!

Now it runs a few algorithms to calculate how hard the puzzle is, and also how cool it is. Both of these are pretty rough for the sake of speed, but they're accurate enough for my purposes. The difficulty check mostly looks at the numbers of each color of block, since more blocks is harder... but even if there's a ton of blocks, if only 3 of them are red, then that's a big clue for where to focus your attention on! It also gives a huge difficulty multiplier for every extra move it requires.
The coolness check mainly (but not exclusively) looks at the length of the chain and how many blocks get cleared in each step, giving bigger weight to later in the chain since it's way cooler to end on a huge 10-clear than to begin with one.
If the puzzle's too hard or too easy for the player's selected settings... it throws it all away and starts over. I tried a few different ways to make it more intelligent about its parameters to build up towards the target difficulty more reliably, but it always caused less interesting puzzles and didn't actually lead to faster gen times. Better to be fast than to be smart, I guess!

Puzzles are always generated as a set, defaulting to 5 but players can pick how many they want. It actually generates more than you ask for, though, so then it can do a bit of culling for consistency. If you ask it to generate 5, it actually generates 10 of them. It sorts them by algorithmically-determined coolness, and throws out the 5 worst ones. Then it sorts them by ascending difficulty for the actual playing order, except it always ends on the coolest one, since it'd be lame if it didn't!

That's all the important stuff! There's a few more interesting details I'd like to cover for people who are really into this, though:
• Move count, average chain length, and number of colors are determined ahead of time by your difficulty setting, in addition to changing the actual target difficulty that it aims for. All of these are given as a min/max range and it picks separately for each puzzle. You can tweak all the settings yourself too, by going to the Customize menu!
• Each difficulty setting has a range of 2 different move counts, like how Easy puzzles are always either 1 or 2 moves. It's not actually randomly picked, but instead it always ensures there's an exactly-balanced number of them both during generation and during culling. A set of 10 Easy puzzles will always have 5 one-move puzzles and 5 two-move puzzles.
• Big puzzles with only two colors are brutal, since it's really hard to tell what's supposed to match with what. They can be fun but only if they're rare, so the generator rerolls the number of colors once if it lands on 2.
• The generator exhaustively checks to make sure there's no solutions shorter than the move count, and also that there's no solutions that involve clearing blocks on anything except the last move. These are expensive checks though, so they get a bit more lenient on higher move counts, so maybe you can still find one...
• There used to be a problem in easier difficulties where you'd get several puzzles in a row that feel very similar. I implemented a system where it'll throw out any puzzles that have the same number of blocks cleared in every chain step as any previously-generated puzzle, which helps weed out most of those.
• Easy mode has a special case where it throws out any 1-move puzzles where only one possible swap can actually clear blocks.
• The "chain rule" where every puzzle is always one big chain seems like it'd limit the possibility space to be less interesting, but I think it'd be much worse without it. There's a lot of fun high-level solving logic that relies on the chain rule, and it means you never need to wait for blocks to clear during the setup steps, just the final one when you set it all into motion. Plus, it's just more fun to see it all collapse from one well-placed swap!

Links:

Full quality at much smaller filesize here!
I wrote about these Shooting Stars way back in February in this post but it wasn't actually animated until now, I had just moved things manually into position for the screenshots!
These fall from the sky sometimes, always landing in hard places to reach, and they usually have fun Trinkets inside. Just try not to get bonked!
2020-11-20 00:08:36 +0000 UTC View Post

I haven't been writing about it much, but our living situation has been really bad for the past 6 months. We've been pushing through it and looking for ways to improve things, and... there's finally a way, thanks to an extremely wonderful friend of ours! Before it actually happens though, me and Raibys needed to move away from each other, and it'll stay that way for a few more months. It's been hitting me really hard and I've found it nearly impossible to work on things.
Thank you for your patience in supporting us even with no new posts, since it's when we need your support the most. And... good luck to all of you too, since I know things have been really hard for everyone lately. We can all make it through this, I promise. ❤
- Azure
2020-11-10 15:58:23 +0000 UTC View Post
Full comic link: http://entanma.com/nhimor-patronsonly/day55.html
The current plot arc started here, 9 pages ago. The index page is here.
If it's not obvious from the URL, don't share this anywhere! The public version will be posted on October 16th, at the main site.
2020-10-05 18:14:55 +0000 UTC View Post
They can hang from stuff! If you hit them with enough berries then they fall down, but why would you want to do that?
2020-09-17 21:46:37 +0000 UTC View Post

Spoodlers are playful! They'll curl up into a ball and try to bean you, but they're so soft that it doesn't even hurt. They don't care for fruit, but they actually love being kicked around since their fluff absorbs all the impact. Sometimes they're a bit bothersome, so you might want to kick them somewhere they can't reach you!
2020-09-12 19:28:18 +0000 UTC View Post

It's a Spoodler! It hangs out in the clock tower, dances to the beat of the music and can roll up into a ball. It's completely harmless and just wants to play! This critter came out really good, so expect more spoodler gifs soon!
2020-09-10 18:43:34 +0000 UTC View Post
Full comic link: http://entanma.com/nhimor-patronsonly/day54.html
The current plot arc started here, 8 pages ago. The index page is here.
If it's not obvious from the URL, don't share this anywhere! The public version will be posted on September 4th, at the main site.
2020-08-25 00:46:13 +0000 UTC View Post
Full comic link: http://entanma.com/nhimor-patronsonly/day53.html
The current plot arc started here, 7 pages ago. The index page is here.
If it's not obvious from the URL, don't share this anywhere! The public version will be posted on August 11th, at the main site.
2020-07-29 02:07:49 +0000 UTC View Post

This is Thyme, one of Cleru's friends! Her Trick is the Twelve of Sprouts, which lets her manipulate time itself!... but only for plants, and the plant still needs the same amount of water and nutrients that it would've needed for the unmodified duration. Thyme's gardening method is a really complicated process that involves very careful measurements and constantly moving things to fresh soil. It actually has a way lower plants-to-effort ratio than normal gardening, but at least it's faster!
If you missed the article about Tricks, then you can find it here: https://www.patreon.com/posts/33978399
2020-07-25 18:04:14 +0000 UTC View Post
Full comic link: http://entanma.com/nhimor-patronsonly/day52.html
The current plot arc started here, 6 pages ago. The index page is here.
If it's not obvious from the URL, don't share this anywhere! The public version will be posted on August 7th, at the main site.
2020-07-24 20:34:28 +0000 UTC View Post
Full comic link: http://entanma.com/nhimor-patronsonly/day51.html
The current plot arc started here, 5 pages ago. The index page is here.
If it's not obvious from the URL, don't share this anywhere! The public version will be posted on August 1, at the main site.
2020-07-21 16:43:47 +0000 UTC View Post
Full comic link: http://entanma.com/nhimor-patronsonly/day50.html
The current plot arc started here, 4 pages ago. The index page is here.
If it's not obvious from the URL, don't share this anywhere! The public version will be posted on July 25, at the main site.
2020-07-11 16:20:14 +0000 UTC View Post
Full comic link: http://entanma.com/nhimor-patronsonly/day49.html
The current plot arc started here, 3 pages ago. The index page is here.
If it's not obvious from the URL, don't share this anywhere! The public version will be posted on July 18, at the main site.
2020-07-07 22:08:13 +0000 UTC View Post



This is a Hole Cat! It's a deadly predator that lives in caves, concealing itself while waiting to pounce on prey. Always be on the lookout for them, and if you need to pass by, make it quick! Or distract it with some berries first...
2020-06-27 19:24:36 +0000 UTC View Post
Full comic link: http://entanma.com/nhimor-patronsonly/day48.html
The current plot arc started here, about 5 pages ago. The index page is here.
If it's not obvious from the URL, don't share this anywhere! The public version will be posted on May 14th, at the main site.
2020-05-07 19:50:09 +0000 UTC View Post
No sound, about 30 seconds long. Check out the turtle in action!
2020-05-05 20:20:16 +0000 UTC View Post





The turtle's complete! You can stand on top of it as a platform, but it moves really slow. Lure it with fruit to get it to move faster, or take things into your own hands!
It'll probably be called "bauble turt" or "facet turt" because it's fun to say, but you can keep leaving other suggestions if you want!
2020-04-27 21:19:35 +0000 UTC View Post
Check it out! I (Azure) haven't been feeling very good about my work ethic lately, so I shut off the internet to see how much I could get done in a row with zero distractions. Turns out, it's this entire turtle from scratch in about 4 hours!
What do you think we should call it?
2020-04-25 17:22:03 +0000 UTC View Post
Slopes work! And they're procedural too, so any new tile I make in the future will automatically get sloped versions, which will save a TON of work. I think this "vertical slice" of the cave is basically done, but there will be more decorations and tiles for other parts of it.
Do people like these incremental small updates, by the way? We used to put everything into one big post, but I think this is a bit more engaging!
2020-04-20 18:25:04 +0000 UTC View Post
It's coming together! Next up is adding slopes and a few other foreground objects, like destructible crystals.
2020-04-15 22:04:52 +0000 UTC View Post
This is the background for the crystal caves, which is a very early-game environment so it needs to look super cool to set the mood! This is the first "actual" background for the game, so I'm really relieved it came out good. The outdoors one is just a clouds layer and some sunflowers, and I need to re-do that at some point. (Sorry for the video quality/framerate as usual, I need to get a computer upgrade later!)
2020-04-13 16:43:34 +0000 UTC View Post