A complete technical and design reference for HB Outliners — a classic 2D MMORPG reborn on the BASE L2 blockchain. Read this to understand the game world, the economy, the contracts, and the long-term plan for player ownership.
HB Outliners is a free-to-play, skill-based 2D MMORPG built on a heavily modernized fork of the late-1990s game Helbreath. It runs on a custom C++ server with 1920×1080 native rendering, an 80+ map persistent world, two warring factions (Aresden and Elvine), 180 character levels, 2,500-point skill system and full-loot deathmatch PvP. The game is integrated end-to-end with Coinbase's BASE L2 blockchain through an on-chain economy (HBUCKS, ERC-20) and a player-owned item layer (HelbreathItems, ERC-721). The economy is bound by a hard 1,000,000,000 token supply cap that the server enforces every tick. Items earned in the world can be exported to BASE as NFTs for $5 USD, traded freely on any compatible marketplace, and burned back to recover the original item with its full state.
The original Helbreath was a Korean MMORPG released in 1999 — early enough that the genre was still being invented. Its faction war between Aresden and Elvine, full-loot PvP, and pure skill-based progression formed a kind of design that the modern AAA MMO has largely abandoned in favor of safer, theme-park content. HB Outliners restores and extends that design with three goals:
HB Outliners is open source. The full game client, server, smart contracts, web bridge, NFT pipeline and asset extraction tools all live in a public GitHub repository. Anyone can audit the rules, fork the project, or run a private shard.
HB Outliners is a top-down 2D MMORPG running on a persistent server. The combat is real-time, the world is shared, and the player choices that matter most — what you train, who you ally with, what you risk in the open world — are permanent.
Top-down, real-time, persistent shared world.
No classes. Every character can train every skill.
Open-world, faction-based, full-loot.
No subscription, no pay-to-win.
Players choose a faction and a starting town, train their skills against the world's mobs, gear up by looting drops or buying from NPCs, and then either pursue raid bosses, defend their faction in the Crusade war, or stake out a corner of the open world to PvP for honor and loot. Every action either earns HBUCKS (the in-game currency / token) or spends them, and the server enforces a strict conservation rule that no HBUCKS can ever be created out of thin air.
HB Outliners has no Warrior / Mage / Rogue split. Every player allocates from a shared pool of 2,500 skill points across roughly 23 skills covering melee weapons, archery, magic, defense, crafting, gathering and utility. A player who pours points into Long-Sword and Magic-Resistance will fight nothing like a player who specializes in Magic and Staff-Attack — but the choice is open and never locked. This is the original Helbreath philosophy and it is preserved unchanged.
The game world is composed of more than 80 distinct maps connected by teleport tiles and open borders. Maps fall into several categories:
| Category | Examples | Purpose |
|---|---|---|
| Faction Towns | aresden, elvine | Starting cities, NPC merchants, banks, training |
| Farming Zones | arefarm, elvfarm | Newbie-friendly hunting near the towns |
| Hunting Grounds | arebrk11–22, elvbrk11–22 | Mid-level mob farming, EXP and gear |
| Dungeons | aresdend1, elvined1, dglv2, dglv3, dglv4 | Tiered indoor dungeons, deeper = harder |
| Towers | wzdtwr_1, wzdtwr_2 | Wizard towers, magic-themed mobs |
| Boss Lairs | inferniaA, inferniaB, abaddon, maze | End-game boss arenas |
| Open PvP | middleland, 2ndmiddle, huntzone1–9 | Free-for-all PvP, faction warfare ground |
| Arenas | fightzone1–9 | Reservable PvP fight zones |
| Jails | arejail, elvjail | Penalty zones for criminal players |
| Special | cathedral, cityhall_1, cityhall_2 | Faction headquarters and cathedrals |
Travel between maps is handled by teleport tiles embedded in the map data. Players can not travel directly between Aresden and Elvine territory — they must cross through neutral middle zones, where they will encounter players of the opposite faction.
Every player must choose one of two factions at character creation: Aresden or Elvine. The choice is permanent and visible to other players. Faction members can use each other's town facilities, can not attack each other in safe zones, and fight together in the Crusade war.
The Crusade is a recurring server-wide war fought on the middleland map. Each faction defends a series of war structures — gates, towers, mana stones, and magic generators — while attempting to destroy the enemy's. EK (Enemy Kill) points are awarded for every PvP kill during war windows.
| Day | Window | Type |
|---|---|---|
| Monday – Thursday | 3 hours | Daily raid window |
| Friday | 30 hours | Weekend kickoff |
| Saturday | 45 hours | Peak war |
| Sunday | 60 hours | Marathon war |
The Crusade map contains destroyable buildings: AGTs (Alliance Guard Towers, ~500 HP), CGTs (Castle Guard Towers, ~500 HP), ESGs (Energy Shield Generators), Mana Stones (neutral capture points) and Grand Magic Generators (faction-specific). A faction wins the Crusade by demolishing the enemy structures and accumulating EK points.
Combat is real-time and unforgiving. The server is in Deathmatch mode: there are no instances, no soul-bound items, and the open world is genuinely dangerous.
arejail / elvjail).Full-loot PvP is the original Helbreath compromise that makes the rest of the game work. Every fight has stakes; every death has a cost; every kill has meaning. The market for items stays liquid because items are constantly cycling out of player inventories. The HBUCKS economy stays healthy because risk-takers feed the loot pool. Removing this would remove most of what HB Outliners is.
Characters progress along three independent axes: Level, Stats, and Skills. Each axis has its own cap and its own training method.
Maximum playable level. Reached through experience earned by killing mobs and completing quests.
Maximum points per attribute (STR, DEX, INT, CON, etc.).
Total skill points to allocate freely across all skills.
| ID | Skill | Category |
|---|---|---|
| 3 | Magic Resistance | Defense (passive) |
| 4 | Magic | Spellcasting |
| 5 | Hand Attack | Melee (unarmed) |
| 6 | Archery | Ranged |
| 7 | Short-Sword | Melee |
| 8 | Long-Sword | Melee |
| 9 | Fencing | Melee |
| 10 | Axe | Melee |
| 11 | Shield | Defense |
| 14 | Hammer | Melee |
| 21 | Staff | Melee |
| 0 | Mining | Tradeskill |
| 1 | Fishing | Tradeskill |
| 2 | Farming | Tradeskill |
| 12 | Alchemy | Tradeskill |
| 13 | Manufacturing | Tradeskill |
| 18 | Crafting | Tradeskill |
| 20 | Enchanting | Tradeskill |
| 19 | Pretend Corpse | Utility |
| 23 | Poison Resistance | Defense (passive) |
In addition to natural skill gain through use, players can spend HBUCKS to buy skill levels directly via the in-game /train command. The cost scales exponentially: early levels cost ~50 HBUCKS each, late levels (90+) can cost thousands. This makes raw HBUCKS a meaningful long-term investment in character power, but it also makes it impossible to "buy your way to god mode" without first contributing to the economy.
/train — open the numbered skill menu/train <n> — select skill #n, asks how many levels/train <n> <levels> — quote the cost of that many levels/train-confirm — execute the quote/train-cancel — drop the quoteA quote is valid for 60 seconds before it expires. Maximum 100 levels per quote, capped further by the skill's hard limit.
The Magic skill unlocks 97 spells covering damage, healing, control, buffs, debuffs and utility. Spells require Intelligence to learn and Mana to cast.
| Spell | Req INT | Mana | Type | Effect |
|---|---|---|---|---|
| Fire Missile | 18 | 8 | Damage | Single target ranged bolt |
| Heal | 20 | 15 | Healing | Restore HP to self or ally |
| Fire Ball | 26 | 27 | AoE | 2×2 area explosion |
| Great Heal | 28 | 28 | Healing | Large HP restore |
| Lightning | 47 | 44 | Damage | 1×1 single target |
| Resurrection | — | 200 | Support | Revive a corpse on the spot |
| Meteor Strike | 169 | 120 | AoE | Massive AoE damage |
| Blizzard | 195 | 170 | AoE | 3×3 freeze + damage |
A small slice of the 97-spell roster. Full list available in server-data/GameConfigs/Magic.cfg.
The world is populated by 115 distinct mob types ranging from a level 10 Slime in the farming zones to a level 81 Abaddon raid boss with 15,000 HP. Each mob has a fixed level, HP pool, damage range, magic resistance, gold drop range and experience reward, all configured in NPC.cfg.
| Mob | Lv | HP | Damage | EXP |
|---|---|---|---|---|
| Slime | 10 | 2 | 10–30 | 67–70 |
| Skeleton | 11 | 8 | 40–100 | 79–100 |
| Orc | 14 | 4 | 35–70 | 28–29 |
| Giant Ant | 16 | 3 | 15–40 | 34–35 |
| Scorpion | 17 | 6 | 35–80 | 85–88 |
| Zombie | 18 | 10 | 40–90 | 86–89 |
| Clay Golem | 23 | 30 | 100–150 | 550–580 |
| Troll | 28 | 55 | 85–200 | 595–600 |
| Ogre | 29 | 115 | 150–230 | 790–900 |
| Liche | 30 | 130 | 300+ | 920–1,050 |
| Demon | 31 | 340 | 450–500 | 10,500+ |
| Werewolf | 33 | 140 | 180–300 | 2,260–3,500 |
| Stalker | 48 | 130 | 200–300 | 2,180–2,350 |
| Hellclaw (Boss) | 49 | 1,000 | 450–1,000 | 33,800–37,000 |
| Tigerworm (Boss) | 50 | 2,000 | 550–1,200 | 65,600–85,000 |
| Beholder | 53 | 100 | 100–450 | 1,200–1,300 |
| Mountain Giant | 58 | 100 | 250+ | 1,700–1,900 |
| Wyvern (Boss) | 66 | 2,500 | 1,000–1,300 | 98,000–99,000 |
| Barlog | 70 | 500 | 400–500 | 2,450–3,000 |
| Centaurus | 71 | 350 | 450–500 | 2,250–3,000 |
| Fire Wyvern (Boss) | 73 | 3,000 | 1,000–1,300 | 12,250–105,000 |
| Abaddon (Final Boss) | 81 | 15,000 | 1,500–1,600 | 125,000–550,000 |
All mob stats are sourced directly from the live NPC.cfg file shipped with the server. Mob behavior, spawn rate and respawn timer are configured per-map in the MAPDATA directory.
There are over 730 distinct items in the game, split across three configuration files (Item.cfg, Item2.cfg, Item3.cfg). Items have type, slot, stats, weight, color, durability and special property fields.
| Type ID | Category | Slot |
|---|---|---|
| 1 | Weapon | Hand |
| 2 | Armor | Body |
| 3 | Hauberk | Body (heavy) |
| 4 | Leggings | Legs |
| 5 | Material | Inventory |
| 6 | Accessory | Various |
| 7 | Shield | Off-hand |
| 10 | Ring | Finger |
| 11 | Consumable | Inventory |
| 12 | Cape | Back |
| Item | Damage | Weight |
|---|---|---|
| Dagger | 4–5 | 300 |
| Short Sword | 5–6 | 500 |
| Long Sword | 10–11 | 800 |
| Claymore | 10–11 | 1,000 |
| Great Sword | 11–12 | 1,000 |
| Flameberge | 12–13 | 1,000 |
| Excalibur (Rare) | 12–13 | 8,000 |
| Item | Defense | Weight |
|---|---|---|
| Wood Shield | 8 | 300 |
| Targe Shield | 13 | 500 |
| Knight Shield | 30 | 800 |
| Tower Shield | 35 | 800 |
| Leather Armor | 10 | 400 |
| Chain Mail | 30–32 | 1,000 |
| Plate Mail | 37–40 | 3,000 |
Every equippable item has a color code (which palette is applied to its sprite — also defines whether it is a Critical, Heavy, or Normal variant) and one or more special property slots (Spec1/Spec2/Spec3) which can hold enchantments, +stat bonuses, or unique effects. Items also have a durability counter (current / max) that decreases as the item is used and must be repaired.
This is the metadata that travels with the NFT when an item is exported on-chain. A "Critical Long-Sword (gold) at 487/500 durability" is a different NFT than a "Heavy Long-Sword (red) at 100/500 durability" even though they share the same item ID.
HBUCKS is the in-game currency of HB Outliners and the ERC-20 token deployed on BASE Mainnet. The supply is hard-capped at 1,000,000,000 tokens and the server enforces a strict conservation invariant every tick: the sum of all HBUCKS in all locations must always equal the total supply.
Hard cap. Enforced on-chain by the contract and in-game by the server.
90% — paid out to players via mob drops, NPC sales and quest rewards.
10% — vested over 6 months (10% unlocked, 90% linear).
Standard ERC-20 decimals.
At every moment in time, the following must hold:
This invariant is enforced in server/Tokenomics.h and persisted in tokenomics.dat with an XOR checksum. The server's /pool command shows the live state of all four components in any chat window.
Mob drops do not pay out a fixed amount of HBUCKS. Instead, every drop is scaled by a multiplier:
multiplier = sqrt(poolRemaining / 900,000,000)
When the pool is full, the multiplier is 1.0 — drops pay full value. As the pool depletes, drops shrink smoothly. When the pool is empty, the multiplier is 0 and mobs simply do not drop HBUCKS at all (no inflation, ever). This is the mechanism that makes the 1B supply cap meaningful.
When a player buys from an NPC merchant, the HBUCKS they spend do not vanish — they are split:
Direct trades between players incur a 5% fee on the HBUCKS portion of the trade, split with the same 70/30 ratio as NPC spending: 70% returns to the Distribution Pool and 30% goes to the Team Reserve. This keeps the pool topped up over time even if no one buys from NPCs, supports development, and gently disincentivizes pure HBUCKS hoarding by recycling some of every transaction.
/train)Every conservation rule is encoded in the source code and the production server reads its state from a checksummed binary file. There is no admin command, no GM, and no developer that can mint HBUCKS into existence. Even /createitem HBUCKS from a GM account is gated through the same Distribute() call that the pool uses for mob drops — if the pool is empty, the GM command fails.
Items earned in the world can be exported to the BASE blockchain as ERC-721 NFTs. Each NFT carries the full state of the in-game item — type, color, special properties, durability — and can be burned at any time to recover the original item back to the player's inventory.
With ERC-2981 royalty support and per-token metadata URIs.
~0.0024 ETH at current pricing. Bounded between $1 and $100 by the contract.
On secondary marketplace sales (ERC-2981).
Coinbase's Ethereum L2. Cheap gas, fast finality, full EVM.
/mint-nft to see your unequipped items as a numbered list./mint-nft <number> to mint that item. The item is removed from your inventory and a "pending NFT" entry is created./wallet) and you will see your pending NFT.setApprovalForAll(bridgeWallet, true) and lets the bridge burn your NFTs on your behalf./import-nft. The bridge scans your wallet for HB Outliners NFTs and returns a numbered list./import-nft <number>. The bridge burns the NFT and the server recreates the original item in your inventory with full state preserved.Every NFT carries a JSON metadata document hosted at https://hboutliners.com/nft/<tokenId>.json. The metadata follows the OpenSea standard and includes:
Metadata images are pre-rendered by the tools/sprite-extractor/ Python pipeline (2,848 cards = 178 items × 16 colors). New items added to the game can be regenerated by running extract.py.
The $5 mint fee covers BASE gas (a few cents), bridge infrastructure (VPS, monitoring, backups), and prevents people from spamming the chain with worthless items just to pollute the contract. It is paid in ETH at the current oracle price and accumulates in the NFT contract balance, where the team can withdraw it via withdrawFees() to fund continued development.
The bridge is the boundary between the in-game world and the on-chain world. It is a Node.js service running in a Docker container on the same VPS as the game server, with a strict file-based message queue between game ↔ bridge and JSON-RPC calls between bridge ↔ BASE blockchain.
GET /health returns the database, blockchain RPC, and outbox lag in real time. nginx fronts this and the bridge fails open if anything is degraded.Before any blockchain operation, a player must link their wallet to their character with the in-game command:
/wallet 0xYourBaseAddressHere
The link is one-to-one: one character per wallet, one wallet per character. The link is stored in the player's character file on the server and verified on every mint, export and import.
Three Solidity contracts power the on-chain side of HB Outliners. All three are deployed on BASE Mainnet (chain ID 8453), use OpenZeppelin reference implementations, and are open source in the project repository under contracts/src/.
0x0)Our response:
/opt/hb-outliners/.env on the production VPS, never in source controlThe v1 contracts (0x477812C1..., 0x31519432..., 0xBd416eC0...) and the v1 bridge wallet (0x7d9BB888...) are deprecated and unsafe. Do not interact with them. The live system uses only the v2 addresses listed above.
The full incident, including timeline and response, is logged in the project's GitHub issue tracker. We are publishing this in the whitepaper because transparency is not optional for a project that asks players to trust on-chain ownership.
All blockchain operations are exposed as chat commands inside the game client. There is no separate launcher, no external tool, no required browser extension beyond the wallet you already use.
| Command | Effect |
|---|---|
/wallet 0x… | Link your BASE wallet address to your character (one-time) |
/wallet-status | Show your currently linked wallet |
/pool | Show live HBUCKS economy: Pool / Team / InGame / OnChain / Drop multiplier |
/train | Open the numbered skill training menu |
/train <n> | Select skill #n, prompt for level count |
/train <n> <levels> | Quote the cost of N levels, await confirm |
/train-confirm | Execute a pending training quote |
/train-cancel | Drop a pending training quote |
/mint-nft | List unequipped items for NFT minting |
/mint-nft <n> | Mint item #n as an NFT |
/import-nft | List your wallet's HB Outliners NFTs |
/import-nft <n> | Burn NFT #n and recover the original item |
/help | Full list of in-game commands |
HBUCKS export and import (/export-hbucks, /import-hbucks) are temporarily disabled while the player base grows. Item NFT minting is fully active.
HB Outliners is in v1.0 Early Access. The core game, the economy, the smart contracts and the bridge are all live in production. The roadmap below is the public commitment for what comes next.
/train) live[AI] badge so other players can identify them. This is the final feature on the design roadmap.HB Outliners is an experimental MMO on a young L2 blockchain. Read this section before investing time, money or expectations in the project.
The full source code for the game client, server, smart contracts and bridge is published in a public GitHub repository under an open license. Anyone can read the rules, propose changes, fork the project, or run a private shard. The team welcomes contributions, bug reports, and security disclosures.
The game client is distributed as a single ZIP from https://hboutliners.com/HBOutliners.zip. Always verify its SHA-256 checksum before running the binary:
Windows: certutil -hashfile HBOutliners.zip SHA256 · macOS / Linux: shasum -a 256 HBOutliners.zip · The checksum is also displayed on the Download section of the landing page. If your local hash does NOT match, do not run the binary — contact us.
This whitepaper is informational and is not financial advice, legal advice, or a securities offering. HB Outliners is a video game with a blockchain economy. Play it because you enjoy 1990s-style MMORPGs. Buy NFTs because you want to own your items. Do not buy HBUCKS expecting them to "go up."