I couldn’t find any good mushroom pathing! So I made my own it took like three (several hours long) attempts but I finally got it where I don’t hate it! Feel free to look up by creator ID and use it 💖 This matches spring grass but I plan to alter it for the other seasons as well ^•^
OK, here is my, hopeful, final path for the town! For now, at least. I’m going to work on doing one for each season, I think I’ll wait till those seasons comes around though, makes it easier to colour match.
When I get around to making a second resident, I’m going to make corner inserts for this path, just makes it look a little tidier.
This is the first time I have legitimately broken down over a path in this game.
This is also the first time my actions in a game have led me to REGRET what I have done in a game.
In Undertale, I knew Mercy was applicable and didn’t want to hurt the monsters and friends I’d made because I knew the consequences for doing so would have been dire.
In Persona, it was better to have friends than enemies, because my friends were what led me to victory. And I knew if I didn’t save them, their deaths were on me.
Here?
I didn’t know I’d fuck up. I fucked up, and I feel how I fucked up big time.
I’m in love with this pathing I made for my town. It’s almost everything I could have wanted. I’m still tinkering with it, wanna make it look less repetitive somehow, but I think I’m gonna have to bring in another resident and have a separate set of this path with different grass patterns.
Looking forward to seeing how Asgard shapes up in the coming future! Will be posting regular updates of the towns growth :D
couldn't sleep last night. ended up writing a pathing algorithm in my head for a block jam type game. how to initially determine the path each block would take to the exit, and then how to update it per each change
here it is written out:
the board is defined on a grid so you want each tile on the grid to know if it has a path to the exit, and if so how long that path is and which direction it needs to go
(a tile also knows if it is a wall, in which case there is no path and this will not change, and if there is a block inside it, in which case there may be a path, but adjacent blocks cannot path through it)
the exit is the bottom of the grid, so you start by going along the bottom row of tiles. if it's a wall piece, no path obviously cause it's a wall. otherwise, path of length one, straight down.
any tile that you set a path on, you're gonna want to check the tiles around it to see if they connect to that path. Technically, since you're going across the row left to right, you're already about to check the tile to the right, so you don't need to check it again. But you definitely need to check the tile above it, and probably the tile to the left. might not need the left one, but it's easier to check it than to check if you need to check it
so for each of those bottom tiles touching the exit, you take the tile above and the tile to the left, and you stick them in the checking queue.
Once you finish the bottom row, start working on the checking queue. For each tile in the queue, check the four tiles touching it. You're looking for the shortest path to the exit. A path through a tile will be of length that tile's path length plus one. So, check all four, see which is the shortest, set length and direction accordingly. If an adjacent tile is Unknown (path has not been evaluated yet), treat it the same as if it is Blocked. no pathing through it.
If the tile you are looking at gets Updated during this check, add all adjacent tiles to the checking queue
this way, when the queue is emptied, all tiles will point in the direction of the shortest possible path to the exit.
is this faster/more efficient than a branching method? no idea. maybe I will code them out and do some tests later. See how many tests each one does.
That's just the initial pathing, though. you also have to update it every time a block gets removed.
For that, when a block is removed, add the adjacent tiles to the checking queue. this'll unlock previously blocked off areas, and do a shortcut check at the same time.