HanNetHack은 NetHack을 바탕으로 한 비공식 한국어 로컬라이즈 포크입니다. NetHack DevTeam 공식 배포물이 아닙니다.
2026년 1월, 업스트림 NetHack이 5.0.0(NetHack-5.0.0_Released)을 출시했습니다. HanNetHack은 이를 반영해 HanNetHack-5.0 브랜치에서 빌드·번역·개발을 이어갑니다. 기본 브랜치와 일상적인 기여·번역 작업의 기준은 5.0입니다. (과거 3.7 기반 작업은 HanNetHack-3.7 브랜치에 보존됩니다.)
업스트림 변경은 NetHack/NetHack의 NetHack-5.0 브랜치를 가능할 때마다 병합합니다. 유지보수자용 병합 절차는 doc/i18n-upstream-merge.md를 참고하세요.
- 버그·오역·문구 개선 제안: GitHub Issues에 올려 주세요. (영문·한국어 모두 가능합니다.)
- 원본 게임: 상위 프로젝트는 NetHack on GitHub입니다.
- Releases에서 Windows용 포터블 ZIP을 받습니다. (GitHub Actions가 빌드한 패키지와 동일한 형식입니다.)
- 원하는 폴더에 압축을 풉니다.
NetHackW.exe를 실행하면 타일 GUI,NetHack.exe는 콘솔(터미널) 버전입니다. 데이터와 번역은 ZIP 안에 포함되어 있습니다.- 설정은 사용자별
NetHack\.nethackrc(또는 배포 문서에 안내된 경로)에서 할 수 있습니다. 기본 언어는 한국어입니다. 영어로 바꾸려면OPTIONS=language:en등을 사용합니다.
빌드·번역·개발 정보는 아래 Overview와 Korean translation system (brief) 등을 참고하세요. (번역 파이프라인 요약은 영어로 적어 두었습니다.)
HanNetHack is an unofficial, community-maintained Korean localization of NetHack 5.0 for Linux and Windows. It is not affiliated with the NetHack DevTeam.
Upstream NetHack 5.0.0 shipped in January 2026 (release tag). This fork tracks NetHack-5.0 on NetHack/NetHack. Use branch HanNetHack-5.0 for ongoing development and translation (repository default branch). Older 3.7-era history remains on HanNetHack-3.7. Maintainer-oriented merge workflow: doc/i18n-upstream-merge.md.
- Bugs, translation mistakes, or wording feedback: please file GitHub Issues.
- Upstream source: NetHack/NetHack.
Source code uses GNU gettext-style macros (_(), N_(), pgettext, …). Translations are compiled to a standard .mo message catalog that is bundled inside nhdat at build time (not loaded from a separate locale directory next to the binary).
At runtime, strings are resolved through the in-tree reader src/mo_reader.c. The game does not link against GNU libintl.
- Canonical translator-edited file in git:
po/ko_manual.po. A localpo/ko.poproduced bymake update-pois an optional extraction/merge aid and is not committed. - Korean help, rumors, Lua, and other locale assets live under
dat/locale/ko/; when opening data files,dlb_fopen()prefers language-specific paths when present. - Korean grammar markers in strings (topic/object particles, etc.) are interpreted by
ko_postpos.c. Rules and tone guidelines:po/TRANSLATION_GUIDE_KO.md; APIs and pipeline:po/I18N_SYSTEM.md.
The easiest way to try the game is a release build from the Releases page (Windows portable ZIPs are built by CI).
- Large-scale Korean UI and message translation (ongoing;
cd po && make stats) - Runtime Korean grammar (topic/subject/object markers, etc.) via a small postposition engine
- Speech-style-aware wording where the speaker warrants it
- UTF-8 display width handling on TTY and the Windows GUI
- Localized text in the Windows GUI character picker
git clone https://github.com/timfr09/HanNetHack.git
cd HanNetHack
# One-shot Unix build (recommended): cleans stray Win32 GNUmakefile, then hints/linux.500 + make all
# sh scripts/build-linux-unix.sh
cd sys/unix && sh setup.sh hints/linux.500 && cd ../..
make fetch-lua # one-time: download Lua 5.4.8 source
make all # do NOT use -j (Lua build can race)
make install # installs to ~/nh/install/
HACKDIR=~/nh/install/games/lib/nethackdir TERM=xterm-256color ./src/nethackThe Windows GUI build (NetHackW.exe) and console build (NetHack.exe) are supported.
Build matrix (Unix / MinGW / MSVC) and GNUmakefile gotchas: doc/build-environments.md
Prerequisite fetch steps (Lua, PDCursesMod, etc.) are unchanged; see sys/windows/build-hannethack.txt.
Makefiles: sys\windows\nhsetup.bat installs Windows nmake rules into src\ without overwriting an existing Unix-generated src\Makefile. It writes src\Makefile.win (and matching GNUmakefile.win). From src\, run:
nmake /f Makefile.win packageTo use the traditional NetHack layout (nmake with default Makefile), run:
sys\windows\nhsetup.bat /install-makefile
cd src
nmake package(nhsetup.bat /im is the short form. Legacy: /overwrite, /o.) Continuous integration uses /install-makefile so plain nmake package matches upstream expectations.
You can also open sys\windows\vs\NetHack.sln in Visual Studio. Optional gettext tools under lib\gettext\bin are only needed if you edit po/*.po or rebuild the .mo bundled into nhdat (sys\windows\setup-gettext.cmd).
After building, sys\windows\install.cmd stages a playable tree under install\HanNetHack\.
The game defaults to Korean. To switch language, edit ~/.nethackrc or %USERPROFILE%\NetHack\.nethackrc:
OPTIONS=language:ko
OPTIONS=language:en
Work from the HanNetHack-5.0 branch (same tree as upstream 5.0 plus Korean patches).
- Edit
po/ko_manual.poonly (the canonical file committed to git). cd po && make compileproducesdat/locale/ko/nethack.mo.- Rebuild so
nhdatpicks up the catalog (make allon Linux after Unix setup; Windows as above). - Before opening a PR:
./scripts/translation-preflight.sh(gettext checks +_()wrapping audit).
Operational workflow (when to run pot, safe-update, etc.): po/TRANSLATION_PROCESS.md. Quick reference: po/README.md. Style guide: po/TRANSLATION_GUIDE_KO.md. Maintainer merge notes: doc/i18n-upstream-merge.md.
See Korean translation system (brief) above for architecture; po/I18N_SYSTEM.md for full technical detail.
| Pattern | Role | Example (conceptual) |
|---|---|---|
{은/는} |
Topic marker | dragon은 / ant는 |
{이/가} |
Subject marker | sword이 / axe가 |
{을/를} |
Object marker | sword을 / axe를 |
{과/와} |
and / with | sword과 / shield와 |
{으로/로} |
direction / means | north으로 / down로 |
HanNetHack uses semantic versioning with a Korean-translation suffix, e.g. v5.0.0-ko.0 (based on NetHack 5.0.0, Korean iteration 0). The badge at the top of this file tracks the current packaging snapshot.
NetHack General Public License (NGPL). See dat/license.
- Original NetHack: NetHack DevTeam
- Korean localization: HanNetHack contributors
