top of page

As prophesied, I’m now starting a new game that’s an action game. My initial inspiration was actually Doodle Jump, with the part where you move upwards in a level and avoid obstacles along the way. I programmed that part at first, where the camera scrolls up as you go upwards, but realized it was annoying. I had to have obstacles spawn in before you reached them, and also had to delete obstacles that were below the screen, and it was hard to make it feel right. Then I realized a much simpler way to do it: instead of moving the camera at all, just have it so when you reach the edge of the screen, the player is warped to the start, delete all obstacles, and spawn new ones (and I can have a screen fade in fade out). 


I think the hardest part of this game will be trying to make it different from Relentless Waves. After all, both games are basically about avoiding random obstacles for as long as you can, and I don’t want to make the same game twice. I think the main differences will be, no enemies you have to fight, the obstacles don’t fire bullets, and instead the obstacles will be more about making it tricky to navigate throughout the level. I have no idea if I’ll actually come up with enough ideas to make this work. If all else fails, they can just end up being new enemies for Relentless Waves (which isn’t even that bad of an outcome).


Even though I’ve started a new game, I worked on some other things too. A while ago I talked about doing another game design presentation, this time on consecutive vs simultaneous turn games. I’ve started on that, although there are some things I’m still figuring out. First is that unlike the Temporum one, I can’t really focus the presentation on one game, because the whole topic is comparing 2 very different types of games. But also, what can I talk about? Right now I explain the main pros (faster, no turn order advantage) and cons (collision issue) with simultaneous turn games, but is there anything else? I can talk about some solutions to the collision issue, but would I only be explaining solutions from my own games? 


On tuesday, I made some fairly major gameplay changes to Randomly Generated RPG. The first is that I dropped speed and luck entirely. I don’t think they impact the game enough, and were less useful and intuitive than power and defense. Dropping speed meant I had to change how turns work, but there’s a very easy fix. First players take all their turns in order, then enemies take all their turns in order. The other thing is changing the ability pie for Knight and Wizard. It used to be, Knight changes power and defense, Wizard changes speed and luck, Angel can do anything. Now it’s become, Knight only changes defense (for players and enemies), Wizard only changes power, and Angel can do both. Most of the abilities that had to be changed just switched to changing power or defense instead. There was maybe one ability that I had to replace completely, due to the new ability pie / being too similar to other existing abilities. 


Then I decided that angry giving +2 power was probably too strong. Especially for the Wizard, when angry they can deal tons of damage to all enemies at once. I changed it to +1 power and +1 defense as the bonus, and I’m confident it’ll be more balanced (both for players and enemies). I held off on doing all these changes for a while (especially dropping speed and luck), worrying that it would take a ton of work to change everything else (the changes in February took over a week), but these changes took under 2 hours to implement. Turns out removing code is much faster than adding code.


I also found a better way to handle translations. The tricky thing is, there are 2 kinds of lines that need to be translated: ones that are just text (like “play”), and ones that need substitution (“[number] health”). The ones that are just text are ideally all in one enum, but the substitutions ideally are each their own function. The solution is that I can have editor scripts write code for me. The editor script can read the English txt file, and figure out which translated lines can be in an enum, and which ones should be in a function. Then the editor script can generate the code for me. It makes things much easier. 


The question then is, how much of these new innovations should be included in updates to previous games? Like I already went through every bit of text in Randomly Generated RPG; am I really going to do all of that again? It’s still a battle between “I’m no longer actively working on this game and I rarely add new features” and “this is a game I’m proud of and I want to keep it up to date”. For sure for much older games (like Mutating Forest), they will just stay outdated forever, but for the actually good games (like Relentless Waves) it’s more a question. Currently I’m going with, no don’t change the old code, it’s doing its job (until it no longer does its job, then ok I’ll change the code).

With my new computer I did some testing for the new game, which I’ve named Swords vs Shields. There were fixes needed (both for players and spectators), but I think it should be working now. I didn’t get to test it much if the online connection isn’t very strong, but I’m hopeful. The one thing I failed to figure out is if both players draw from the same deck at the same time. What would happen is, since they do it at the same time, the players end up drawing the exact same cards. I didn’t find a solution, so I just fell back to, both players have their own decks, each with 1 copy of the 40 cards in the game (since it’s an online game I can get away with doing something like that). And with that, the game is now released.


There are 2 other things I meant to talk about last week in regards to making cards, but forgot. The first is what abilities should use swords, and what abilities should use shields. My original plan was that Defend and Attack abilities can use either swords or shields, and that would lead to some interesting choices. Do you spend all your shields and swords to attack or to heal, or some mix? Having a mix would also allow different cards to feel more distinct from another. 


But I decided not to do that too much. I didn’t want to have 2 resources that had no real identity, it just sounded more confusing than it’s worth. Splitting up when the resources are used gives them much clearer identities: shields defend, swords attack. I also didn’t want to risk it where the best thing to do is to always use your swords and shields on only defending, or only attacking. In the end, while I have a few Defend abilities that use swords, most of them end up using shields, and vice versa.


The other thing is about complexity. For many reasons, cards want to be as simple as possible. A card with 2 abilities to read is obviously more complex than a card with just 1 ability. Since cards with 2 abilities are forced (Play abilities have to go along with a Defend or Attack), the best I can do is to make both sides as simple as possible. And ideally the abilities have some connection (maybe by the card name) to make it easier to keep in your head. Usually that means wordier and complicated abilities have to be on cards with 1 ability instead. I think it mostly worked out, and besides games like Moon Colony Bloodbath have this issue too (a lot of buildings in that game have 2 abilities).


Finally, I think it may be a while before I make another online card game. The main issue to me is that they’re not as playable for new people. An action game like Relentless Waves can be played by yourself, the few rules it has can be presented in the game, it’s quick to play, and has little to translate. An online card game like Swords vs Shields requires a 2nd person to play with, has a lot of rules (to the point where the rulebook is external), it takes longer to finish playing a game, and there’s much more to translate. This all just screams, make single player action games and take a break from online card games for a while. Swords vs Shields can remain the capstone for everything I’ve learned from making online card games for 2023-2025.


Speaking of action games, I made a small update to All Shapes and Sizes. One thing that felt stupid was that you could get 2 gravity inverters in a row, and they would do nothing but waste time. I changed the game so if it would give a 2nd gravity inverter, it would just skip it. Another thing I tried out was saving a shape for later. My hope was that it would let you be strategic, but in practice I didn’t have fun with it. The best thing to do is save bombs for when you get a wall. Maybe there’s a way to make it fun, but I didn’t end up adding this new feature.

All the cards in the new card fighting game are done. I’m not gonna release it yet until I do some more testing (which I can do now that my desktop is back) and come up with a name for the game. While making new cards, a bunch of old cards had to change too (mainly with what resources they used and balancing), and I may continue to do that if needed. But also after spending 3 weeks making 40 cards, there are some things I learned.


First is that some ability types (Play, Defend, Attack) are more constrained than others. The first case is that Play is basically a once-ever Defend ability. I can’t make cards that only do something when played because then why do they stay in play? There’s no reason to attack or heal them, since they’ll never do anything. And since Play abilities overlap with Defend in what they can do (since they only happen in the Defend phase), there should be some reason why they aren’t just Defend abilities. This is especially true for cards that have Attack + Defend abilities - why not have it be Defend + Attack? This is all why even though I made sure to have an equal amount of Defend and Attack abilities, I ended up having less Play abilities since they have a higher barrier.


Another thing is that Attack abilities are more constrained than Defend, both in input and output. Both Defend and Attack cards can make you pay with your own resources (cards, actions, swords, shields), but only Defend cards can make you pay with health (from you or your cards). Attack cards aren’t allowed to do that, which means Attack abilities have 2 fewer options when it comes to payments. Another is that Defend abilities have more variety in rewards. Defend abilities can heal you and your cards, or give you more of the previously-mentioned resources. Attack abilities can’t give you any resources, they can only attack the other player and their cards. Making the other player lose resources on their next turn is allowed, but I didn’t end up making any cards that just make them lose resources. This technically isn’t so bad because attacking the other player is how the game ends, but it’s still a bit of a downside because it requires more work to come up with cards that don’t overlap with each other.


There is another downside to making this game. This is a game about units fighting other units, and I’ve already made several of those (Randomly Generated RPG, Fortress Siege). Which means inevitably there are some ideas that have been reused in one way or another (such as dealing damage and gaining health at the same time). And I don’t like reusing ideas, it’s why I try to make new types of games. In fact I even reused some card art, because the things in each of those games have the same obvious flavor of a vampire absorbing health. Anyways what this means is, I should probably take a break from making games where you fight enemies in a turn-based system, because 3 games of that is plenty.


Nevertheless, I am quite happy with how this game turned out. I think it’s better than Fortress Siege, since that game isn’t simultaneous, and I think the concept of Defend/Attack abilities worked out better than the Auras. Basically the only advantage Fortress Siege has is an AI opponent, which I decided not to put in this game since it’s a bit too experimental on top of me trying a new way to handle online games (plus I haven’t tried working on anything like an AI in over 6 months).


I ended up doing a few more updates to old games. Relentless Waves got one new enemy. My initial idea for it is that it shoots multiple spread out bullets that are like straight lines, and to avoid them you’d have to move between the bullets. It worked pretty easily, and I decided to theme it as a snowflake dropping icicles on you. I also made Slow and Steady translatable (it was even easier than All Shapes and Sizes), and improved the code to reduce errors in translations. I think I’ll also translate Chromatacombs, but ran out of time to do it today.


Finally it’s near December again. I don’t know if I want to do a 2025 collection like last year. I feel like that month would’ve been better spent if I just dedicated it to only working on Relentless Waves. 

Thomas Tang (DZ)

tt2195@nyu.edu

+1 (646) 236-5503

Redmond, WA

©2025 by Thomas Tang

bottom of page