Comatour DevLog 7 – We’re Back

Comatour DevLog 7 – We’re Back

8/14/2022

Hello all, and welcome back to the long-delayed DevLog!

If you’ve read the last DevLog (posted about two and a half months ago), you’re aware that Comatour went on hiatus for a while so I could sharpen up on my skills. The initial idea was to practice a bit more with digital art in order to produce a specific style I had in mind for the game. However, as I proceeded, I quickly came to realize that the style I had in mind posed far more significant challenges than I had anticipated.

– (The next bit is going to be about some design choices, and stuff I did during the hiatus. If you’re only here for the tangible development progress, you can just skip down to the big COMATOUR label and start reading there.) –

– The Hiatus –

To cut a long-winded rant short, the art-style was too complex, would’ve required too many working-hours to produce, and came with significant technical challenges.

Of course, those issues can be worked around. The main problem is simply that the style was too strong. The story of the game is pretty much set in stone, and it makes no reference to the art-style whatsoever. Doing so would actively do a disservice to the plot, yet the style is so strong that not making it integral in some way would do a disservice to the player, and ultimately make the whole experience feel like one giant missed opportunity.

In the end, I decided the fancy style I had in mind just wasn’t a good fit for Comatour. That said, I do intend to use it in a different game, but that’s a discussion for a couple years from now.

Now, outside of the art stuff, I spent the rest of the hiatus planning out design decisions and practicing my programming a bit. Of course, these both will be shown in the actual Dev-part of the DevLogs

So, let’s get into it then:

Over the past week, a fair bit of foundational work has been done to the game, specifically on things that aren’t the player (which has made the demo clips I’ve been putting together look much better). But, before I can get into that, I must first spill the beans on some of Comatour’s core design.

– The Idea –

Comatour, as you may have figured out by now, is a 2D top-down roguelike that follows the story of a person who’s trying to wake up from a coma. The game takes place on an archipelago of floating islands dreamt up by the protagonist himself. The goal of a given run is to hunt down and destroy six seals which are hidden across the islands, holding the dream together.

Now, what this means is that rather than being a series of levels, the entire run takes place on a single map that’s generated at the beginning. As you find and break each seal, changes will occur to the world that will make further exploration of the islands more perilous. Of course, that’s not the only danger those seals are hiding.

Destroying a seal also releases a boss for the player to face…

… or flee from.

Though do be warned that while fleeing may save your life in the moment, it will allow the boss roam free and wreak havoc on the islands.

One of the things I do aim to emphasize is the importance of player choice, after-all.

– The Progress –

With those beans out of the can, I can now start nerding out about what I’ve gotten done this past week.

To start, I went back and basically rebuilt the entire physics/collision system I had in place to allow for fully functioning diagonal wall tiles.

player standing by a diagonal wall

With these, the game will be able to generate structures/terrain with, well, diagonal walls. There’s not much else to say about it.

Anyways, after the diagonal tiles were done, I added functionality to the green floor tiles shown in the picture. Much like floors in real life, things typically fall when they’re not on them.

Though, considering that the entire game takes place on a series of floating islands, I added precautions to help ensure the player doesn’t just walk off of them on accident. So if you do end up becoming a victim of gravity, you only have yourself to blame.

gravity test clip

With gravity in the game, I decided to set my sights making the floating islands actually act like floating islands. To do this, I had to make it so all of the small individual pieces of the island stuck together and acted as one object, basically.

So, I put together a system to do just that. Essentially, it works by giving the islands a sort of core. This core scans the island it’s applied to, and basically tells all of the floor/wall tiles on it to maintain their exact distance from it. This results in the many small pieces of the island moving together as one.

Additionally, the island core also tells all of the floor tiles to read its movement speed/direction so that information can then be applied to anything standing on those tiles.

moving island test clip

The next set of things I did revolved around making the game look a little nicer.

Specifically, I’m referring to adding slightly better placeholder tiles. But, much like a mouse and its cookies, if you give a game a set of tiles, it’s going to ask for a tile system. So, naturally, I obliged.

I put together a basic system to draw sprites both over and under the tiles to really sell that fake 3D look. With that in place, and the slightly fancier placeholder ground/walls in, my next challenge was to create a dynamic wall-vanishing system so the player could actually see when behind a wall.

Lots of systems this week.

Now, normally the way this is done is pretty straight-forward. If the player is behind the wall, make it invisible. If the wall is made up of multiple tiles/objects, then just make all the wall tiles below the player on the y-axis invisible.

I, however, quickly ran into a couple problems when I tried to implement the system this way. The main issue I kept hitting was with diagonal corridors. Making only the walls below the player see-through left the area right above the player still obscured. Of course, I couldn’t also make the walls above the player invisible, because then they’d be able to see into rooms they aren’t in.

So, I came up with a sort of sight-system. It basically sends out a couple of invisible objects both left and right that can climb up and down the slopes of the walls. These objects then tell all of the walls below them to turn invisible.

Getting these walls to work properly took me several hours. Honestly, it’s a convoluted answer to this problem, but Comatour is going to have a convoluted world generating system, so I need make sure every system works with any possible layout.

– Final Thoughts –

With that last statement, I must admit that this next clip fills me with excitement for the project:

vanishing walls test clip

Thanks to the efforts of this last week, the foundations are now in place to make completely procedurally generated, moving, physics-affected floating islands. Though I still have plenty of other things to tackle first, I can hardly wait until I get to start working on the actual world-gen system.

Welp, that’s it for this week. I’ll see y’all in the next DevLog!

1 comment

Comments are closed.