Slashdot Mirror


Rogue and Tetris ported to . . . . . Diablo II?!?!

lord2800 writes "While Diablo II is nearing the end of it useable life-cycle, it would seem that Diablo II hacking is still alive and well. Diablo II hacking pioneer Syadasti (Mike Gogulski), has recently ported and released both Rogue and Tetris for Diablo II. Since Blizzard has not yet released their upcoming patch, is it left up to the open source programmers to breathe some life into modern games, with a little retro twist. A quote from the author: Finally, an answer to the question "what the hell do I do while my bot is running?" Play Tetris! Grab yours today at from Otaku-Elite. Requires bind.d2h and d2hackit. Self-documenting. (tetris.d2h features an autopilot mode as well, so if you get as tired of playing Tetris as you are of playing Diablo II, well just turn that puppy on and let the computer play for you) Syadasti (Mike Gogulski) is also the Head of Research for the d2jsp Development Team which, among other things, has embedded a Javascript engine within Diablo II to facilitate the creation of AI "bots" which can play the game on their own, "thus freeing the user from the tedium of playing with ... er ... for ... himself," he says."

8 of 127 comments (clear)

  1. Progressquest by Frank+of+Earth · · Score: 4, Interesting

    thus freeing the user from the tedium of playing with ... er ... for ... himself

    Why bother playing at all? I gave up playing mud for Progress Quest

    Nobody can beat my level 66 battle finch!

  2. Re:i guess this answers the question.. by cei · · Score: 4, Interesting

    Sure. It's not even particularly new. (ok, hacking totally diffferent platform styles into an existing game MAY be...) but back in 1990 I was using the level editor that came with Arkanoid 2: Revenge of Doh to build self clearing boards of increasing complexity. Since all the angles in paddle/ball games are predictable, you could arrange bricks in such a fashion that releasing the initial ball from center, far right or far left would clear the board without further player input.

    --
    This sig intentionally left justified.
  3. Disappointment by Per+Abrahamsen · · Score: 5, Interesting

    I hoped it was classic rogue implement as an ordinary Diablo II quest.

  4. Trivial.... by jukal · · Score: 4, Interesting
    Now, a real challenge would be to port Diablo II to run inside .... The original tetris. Or even better: port tetris to run inside the bricks - ohh, but that's already done.

    LONDON, England -- A newlywed man has been jailed for four months after playing a game of Tetris on his mobile phone during the flight back from his honeymoon

  5. Tetris for Diablo 2 might be ILLEGAL by yerricde · · Score: 4, Interesting
    --
    Will I retire or break 10K?
  6. That's been done better: Dark Rain by Qbertino · · Score: 5, Interesting

    Dark Reign II has an official add-on that lets you play a Tetris Clone called "Dark Rain" when you're in a warroom waiting for a match.
    *That* is cool.

    --
    We suffer more in our imagination than in reality. - Seneca
  7. Re:Golf Hack by Perdo · · Score: 5, Interesting

    Actually it took only a few seconds. I used key express to record mouse movements and button presses. I tweaked the timing by hand later. There is no point letting a bot play that is not perfect. Perfect timing is one of the few things that computers have when it comes to games. Well, they can also play perfectly for two days straight to compensate for the randomness inherent to the game.... without getting bored.

    The golf game was not even reasonably complex. It was just a driver distance game. Five commands: Begin the swing, Wait .975 seconds timed for cut/slice then click again, wait a second and "try again". A high score would inturrupt the macro with a fault, because an "enter you name" dialog box would appear instead of a "try again" button.

    It took some coder a week to code and I broke it in a few seconds. Made me feel like an utter piece of crap. It would have been neat to have just one high score up there. But I had all ten, was playing 4 games every second with 12 instances running. What I did was DOS the game out of existance. Inelligant and Ignorant.

    --

    If voting were effective, it would be illegal by now.

  8. Re:so, what language are these things in? by Anonymous Coward · · Score: 4, Interesting

    Here's how it works. There is a clever hack called d2hackit. The way it works is very complicated but to put it short...

    1) Gain access to the running diablo ii process
    2) replace the diablo 2 window's message handler with a dumby one to trick diablo ii into loading some assembly code.
    3) The assembly code loads up a dll and therefore causes the dllmain function to be executed.

    That's how the loader works.
    Now, let's get an idea of how d2hackit works.

    1) Patches variuos diablo ii functions so that it can intercept them and then run custom code. (replace an assembly call with a jmp call to your own code, execute... have another jmp call return it back to the diablo code.
    2) Locates various functions for send messages, packets, etc... (makes them available so that the d2hackit can print messages to the user or spoof packets to the battlenet servers)
    3) Creates a sort of command line system using the text message prompt.
    4) implements various commands for loading up other custom dynamic libraries

    Okay, now that you have an idea of how the hack actually inserts itself into the diablo runtime, let's evaluate what it took to get this example to work.

    1) Locate the Diablo II call for printing text to the D3D context.
    2) Port a text based tetris game to the windows api and modify it to print the text to the diablo ii window instead of to a terminal.

    To all you /. computer geeks... you should take a look at some of the source code for d2hackit. Pure genious... definitely the route to take when you want to write some insanely cool hacks for your favorite games. However, it's not for the faint of heart!