Project history
Warehouse history
Warehouse began as a result of work by me and Halvors toward bringing several Activision and Ubisoft titles online. Over the course of five years of working together, we researched, revived, and did the impossible quite a number of times. Not for money, but for glory and the satisfaction of our undying curiosity. We believe games are made to be played and enjoyed, not left dormant and forgotten.
There are many projects like ours, driven by people who refuse to accept the death of their favorite games. And while those people are rarely known or seen, people with monumental knowledge and willpower are the ones making the impossible possible.
Just like those people, their work remains unknown to the public eye, except for people in those weird circles. But in our case, I am trying to document and lay out our history, since I am really proud of what we have achieved and done.
The unfinished pile
During that time, my previous big personal project was over, and I decided to take a look into "a huge pile of things I never finished." One of those things was the "Blur master server" project, which I had wanted to do for a while. Back then, I theorized that online connectivity could function better than LAN connectivity. It did not! Plus, I was envious of my friend, who had an account and a cool level icon.Demonware appears
While collecting samples, researching code, and learning the basics of decompilers, I figured out that the game used something called "Demonware," which the Call of Duty series had also been using. I quickly located the server emulator for Call of Duty: Modern Warfare 2 and messaged its author, [REDACTED], bothering him with questions about login flow and whatnot.A very optimistic estimate
I located the Blur community Discord server and made a statement about working on the server emulator, saying that it would take "a month to complete."The first major blocker
The project hit its first major blocker in the form of "I have no idea how to read login requests." It somewhat aligned with Call of Duty server code, but not one-to-one. After three weeks of working 16 hours a day trying to solve it, I was very close to giving up. Then I understood a tiny major difference in buffer reading, and that breakthrough finally made the whole login flow function as it should.First successful session
First successful two-player session. That was a very happy day for me, meaning the biggest obstacle was finally solved.Amax Emu takes shape
The server was finally ready for public tests. While the game was being tested by volunteers, I was busy making the very first registration website using Flask and jQuery. Plus, I finally picked a name for the project: Amax Emu.
I also found a guy working on the Far Cry 2 server emulator named Halvors. This Halvors guy was pissing me off a lot with his attitude. We probably would not become friends.
At that time, Halvors thought I wanted to steal his code and did not like me in return.Blur returns
Public release of Amax Emu. Tons of bugs and sleepless nights to make it right. But it worked! Blur was finally playable again.
I was also working on adding DJ Hero 2 support with another dev named Lucas. During that time, Halvors and I were working on PS3 support together. I was beginning to like that Halvors guy a little bit more.Two games online
DJ Hero 2 support got a proper release, and now I hosted two games: Blur for PC and DJ Hero 2 for PS3.
During that time, I moved back to Amax Emu and fixed the friends and invites system, which took a lot of time. I also tried my hand with the Amax Emu website and web API, trying to make my very first "proper" web API for data.Research and rewrites
While Halvors and I were busy researching all known Demonware games and everything there was to know about Demonware, I was mostly busy with an Amax Server rewrite and writing a proper website for Amax Emu. That easy-looking task took me, a backend developer, way, way too much time.Amax Emu 2.0
Amax Emu 2.0 was released, with a full server rewrite to asyncio and the Amax Emu website as we know it today. The number of players was on the rise.
During all those months, Halvors and I continued our documentation and research work. We also became really good friends, to our mutual surprise. He no longer thought I wanted to steal his code, and I came to accept his way of doing things. To a degree.Transformers in 24 hours
Halvors and I saw a video about a particular team trying to revive Transformers: War for Cybertron and Fall of Cybertron. Since we knew by then that the games used Demonware, we decided to have a classic "Halvors and Aibot adventure" and make it work in 24 hours. We successfully did that, posted our results on their Discord server, and were added to the "dev team chat." We stated that we had no interest in supporting more games at the time, but would be more than happy to share our knowledge.Doing it myself
I had a disagreement with the project lead, which flipped my internal switch into "I'm doing it myself." That brought me back to Demonware coding to produce a "Universal Demonware Server," which could support numerous titles with a single codebase.Universal Demonware Server
The server was mostly complete, and a long, long task of polishing began. Writing guides, making bots for registrations, and testing the games from top to bottom all followed.
Halvors was busy learning Rust and making a replacement for one of Demonware's services in Rust. I was not very fond of Rust; my beloved Python seemed like a better choice for me.Warehouse gets its name
I was stuck trying to come up with a name for the project. "Angelspell" and "Halo" were okay, but not good enough. Halvors randomly suggested "Warehouse," which was approved on the spot. The domain aiwarehouse.xyz was registered.Warehouse release
Warehouse was released, with initial support for Fall of Cybertron for PC and PS3, War for Cybertron for PC and PS3, Dark of the Moon for PS3, DJ Hero 1 and 2 for PS3 and Wii, and Blur for PS3.
A lot of bugs, issues, and whatnot followed. Another conflict with the [REDACTED] community and their lead [REDACTED] also happened due to a video claiming that Warehouse was the result of their team's efforts. Lead confronted, confrontation happened.
Crafty joined Warehouse as the first person besides me and Halvors.More games added
Guitar Hero 3 and Transformers: Revenge of the Fallen support was added. Revenge of the Dark Spark support was also added as a proof of concept.Amax Emu new client files
Amax Emu received a release with a lot of changes, Rust, and aid from another Rust-loving Blur dev named tobii. This was my first big release with Rust made dlls and client files. Learned a lot during it!World Tour work and new faces at Warehouse
We were now working together with Guitar Hero: World Tour Definitive Edition to add online support to it. The Warehouse web API was released in the hope of giving the community a way to get data and make their own tools.
Sana, Styx, Breadn, Tryp, and Reyayer, whom I randomly promoted to "mods," became a crucial part of the Warehouse team, providing user support and running that place.Demonware noticed us
Demonware noticed us in a very particular way. We fixed that and continued to exist with the knowledge that we were known.
Support for Guitar Hero: World Tour Definitive Edition was finally released and added as yet another Warehouse title.Rule 31
Due to some events, we dropped support for a War for Cybertron DLC mod, which we had added as "mandatory" during 2022. This resulted in rule #31 of Warehouse: we do not work with anybody we do not like.Steam API attempts
Initial attempts to make a steam_api.dll replacement for Fall of Cybertron failed miserably, since I knew nothing about system library programming.First DDoS
We got hit by our first DDoS. It was brutal, but it taught Halvors and me a lot and forever changed how we approach our infrastructure.Blur profile pictures
I was slowly learning DLL development and had learned Rust to a sufficient level, which resulted in the restoration of in-game profile pictures in Blur. This was a big milestone for me and the players. Still really proud of this one after all those years.DLL work and balance patches
Steam_api.dll development was in full swing, and I was trying to keep up with balance patches for Fall of Cybertron.PS3 Reborn
In November of 2023 PS3 Reborn begin its existence with 2 games - HAZE and Splinter Cell Double Agent. We also met Alex, which began our love-hate relationships.Steam API works!
Steam_api.dll was finally done after a year of trial and error. Held together with duct tape and lollipops. But it worked, and friends, invites, and proper display of in-game usernames were working.
Halvors began his adventure into the land of Quazal in order to revive Far Cry 3.2nd DDOS
Another DDoS, this time directed at Blur servers. But this time, we were prepared, so the DDoS was mostly mitigated. Some new shiny solutions were implemented, so DDoS is now a thing of the past for Blur. Working on networking for three years and making DLLs for one paid off big time.Blur in-game ads
I restored the in-game ads system in Blur. It is dumb, but I was once again happy with myself for working on dumb, funny things.3rd DDOS
We got hit by yet another DDoS. It lasted three months and was brutal. But all the previous experience paid off tremendously. We were more resilient and skilled. Plus, it still fills me with a warm, fuzzy feeling inside knowing somebody wasted $500-2000 on that endeavor.PS3 Reborn
Halvors keeps working hard on his side project, PS3 Reborn adding more and more games.Quantum of Solace
I pulled an absolute miracle with reviving James Bond 007: Quantum of Solace. It is a story for another day, but it took me almost three weeks of learning Call of Duty engine internals and file formats to make it possible.Blur plans
I announced a lot of upcoming changes for Blur, which ultimately failed. I promised myself to do it in 2026.Fall of Cybertron 2013 balance patch
A final balance patch for Fall of Cybertron was released, replicating the game's balance state from 2013. It took me three years to learn that people just want it how it was, regardless of how flawed it was. To do it, I had to make a full-blown Unreal Engine 3 SDK for that version of it in Rust. But it allowed me to do a lot of in-depth balance changes.
All bots, backends, and whatnot were remade in Rust and finally functioned like they had before. It took a while.Begging of my write-ups habbit
I began working on the Warehouse website. I also began writing write-ups about things I do, which turned out to be highly enjoyable.
Halvors was again doing miracles with his Quazal endeavors, reviving a lot of PS3 games with it.Lost momentum
I lost my will to code and do anything with Warehouse and Blur. Halvors was busy with Quazal.
During that time, I was mostly busy with research, Tom Clancy's EndWar revival support, and other less important stuff. Such things happen, but it was truly the first time in four years that I did nothing in particular.
We also tried our hand with FESL and Need for Speed: Carbon, among other titles. It got us nowhere.WE ARE BACK
My mojo was back. Development of the Warehouse Launcher began. Website development kicked off for the second time. I also decided to add support for Ghost Recon: Future Soldier to Halvors's Quazal codebase.EndWar and a public website
Tom Clancy's EndWar was publicly released after a year in development. Xbox 360 support was being worked on. The launcher was being developed rapidly. The website saw its first public release in a very convoluted and poor state.
PS3 Reborn now had 40 working titles!Ghost Recon and launcher beta
Public release of Ghost Recon: Future Soldier, as well as Warehouse Launcher. Not as a big public release, but more of a beta dedicated strictly to Ghost Recon: Future Soldier, to test things. It worked!Website and launcher released
After a lot of pain and work, Warehouse Launcher and the Warehouse website were released!
To be continued