[General Topics] Menneisyys:
I’ve often reported (see my latest report here) on DoomGL-ES, the OpenGLES (including the well-known Intel 2700G GPU in the Dell Axim x50v / x51v) version of the great 3D First Person Shooter (FPS) Doom.

Now, the author of the port, Kokak, has come out with a version that doesn’t require an OpenGL-ES compatible GPU; that is, one that runs on any (WM5 – unfortunately, it isn’t compatible with earlier operating systems and the author won’t support them in the near future either) Pocket PC. The lack of the hardware 3D acceleration certainly means much worse visuals (exactly the same as were in the original Doom) and, on some devices (for example, on the HTC Wizard, even when overclocked to 240 MHz) definite slowdowns.

Note that there are two subversions: 004, which didn’t work because it had pathnames wired in and version 004b, which was released after I’ve reported the bug to the developer. The latter should be used.

I’ve tested the port on all my four WM5 Pocket PC’s (Dell Axim x51v, HTC Wizard, HTC Universal, iPAQ hx4700) and encountered no problems (except for the, in cases, slow graphics) at all.

Installing the new version is also much easier than with the OpenGLES version: you just grab this file, unzip DoomPPC.exe and doomrc.cfg from it and copy them in any directory and, then, just copy doom(1).wad in the same directory. If you’re new to the game, here is the shareware (doom1.wad) version (just unzip the contents of the ZIP file).

Networking

I’ve tested the game running over Bluetooth PAN (please do read my networking-related explanation in the Pocket PC Multiplayer Gaming Bible if you don’t know what it is) with three test Pocket PC’s: a VGA HP iPAQ hx4700 (ROM version 2.01) and Dell Axim x51v (ROM version A12) and a QVGA HTC Wizard. On the Wizard and the Axim, I used this and this Widcomm BT stack to enable BT PAN, respectively. (I haven’t tested it on the HTC Universal because, as is also pointed out in this XDA-Dev thread, there’s still no final Widcomm BT hack for the device, albeit BT PAN is already accessible.) Note that the game works just great over Wi-Fi ad-hoc connections too (that is, not only in infrastructure mode, as opposed to what the homepage of the game states).

I’ve tested most possible configurations with these three devices: Wizard vs. x51v, Wizard vs. hx4700 and all the three Pocket PC’s against each other. Most of the time, the game worked just great in multiplayer – even with three Pocket PC’s being involved.

It must be pointed out that the GLES (that is, the 3D accelerated) version doesn’t support multiplayer as yet. That is, even if you have a Dell Axim x50v / x51v, you’ll need to stick to the software-only (“low-fidelity”) version of the game if you want to play others. The GLES version, currently just displays name resolving problems with exactly the same configuration as that of the software-rendered version.

Networking configuration

In order to start a multiplayer game between different Pocket PC’s (and, for that matter, notebooks – multiplayer is cross-platform), first, you must know the IP addresses of all the Pocket PC’s involved. Fortunately, it’s very easy to find this address; please read the section “Finding out my Internet address” in my BT PAN tutorial.

Let’s assume you have the following IP addresses (in here, I use my own IP addresses so that I can provide you with some guaranteed-to-work scripts):

Wizard: 169.254.212.125

hx4700: 169.254.69.71

x51v: 169.254.179.111

Now that you know the IP address of each and every device that will participate in gaming, you must create invoker .lnk scripts. In these scripts, you must, first, assign a unique ID (between the range 1 and 4) to your Pocket PC and must also supply the IP address(es) of (the) other Pocket PC(’s).

At first, let’s assume you will only want to create a multiplayer game between the Wizard and the x51v (see the IP’s above). For this to work, you must pass the IP address of the Wizard in the x51v .lnk start command and vice versa: for the x51v, you must explicitly give the IP address of the Wizard.

That is, the x51v script should look like this:

227#"\Doom\DoomPPC.exe" -net 2 169.254.212.125

and the Wizard script should look like this:

227#"\Storage Card\DOOM\DoomPPC.exe" -warp 1 1 -net 1 169.254.179.111

(Note that the absolute paths (\Doom and \Storage Card) in here may/will be different with your installation. You can also use something other than 227 as the trailer. Also note that the number right after the –net flag is 1 with the Wizard script and 2 with the x51v one; this is because, as I’ve already mentioned, you must use unique ID’s. Finally, note that one of the participating Pocket PC’s must be passed the -warp parameter, which declares the number of the episode and mission to be played.)

You must start the game using these scripts on your Wizard / x51v after, of course, initiating the network connection, which can be any kind of connection: internet-less, peer-to-peer Wi-Fi or BT PAN or even remote, Internet-based play (in the latter case, however, you may encounter slowdowns because of the lag) – after all, Doom uses standard TCP unicasting.

Now, let’s take a look at how the Wizard should play against the hx4700. The starter command of the Wizard follows:

227#"\Storage Card\DOOM\DoomPPC.exe" -warp 1 1 -net 1 169.254.69.71

and here comes the hx4700 script:

237#"\SD Card\DOOM\DoomPPC.exe" -net 2 169.254.212.125

Again, note that one of the participants must be passed the episode and mission (-warp), assigned unique ID’s (1 and 2 in this case) and, finally, must be passed of the IP address of the other Pocket PC.

Finally, let’s see the more advanced case: a multiplayer game involving three Pocket PC’s. In this case, you must supply the IP address of the two other Pocket PC’s to all the three devices. You must use a space between the IP addresses, which, this way, form a list. That is, the Wizard script will be as follows:

227#"\Storage Card\DOOM\DoomPPC.exe" -warp 1 1 -net 1 169.254.69.71 169.254.179.111

the hx4700 script:

237#"\SD Card\DOOM\DoomPPC.exe" -net 2 169.254.212.125 169.254.179.111

and, finally, the x51v script:

227#"\Doom\DoomPPC.exe" -net 3 169.254.69.71 169.254.212.125

Also note the introduction of the ID 3 – the first two are already reserved.

For your convenience, I’ve uploaded all these link scripts HERE, into three different subdirectories separating the three cases I’ve elaborated above. The naming convention of the individual lnk files is as follows: first comes the name of the device the script must be used on and, then, the name of the other device or a ‘3’ when there will be all the three devices playing each other. Of course, you will need to change the IP addresses (and the paths to DoomPPC.exe) in them. Also make sure you change the -warp parameter when you want to play other episode / mission.

Let me know if you have further questions.