Bio

Python dev learning... Golang??

Stats

5
Projects
39
Devlogs
11
Votes
2
Ships

Coding Time

All Time: 104h 28m
Today: 2h 14m

Member Since

June 17, 2025

Badges

1
🚢
Maiden Voyage
you shipped your first project! the journey begins...

Projects

5
🚀
0 devlogs about 23 hours ago
Hu Tao Poster
3 devlogs 8 days ago
Spellfire
28 devlogs about 2 months ago
Strinova Music Bot
6 devlogs about 2 months ago
🚀
2 devlogs about 2 months ago

Activity

Mundane Mann
Mundane Mann created a project
23h ago
0 devlogs 0 followers

Did the final polishing by removing the random red dot artifacts left by the background dimming, tweaked the shadows, recolored the text and added a text shadow, and moved some elements around. I'm honestly really happy with how this turned out :D

Update attachment

Ok, I sorta went overboard and added a lot of cool effects to the poster, and now there's a lot of things that I can tweak, such as the background dimming, warm/cool color shifting, and the specific colors for different things. I also added a cool drop shadow that has a really nice glass-like effect.

Update attachment

Got the initial Hu Tao silhouette + image mask effect working. It's looking pretty neat (had to try so many designs before I found something I liked). I also added a butterfly that rests on her hand :)

Update attachment
Mundane Mann
Mundane Mann created a project
8d ago

Hu Tao Poster

Coding a Hu Tao poster (I've always wanted one :P ) for Hack Club's Iframe event!

Hu Tao Poster
3 devlogs 0 followers Shipped

Finished a huge refactor of the entity component system, and started integrating sqlc. Lots of work, almost done with a fully working base implementation.

Update attachment

I needed a biome heatmap, basically a way to figure out what biomes surround each tile. I eventually settled on an efficient (multiple linear horizontal/vertical passes) gaussian blur algorithm that simply stores biome information rather than actually blurring the tiles. The attached image is just a visualization of the map with the blurred values. This way, I can avoid spawning entities near the border of their biomes so that they don't go where they aren't supposed to.

Update attachment

I designed a cactus as well, and wrote some code to save the generated biome map data to biomes.json

Update attachment

Spent so much time designing these 2 dead bush variants... alive bush and player for side-by-side size comparison.

Update attachment

Scaled up the generation to 1024x1024, and added a new biome dubbed deepwater. I now generate an island surrounded by deepwater, acting as a natural world border that has dangerous sea creatures that will kill players trying to cross over.

Update attachment

Successfully implemented smoothing by looking at each cell's neighbors and applying a majority rule pick.

Got terrain generation to look pretty close to what I want, very natural shape and biome distribution. The current algorithm is sort of like a cellular automata version of flood fill. I seed the grid with water and other terrain types initially, then void will copy adjacent water cells, and water cells will randomly copy adjacent terrain cells of any type. The next features I need to implement are a gaussian blur to blend biomes and rounding out the edges of the biomes with triangles.

Started implementing the terrain generation algorithm in Golang with ebitengine for visualization. I've decided to add cellular automata to the mix and see if I can get dynamically evolving terrain working, but tweaking the parameters is going to be quite painful.

Update attachment

Worked on a design for the player sprite (I couldn't get the eyes to look right for so long, still not sure if they look right QWQ), and also made a simple mage sprite.

Update attachment

Still working on biome generation, but switched from Voronoi diagrams which are polygon-based to a tile-based biome generation with a custom flood fill algorithm I cooked up that fills different regions with varying speeds. It's still not perfect, and I'm working on reimplementing a better version in Golang for the server.

Update attachment

Currently trying out a zoning method with Voronoi diagrams, smoothed out and distorted along the edges with perlin noise. It's still very rough but I think that with a few more iterations I can get something that looks good.

Update attachment

Drawing up some potential designs for terrain. I've settled on zoning for each biome, and the entities/structures inside each biome will be further generated via a perlin noise map. Still need to find and code a proper zoning implementation.

Update attachment

Trying to figure out designs for the game's background in Figma. Currently trying out grids, but they don't look too appealing to me.

Update attachment

The backend is fully working! Tested with a preliminary version of the frontend. However, due to code complications and bad architecture decisions, the frontend is currently undergoing a rewrite in Rust with the Bevy game engine. I've successfully implemented player movement, spawning bushes, shooting, and killing players in the Golang backend. I would've liked to include a video demo, but as the frontend was constantly too buggy, I never recorded one while debugging. I've included an image of a screenshot of the game (sort of) working. Hopefully the frontend rewrite in Rust will be less buggy QWQ

Update attachment

It's almost 2 AM and I'm tired as heck but I successfully implemented a working camera compete with zoom and added usernames to each player, along with some other debugging.

Update attachment

After many hours of sweat and pain, I've managed to implement a debug client in Python using Pyglet. The frontend will remain as TypeScript for Discord activities, but it'll be much faster to prototype and debug with a Python client. It's barebones and I've just gotten it to fully work (had to debug the backend server as well, NaN errors everywhere...) but it should significantly speed up my progress.

Update attachment

Massive updates to everything, world.go has a complete system for moving players, and everything is somewhat properly communicating with the frontend, but there are so many bugs to squash and the debugging session has been incredibly long... hopefully it'll be working soon...

Update attachment

Fixed some small bugs, deployed the app, we're ready to ship!

Update attachment

Turned the project into a Strinova music bot that plays OSTs from my favorite shooter game! I refined my music player embed again, now complete with a previous track button, and thumbnails for the current song that's playing (it displays a picture of each character for their theme). It took some time to implement support for playing music in multiple guilds, but after some testing, it should be fully working. The reaction controls have also been stress-tested and confirmed to work even with lots of button mashing.

After a huge amount of work (approaching 10h, so I decided to stop and make this devlog before finishing the home stretch), I've managed to implement an (almost) complete entity component system in Golang. The ECS uses dynamically created archetypes, with archetype signatures implemented with BigInts. The components stored within each archetype uses kelindar/column for maximum performance. I created a world class that fully integrates with the components, archetypes, and entities. I also started switching from json websocket messages to protobuf messages, which are much smaller and more optimized. All I have left to do is create a system that moves the players, and to complete the websocket communication and migration to protobuf, and I should be able to get a demo up and running. The attached screenshot is just a small bit of the full code written, I have already made a commit with the full changes.

Update attachment

Found kelindar/column which seems to be perfect for my ECS as a performant way to store component data. Set up packet structs and Unmarshalling.

Update attachment

Continued to work on making the game loop cooperate with the websocket server. I laid out the basic setup, with input / output channels that take in / put out player updates. These can be consumed concurrently by multiple goroutines, sort of like manual vectorization ig?

Update attachment

The first hour was spent working on testing different setups for implementing my custom Entity Component System. I eventually settled on a slightly modified project structure, renaming websockets.go to server/server.go and changed the way I initialized the gws server. After an insane amount of work, reading the lxzan/gws example code, testing different setups, and searching google, I successfully set up the websocket server part of the backend in a way that I'm happy with. I still have really good separation between different parts of the code, and everything communicates together well (hopefully, I haven't implemented the channels and different worker pools and whatnot yet).

Update attachment

Fully restructured project to conform with common golang project structures. Broke up main.go into spellfire.go, router.go and websockets.go, and put them into folders cmd and api. I honestly like how Golang projects are structured, it makes a lot of sense.

Update attachment

Switched to Golang (completely new to the language, so learning a LOT along the way). Created a main.go file that uses net/http and lxzan/gws. The websocket implementation at the moment is very simplistic and mostly for testing purposes. The majority of the time was spent coding and debugging the /api/token POST method, which goes through the Discord activity OAuth flow. There was a huge amount of time that wasn't tracked, as I spent many hours debugging cloudflare tunneling and getting it to work with Discord activities (the main issue was the tunnel not upgrading the connection to https, which ended up being caused by the domain being 4 levels deep backend.spellfire.hutao.rip, and cloudflare does not issue ssl certs for them). At the moment, the Discord OAuth flow is fully working alongside the frontend, but it was a rough migration to Golang as I have absolutely no clue how this language works, lol. I attached a screenshot of the main.go and discord.go files.

Update attachment

Reworked gun mechanics to have a bigger focus on crafting unique guns rather than following fixed blueprints. Players can now mix-and-match different modifications and use any materials they would like to craft their guns. Also did preliminary work on the api.md, drafting the initial structure and figuring out authentication/websocket message events. Spent the last 2 hours designing some basic art assets so we can start development. Attached are the designs for bushes, trees and rocks, made in figma.

Update attachment

Updated the backend server code to work with the discord activity oauth flow.

Update attachment

Initial setup of backend framework code with socketify, still unsure about how best to work with game server backend (will figure out soon hopefully).

Update attachment

I updated guns.md with an list of guns that will be implemented, coming up with a comprehensive set of mechanics, stats, and modifiers for guns. The specific numbers for each weapons such as damage, fire rate, etc have not been inputted yet, as I need to code and playtest the game first to make sure that the numbers are sensible.

Update attachment

Set up the initial github repository and migrated the game design document to the repo. Attached image of the gdd in the google doc, committed the github version of the gdd already.

Update attachment
Mundane Mann
Mundane Mann created a project
45d ago

Spellfire

A 2D multiplayer shooter game with magic and guns.

Spellfire
28 devlogs 1 follower

Finally made shuffling work

Update attachment

Added music controls for pause/unpause, skipping, looping, and stopping. They're really easy to use (just add the reaction for the action you want to do). I haven't implemented shuffling yet, as it's been 3 hours and it's too late rn (I wanna go to bed). Ran into an issue with discord.py's voice module that I had to fix by installing a fork that hasn't been merged yet.

Update attachment

Successfully made the bot play music from downloaded playlists. youtube_dl is very buggy and only downloads successfully once every 3 tries or so, presumably because youtube has gotten better at preventing bot downloads. Implemented music playing with an async callback that calls itself repeatedly until the playlist is finished.

Update attachment

Initial code with a few commands, testing out different ways of playing music with youtube_dl. Ran into issues with downloading music, could be related to the user agent, but I'm having trouble updating the user agent. Lots of jank code that doesn't really work perfectly, tested with some local music files (will try to get downloads to work tomorrow, hopefully)

Update attachment
Mundane Mann
Mundane Mann created a project
53d ago

Strinova Music Bot

A Discord music bot that plays OSTs from Strinova, an anime-style third-person tactical competitive shooter. I made this bot so that I can listen to Strinova music while gaming.

Strinova Music Bot
6 devlogs 2 followers Shipped

Finally got the activity to work, had to connect through cloudflared instead of ngrok due to ngrok requiring browser confirmation on the free tier. Rewrote the vite server in python as well.

Update attachment

Initial work on getting Discord activities to cooperate (unsuccessful so far). Wrote a Python backend with oauth and JS frontend currently being served by vite, but I'm yet to figure out why nothing is working.

Update attachment
Mundane Mann
Mundane Mann created a project
55d ago

Bomb Defusal

A Discord activity about defusing bombs!

2 devlogs 1 follower
Mundane Mann
Mundane Mann joined Summer of Making
59d ago

This was widely regarded as a great move by everyone.