Blame

375803 Doku 2024-12-04 13:54:40 1
# Projects
2
3
(WIP)
4
5
The point of this list is to keep track of things. Some of the ideas here I'll never start or never return to. But I want to still remember them.
6
7
## Games
8
9
My first game was a Snake clone in LOVE. There was nothing exciting about it except for the joy of learning programming.
10
11
#### Step After Step
12
13
I recruited a couple of friends and we made a game for a game jam. We used Box2D which came with LOVE out of the box. But frame rate was broken for some reason, so what ran fine on my PC ended up being super wobbly and janky for everyone else. In the end, the wobbliness made the game better because it was a classic "I learned my first game engine 2 days ago" game, even though I was learning LOVE for a while at the time.
14
15
#### Body Snatcher
16
17
For the longest time the game I was most proud of was Body Snatcher, made for Ludum Dare is a weekend. It's a top down shooter with a small gimmick, and I'm still a fan of top down shooters. I can't believe it worked, I probably can't understand its code now.
18
19
#### Pewpewer
20
21
Another Ludum Dare game. Another top-down shooter, this time fighting a single boss that keeps growing more branches and parts. This was where I was trying to put as much "juice" in the game as I could, even though it ended up being not much juice at all. I was abusing bump.lua's query functions to make lasers, adding tons of small animations to everything to make it slightly move around and change color, and I got too buried in the technical details to make any graphics or come up with a name.
22
23
-----
24
25
After that, I failed a Ludum Dare or two and stopped making games for years.
26
27
#### Bullet Limbo
28
29
Previously I was using LOVE because it felt like I was learning programming as well as making a game. Now I tried using a tool that helped you make games instead of play around with code. Of course, you can make a game in LOVE or pure Lua or pure C or whatever, but the difference in approaches was still large.
30
31
The tool was Unity. They have really good example projects with lessons which help you learn different tools. I started using the FPS example, added a few things suggested by the tutorial and then transformed them into my own ideas. The idea was to make a bullet hell game in 3D. So the enemies were shooting slow moving bullets and you were supposed to dodge and weave and shoot them.
32
33
The game was still 90% just the original example project, but what was really different was the parts I was focusing on. When I was making games in LOVE (and in JavaScript later), I was mostly focused on the code. How do I program movement here, how do I program this interaction, how do I add this effect via code. When making Bullet Limbo I was focused on level design. How to tweak the enemies' stats so they're fun to fight. How do I make the location of the game feel like an actual place, and also like there's some fun stuff to explore. Which enemies should I add so that they pose a challenge.
34
35
The level I made was a simple one. The mechanics I added were small. It was still a good experience, and it showed me that if I wanted to actually make a game instead of using it as an excuse to learn a new language, I should use a game engine. Something like Unity, Game Maker or Godot (though I didn't know about Godot at the time).
36
397316 Doku 2024-12-05 12:10:13 37
#### Learning Kaboom
375803 Doku 2024-12-04 13:54:40 38
39
So, I started learning JavaScript by making games in it.
397316 Doku 2024-12-05 12:10:13 40
41
My original plan was a top-down shooter taking inspiration from Magic Survival, Vampire Survivors and similar games. However, the project quickly became a mess and I wasn't working on it much. One of the problems was that Kaboom wasn't very optimized so I had to work around its problems a lot. I even added a bump.lua port to it (the original port was made by someone else who did 99% of the work, I just adapted the TypeScript version to Kaboom).
42
43
#### Mark Loops
44
45
The only game I managed to do here was a small game for a tiny Kaboom-themed jam, Mark Loops. It's a joke game where the joke is that everything is made up of one of the standard game sprites, "Mark". The level, the player, the obstacles, the title page letters.
46
47
I had no idea what to do for gameplay, so I added a bunch of random mechanics - flappy-bird-like jumps, asteroids-like flying. It was my first finished game in a long time (Bullet Limbo wasn't really finished), and it reminded me how all the tiny details like menus take up much more time than you expect. I did the mechanics in a few hours and spent 1.5 days figuring out how to make the game remember you won a previous level and send you to the next one, how to draw menus and how to pass that information between game screens.
48
49
#### Hero Defense (cahiddr【仮】)
50
51
Once again, I wanted to use an "actual" game engine instead of playing around with code. So I picked Godot, which seemed like a good mix between engine features (maps, sprites, animations and built-in and configurable via gui) and code. Unity is an overkill sometimes with its huge installations.
52
53
This was my main game project, and it still is, in a way. The idea changed many times, but the general inspiration was an Android game called [Starrows](https://starrows.outerark.com/). You build a base which spawns automated units, so there is a constant background "war" happening. You control a hero which both manages the base and participates in key battles. I was torn between a more Moba-like Starrows and something closer to Hero Defense maps in Warcraft 3. In the end, I picked defense.
54
55
The closest game to implement this idea is probably Thronefall. It does some aspects differently from what I had in mind, but it's basically the game I was trying to make.
56
57
#### Runie's Runecrafting
58
59
I was often lost at what to work on in the Hero Defense game, and at one point I wanted to stop and make something smaller. Fans of Phase Connect, a VTuber agency, regularly hold game jams, and I wanted to join.
60
61
I ended up not joining the jam and spending a month or two on the game instead of a week, but I finished it.