July 14th, 2024

Building a World of Warcraft Server in Elixir

A developer documents building a World of Warcraft private server project named Thistle Tea with Elixir. Challenges included cryptography, packet handling, and optimization. Utilized MaNGOS data and Shadowburn's code. Integrated Mnesia database for management.

Read original articleLink Icon
Building a World of Warcraft Server in Elixir

A developer is documenting the process of building a World of Warcraft private server project called Thistle Tea using Elixir. The project involves implementing authentication, realm list functionality, and game server features like character creation, player spawning, movement, and chat. The developer faced challenges with cryptography, packet handling, and optimizing packet size. They utilized existing resources like MaNGOS data and Shadowburn's code for guidance. The project progressed through implementing player interactions, object updates, and player visibility. The use of Elixir's message passing and Registry feature facilitated player synchronization and movement. The developer also integrated a database using Mnesia for account and character management. The project aimed to replicate MMO features like equipment display and chat functionality. Despite encountering decryption issues and bugs, the developer continued to refine the server's functionality over several days of development.

Related

Orb: Write WebAssembly with Elixir

Orb: Write WebAssembly with Elixir

Orb leverages Elixir's ecosystem to simplify WebAssembly writing, offering features like composable modules, Hex package manager, ExUnit testing, macros, and syntax highlighting. It enables Elixir code compilation to .wasm, supports reusable modules, and integrates existing Elixir libraries for MIME tasks, showcasing flexibility in WebAssembly development.

Elixir Gotchas

Elixir Gotchas

The article highlights common pitfalls in Elixir programming, including confusion between charlists and strings, differences in pattern matching, struct behavior, accessing struct fields, handling keyword lists, and unique data type comparisons.

Elixir for Humans Who Know Python

Elixir for Humans Who Know Python

The article explores transitioning from Python to Elixir, emphasizing Elixir's concurrency, Phoenix framework, LiveView feature, immutability, and pattern matching. It compares Elixir's functionalism and control flow to Python, showcasing Elixir's efficiency for web development.

Elixir Anti-Patterns

Elixir Anti-Patterns

The document discusses code-related anti-patterns in Elixir v1.18.0-dev, highlighting issues like comments overuse, complex 'with' expressions, dynamic atom creation, long parameter lists, and namespace conventions. It provides examples and refactoring suggestions to improve code quality and maintainability.

Firing Myself

Firing Myself

Noormar, a developer, accidentally cleared a production database at a Social Gaming startup, causing revenue losses and customer complaints. The incident led to guilt, a tarnished reputation, and eventual resignation.

Link Icon 2 comments
By @mervz - 3 months
Very cool!