Monday, March 28, 2022

Week 4 - Match-3 Game - Weird Shape Matching

 Before we start, here's the game. 


Last week was pretty rough. At first I decided I wanted to make a moment from a 2D "soulslike" platformer. On top of that I wanted to try skeletal animations. I figured if I made the characters from rectangles and circles it should be manageable. I also thought I'd try Godot, as it has a skeleton system built in. There were two problems with that setup: 1) I still can't get into Godot and find it tedious, 2) I quickly realized there was no way I'd complete it with my erratic schedule. You see, I have a very small child who's taking a LOT of my time, and last week was pretty rough with that. So I gave up early and decided I'd do a match-3 game. It was on my list, as I've never done this before, so why not?

Here I had a rough start as well. First I went to microStudio, but I quickly found that the fact that it insists on the "natural" coordinate system, with 0 in the center of the screen and the Y axis going up instead of down, made it a nightmare for me to mentally juggle object positioning. It wasn't a huge problem in Space Boulders, but as soon as I wanted to display a two-dimensional array of objects, my head started spinning. So I decided to ditch it and go with my trusty Pico-8. Me and Pico-8 are veterans of several game jams and we go back a long way. It's my favorite tool for creating small games and prototypes, and while I wanted to try new things for this challenge, this time I decided that I had enough fumbling around, and picking Pico-8 gave me the best chance of getting something out by the end of the week.

Then I proceeded to watch some tutorials on how to make a match-3 game, but it took me a few days before I put something together, due to my erratic schedule getting exceptionally erratic this week. When I did, it didn't look very impressive. It was bland and boring. But I didn't worry, I was doing this in order to figure stuff like this out. It was when I started adding animations, tweens, particles and sound that I had this week's revelation, which was this: for some type of games, polish and juice are absolutely everything. And I mean EVERYTHING. I started with a functional, but extremely boring prototype, and as soon I added all this visual flair, it suddenly started being addictive and fun! I even tested this on my wife, who confirmed that it was really a fun game. And I changed NOTHING about the rules or gameplay. Even without score or progression, it was fun to simply blast the jewels and watch the colorful sparks go in all directions.

So this is my lesson from this week. Polish and nice visual effects can make a HUGE difference. This, and that I shouldn't overscope and try to figure out an engine and an animation technique the same week. Therefore, this week I'll probably try something simple, tiny and relaxing. Maybe a bitsy game? We'll see.

Sunday, March 20, 2022

Week 3 - Walking Simulator - A pure walking sim

This week's goal was a small walking simulator in Unity, based on David Wehle's 7 day challenge. By the end of the week, as I predicted, I didn't have a finished game. I only managed to squeeze in the walking and I created some of the ambience, with trees and environmental sounds. Last week I thought that in such case I'd give myself another week to finish it. But I've decided against it and uploaded it as it is now. I'll tell you why in a second, but first - here's the thing: A pure walking sim by President of Space (itch.io)




The 7-day course consists generally of downloading assets from Unity asset store and modifying them to suit our idea and vision. This allows for quickly creating a nice looking, simple game, that can nevertheless be compelling and interesting, and David does pretty amazing things on camera, creating striking visuals seemingly out of nowhere. But even though I kind of enjoyed tweaking the level and the post-processing effects to create a specific look, this is not my modus operandi at all. At the end I hated it and didn't want to do it anymore.

The thing is, I don't much care for black boxes. I accept some, because I don't want to write my own sound mixers or bitmap renderers or other platform interfaces, but I like to have control over what my game does and why. And Unity is one huge black box full of tiny black boxes, and when downloading stock assets I'm adding even more black boxes on top of black boxes. So I have no idea what's going on or why things are happening the way they are. There are random errors in the console because some black boxes don't like other black boxes, and predictably, the editor crashed on me more than once. At the end of the week I was completely exhausted.

So yeah. Not going back there any time soon. I haven't decided what to do for next week, but I started compiling a list of themes and ideas in my bullet journal, and I have at least a year worth of garbage in there. Expect something at least interestingly terrible.

Sunday, March 13, 2022

Week 2 - Puzzle Game - Crate Cat

Before we go any further, here it is: Crate Cat



As I mentioned in the previous post, this week I decided to try my hand at making a puzzle game. I knew it would be extra hard, since I'd never done it before, so I wanted to focus strictly on game design, and not on technicalities of implementation. So I picked up puzzlescript. It's another web-based engine, but this one is designed specifically for tile-based sokoban-like puzzle games. Essentially it allows you to create very rudimentary and extremely blocky tiles, combine them into levels and objects, and provides a very interesting declarative syntax to describe their interactions. So to implement Sokoban (not counting assets) you essentially need two lines of code, one of which - translated from puzzlescript's syntax - says "when player moves towards crate, push crate", and the second one, added under win conditions, says almost literally "all targets have crate". This is great, because it strips away all the busywork, and allows you to focus on the design. Also, the language itself feels like a good puzzle, and it's pretty elegant. The downside is that the games look too blocky, even for my standards, and they feel very crude and rudimentary. As a prototyping tool, however, it's fantastic, and some of the games you can play at puzzlescript.net are incredibly clever.

My game is a sokoban clone with a small twist: some crates can be only move two spaces when they are pushed. No more, no less. There are also special tiles that will 'capture' such a crate and allow you to move it only one space instead. And I also made the player a cat, because you can never have too many cat games. I was very happy with my simple idea, so I programmed the rules, which was a lot of fun, and then went hunting for some level design ideas. I have this unfortunate habit that my brain, once it starts learning something new, wants to go all in, so I had to muster all my limited willpower resources in order not to buy all puzzle games on steam and not to order puzzle books on ebay. Instead, I played some Baba is You, then some more puzzlescript games, then I designed a few game levels, and then I had a realization, which made me glad that I undertook this project. The realization was: I don't really like to play or design puzzle games too much.

Don't get me wrong, Baba is You is fantastically clever and I love the idea, but I can play at most two or three levels at a time before I get tired and have to rest. When you figure out the answer it feels very nice indeed, but when you can't, staring at the screen for several long minutes is not fun at all. And when I started making levels, I stole the first one, then made additional two, then felt exhausted like never before after working on level design. And the worst part was that I couldn't really play it, or know whether it was good, because I knew how to solve it. I forced myself to try and design three and a half more levels, but it was not fun at all. Thus, I decided that the experiment was over. I don't think I'll be returning to puzzlescript any time soon, which pains me a little bit, because the software is so nice to work with.

For the next time I thought I'd do something crazy and take David Wehle's seven day launch challenge. I bought the course a while ago when, but never got to getting through it. So, on to making a tiny 3D walking simulator in Unity with stock assets! 

Oh, and one more thing - since it's hard to predict whether I'd be able to get through this stuff in seven days, being as my days can vary wildly in access to the tiny shards of free time I have left, I decided that if I don't have anything presentable on Sunday, I'll give myself another week.


Tuesday, March 8, 2022

Week 1 - Arcade game - Space Boulders






 The first game I made as part of the challenge was Space Boulders, which you can find on my itch.io page. It's just a straight Asteroids clone, with some features missing, as I ran out of time, but with pretty cool vector graphics and lots of screenshake. 

I've never remade Asteroids before and I always wanted to try. It's a nice arcade game, so you don't need to create any levels, or "content", and since I've made arcade games before, I was pretty sure that I could pull it off, so it was also a good warmup project. I also decided to try microStudio, a browser-based game engine/dev environment I stumbled upon a while ago. So, how did it go?

The game turned out okay. I managed to implement most features that make it feel "whole", such as extra lives, multiple waves, title screen, game over screen. I really enjoyed writing the vector routines (weird fetish, I know), even though the engine did a lot of the work for me, such as rotating objects (not much extra trig was needed). It also felt very refreshing to work on something from start to finish. I like that about game jams, they force you to observe a deadline, and somehow I was able to recreate that sense with a self-imposed deadline as well. As many, many developers, I struggle with finishing projects, and making such a small game in a short period of time gave me a much needed boost of confidence that I can actually pull it off.

I also really liked working in microStudio. The environment is very snappy, even on crappy machines, and it's really well designed in terms of the UI and the overall feel. I was skeptical about using another custom micro-language (which they call microScript), but in the end I quite liked it, it felt like a mix of the better parts of Lua and Javascript. Recently they also added the ability to code in other languages, including my beloved Lua, so I might give that a shot as well. The best thing, however, was that I was able to seamlessly switch computers and work on the project from anywhere I wanted, on anything I wanted. Specifically, I was able to code most of the game on my garbage chromebook, which is tiny, light and completely silent (no fans) - all very important for me, especially the last one, as noisy computers drive me nuts. So this engine will definitely become a major part of my toolbelt. Oh, and it's also free and open source, and has a standalone offline app if you need it. Neat.

One part of the challenge will be to try themes and genres I wouldn't have normally picked. Therefore, next week I'll attempt something I've never done before - a puzzle game. Should be fun - or at least a good learning experience.

Hello World

This is the President of Space, and I intend to use this blog to irregularly ramble about anything that comes to my mind, mostly related to games and game design and development. I started it because I decided to take a shot at making "a game a week", and I needed to have some space to unload my thoughts-and-postmortem-things regarding the games that result from this undertaking. I might have just scribbled them in my notebook and hide it, but since I enjoyed reading about other people's experiences with the challenge, I decided to share mine as well. Maybe someone will find them useful, who knows.

Epiphanies and possible recovery on the horizon

So recently I've been diagnosed with ADHD. Which explains a lot. Those highs and lows, and the impossibility of maintaining one hobby, t...