Cross platform server emulator for classic battle.net games like Warcraft II BNE written in Go

README.md

bngo #

Looking for a Battle.net Classic server emulator? Bingo! A Battle.net Classic (BNCS) server emulator written in Go. It speaks the original Blizzard binary protocol used by StarCraft, Warcraft II Battle.net Edition, and related titles from that era.


Features #

  • Tested with SC:BW 1.16.1 and W2BN 2.02
  • Channel chat with operator/admin roles, squelch, ban, kick, and whispers
  • Slash command system (/who, /whois, /msg, /me, /op, /deop, /ban, /kick, etc.)
  • User profiles
  • Game result reporting and storage (/stats)
  • Two storage backends: in-memory (ephemeral) and SQLite (persistent)

Requirements #

  • Go 1.21+

Building #

git clone https://github.com/sn0opy/bngo
cd bngo
go build -o bngo .

Or run directly without a build step:

go run .

Running #

# SQLite backend
./bngo --port 6112 --storage sqlite --db bngo.db

# In-memory backend
./bngo --storage memory

# With debug logging including packet traces
./bngo --debug

All flags #

Flag Default Description
--port 6112 TCP/UDP port to listen on
--storage sqlite Storage backend: memory or sqlite
--db bngo.db Path to SQLite database file
--files ./files Directory served over BNFTPv1
--debug false Enable debug logging (packet traces)
--mask-ip false Masks output of IPs in logs

File serving #

The files/ directory is served to clients over the BNFTPv1 protocol. Place required files, that clients may request, like icons.bni, patch MPQs, and similar assets.

These files are not included in this repo.

What you will need #

Beyond the server binary itself, a usable setup typically requires:

  • Compatible game client: This server was tested with official clients, but may work with War2Combat and StarCraft Classic minimal installations as well.
  • Client configuration: update your registry or use a gateway editor to point your client to your server's IP/hostname.
  • BNFTPv1 assets: The following files are required in files/:
    • bnserver.ini
    • icons.bni
    • tos_USA.txt
    • ver-IX86-0.mpq

Acknowledgments #

Disclaimer #

This project was started in 2022 and put on hold due to several issues related to game hosting and lack of features. Eventually, some parts have been fixed via AI assistance and were reviewed and tested by me.

License #

This project is licensed under the MIT License. See the LICENSE file for details.

It is not officially affiliated with or endorsed by Blizzard Entertainment, its subsidiaries, or business partners. Battle.net, StarCraft, and WarCraft are registered trademarks of Blizzard Entertainment in the United States and other countries. This software is provided as-is, in the hopes that it is useful, without warranty of any kind.