Update #14
Calling it almost done was a stretch just because Ice dungeon was finished, there's still more things to be done than just making more content.
Originally, this update was supposed to be published on august and would focus on some of the optimizations done to the game and maybe create a thread describing the music process. The latter was discarded as soon as I discovered a tool that could streamline the entire process and I started shifting my focus on the level design. Here's a recap of the past few weeks.
As mentioned earlier, the game had some performance issues on real hardware (Thanks @qhoang for testing it on device); while it was mostly stable on the overworld, any room that used the lightning system ran poorly. This was due to the way it worked. When you light up another source, the game would now update that source every time the player moved; at least it didn't update for every frame.

This was implemented in May of last year
Instead, the source would now update once as soon as it light up, and rather than changing the frame of the tile like the player does, the tiles would be swapped with its "baked" equivalent, which is the same tile but without any extra frames. Here's a snippet of the code that does it. "Color" is what I call the tiles that have a baked equivalent, I'm not good with variable names.
//swap the tiles with its baked equivalent around source location
while TileLightX<=TileLightMaxX do
while TileLightY<=TileLightMaxY do
ColorList = name TileLightX,TileLightY
IsColor = 1
if ColorList=="brick" then
elseif ColorList=="brick 2" then
elseif ColorList=="brick 3" then
elseif ColorList=="brick 4" then
elseif ColorList=="brick 5" then
elseif ColorList=="brick corner" then
elseif ColorList=="brick corner 2" then
elseif ColorList=="brick corner 3" then
elseif ColorList=="brick corner 4" then
elseif ColorList=="brick border" then
elseif ColorList=="brick border 2" then
elseif ColorList=="brick border 3" then
elseif ColorList=="brick border 4" then
elseif ColorList=="rock" then
elseif ColorList=="rock 2" then
elseif ColorList=="rock 3" then
elseif ColorList=="rock 4" then
elseif ColorList=="corner" then
elseif ColorList=="corner 2" then
elseif ColorList=="corner 3" then
elseif ColorList=="corner 4" then
elseif ColorList=="border rock" then
elseif ColorList=="border rock 2" then
elseif ColorList=="border rock 3" then
elseif ColorList=="border rock 4" then
elseif ColorList=="pot" then
else
IsColor = 0
end
if IsColor==1 then
tell TileLightX,TileLightY to
swap "bright_{ColorList}"
end
end
TileLightY++
end
TileLightX++
TileLightY = TileLightMinY
end
Other optimizations aren't as interesting as this one, as these were just wasted uses of calls and using emit. As soon as I didn't receive any bug reports, I focused on the overworld again.
Since the new lightning system has been reworked, the first dungeon too was slightly reworked; I made it a little brighter because I realized that it wasn't a good idea to make the first dungeon purely dark, It's now much smaller and not entirely dark.
From then, I've only kept focused on designing the overworld and recreating each room in the pulp editor. There are twice as many rooms compared to earlier builds (not mentioning the underground levels which are half as big) which means there's a lot of things to track of, particularly collectibles. Each room that contains a puzzle or a chest needs to be tracked in the room's script, this is one of the primary reasons I'm taking my time with this.
Fortunately, I have a fixed list of things to finish before I can call this complete. As of writing, every chest has just been revised; There dozens of them and some have been overlooked in the designing process. From here, I'll start making more interesting progress than listing and fixing stuff.
Hopefully, I can get everything done by spring of next year.
