Hello everyone! There is a challenge. :)
In short, here’s what you need to do:
- Build DevilutionX — a cross-platform port of Diablo 1 + Hellfire — and learn how to run it (you’ll need an original copy of the game for this).
- Create a multiplayer Hellfire character and get familiar with the game.
- Start timing from the moment you open the source code: you need to figure out how to obtain several rings called Obsidian Ring of the Zodiac.
- Verify that these rings are valid in the vanilla build, do not mutate, do not disappear, and do not crash the client.
- You may not use AI.
In terms of format, this task would be similar to a problem at Challenge24 finals. But I consider it the best interview problem for a software engineer that I’ve known in the last 10 years: it tests your ability to quickly understand an unfamiliar codebase, come up with an optimal solution, and implement it.
The full version of the task description, arguments for why this is an “ideal” problem, my interview experience, a detailed analysis of solutions, and additional thoughts are all here: kouprin.com/notes/obzod. It's in Russian but I do believe modern in-browser translators are good enough to bring you smooth experience of reading.
Post in the comments how long it took you. :)
Thanks to al13n, Gassa, and qwerty787788 for ideas, solutions, and beta testing. Thanks to the guys working on DevilutionX — though I don’t personally know any of them and won’t be able to answer questions about the project.

Since this isn’t a professionally prepared programming challenge but rather something fun I’m sharing with you, the following special effects may occur:
- The master branch might fail to build. Even though the developers officially support around 20 platforms, inexplicable issues sometimes happen even on Ubuntu.
- The developers could hide the repository or do something else at any moment. Essentially, the challenge is only really valid for today’s commit and may become obsolete over time as the codebase changes and the dependencies discrepancy may appear. Hurry up. :)
- I may have overlooked something and failed spectacularly. If so — my apologies. :)
If you enjoy spending a few hours testing your skills and having fun with a real game, I’ll consider my task accomplished.
Good luck!







