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.