stardance has been extended another month! the new deadline is october 31 :)

You are browsing as a guest. Sign up (or log in) to start making projects!

thecatsmeow

@thecatsmeow

Joined June 5th, 2026

  • 4Devlogs
  • 2Projects
  • 2Ships
  • 31Votes
Ship

This is an arcade-style top-down shooter where the player must defend their ship from approaching enemies. The enemies all have one of six shapes, and the player must bring the corresponding shape to the corresponding launcher to shoot at and defeat them. As the game progresses, more types of enemies appear, which require more effort to defeat. I started this game before the summer, so this project specifically adds the new enemy types and onwards (see the git history for more info).

The most challenging part of this project was teaching new players how to play. I say that because I obviously know the game better than anyone else, so it was hard for me to tell what new players would struggle with. One example is the NOT enemy, which has to be hit with the wrong shape before being hit with the right one. I spent a long time trying to figure out how to convey this concept to the player without interrupting the flow of gameplay, and eventually settled on a way to explain it with the design of the enemy, as well as an enemy reference page as a backup. Another example is the overall difficulty of the game, which some players found too difficult and others too easy. To avoid the hassle and potential negative feelings of having players manually change their difficulty, I created a dynamic difficulty system which learns from the player’s win rate to make the game easier or harder.

I think I’m the proudest of the “juice” (sound and video effects, music, etc.) I added to the project. The programming and logic side of game development has always appealed to me more than the more creative side, such as choosing/making assets, so I was worried I wouldn’t get the game to look or feel good. However, after a fair amount of effort, I was able to get that aspect of the game to a place that I’m happy with, which was a good learning experience.

To play the game, you can simply go to the demo link below. It’s a Unity WebGL project hosted on itch.io, so it should run on any device. Keep in mind that the game is meant to be played with a keyboard and mouse, so it may not work or be an enjoyable experience if you try it without those. Thanks, and I hope you enjoy!

  • 3 devlogs
  • 20h
Try project → See source code →
Open comments for this post

10h 9m 34s logged

Adding JUICE

In this session, I focused on making the game feel good to play by adding sound effects, screen shake, and music, among other things.

Background music

I added five background music tracks, with one being for the ending cutscene, three alternating ones for normal gameplay, and a fifth for menu scenes.

Sound effects, screen flash, particle effects, and camera shake

I spruced up the game by adding a screen flash when an enemy hits the ship, particle effects when enemies are killed, a camera shake when an explosion happens or an enemy hits the ship, and sound effects for all of those events (plus clicking buttons in menus)

Difficulty updates

I had noticed that some players struggled with the first levels, while others breezed through them. To help with this, I added a dynamic difficulty system to make the game a bit easier for players on a losing streak and a bit harder for players who are getting comfortable. I also discouraged players from letting the tougher enemies through by making the special enemies do two damage and the boss enemy take away all three hearts. Lastly, I made enemies more likely to spawn close to each other to maximize the satisfaction of taking out two at once.

UI additions

To help better communicate with the player, I added a progress bar to indicate what fraction of the level’s enemies have spawned, as well as a reference page with information on all the different enemy types.

Debugging

Finally, I fixed a multitude of bugs, such as the player respawning at the wrong Z position when falling off the map or a second music player being created when the user returned to the title screen.

0
0
28
Open comments for this post

4h 35m 25s logged

Spawner and Boss Enemies and Final Level

Spawner Enemy

Added the spawner enemy, which splits into two normal enemies of the same type when killed, and appears on level 18.

Boss Enemy

Added the boss enemy, which splits into two spawner enemies of random types once killed, and appears on level 24 (the last level)

Final Level

Tweaked the weights and enemy count for the last level so that one boss enemy would appear right at the end

Playtesting

Finished testing all the levels of the game and adjusted the weights and speeds of enemies to make later levels easier

Debugging

Fixed an issue where killing any spawned enemy would result in winning the level prematurely, and fixed the tutorial level, which had broken after recent changes

QoL Updates

Updated the checkmark asset to a better version, added an exit button to the main menu, and made enemies stop spawning after the count has been reached

0
0
12
Open comments for this post

4h 59m 17s logged

I had been working on this game previously and gotten feedback on its alpha stage, but had stopped working on it recently. After I picked up the project again, my first main goal was to implement the feedback I had received on the alpha version, namely adding more enemy types. In my game, the player is on a small spaceship and must pick up ammo in geometric shapes to bring it to the corresponding launcher and use it to fend off the corresponding shape of enemy. As of now, I have added two out of four planned types. The first is the NOT enemy, which needs to be hit with any shape that is not its, then needs to be hit with its shape. The second is the hardy enemy, which simply needs to be hit twice. It’s worth noting that there was previously only one type of enemy, so I also added a weighted probability system for different types of enemies. I also made a fair amount of QoL updates, such as making new ammo spawn at a more intuitive time and adding offsets to different RNG instances to make the game seem more random (by preventing enemy placement from predicting enemy type, for example).

0
0
10
Ship Pending review

This project runs on an ESP8266 and hosts a web server where users can upload SVG files. The laser pointer then traces them out on the ground, or whatever surface it is sitting on. Since the laser pointer can draw out shapes from the file in real size if the file is prepared correctly, it could be useful for visualizing digital files. For example, if you really wanted to know what a parallelogram with a base of 30cm, a height of 20cm, and two 65-degree angles looks like, this could show you. I learned FreeCAD to design and 3D-print the mounts for the servos; I manually tuned the servos to get precise angles; and I made code for the ESP to accept an SVG file, parse it, and calculate where the servos needed to go to point to it. Overall, this project was a good learning experience, and I am glad to have done it even if a video can’t fully capture its depth.

  • 1 devlog
  • 12h build
Video of Project → See source code →
Open comments for this post

12h 0m 14s logged

I got a bit caught up in making the project and neglected to write any devlogs, so here’s a summary. I started by designing the servo mounts for 3D printing, which took a while since I was learning FreeCAD and professional CAD in general as I went. My first 3D print was somewhat functional, but I hadn’t fully taken the servo wires into account, so I had to reposition the small gear. It also later turned out that the small gear wasn’t tall enough, so I also had to change that. Then, with some functional 3D printing, I turned to the code and started with a simple ESP web server that would save a file upload to a string. Once I got that, I made a simple SVG parser that would just take the points from the first polyline element and used trigonometry to determine where the servos should point based on 2D Cartesian coordinates. After further investigation of the servo mount, I also decreased some clearances and made the laser pointer mount thinner to allow it to bend. Next, with the full thing assembled, I had to do some minor debugging, including switching from atan to atan2. One of the servos also abruptly stopped working and refused to give any sort of accurate angles until I manually gave it a custom PWM range, so that was fun. After that, I did some experimentation in Illustrator and found that I could consistently get real-world units drawn by using a conversion of 0.353 mm/pt. My last two real features were adding a redo button that ran another trace with the previously uploaded file and breaking each edge into 20 smaller segments to allow a more accurate path between points. 

0
0
2

Followers

Loading…