summit

module
v0.0.0-...-b9d6643 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 7, 2024 License: Apache-2.0

README ΒΆ

πŸ” Summit

World of Warcraft 3.3.5a server emulator - Written in purely GO

"The climbers reached the summit of the mountain after a long and challenging journey."

GitHub go.mod Go version go workflow GitHub top language Lines of code GitHub GitHub last commit

Modules:

  • Authentication/Realmlist server [summit-auth]
  • World Server [summit-world]
  • WoW Database converter [datagen]
  • Proxy (actually a worm) [serworm]
  • Packet dumper
Only for fun/education purposes

This project is just a tiny fun project, my free-time fun with GO, Ghidra. I really love this programming language and I've decided to rewrite my abandoned project what I wrote ~15years ago in C++ (that was the original summit emulator for burning crusade) later became Ascent -> ArcEmu ☠ -> AscEmu

This project will be pure fun, writing the emulator from scratch after +15years experience 😈 Goal: to just run the wow emulator whenever you wanna play/continue to play or you just want to experiment some low level stuff in go.

How to run/develop

The project contains a Makefile which is parameterized to build the project with go 1.21+, the binaries will be placed in bin/ folder. Later I'm planning to create a goreleaser pipeline for github actions to provide some instant binaries too.

The DBC stuff? Hmm... I have an idea to load the dbc in a different way than before. If you check the package:

Community

This project is a one man band (because when i'm writing these lines the project is just 3days old). I have an architecture in my head how this tiny project will change the πŸ—Ί and I'll document it soon to here, but feel free to fork this repository and feel free to have fun.

I've pulled some existing parts from emulators:

Thanks for these communities for the research! πŸ™

Why Wotlk?

Because I'm perv a bit. I left the WoW community with this version, so I've decided to jump back in time, and as a linux lover: have a lot of fun 🐧

Plans/Ideas

  • easy to implement/pluggable packet(handler) system
  • Some scripting interface (js maybe) to script the dungeons
  • exportable metrics
  • clustering (with grid based world)
  • administation interface with gRPC connector hosted on https://buf.build (planned)
  • federated auth server (one authentication server, anyone can join with a custom server)
  • Binary file based database no 3rd party sql needed (plan)

If you have any question, feel free to contact me:

paalgyula@pm.me | gophers.slack.com/#wow | https://fb.me/nev3rkn0wn | ig: @nev3rkn0wn

PR-s are welcome!

Made with β™₯ by @paalgyula

Directories ΒΆ

Path Synopsis
cmd
internal
pkg
store
Repository interface package which contains the required methods for the auth and world server to store and retrive persistent data.
Repository interface package which contains the required methods for the auth and world server to store and retrive persistent data.
summit/tools
These are not prod ready codes, but they are good enough.
These are not prod ready codes, but they are good enough.
wow
This package contains the client/server packet opcodes, tools for creating the data layer of the Summit emulator.
This package contains the client/server packet opcodes, tools for creating the data layer of the Summit emulator.
wow/crypt
World of Warcraft cryptography modules.
World of Warcraft cryptography modules.
wow/wotlk
/go:generate handlergen -v=wotlk
/go:generate handlergen -v=wotlk
protobuf generated assets for gRPC communication
protobuf generated assets for gRPC communication

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL