I probably won't get too much into detail as I'm thinking about writing a post-mortem on my entry now that I have a couple followers (the follows are greatly appreciated) and I actually feel it's worth the time. So here it goes:
- Plan it out - I know I've given myself some slack since I joined roughly halfway through, but if I had put more time into planning my room/map layout, I think I could have really stepped things up a notch. Instead, my plan was get the simplest things working that are mandatory. If there was something I wanted to add that wasn't quite simple, I'd give myself a time limit. If I was spinning gears by the end and didn't feel like I was headed in the right direction, I scrapped the whole thing.
- Saving and Loading - This was the first time I've had a save/load system in the game. It's pretty much straight from the Godot documentation. While it did work for me, saving to a text file and loading those saved values into the resource that stores my player's data required a couple steps that felt "wrong" to me. It also created a bug in the web version that nobody caught. Next time I work with saving/loading, I will have a separate resources dedicated for saving persistent data. My assumption is that it might handle it a bit better and I can create multiple save files for the player.
- Godot's TileMap Node - I knew how to use the basics, but digging through the documentation on some of the functions I haven't used really was crucial for building the classic "metroidvania" map where rooms are reveal as you explore them and the room that you're in is highlighted. If you're a Godot user, I created a scene as a tool where I stitched all the individual rooms in a separate scene, created a new tilemap to trace over the rooms, and by getting the used tiles data, created a simple outline of the entire map by iterating over the array and creating a circle with a radius of 2 for each tile data. Then I used Godot's screenshot functionality to get save that into my images folder. I created a new scene with that screenshot as my root node (TextureRect) and used custom polygons to add my "construction paper" look to them. Having them reveal themselves was just a matter of emitting signals that the map is listening for to set whether a room is current, unexplored, or explored. This may have been my proudest acheivement because it was the solution came to me randomly as a question, and i implemented it successfully.
- Assumptions about the Player - I continue to make assumptions about how the player would approach them and I haven't quite figured out a way to do that without being wrong. In my profession, I just make the assumption that everyone using the product is "dumb" and make things as simple as possible which, for the most part, works. Doesn't really translate well to game dev and that's one of the reason's I like game jams. You get feedback and find your assumptions to either half right or completely wrong.
- Polish - Another thing I continue to do is not put enough polish into the game. There was feedback about specific things that, if I had spent maybe an hour on, wouldn't have been pointed out as much.
- Always leave them wanting more - This may be jam specfic, but there's a game in this jam, that is extremely short, but awesome in its theme and mechanics. By the time you're finished, you just want more of that. It was like being teased.
Honestly, I could go further in length about this stuff, but personally, I will say this has been my most successful project that I've worked on. And the follows from the devs that made really awesome entries gives some additional validation that I'm making progress and may have some potential. Which is really nice because the people that I talk to (friends and family) about my projects have no idea what I'm talking about and I can see their eyes just gloss over out of boredom.
Metroidvania's are pretty ambitious and I didn't think I was capable of making most of the parts, let alone finishing it, but I did it (woo!) This has been a great jam and everyone should be proud of what they managed to accomplish.