HackerTrans
TopNewTrendsCommentsPastAskShowJobs

maenbalja

no profile record

Submissions

I Made a Multiplayer CJK (Chinese, Japanese, Korean) Word Game

danobang.com
2 points·by maenbalja·vor 3 Monaten·0 comments

Show HN: Danobang! – Multiplayer CJK (Chinese, Japanese, Korean) Word Game

danobang.com
5 points·by maenbalja·vor 4 Monaten·1 comments

Japanese government makes indie game devs eligible for grants up to $60k USD

automaton-media.com
5 points·by maenbalja·vor 4 Monaten·0 comments

Ask HN: Anyone seeing GitHub action timeouts?

1 points·by maenbalja·vor 9 Monaten·1 comments

Ask HN: How to disable Android keyboard word prediction on websites?

3 points·by maenbalja·vor 10 Monaten·0 comments

Cursor pro is now free for students

cursor.com
3 points·by maenbalja·letztes Jahr·1 comments

comments

maenbalja
·vor 3 Monaten·discuss
haha nice to meet you here too, thanks for enjoying it!
maenbalja
·vor 3 Monaten·discuss
I liked the 10% @@@ example, demonstrated their point pretty well.

Also for anyone who speaks or is currently learning Chinese... I've been working on a multiplayer CJK word game that shares a similar efficient brute force style of learning to the author's approach (although presented via gameplay instead of tooling). Every turn you get a random character and must type in a word that contains the char in ANY position. If you like fast paced word games it might be up your alley: https://danobang.com/?game_lang=cmn
maenbalja
·vor 4 Monaten·discuss
No signup is required! You can jump right into a match with friends or a CPU: https://danobang.com/

You can think of Danobang[0] like a more flexible version of shiritori (a popular word chain game from Japan with similar variants existing in Korea and China). Each turn players are given a random character prompt and must type a word that includes it in ANY position.

Examples:

- Chinese (simplified): If prompt is "爱", then possible answers could be "可爱", "爱好", "恋爱", etc

- Japanese: If prompt is "ゆき" then possible answers could be "ゆきだるま", "こゆき", "はつゆき", etc

- Korean: If prompt is "사" then possible answers could be "사랑", "회사", "이사하다", etc

When joining a match you must choose both the language and "prompt type" you want to play with. Korean has hangul, choseong (initial consonant), and hanja. Japanese has kana and kanji. Chinese has hanzi simplified and hanzi traditional. For CJK prompt types players can submit words with either phonetic input (hangul, kana, pinyin, jyutping) or CJK input via an IME.

There's also an "alphabet bonus" mechanic where if you collect all phonetic characters for the respective language you're playing in (hangul jamos, kana, pinyin initials, jyutping initials) you earn an extra life. I've found this helps makes games feel more dynamic.

Many configurable settings are available in custom rooms to further cater your experience (timer length, prompt difficulty, prompt rotation behaviour, etc). I've also added preset difficulties for popular language proficiency tests (namely JLPT and HSK) which language learner players have seemed to enjoy.

As for the why... I originally built Danobang to practice Korean with my family in a more playful manner (I'm Korean-Canadian with questionable fluency), but I became curious if the mechanics could work with a logographic writing system like Chinese and sought out to try. I spent a lot of time learning Japanese and kanji specifically which helped build my mental model of how CJK characters work in each language. Namely the core concept of phonetic reading text (furigana, pinyin, jyutping, hangul) vs CJK meaning text (kanji, hanzi, hanja) was instrumental for implementing CJK game modes in a modular fashion.

I would say the biggest challenges of this project were (in no particular order) multiplayer infra, figuring out the right CJK abstractions, learning a new language, and design.

Any feedback at all is appreciated! The site is still a work in progress and the dictionaries[1] are far from being "complete" so there'll likely be a few rough edges here and there.

[0] The name "Danobang" has Korean origins with the sound "dano" meaning "word" in Korean (단어). The "bang" part is meant to be onomatopoeia, but also happens to mean "room" in Korean.

[1] Shoutout to krdict, stdict, JMDict, CC-CEDICT, and CC-Canto for helping populate the initial dictionary. You can check out the "about" page for direct links: https://danobang.com/about
maenbalja
·letztes Jahr·discuss
Alright I'm sold haha. You basically described the emotions I imagined I would've experienced if I transitioned to Better Auth. Just needed to hear it from someone else. Cheers!
maenbalja
·letztes Jahr·discuss
Thanks for sharing, you've successfully tipped the Better Auth scales for me... Might be too early to tell, but would you say you prefer Lucia or Better Auth at this point? I really like Lucia because of how little magic there is and how I can understand/control everything related to auth. But I wonder if it loses its luster as a project grows.
maenbalja
·letztes Jahr·discuss
I'm very tempted to make the leap from Lucia to Better Auth for a greenfield project, but the thought of jumping yet again from one auth solution to another is making me hesitate. If there are any satisfied (or unsatisfied) devs who have attempted the Lucia -> Better Auth transition, I'd love to hear your thoughts on this!
maenbalja
·letztes Jahr·discuss
Pretty amazing deal imo, would highly recommend anyone still in school to nab this when they can
maenbalja
·letztes Jahr·discuss
Hm that's good to know, thanks for the link. I'm just using the runner for private solo projects atm so I think my setup will do for now. But I definitely didn't consider the implications of using it on a private project with other contributors yikes.
maenbalja
·letztes Jahr·discuss
Timely article... I recently learned about self-hosted runners and set one up on a Hetzner instance. Pretty smooth experience overall. If your action contains any SSH commands and you'd like to avoid setting up a firewall with 5000+ rules[0], I would recommend self-hosting a runner to help secure your target server's SSH port.

[0] https://api.github.com/meta