{"id":39906332,"url":"https://github.com/Hucaru/Valhalla","last_synced_at":"2026-01-27T04:00:35.506Z","repository":{"id":37933405,"uuid":"87974626","full_name":"Hucaru/Valhalla","owner":"Hucaru","description":"A Golang MapleStory (v28) server","archived":false,"fork":false,"pushed_at":"2026-01-24T17:07:33.000Z","size":11867,"stargazers_count":317,"open_issues_count":9,"forks_count":82,"subscribers_count":14,"default_branch":"master","last_synced_at":"2026-01-25T06:46:40.789Z","etag":null,"topics":["docker","game-server","go","golang","maplestory","mmorpg","mmorpg-server"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Hucaru.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-04-11T20:05:46.000Z","updated_at":"2026-01-24T17:07:27.000Z","dependencies_parsed_at":"2025-12-31T10:00:06.861Z","dependency_job_id":null,"html_url":"https://github.com/Hucaru/Valhalla","commit_stats":null,"previous_names":[],"tags_count":50,"template":false,"template_full_name":null,"purl":"pkg:github/Hucaru/Valhalla","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hucaru%2FValhalla","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hucaru%2FValhalla/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hucaru%2FValhalla/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hucaru%2FValhalla/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hucaru","download_url":"https://codeload.github.com/Hucaru/Valhalla/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hucaru%2FValhalla/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28800877,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T03:44:14.111Z","status":"ssl_error","status_checked_at":"2026-01-27T03:43:33.507Z","response_time":168,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","game-server","go","golang","maplestory","mmorpg","mmorpg-server"],"created_at":"2026-01-18T16:00:22.320Z","updated_at":"2026-01-27T04:00:35.500Z","avatar_url":"https://github.com/Hucaru.png","language":"Go","funding_links":[],"categories":["Emulators"],"sub_categories":["GMS (Global)"],"readme":"![Alt text](img/logo.png?raw=true \"Valhalla\")\n\n[![Actions Status](https://github.com/Hucaru/Valhalla/workflows/Go/badge.svg)](https://github.com/Hucaru/Valhalla/actions)\n[Visit our Discord channel](https://discord.gg/KHky9Qy9jF)\n## What is this?\n\nThis project exists to preserve and archive an early version of the game (v28 of global)\n\n## Client modifications\n\nA DLL which will auto hook the functions to make a localhost and window mode can be found [here](https://github.com/Hucaru/maplestory-client-hook)\n\n## Features\n\nGeneral:\n- [x] Simulated latency with jitter (set in config) to make dev environment simulate a real world connections when within network\n\nLogin server:\n- [x] Login user\n- [x] Auto-register (optional feature to automatically create accounts on first login attempt)\n- [x] Show EULA on first login\n- [X] Pin\n- [x] Display world ribbons\n- [x] Display world messages\n- [x] Display world status (e.g. overpopulated)\n- [x] World selection\n- [x] Channel selection\n- [x] Create character\n- [x] Delete character\n- [x] Delete character informs world servers\n- [x] Migrate to channel server\n- [x] Show worlds, channels, world status etc from information sent from world server\n- [x] Prevent players from accessing dead channel\n- [x] Server resets login status upon restart for dangling users\n\nWorld server:\n- [x] Keep track of player count\n- [x] Send information to login server\n- [x] Send IP, port to channel for change channel requests\n- [x] Forward player connects to channels\n- [x] Forward player leaves game to channels\n- [x] Broadcast buddy events\n- [x] Broadcast party events\n- [x] Broadcast guild events\n- [x] Forward whisphers\n- [x] Allow gm command to actiavate exp/drop changes accross all channels\n- [x] Allow gm commands to update information displayed at login\n- [x] Propagate character deletion to channels\n- [x] Party sync when channel or world server are restarted\n- [x] Guild sync when channel or world server are restarted\n\nCashshop server:\n- [x] List items\n- [x] Allow purchases via different currencies\n\nChannel server:\n- [x] GM commands\n- [x] Players can see each other\n- [x] Player can change channel\n- [x] Players can see other movement\n- [x] Player chat\n- [x] player use portal\n- [x] Player allocate skill points\n- [x] Player stats\n- [x] Player use skills\n- [x] Player skill logic (haste etc)\n- [x] Player inventory (needs a re-write)\n- [x] Player use item (scrolls, potions etc\n- [x] Player use cash item (super megaphones, etc)\n- [x] Player drop item(s)\n- [x] Player pets\n- [x] NPC visible\n- [x] NPC movement\n- [x] NPC basic chat\n- [x] NPC shops\n- [x] NPC stylist\n- [x] NPC storage\n- [x] Load scripts from folder (incl. hot loading)\n- [x] Map instancing\n- [x] Mob visible\n- [x] Mob movement\n- [x] Mob attack\n- [x] Mob skills that cause stat changes or summon other mobs (not on death)\n- [x] Mob death\n- [x] Mob respawn\n- [x] Mob spawns mob(s) on death\n- [x] Mob drops\n- [x] Mob boss HP bar\n- [x] Minigames\n- [x] Whisphers\n- [x] Find / Map in buddy window\n- [x] Buddy list\n- [x] Buddy chat\n- [x] Party creation\n- [x] Party invite\n- [x] Party accept/reject\n- [x] Party expel\n- [x] Party chat\n- [X] Party HP bar\n- [x] Guild creation/disband\n- [x] Guild invite\n- [x] Guild join/leave\n- [x] Guild emblem\n- [x] Guild chat\n- [x] Guild points update\n- [x] Guild rank titles change\n- [x] Guild rank update\n- [x] Guild notice update\n- [x] Guild expel\n- [x] Guild member online notice\n- [x] Kerning PQ\n- [x] Ludi PQ\n- [x] Balrog boat invasion\n- [x] Deleted character removes from guild\n- [x] Deleted character removes from party\n- [x] Trade\n- [x] Communication Window\n- [x] Quests\n- [x] Reactors\n- [x] Server resets login status upon restart for dangling characters\n\nMetrics:\n- [x] Channel population\n- [x] Server thread count (OS and Go)\n- [x] Server memory usage (heap and stack)\n- [x] Monster kill rate\n- [x] Ongoing trades\n- [x] Ongoing minigames\n- [x] Ongoing npc script interactions\n- [x] Number of parties\n\nSee screenshots section for an example Grafana dashboard\n\n## Acknowledgements\n\n- Sunnyboy for providing a [list](http://forum.ragezone.com/f921/library-idbs-versions-named-addresses-987815/) of idbs for which this project would not have started\n- The following projects were used to help reverse packet structures that were not clearly shown in the idb\n    - [Vana](https://github.com/retep998/Vana)\n    - [WvsGlobal](https://github.com/diamondo25/WvsGlobal)\n    - [OpenMG](https://github.com/sewil/OpenMG)\n- [NX](https://nxformat.github.io/) file format (see acknowledgements at link)\n\n## Getting Started\n\nValhalla supports multiple deployment methods. Choose the one that best fits your needs:\n\n📚 **[Installation Guide](docs/Installation.md)** - Start here! Covers Data.wz conversion and client setup\n\n### Quick Links by Deployment Method\n\n- 🚀 **[Dev Mode](#dev-mode)** - Run all servers in one process (easiest for solo play and testing)\n- 🖥️ **[Local Setup](docs/Local.md)** - Run directly on your machine (best for quick testing)\n- 🐳 **[Docker Setup](docs/Docker.md)** - Run using Docker Compose (recommended for most users)\n- ☸️ **[Kubernetes Setup](docs/Kubernetes.md)** - Deploy to a Kubernetes cluster (for production)\n- 🔨 **[Building from Source](docs/Building.md)** - Build for development work\n\n### Dev Mode\n\nDev mode is the simplest way to run Valhalla for solo play or testing. It starts all four server types (login, world, channel, and cashshop) in a single process, eliminating the need to manage multiple processes.\n\n**Quick Start:**\n\n```bash\n# Using the provided dev config\n./Valhalla -type dev -config config_dev.toml\n\n# Or build from source\ngo build\n./Valhalla -type dev -config config_dev.toml\n```\n\nThe dev mode:\n- ✅ Runs all servers (login, world, channel, cashshop) in one process\n- ✅ Uses localhost networking for inter-server communication\n- ✅ Has auto-register enabled by default for easy testing\n- ✅ Configured with 2x EXP/Drop/Mesos rates for faster testing\n- ✅ Ideal for solo play and development\n\n**Note:** Dev mode still requires a MySQL database. For production deployments, use separate processes for better reliability and scalability.\n\n### Configuration\n\n⚙️ **[Configuration Guide](docs/Configuration.md)** - Complete reference for all configuration options\n\nAll server types support both TOML configuration files and environment variables. See the Configuration Guide for details on:\n- Command line flags (`-type`, `-config`, `-metrics-port`)\n  - Server types: `login`, `world`, `channel`, `cashshop`, or `dev` (all-in-one)\n- Database settings\n- Server-specific options (login, world, channel, cashshop)\n- Network configuration\n- Performance tuning\n\nFor dev mode, use `config_dev.toml` which includes all necessary server configurations in a single file.\n\n## Advanced Topics\n\n### NPC Scripting\n\nNPCs are scripted in JavaScript powered by [goja](https://github.com/dop251/goja). For detailed NPC chat formatting codes and scripting information, see the scripts directory and existing NPC implementations.\n\nFor NPC chat display formatting reference, see the [NPC Chat Formatting](#npc-chat-formatting) section below.\n\n### Production Deployments\n\n- **[Kubernetes](docs/Kubernetes.md)** - Production-ready deployment with Helm, ingress, scaling, and monitoring\n- **[Docker](docs/Docker.md)** - Containerized deployment with Docker Compose\n\n## NPC Chat Formatting\n\nWhen scripting NPCs in JavaScript, use these formatting codes:\n\n- `#b` - Blue text\n- `#c[itemid]#` - Shows how many [itemid] the player has in inventory\n- `#d` - Purple text\n- `#e` - Bold text\n- `#f[imagelocation]#` - Shows an image from .wz files\n- `#g` - Green text\n- `#h #` - Shows the player's name\n- `#i[itemid]#` - Shows a picture of the item\n- `#k` - Black text\n- `#l` - Selection close\n- `#m[mapid]#` - Shows the name of the map\n- `#n` - Normal text (removes bold)\n- `#o[mobid]#` - Shows the name of the mob\n- `#p[npcid]#` - Shows the name of the NPC\n- `#q[skillid]#` - Shows the name of the skill\n- `#r` - Red text\n- `#s[skillid]#` - Shows the image of the skill\n- `#t[itemid]#` - Shows the name of the item\n- `#v[itemid]#` - Shows a picture of the item\n- `#x` - Returns \"0%\" (usage varies)\n- `#z[itemid]#` - Shows the name of the item\n- `#B[%]#` - Shows a progress bar\n- `#F[imagelocation]#` - Shows an image from .wz files\n- `#L[number]#` - Selection open\n- `\\r\\n` - Moves down a line\n- `\\r` - Return carriage\n- `\\n` - New line\n- `\\t` - Tab (4 spaces)\n- `\\b` - Backwards\n\nReference from [RageZone forums](http://forum.ragezone.com/f428/add-learning-npcs-start-finish-643364/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHucaru%2FValhalla","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FHucaru%2FValhalla","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHucaru%2FValhalla/lists"}