Janggi (Korean chess) game I built

Janggi (Korean chess) game I built

I’m not one for posting on Reddit, so forgive me if I’ve broken any rules posting like this 😄 I am aware one of the rules is “no self promotion” but I don’t really care if anyone knows who I am here, just wanted to share a fun game that I get nothing of value out of (besides personal joy) if you play or not.

I’m a software developer and wanted some side projects to build out / showcase my skills.

So I built a version of Janggi (Korean chess / 장기): https://janggi.neilarmstrong.dev/

I picked this idea for two reasons:

  1. I’ve always wanted to learn the game of Janggi / get decent at it like I am with chess (decent, not great…), but always kind of found the existing web / Android apps (especially the mobile app I mostly played janggi on) to be a bit lacking. So wasn’t nearly as engaging as the chess app I usually play
  2. It’s actually somewhat complex to put together (though that is perhaps all the extra features I kept adding, good old scope creep) so hopefully a good showcase for employers / recruiters, but you don’t need to care about that bit 🙂

What is it then?

– Main thing: the game itself against a bot. I wanted it to be a case of “jumping into the game as soon as possible”, as with my existing chess app on my phone I like to just play a game against a bot or event just part of a game while waiting in line, on a bus / train etc, just generally waiting on things when I don’t want to just sit on reddit. So I wanted this experience to be similar, just straight in and no fuss!

– Realtime synthesised music. All the sound effects / music use https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API, which was kind of a fun idea. It’s a bit 8-bit style, and certainly not to everyone’s taste. It does have some issues too were firefox on Android kind of lag out a bit, so if it sounds crackly give me a shout / turn off the music before it makes your ears bleed a bit.

– A bit of “Juicing” (https://www.gdcvault.com/play/1016487/juice-it-or-lose). Makes the game feel a bit more impactful and fun to play rather than a bit of a dry experience I’ve seen in most other versions of Janggi. Also a simple progression system. Hopefully not too overboard 😄 The main thing I wanted from this was the elo system against the bot as I found that fun on the chess apps I play.

– Local / offline first, built for phones. What I meanly want from this is a game I can play on a train, shops etc where internet access isn’t always available. So you can install the game as a PWA (https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps) on your device, it should require no internet access to play with everything stored locally on your phone. You just might get some little notifications of updates sometimes as I make future changes.

– Optional account / online play. I added an optional google sign in to sync your settings if you want to play across multiple devices, keeping your XP and elo progression synced. Secure by default so I don’t store any emails or usernames, just a google account id to resync things. Also has a simple online mode using “rooms” and “friend codes”. I considered a full “find a match” system but it’s a lot extra to setup, and means I might have to consider moderation etc which is just a bit much for me at the moment (never say never though…)

– Custom styles. No idea if anyone would use this, but it was an early idea. Allowing you to fully customise the board and pieces in whatever way you want. This then extended to the online play where you could show your custom board on your half, and your army would have your custom pieces. This can be toggled on and off per player so they don’t need to see the other board if someone is missing around with invisible pieces etc 😂

Ads etc

No ads, I don’t store any of your data (unless you ask for syncing, but even then it’s super limited what I store). I don’t make any money from this, it’s just a free (and hopefully fun) game. So give it a go if you are interested! Would love to hear some feedback https://janggi.neilarmstrong.dev/

Korean translations

I have some very small and simple Korean translations, but my Korean isn’t amazing so while I’ve eyeballed it as much as I can there are probably some issues with it.

I only wanted to translate the main game to reduce the amount of text being translated at this early stage, so the learning page / references page etc are still fully English as well as some of the game settings etc.

I have a native Korean speaking friend helping me review the initial translations so hopefully can clean them up, if any other native Korean speakers are interested in helping do give a shout!

AI notice

It might put some people off so I will of course make it clear I used Claude Code and Codex a lot to build this. Their focus was on writing the code and generating assets, while I was critically reviewing all the code / directing the tool rather than being led / creating the test first workflows / enforcing and updating code standards. It’s good code in my opinion, I am very critical of it generally 🙂 This is a side-project / portfoilo project for me as well, so I’m not just looking at vibe coding some sloop! Feel free to roast the open source code if you disagree though: https://github.com/neil-armstrong-fig/janggi

This post was 100% written by me, no AI tools were used. Probably typos and everything in there as proof 😄

Links and such

– The game: https://janggi.neilarmstrong.dev/
– The code: https://github.com/neil-armstrong-fig/janggi
– Questions: [janggi@neilarmstrong.dev](mailto:janggi@neilarmstrong.dev) or https://neilarmstrong.dev/contact/ or of course just here too as a response / DM

submitted by /u/worms103
[link] [comments]

Latest News from Korea

Latest Entertainment from Korea

Learn People & History of Korea