PDA

View Full Version : DelphiDoom 2.0



Jimmy Valavanis
05-03-2017, 08:30 AM
DelphiDoom 2.0 has been released.

Downloads
https://sourceforge.net/projects/delphidoom/files/DelphiDoom%202.0.1/ (binary executables and full source code)

Wiki
https://doomwiki.org/wiki/DelphiDoom

DelphiDoom is the complete recreation of the 1993 game Doom series and derivatives (Doom, Doom2, Chex Quest, Heretic, Hexen and Strife) to the Pascal programming language.

The purpose of the project is to extent the original engine adding new features that:
Improve the gaming experience using ogirinal game data (eg true color software rendering, high screen resolution, OpenGL rendering, free look with mouse, jumping etc)
Improve the gaming experience using additional external data (eg external high quality textures, improved scripted logic, voxels, 3d models etc)

Notable new features in this release:
Sloped floors and ceilings
3d Middle Floors (to create true room over room effect)
Advanced PascalScript to customize levels and actors (Thanks to Remobject's Pascalscript (http://www.remobjects.com/ps.aspx))
Ladder special
Support for V5 glnodes (extend maximum map size)
Teleport zoom effect
Per individual actor dropitems (controlled by script)
More accurate fake3d effect (perspective correction in software rendering mode)
Long filename aliases inside WADs (using PK3ENTRY)
Support for HI_START & HI_END namespace inside PWADs (external textures inside *.WAD files etc)

New Tools (included in the binary download)
DelphiDoom Script IDE
PascalScript command line compiler (ddc)

Old Tools (external download)
DelphiDoom Voxel Editor (https://sourceforge.net/projects/delphidoom/files/DDVoxels/)

Editing Examples
Simple 3d Floor - download (https://sourceforge.net/projects/delphidoom/files/Tools%2C%20maps%20and%20examples/v2_EXAMPLE_01_3DFLOOR.zip/download)
Floating Sectors - download (https://sourceforge.net/projects/delphidoom/files/Tools%2C%20maps%20and%20examples/v2_EXAMPLE_02_FLOATING_SECTORS.zip/download)
Mahjong game - download (https://sourceforge.net/projects/delphidoom/files/Tools%2C%20maps%20and%20examples/v2_EXAMPLE_03_MAHJONG.zip/download)
Custom dropitem - download (https://sourceforge.net/projects/delphidoom/files/Tools%2C%20maps%20and%20examples/v2_EXAMPLE_04_CUSTOMDROPITEM.zip/download)
DLL function call within PascalScript - download (https://sourceforge.net/projects/delphidoom/files/Tools%2C%20maps%20and%20examples/v2_EXAMPLE_05_USE_DLL_INSIDE_SCRIPT.zip/download)
Slopes and ladder - download (https://sourceforge.net/projects/delphidoom/files/Tools%2C%20maps%20and%20examples/v2_EXAMPLE_06_SLOPE_AND_LADDER.zip/download)
Note: The above examples require doom2 (commercial version).

Applications for creating a new level, editing the examples
There are a lot of 3rd party fun made editors that can do the job. The above examples were made with:
Slade (http://slade.mancubus.net/index.php?page=downloads)
DoomBuilder (http://www.doombuilder.com/index.php?p=downloads)
Configuration files for DoomBuilder can be downloaded here (https://sourceforge.net/projects/delphidoom/files/Tools%2C%20maps%20and%20examples/DoomBuilder_Configuration_v2.zip/download).

Playing the game
My sourceforge downloads include only the source code and the compiled executables (Win32)
To run the game you must also have the original game data (doom.wad or doom2.wad etc).

*If you do not own some of the supported games:
You can purchase them for a few dollars on Steam
You can download and install the shareware game data (http://www.doomworld.com/classicdoom/info/shareware.php)
You can download the freeware Chex Quest game (non violent total conversion using the Doom engine) for free (http://www.myabandonware.com/game/chex-quest-2e4) and place the chex.wad file inside bin\Doom folder.
You can download FreeDoom (https://freedoom.github.io/download.html)

For Pascal programmers
The slopes and the 3d floors shapes in software rendering mode are calculated using Bala Vatti's clipping algorithm (http://dl.acm.org/citation.cfm?id=129906). I used the very nice Delphi implementation found here (https://sourceforge.net/projects/polyclipping/)
Inside the source code, in \SCRIPT directory you can find some ideas about intergrating Pascalscript in your own projects.

Screenshots (All with the software renderer)

https://s20.postimg.org/8bd98cp9p/SSHOT_Doom_20161203_193435782.jpg

https://s20.postimg.org/pi9uk4bfx/SSHOT_Doom_20161222_215937139.jpg

https://s20.postimg.org/mx49wlm25/SSHOT_Doom_20161220_190527791.jpg

https://s20.postimg.org/4k3om1bl9/SSHOT_Doom_20161222_213314792.jpg

https://s20.postimg.org/jesa07l65/SSHOT_Doom_20161222_213119064.jpg

https://s20.postimg.org/owph1r5rh/Image10.png

SilverWarior
05-03-2017, 02:39 PM
WOW!

That looks awesome.

EDIT: The only thing that DelphiDoom is missing is a proper guide on how to set it up. While I did managed to get it working OK there are bunch of other people out there who might like to replay one of these old games on newer computer but don't have enough knowledge to set everything up.

Ñuño Martínez
07-03-2017, 10:55 AM
Cool.

I planned to do the same with Duke Nukem 3D. I even have code that loads maps and renders in 2D (https://sourceforge.net/p/a3dge/code/HEAD/tree/TRUNK/src/engine/). May be some day :( . If I re-start the project, can I ask for your help?

phibermon
07-03-2017, 08:07 PM
Very cool stuff :)

farcodev
08-03-2017, 02:16 AM
Great Work! ;)

paul_nicholls
08-03-2017, 10:54 AM
Nice mate :)
Thanks for sharing!!

cheers,
Paul

Jimmy Valavanis
10-03-2017, 07:23 PM
Cool.

I planned to do the same with Duke Nukem 3D. I even have code that loads maps and renders in 2D (https://sourceforge.net/p/a3dge/code/HEAD/tree/TRUNK/src/engine/). May be some day :( . If I re-start the project, can I ask for your help?

Yes, of cource. Are you planning to recreate the game in a new basis (using only the grp data file) or converting the build engine source from C to Pascal?
By the way, I had made a 3d map viewer for Duke3D a long ago (http://www.geocities.ws/jimmyvalavanis/applications/dukeviewer.html) .

Rodrigo Robles
11-03-2017, 12:23 PM
Really impressive! These new features improve a lot the immersion!

Ñuño Martínez
12-03-2017, 07:31 PM
Yes, of cource. Are you planning to recreate the game in a new basis (using only the grp data file) or converting the build engine source from C to Pascal?
By the way, I had made a 3d map viewer for Duke3D a long ago (http://www.geocities.ws/jimmyvalavanis/applications/dukeviewer.html) . Just recreating the game in a new basis. Initially I tried to translate from C to Pascal but it is impossible, an I really want to know how does it work (actually Ken forgot it! I asked him!).

Do you still have the sources of the Duke Viewer?

Jimmy Valavanis
13-03-2017, 08:19 AM
Just recreating the game in a new basis. Initially I tried to translate from C to Pascal but it is impossible, an I really want to know how does it work (actually Ken forgot it! I asked him!).

Do you still have the sources of the Duke Viewer?

Same here. Some time ago tried to play around with build engine source but it was difficult to understand, so never tried to convert it to Pascal. I think I can resurrect some portions of Duke Viewer source code, at least the main loader functions, I'll let you known.

Ñuño Martínez
14-03-2017, 09:44 AM
I have no problems with loading. I have a program that loads maps and renders in a "build editor". (https://sourceforge.net/p/a3dge/code/HEAD/tree/TRUNK/) Problem is rendering. I found a paper somebody wrote that analysed how the algorithm worked and I planed to use that information to re-build the algorithm. Problem is that the algorithm works with 2.5D but not with actual 3D (or not 6DOF).

Anyway I have no time now. Too much projects.

Jimmy Valavanis
14-03-2017, 03:45 PM
I have no problems with loading. I have a program that loads maps and renders in a "build editor". (https://sourceforge.net/p/a3dge/code/HEAD/tree/TRUNK/) Problem is rendering. I found a paper somebody wrote that analysed how the algorithm worked and I planed to use that information to re-build the algorithm. Problem is that the algorithm works with 2.5D but not with actual 3D (or not 6DOF).

Anyway I have no time now. Too much projects.

This is the source code of DukeViewer: https://www.dropbox.com/s/lsfexp3gusmr2ks/DukeViewer_src.zip?dl=0

The source code is propably incomplete, but the main Loader functions, as well as the base of the rendering engine are there.
As far as I can remember, it uses some custom components (not critical). The point of interest is function GetDuke3DMapData() at Duke3DUtils.pas. This function reads a map and feeds the 3d Engine with data (polygons). The texture reading is at TD3DScene.CacheDuke3DTextures() function inside surfaces.pas.

Ñuño Martínez
15-03-2017, 10:49 AM
Thanks. I'll take a look. :)

Jimmy Valavanis
07-11-2017, 05:11 PM
A new meintainance release (ver 2.0.3.705) is available.

Most notable new features/fixes since the base 2.0 release are:
PascalScript can now access DLLs from inside pk3(zip) files. (or WAD files if using PK3ENTRY lump). Download an example here (https://sourceforge.net/projects/delphidoom/files/Tools%2C%20maps%20and%20examples/v2_EXAMPLE_07_DLL_INSIDE_WAD.zip/download).
Smooth freelooking. Now the engine does not ignore slight variations in mouse movement
Added gl_no_glfinish_hack console variable to avoid with OpenGL slowdown on systems with Intel HD4000 and Windows 10 (default is True). More information can be found at intel communities forum (https://communities.intel.com/thread/117626).
Support for PCX format external textures.
Fixed alpha channel in TGA screenshots.

Download link at sourceforge (https://sourceforge.net/projects/delphidoom/files/DelphiDoom%202.0.3/)