Sometimes making new games is not as challenging as recreating the old ones. When we decided to add isometric support to the engine, we could have picked no better option than to work on an old classic: Blizzard’s Diablo II.
Even today the game has a lot to offer in terms of interactivity and immersion, so we thought it would make a great demo of how far the engine and editor can go together
One of the coolest things we wanted to do with Gameleon is show off how it can be used to make any RPG game by recreating a classic from scratch.
And we chose Diablo 2. There’s a lot to be said about this classic: it probably defined what we understand today as RPG hack and slash games.
With its dark fantasy and horror themes it set the perfect theme for a gameplay of rampaging combat and monster slaying and item hunting. Perhaps one of the most important features of Diablo 2 was its access to Blizzard’s free online play service, Battle.Net. So we have a recipe that’s the perfect challenge for Gameleon: a real-time combat action RPG with a plethora of spells, monsters, items and quests.
Plus, it has to have a real time multiplayer component.
All we needed was a working demo of first Act of the game, featuring the Rogue Encampment and the wilderness outside, with the Barbarian player class available for play – we wanted to remake enough to show off the mood, characters, creatures and most importantly – gameplay.
Absolutely the most time consuming element was getting Diablo II’s assets out of the original game. We needed the animations and skins for characters and we extracted them using a variety of programs and software that are freely and widely available on Diablo 2 modding communities.
With these user-created kits and programs we managed to take Diablo 2 apart and pick out the models we needed: the Barbarian, the Corrupted Rogue, Fallen and Fallen Shamans, Rogue Encampment vendors and quest givers and various other models that can be found in the same source files: torches, tents, etc.
For moving objects, like player model skins or monsters skins, the extracted animations are essentially image files for each frame of each angle of the animation. Since our editor is built to accept frame-by-frame animations, we just dragged and dropped the picture files into the respective angle slots and voila!
The same goes for most of the map objects, as mentioned before: tents, boxes, crates, walls – they are all objects with single-frame animations. Piece of cake to upload those once we’d extracted them!
The map was a bit of a challenge. Maps in Diablo 2 are not static – they are randomly generated during each play session in such a way that even the Rogue Encampment in Act 1 is different for each character you play with. That being the case, there were no static textures or image files we could get a hand on. But we found a workaround: we managed to get our hands on a community-developed map viewer and editor that could “read” Diablo 2′s map files.
That allowed us to get the references we need. We pieced our two maps together in image editing software, starting from those references. We basically ended up with very large image files that we added directly into the editor.
After laying out the polygons that defined obstacles and explorable surfaces, all we had to do was drag and drop all those objects we mentioned earlier: walls, tents, torches, vendors, quest givers etc. We gave each of the monsters and characters in our game statistics (like hit points, attacks and damage etc) according to the original game’s specifications, and then added behaviors and scripts.
Some were turned into quest givers and associated with that map’s quests (which we also created with our editor), others were given patrol routes and attack scripts.
The final touch were the sound effects, ambient sounds and soundtrack. We used the VFX/SFX editing tool in Gameleon to create and assign these sound effects to our maps, characters and monsters, and we used some of our own assets (character voice emotes, monster voices etc) to fill in what we didn’t extract from Diablo 2′s original files.
And there you have it!