top of page

Get emailed new posts

A lot of this week was spent rewriting code for Relentless Waves. First I updated the translator to work with spreadsheets. In theory if someone wanted to translate the game, I was going to give them a txt file that listed all the things they had to write. But I realized a better way to do that is to give them a link to a spreadsheet (https://docs.google.com/spreadsheets/d/19CiC2QT3GX_mW_-fsajqhnjdXPyRAB7rgwfp4-efBxQ/edit?gid=0#gid=0) that they can edit. They can create their own column and add their own language. It’s also nice that the original English text will be there as well. When I did this I deleted the code I had for the original txt file, but decided to add it back in anyways. The code can handle the language field for both txt and spreadsheet, it’s fine.


I think I’m also going to change the scoring for the game. Originally your score was just the highest difficulty you beat the game at, and it listed the amount of bullets you missed + damage you took. It wasn’t the greatest but it was ok for a game with only one level. If I’m adding more levels and optional challenges though, it needs to handle that as well. Now the scoring formula is: [difficulty] * 100 - missed bullets - damage taken. If any challenges are enabled (like the one where you have to juggle balls), those will add 10 to your score. And the game will keep track of your high score for every level.


I haven’t actually added any levels, but I made the process of making levels easier. I rewrote the code to generate specific enemies in preset positions. One annoying part of Unity is that if you have a list of lists, it won’t show up in the inspector for you to edit. Instead I had to create 3 different classes to make this work. I have a class called Level, which just has a list of Waves. A Wave just has a list of Collections, and a Collection contains variables for an enemy and their spawn position (if the variable for the enemy is left blank, the game picks a random one). Three different classes, with no lines of code in any of them, just to allow direct editing in the inspector.


I’ve also recently started thinking about art descriptions. Basically, if I had an artist, what would I have to tell them to draw art for a game like Randomly Generated RPG. There are some character arts where I have a clear visual for what I’d like, and others where I’m ok with letting the artist come up with what they want for it. Now since there are 30 different characters, and they can be either Neutral/Happy/Angry/Sad, and Grounded/Elevated. If I force the artist to make different art for each character in all those states, they would have to make 240 pieces of art, which is super not happening. Another thing I’ve learned from Dominion’s art is that for human characters, you’re required to specify things like gender, age, and race, or else the artist will default to doing the same thing for every character. Which means I’ll have to go and preselect all those things for all the human characters.

2 months in the making (even though the 2nd month didn’t feel as productive), I finally finished the game about soldiers and scouts. It’s called Territorial March and it’s on itch.io. I spent 4 days doing nothing but trying to come up with names and art. I named all the player cards after verbs which worked out, although if I had to get art for them it would’ve been near impossible. Verbs are very specific. Then I had to come up with a game name and logo which were hard and eventually I just threw together something fast for it.


Anyways thoughts on the game. I like it, but since the economy of the game has limitations I still think something like Battery RAM is the better design. The negative coins and actions are definitely more of a bandaid than anything. The troops and scouts are great though, and after all that was the inspiration for me making the game in the first place. It’s also possible that having the classic “pay cost to put a card into your play area for abilities” is actually a better fit for this game, but I really wanted to make a different style of game instead. Maybe there can be a way to combine this game and Battery RAM but that sounds like something for the future (plus how do I avoid that game having too many rules to learn).


This week I went back to All Shapes and Sizes to give it an update. I thought the game mode where you have to minimize your score took too long, which is why I changed it so you drop fewer shapes, but you have to reduce your score even more. I also rewrote some code for it because the code is from 2023 and it aged poorly. Not everything (like the code for changing gravity), but some parts could easily be improved.


I’m also starting work on Relentless Waves again. I rewrote how the game generates enemies and now the game can handle levels where the enemies are fixed instead of random. I’ll see if I can come up with tutorial levels and such, like a campaign. (Randomly Generated RPG is not going to get anything like this, because it already has a tutorial mode.) I also experimented with a new gameplay challenge where you have to juggle balls. They fall down and you have to touch them to bounce them up. If any of them touch the ground you take damage. I also tried a mode where you never get any bullet recharge items; instead the only way to get more bullets is to kill enemies. I didn’t like it, it was too hard and if you wasted bullets (which is really easy) you were dead.


Finally there are some newer versions of Photon, the package I’m using for multiplayer games. I’ve been using an older version since that’s what I started with and it was sufficient for my card games, but I should probably try out some of the newer versions just to see what they can do. And maybe from there I can figure out what my next new game is.

The soldier game is now content complete, I have all 60 cards done. I also have the rulebook done, and now all that's left is a name for the game, some card art, and a website page. Hopefully this game will be out next week, which will be a relief as I originally thought this game would've been done by April.


The last Area card was the trickiest one. Since I already had enough of the things I needed (+cards, +actions, +coins, +troops, +scouts), what else was there to do? The alternative was to find something super exotic, even though those cards are extra hard to think of and to program. I spent days trying to get something. I considered “give all your cards, actions, and coins to the player to your left” but was worried that meant you spend the whole game doing nothing, in fear of the other player profiting. I also considered “remove one of your troops from the game” but it didn’t sound that interesting, it just makes the game shorter. I also didn’t like “do any other Area except for Camp” as there were only 2 other options: Road and the other special Area.


Finally I landed on doing the instructions on an Area that changes. Normally the other Areas that don’t get used each game would just be in the deck, doing nothing. Now the top card of that deck is revealed, and this Area would make you do the instructions on that Area. After it’s done, you put that card on the bottom of the deck, and the next round there’ll be a different Area on top of the deck. It has to be revealed the entire time because it didn’t sound fun for the bonus Area to be a complete surprise. This was the idea I went with, except it required a lot more programming work than the average card that needed manual programming, as I also needed to add custom UI to let you right click the top Area.


This was a fun card to do, except there was absolutely no way this would be possible with spreadsheets. Spreadsheets help a lot with making these kinds of card games, but it does have its limits. Even though about 57% of the cards in the game could be handled just by spreadsheets, I wonder if having spreadsheets handle card instructions is actually the right move anymore. Considering I still have to program all the card effects (like +Cards) in the first place, maybe spreadsheets don’t actually save too much time after all. Also now I have an AI that tries to do math, and this is inconvenient with spreadsheets. 


But every time I get doubtful about spreadsheets, I still have to keep in mind that Randomly Generated RPG was a slam dunk for spreadsheets. That’s a game that would’ve been way more inconvenient if I had to program everything manually. Partially because I kept replacing abilities, but also because the spreadsheets for it have more support. What I mean is, it includes things like being able to customize which character(s) an ability can/will target. This makes the spreadsheets much more flexible and more powerful, and can handle 100+ abilities. All of this is to say, while spreadsheets may one day be useful again, it’ll require more setup behind it to be more usable.


But speaking of Randomly Generated RPG, I decided to do the daily challenges update for it. I said I was going to do it next month but it didn’t actually take too much time. To do this I had to splice together the prototype I did for daily games, and the code for choosing what Areas you play with in the soldier game. The old code was actually pretty bad, it generated the players on the title screen so their abilities can be displayed for the Play Game button. But now I just have the players be generated at the start of the battle scene, where you select their abilities.


Usually it’s a mistake to do more work on that game because I feel like changing a bunch of stuff. Fortunately I didn’t feel the need to do that this time. I did end up tweaking the numbers on a few player abilities. The main thing being, since Wizard attacks multiple enemies at once, they’re the one where stat changes are the most scary. Giving Knight +2 power is one thing; giving Wizard +2 power is another, as that +2 is +2 against multiple enemies. Which is why I decided to nerf some of their abilities, as I don’t want them immediately killing 1-star enemies with only one attack.


Lastly I made a late change to the character UI. I didn’t have a place to put modifications to character stats like power and speed, I just hid it behind right clicking. But that didn’t seem great, and now I display that stuff below the text listing the character’s position and emotion. It’s a bit small but it’s way better than having nothing at all.

Thomas Tang (DZ)

tt2195@nyu.edu

+1 (646) 236-5503

Redmond, WA

©2025 by Thomas Tang

bottom of page