Deepstone

Deepstone is an unfinished attempt, at making an MS-DOS first person 3D dungeon crawler game, for old pentium-class computers.

At its current state it's not really a game. You have first person shooter-like control of the 3D camera (wasd/mouse), and you can only walk around the 3D "dungeon", nothing else.

Included are precompiled binaries for MS-DOS (of course), windows, linux, and a version of dosbox configured to run it directly. See the enclosed README file for details.

Of course the complete source code is also included, feel free to use it under the terms of the GNU GPL version 3 (or any later version).

Comments7

Optimus612823 Sep 2013, 06:48
Well, that looks quite cool graphically!
zzForrest23 Sep 2013, 10:28
pretty cool, but there's something wrong with the renderer, it's like the models start skewing when they get to the edge of the screen,
nuclearauthor23 Sep 2013, 16:01
zzForrest: Thanks!

The weirdness is just due to the crappy affine texture mapping rasterizer I've written I think. It doesn't do perspective-correct interpolation (u/w, v/w) but rather linearly interpolates texture coordinates over the area of each polygon, which makes textures swim around when looking them at different angles :) It could be fixed by writting a proper rasterizer, but no time :)
goerp23 Sep 2013, 17:11
Not a game yet, but pretty impressive anyway!
legatus23 Sep 2013, 18:10
gave me a warm retro feel, looks cool indeed
tomc
tomc23 Sep 2013, 21:11
Wow very impressive. Did you do all of that in the weekend?
nuclearauthor23 Sep 2013, 22:19
tomc: Not exactly, it's about a two weekends worth of work really. I started with some code I've written in about a weekend, a year ago for a simpler DOS 3D hack ( see: http://www.youtube.com/watch?v=pMHwQF_cDtI ), then this weekend I did:

- port from 16bit Borland C code, to 32bit Watcom C.
- rewrote the polygon rasterizer.
- implemented 3D polygon clipping, because without it I can only show objects in front of the camera (as I had in the video above) and I needed to be able to walk inside the 3D world for this.
- implemented the interrupt-based keyboard input handler to be able to walk first-person (the earlier code only had mouse controls to rotate 3D objects).
- ... and was fixing bugs all over the place :)

Also some other stuff that I reused was the PIT8254 timer code from my home-brew operating system kernel, which I had ported to DOS some time ago for another program, and some simple OBJ model loading code I had written at some point.
Found a bug?
Tell us on Discord