(back to blog)

Fabric 2 Feb - Mar '19 Devlog: The Boundaries

2019-04-06

It turned out that posting these devlog bi-monthly is the sweet spot of frequency, I think. Due to life events (like getting married) taking a little bit of spare time away, development content for just one month isn't as much as worth writing about. On the other hand, within two months enough things go into the project so that these posts won't feel like an extended tweet.

So February was a little lighter in terms of Fabric 2, but I could find some time to push things through at the second half of March. The primary goal of the project wasn't too arbitrary from the very beginning, however during the past few weeks it has become clearer. (And yes, I'm a husband now. Still sounds off.)

The winter was mostly getting the level testing cycle up and running, exploring what this edge detection and tessellation things are and what I could do with them. Overall, there wasn't much progress in terms of the game itself. The duration was long enough for me to feel the lack of general advancement and decide to do something about it.

Since I had a complete game to steal draw inspiration from, there were many things that are guaranteed to be a part of this game, like the first person experience, level-based puzzles and so on. As I got these things out of the way and moved on to building the actual second game, I've come up with a plan that I talked about in the last post. I revisited Fabric and took a fresh look at it. I must say it's not that bad of a game at all. Yeah it gets boring rather quick, but the some of the levels are pretty well-thought. It provided a good amount of ideas to introduce the mechanics to the player gently, and the fundamental ways to utilize them as a puzzles. I now have a list of levels to provide a guideline to the features' mini-campaigns.

Meanwhile I was busy with implementing all mechanics to a working-in-a-gamejam level. Timed bends, teleporting, gravity and inventory are in now, though there's still SFX and UI work to do. I general I want to leave the core gameplay behind. I want to have an OK base to build levels on, don't iterate on it anymore until the vertical slice is done. So the features took priority.

I've started with the simple levels already, which are to be the tutorial segments. Usually the tutorial is the part of the game you'd build the last, since you know everything about your game by the time you're done with all the levels. But that's the perk of having done essentially the same thing in the past. Back in the days we had iterated on Fabric's tutorial so much, plus the post-release self-criticism, I have a pretty good idea what will work here.

Having being done with the mechanic-related stuff up to a point, I averted my gaze towards the meta, how the game will progress. The main work on this front is the multiple starts and ends of levels. Younger me would've probably come up with an XML file for these connections, thinking that this is the proper way of solving this problem. Because that sort of information should be abstracted away and not hardcoded. Hardcoded stuff is a big no-no. But there's a reason that he's the younger me and I'm the me me. Throughout this project I had, and will always have, this mindset of implementing stuff in the simplest way possible. I mean game-jam-simple. I know what I'm building and I've a pretty good idea which exact points I'll want to extend in the future. (Triggers for example. I even do OOP over there.) And this is not one of those points. So I just went with embedding that info inside gameObject names. That solves the problem with no extra data or functionality that solves the problems I don't have.

Another work item was one I'd planned from very early, but had lower priority. One lesson I've learned from Fabric was how repetitive visuals would harm the experience. In the second installment, every level will have it's own color palette. Now that it's in, levels have another way of supporting the story just with their colors.

Although it should've been done, I still keep spending time on level design tooling. It was my first focus point in the beginning, to have the build-test-refine cycle established. It was, but recently I found out that I could paint the sides of the brushes with different materials. So I moved away from the system where there were three kinds of brushes with different colors, to a workflow I'm used to from my OpenArena mapping days. The overhaul wasn't a major one from a tool development perspective, however I had spent a lot of time to setup the old workflow.

As much as I want to be done with the core game, there are a ton of things that need to be done for the vertical slice. Much of them fall into the category of polish. And since there isn't much to look at besides the walls and the weapon, from time to time I find myself making things look better on that front. Especially the weapon. It now responds to the player movement better and looks further from a game-jam-quality level.

All in all, that's a short story of the past two months. April will be rather devoid of any development due to the vacations, but in May I will try to push things through, especially the content. I've been developing this game for a few months now, but there isn't anything to play. The first priority will be changing that. I plan to be done with the introduction and the first mini-campaign, which will focus on the basic usage of bending, by the end of May. (I'm writing this here so that I won't be slacking off anymore.)

Besides the levels themselves, I plan to get rid of the concept of main menu, following the footsteps of Jon Blow with Braid, because there simply is no need for it. However, some form of pause menu is a must. In the next two months, presumably it won't be in the final shape, but the basic functionality will be there.

Another evidence of me neglecting the meta stuff is the my lack of ideas about how the save/load/continue cycle will look like. I literally started to
think about this yesterday. There are lot of options here, however the initial line of thought will be letting it stay in the todo list for a longer while and come back to it after having a material of at least one session in, then think about what the best approach would be. Maybe there'll be no "save" button and the player will continue exactly where they have left off, or follow what I've done in the first game and let the player start from the beginning of a level.

And yeah, there's the story. I kept reading what I've written and how to represent the whole thing in the game, and it started to feel like a little forced and irrelevant. I'll probably start from scratch on that front.

See you in a couple of months!