Duke4.net Forums: [RELEASE] Historical Build Engine Object Files and Sources - Duke4.net Forums

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

[RELEASE] Historical Build Engine Object Files and Sources  "Groudraw, anyone?"

User is offline   Hendricks266 

  • Weaponized Autism

  #1

NY00123 has combed through 3D Realms archive materials to collect historical WIP revisions of the Build Engine, mostly in compiled object form, and Ken has granted permission to distribute them under the Build License of June 2000. We are now sharing these with the public.

It is not the goal of this release to catalog an exhaustive set of all extant Build Engine object files and sources, but rather to publish any that have been discovered in the archives and not yet shared. See below for an extensive but not exhaustive list of other such materials.

Of particular note in this package is a full set of engine sources from May 1995, including code for the abandoned groudraw heightmapping feature seen in LameDuke and later replaced with slopes.

These files may be helpful for improving source port compatibility with games using older engine versions, reverse engineering, and more.

https://dukeworld.com/2001-current/source/buildsrc-20190520.7z

NY00123 said:

// "Build Engine & Tools" Copyright © 1993-1997 Ken Silverman
// Ken Silverman's official web site: "http://www.advsys.net/ken"
// See the included license file "BUILDLIC.TXT" for license info.

This is a collection of miscellaneous files from different revisions
of the Build Engine and the Build editor, as well as related files.
Most of these are object and header files, but there is also a small
amount of Build Engine sources, mostly from one 1995 revision.

Of particular interest, the aforementioned 1995 revision includes a
snapshot of code handling groudraw (an abandoned height mapping feature).

FILESLST.TXT covers a list of files with their original
line counts (for textual files), sizes and timestamps,
before any modification was applied.

ACKNOWLEDGEMENTS
----------------

Many thanks should be sent to Ken Silverman for approving the release
of historical Build engine versions, and 3D Realms for going through
older materials that cover these sources and sending them
to Richard Gobeille and Evan Ramos, who further inspected them.

Additional thanks go to Evan for paving the way. Further thanks
go to Ken for the original open-source release of the Build Engine
on 2000, and for his original work on this engine.
Special thanks go to Nuke.YKT and Barry Duncan.

Finally, thanks to all fans of the Build engine and games made with it.

REFERENCES TO PREVIOUSLY RELEASED CONTENTS
------------------------------------------

- PND3D Demo and Source Code (http://advsys.net/ken/voxlap/pnd3d.htm).
- The Voxlap Engine source code (http://advsys.net/ke...ap/voxlap05.htm).
- The Voxlap page, covering a collection of heightmap voxel demos
predating Voxlap, including the GROUDRAW demos (advsys.net/ken/voxlap.htm).
- Ken Silverman's Build Engine Source Code Page, covering the original
open-source release of the Build Engine from June 2000,
the SLABSPRI voxel editor source code, A.ASM ported to C,
POLYTEX engine demo and source code, the initial test program
for POLYMOST, and other files (http://advsys.net/ke...src/default.htm).
- The collection of Shadow Warrior prototypes released as part of
Shadow Warrior Classic (1997) on Steam, particularly the 1995-02-10
revision which contains Ken-Build binaries and some data
(sw950210, https://store.steamp...com/app/238070/).
- A 1995 revision of CACHE1D.C (renamed CACHE1D.TXT), as well as
a source snapshot of ENGINE.OBJ from 1997, found alongside Shadow Warrior
source archives (https://gitlab.com/N...build-addendum/).
- An early 1994 snapshot of the Build Engine distribution
(Build_Apr1994.zip, http://advsys.net/ken/build.htm).
- The first sector-based Build engine
(buildsec.zip, http://advsys.net/ken/build.htm).
- A grid-based BUILD engine snapshot from 1993
(builgrid.zip, http://advsys.net/ken/build.htm)
- The first ever BUILD demo (build1.zip, http://advsys.net/ken/build.htm).
- "picrot4.bas" i.e., "PICture ROTation demo #4"
(picrot4.bas, PICROT4.EXE, http://advsys.net/ken/build.htm).

Other files can be found at Ken Silverman's official web site
as of writing this.

-Yoav N.


355    8480     1995-09-06  14:47:10  19950920\BSTUB.C
6197   169073   1995-09-06  14:47:10  19950920\BUILD.C
271    10737    1995-09-20  20:01:20  19950920\BUILD.H
138    3194     1995-03-22  16:11:02  19950920\CONVART1.C
6618   180996   1995-09-20  20:01:20  19950920\POLYTEX5.C
1288   23974    1995-09-20  20:01:20  19950920\PRAGMAS.H
443    38964    1995-10-13  17:34:16  19951014\BSETUP.EXE
572    26090    1995-10-14  00:04:58  19951014\BUILD2.TXT
4534   220987   1995-05-03  01:08:56  19951014\BUILD.TXT
131    30580    1994-04-04  14:44:04  19951014\CONVART1.EXE
113    25532    1994-02-24  13:46:14  19951014\CONVART.EXE
99     26570    1994-03-02  00:44:46  19951014\CONVMAP0.EXE
132    30698    1994-03-09  01:49:08  19951014\CONVMAP1.EXE
119    25762    1994-03-11  03:22:26  19951014\CONVMAP2.EXE
140    27718    1994-04-07  14:36:14  19951014\CONVMAP3.EXE
108    26758    1994-04-28  11:48:10  19951014\CONVMAP4.EXE
236    26758    1994-09-16  16:51:24  19951014\CONVMAP5.EXE
231    27270    1995-01-03  00:02:36  19951014\CONVMAP6.EXE
159    31986    1995-09-23  17:43:26  19951014\CONVMAP7.EXE
130    31638    1996-09-09  16:52:08  19951014\KEXTRACT.EXE
213    31602    1996-10-16  00:17:02  19951014\KGROUP.EXE
190    36400    1996-02-05  18:08:00  19951014\RSIZEART.EXE
133    31710    1996-05-02  04:31:30  19951014\TRANSPAL.EXE
258    9952     1995-10-17  14:47:00  19951017\BUILD.H
6618   180996   1995-10-17  14:47:00  19951017\POLYTEX5.C
1288   23974    1995-10-17  14:47:00  19951017\PRAGMAS.H
30     7997     1995-10-25  08:46:24  19951025\A.OBJ
369    8903     1995-10-21  01:57:26  19951025\BSTUB.C
258    9957     1995-10-21  16:52:08  19951025\BUILD.H
296    120114   1995-10-23  23:45:30  19951025\BUILD.OBJ
24     5438     1995-10-23  23:47:04  19951025\CACHE1D.OBJ
438    178966   1995-10-25  22:15:38  19951025\ENGINE.OBJ
185    31203    1995-06-26  22:23:46  19951025\KDMENG.OBJ
11     2357     1995-04-21  17:34:28  19951025\K.OBJ
90     9342     1995-08-17  18:38:48  19951025\MMULTI.OBJ
65     16495    1995-09-02  19:03:36  19951025\MULTI.OBJ
1808   35857    1995-10-03  18:46:04  19951025\PRAGMAS.H
371    9050     1995-12-08  22:22:46  19951208\BSTUB.C
258    9961     1995-12-08  22:17:04  19951208\BUILD.H
1800   35400    1995-11-04  00:02:48  19951208\PRAGMAS.H
34     9412     1995-12-11  21:23:40  19960213\A.OBJ
371    9050     1995-12-08  22:22:46  19960213\BSTUB.C
261    10036    1996-02-09  21:51:06  19960213\BUILD.H
296    118094   1996-02-09  21:53:30  19960213\BUILD.OBJ
28     9237     1996-01-12  12:13:04  19960213\CACHE1D.OBJ
476    195793   1996-02-13  00:23:10  19960213\ENGINE.OBJ
185    31203    1995-06-26  22:23:46  19960213\KDMENG.OBJ
11     2357     1995-04-21  17:34:28  19960213\K.OBJ
22     4571     1996-01-18  12:19:06  19960213\MMULTI.OBJ
65     16495    1995-09-02  19:03:36  19960213\MULTI.OBJ
1799   36673    1996-01-10  13:19:32  19960213\PRAGMAS.H
1006   93962    1996-03-05  14:02:06  19960305\EDITART.EXE
1800   35400    1995-11-04  01:02:48  19960305\PRAGMAS.H
27     10702    1996-03-16  18:16:46  19960319\A.OBJ
371    9050     1995-12-08  22:22:46  19960319\BSTUB.C
261    10036    1996-02-09  21:51:06  19960319\BUILD.H
287    119055   1996-03-19  11:43:20  19960319\BUILD.OBJ
29     9202     1996-03-19  11:44:28  19960319\CACHE1D.OBJ
497    205636   1996-03-19  11:44:26  19960319\ENGINE.OBJ
185    31203    1995-06-26  22:23:46  19960319\KDMENG.OBJ
11     2357     1995-04-21  17:34:28  19960319\K.OBJ
22     4571     1996-01-18  12:19:06  19960319\MMULTI.OBJ
65     16495    1995-09-02  19:03:36  19960319\MULTI.OBJ
1799   36673    1996-01-10  13:19:32  19960319\PRAGMAS.H
27     10702    1996-03-16  18:16:46  19960320\A.OBJ
371    9050     1995-12-08  22:22:46  19960320\BSTUB.C
261    10036    1996-02-09  21:51:06  19960320\BUILD.H
287    119055   1996-03-19  11:43:20  19960320\BUILD.OBJ
29     9202     1996-03-19  11:44:28  19960320\CACHE1D.OBJ
500    205572   1996-03-20  18:26:40  19960320\ENGINE.OBJ
185    31203    1995-06-26  22:23:46  19960320\KDMENG.OBJ
11     2357     1995-04-21  17:34:28  19960320\K.OBJ
22     4571     1996-01-18  12:19:06  19960320\MMULTI.OBJ
65     16495    1995-09-02  19:03:36  19960320\MULTI.OBJ
1799   36673    1996-01-10  13:19:32  19960320\PRAGMAS.H
261    10036    1996-04-13  07:10:56  19960413\BUILD.H
1810   36807    1996-04-06  18:14:56  19960413\PRAGMAS.H
52     7363     1995-10-06  14:56:10  19960606\A.OBJ
0      27       1995-10-06  14:58:00  19960606\BSETUP.DAT
443    38964    1995-10-13  16:34:16  19960606\BSETUP.EXE
369    8903     1995-11-15  12:56:48  19960606\BSTUB.C
16     4344     1995-11-15  12:56:48  19960606\BSTUB.OBJ
798    37703    1995-11-15  12:56:48  19960606\BUILD2.TXT
6197   169073   1995-11-15  12:56:48  19960606\BUILD.C
258    9957     1995-11-15  12:56:48  19960606\BUILD.H
294    120570   1995-10-04  22:13:58  19960606\BUILD.OBJ
456    23517    1996-06-06  13:50:20  19960606\BUILD.TXT
24     5438     1995-10-09  21:56:26  19960606\CACHE1D.OBJ
159    31986    1995-09-23  16:43:26  19960606\CONVMAP7.EXE
1103   92938    1995-12-11  16:01:42  19960606\EDITART.EXE
423    175337   1995-10-09  16:07:14  19960606\ENGINE.OBJ
206    26162    1995-11-15  12:56:48  19960606\KGROUP.EXE
90     9342     1995-08-17  19:38:48  19960606\MMULTI.OBJ
1288   23974    1995-11-15  12:56:48  19960606\PRAGMAS.H
27     10879    1996-05-02  02:51:34  19961013\A.OBJ
513    14004    1996-09-29  09:46:12  19961013\BSTUB.C
1485   73676    1996-09-29  01:58:46  19961013\BUILD2.TXT
1851   336511   1996-10-13  07:50:08  19961013\BUILD.EXE
270    10404    1996-10-13  06:45:52  19961013\BUILD.H
282    117415   1996-10-13  07:50:04  19961013\BUILD.OBJ
5077   248062   1995-10-06  23:51:42  19961013\BUILD.TXT
123    17941    1996-09-29  09:14:54  19961013\CACHE1D.OBJ
1066   94622    1996-07-30  23:53:36  19961013\EDITART.EXE
473    196519   1996-10-13  07:35:50  19961013\ENGINE.OBJ
6116   195574   1996-10-02  00:47:34  19961013\GAME.C
2264   390671   1996-10-13  07:35:56  19961013\GAME.EXE
191    45006    1996-06-04  11:59:50  19961013\KDMENG.OBJ
13     2333     1996-05-24  02:41:54  19961013\K.OBJ
9      372      1995-12-31  23:19:12  19961013\MAKEFILE
65     16495    1995-09-03  04:03:36  19961013\MULTI.OBJ
49     1132     1996-05-16  19:04:04  19961013\NAMES.H
1930   39191    1996-05-31  01:34:36  19961013\PRAGMAS.H
182    36912    1996-07-25  01:49:04  19961013\RSIZEART.EXE
0      27       1996-10-15  01:53:00  19961013\SETUP.DAT
135    26115    1996-09-09  12:36:18  19961013\SETUP.EXE
133    31710    1996-05-02  12:31:30  19961013\TRANSPAL.EXE
443    38964    1995-10-13  18:34:16  19961121\BSETUP.EXE
1066   94622    1996-07-30  15:53:36  19961121\EDITART.EXE
128    26162    1995-08-14  10:33:46  19961121\KGROUP.EXE
182    36912    1996-07-24  17:49:04  19961121\RSIZEART.EXE
1006   93962    1996-03-05  16:02:06  19961121\SLAB\EDITART.EXE
190    35462    1996-09-18  18:55:16  19961121\SLAB\KC.EXE
526    128771   1996-11-21  18:00:24  19961121\SLAB\SLABSPRI.EXE
174    8262     1996-11-21  18:06:08  19961121\SLAB\SLABSPRI.TXT
134    50688    1996-10-05  17:49:24  19961121\SLAB\SS4WIN.EXE
136    31710    1996-10-20  23:03:36  19961121\SLAB\TRANSPAL.EXE
1066   94622    1996-07-30  15:53:36  19961204\EDITART.EXE
263    7827     1996-12-04  02:26:20  19961204\TRANSPAL.bak
263    7828     1996-12-04  02:37:00  19961204\TRANSPAL.C
11     721      1996-12-04  02:37:22  19961204\TRANSPAL.ERR
133    31710    1996-05-02  04:31:30  19961204\TRANSPAL.EXE
43     9402     1996-12-04  02:37:22  19961204\TRANSPAL.OBJ
27     10879    1996-05-01  16:51:34  19961213\A.OBJ
495    13483    1996-10-16  15:01:26  19961213\BSTUB.C
31     7580     1996-10-12  21:02:36  19961213\BSTUB.OBJ
270    10404    1996-10-12  16:23:58  19961213\BUILD.H
282    117415   1996-10-12  21:50:04  19961213\BUILD.OBJ
41     10646    1996-12-13  14:14:06  19961213\CACHE1D.OBJ
478    197095   1996-11-12  22:15:44  19961213\ENGINE.OBJ
191    45006    1996-06-04  01:59:50  19961213\KDMENG.OBJ
13     2333     1996-05-23  16:41:54  19961213\K.OBJ
18     5343     1996-09-04  13:39:26  19961213\MMULTI.OBJ
65     16495    1995-09-02  19:03:36  19961213\MULTI.OBJ
1930   39191    1996-05-30  15:34:36  19961213\PRAGMAS.H
27     10879    1996-05-01  16:51:34  19970221\A.OBJ
495    15076    1997-02-21  10:17:58  19970221\BSTUB.C
31     7580     1996-10-12  21:02:36  19970221\BSTUB.OBJ
270    11097    1997-02-21  10:18:10  19970221\BUILD.H
282    117415   1996-10-12  21:50:04  19970221\BUILD.OBJ
41     10646    1996-12-13  14:14:06  19970221\CACHE1D.OBJ
478    197095   1996-11-12  22:15:44  19970221\ENGINE.OBJ
191    45006    1996-06-04  01:59:50  19970221\KDMENG.OBJ
13     2333     1996-05-23  16:41:54  19970221\K.OBJ
18     5343     1996-09-04  13:39:26  19970221\MMULTI.OBJ
65     16495    1995-09-02  19:03:36  19970221\MULTI.OBJ
1930   43871    1997-02-21  10:18:12  19970221\PRAGMAS.H
27     10879    1996-05-01  16:51:34  19970305\A.OBJ
495    15076    1997-02-21  10:17:58  19970305\BSTUB.C
31     7580     1996-10-12  21:02:36  19970305\BSTUB.OBJ
272    11101    1997-03-04  23:01:12  19970305\BUILD.H
282    117415   1996-10-12  21:50:04  19970305\BUILD.OBJ
41     10646    1996-12-13  14:14:06  19970305\CACHE1D.OBJ
478    197095   1996-11-12  22:15:44  19970305\ENGINE.OBJ
191    45006    1996-06-04  01:59:50  19970305\KDMENG.OBJ
13     2333     1996-05-23  16:41:54  19970305\K.OBJ
18     5343     1996-09-04  13:39:26  19970305\MMULTI.OBJ
65     16495    1995-09-02  19:03:36  19970305\MULTI.OBJ
2038   48137    1997-03-05  10:03:50  19970305\PRAGMAS.H
27     10879    1996-05-01  16:51:34  19970522\A.OBJ
495    15076    1997-02-21  10:17:58  19970522\BSTUB.C
31     7580     1996-10-12  21:02:36  19970522\BSTUB.OBJ
270    10404    1996-10-12  20:45:52  19970522\BUILD.H
282    117415   1996-12-13  20:57:48  19970522\BUILD.OBJ
41     10646    1996-12-07  17:40:04  19970522\CACHE1D.OBJ
468    197201   1997-05-22  18:39:26  19970522\ENGINE.OBJ
191    45006    1996-06-04  01:59:50  19970522\KDMENG.OBJ
13     2333     1996-05-23  16:41:54  19970522\K.OBJ
18     5343     1996-09-04  13:39:26  19970522\MMULTI.OBJ
65     16495    1995-09-02  19:03:36  19970522\MULTI.OBJ
1930   39191    1996-05-30  15:34:36  19970522\PRAGMAS.H
742    18928    1997-03-14  22:23:36  19970522\VES2.H
22     6073     1995-05-12  21:35:00  SRC_9505\A.OBJ
0      27       1995-05-20  15:35:56  SRC_9505\BSETUP.DAT
369    8891     1995-05-07  23:37:00  SRC_9505\BSTUB.C
18     5520     1995-05-08  00:43:46  SRC_9505\BSTUB.OBJ
1276   42640    1995-05-08  01:11:56  SRC_9505\BUILD.BAS
6197   169073   1995-05-08  01:11:58  SRC_9505\BUILD.C
312    12361    1995-05-08  01:11:54  SRC_9505\BUILD.H
229    109367   1995-05-12  21:34:22  SRC_9505\BUILD.OBJ
4602   223992   1995-05-08  01:11:56  SRC_9505\BUILD.TXT
97     3276     1995-05-07  23:30:44  SRC_9505\CACHE1D.C
9      1474     1995-05-07  23:30:40  SRC_9505\CACHE1D.OBJ
8136   225116   1995-05-08  00:43:14  SRC_9505\ENGINE.C
0      0        1995-05-08  00:11:14  SRC_9505\ENGINE.ERR
421    153015   1995-05-12  21:34:50  SRC_9505\ENGINE.OBJ
35     1245     1995-05-18  23:16:14  SRC_9505\MAKEFILE
1235   22895    1995-05-08  00:44:16  SRC_9505\PRAGMAS.H
34     11904    1995-05-08  07:23:08  SRC_9505\TABLES.DAT
139    30634    1995-05-13  07:24:50  SRC_9505\TRANSPAL.EXE

16

User is offline   NY00123 

#2

Here it is <_<

For anybody checking this out, I should mention that the source files under SRC_9505 are not perfectly matching the corresponding OBJ files. In practice, only BUILD.OBJ should be re-built from BUILD.C (no pun intended?), and then a functioning EXE can be created.

The bundled MAKEFILE should let you create the EXE with a compatible version of Watcom C. I'm attaching an example EXE which I've created. You'll need DOS4GW.EXE or compatible to start it.

Attached File  build95_exe_20190520.7z (110.2K)
Number of downloads: 4

I've confirmed that it's compatible with the data from the Shadow Warrior 950210 (February 95) prototype, but expect the editor to crash, especially after applying groudraw.

======

By the way, as stated in the README, Ken already released a 1994 revision of Ken-Build, including the editor. This 94 revision of the editor does have an earlier revision of groudraw. I'm not sure if it's less functional than the SRC_9505 one; This might depend on the assets being used.

As further mentioned in the README, the above-mentioned SW Feb 95 prototype includes a later revision of the editor, in which this functionality appears to be visually closer to SRC_9505's, at least based on a few quick tests. SRC_9505 is still a bit later, though, and now also covers the source code. Note that any of these revisions may still crash.

Let me re-quote the acknowledgements from the README. Since this can be a weak point for me again, I'll briefly add that:
1. I simply couldn't do this alone, not at all.
2. I am thanking anybody who deserves it, even if not directed mentioned in the README. (Sorry for that!)

Quote

Many thanks should be sent to Ken Silverman for approving the release
of historical Build engine versions, and 3D Realms for going through
older materials that cover these sources and sending them
to Richard Gobeille and Evan Ramos, who further inspected them.

Additional thanks go to Evan for paving the way. Further thanks
go to Ken for the original open-source release of the Build Engine
on 2000, and for his original work on this engine.
Special thanks go to Nuke.YKT and Barry Duncan.

Finally, thanks to all fans of the Build engine and games made with it.


As an addition: While applying just to (very) few final 96/97 era EXEs, I can mention that both Nuke.YKT and I already found a small amount of the sources, as well as Build engine sources released on last February (together with additional SW sources), to be very useful. :)

This post has been edited by NY00123: 20 May 2019 - 09:49 AM

10

User is offline   MrFlibble 

#3

I must say you're doing some amazing scholarly work behind the scenes, thanks for making this all a reality and public.

It would be nice to see a working port for LameDuke and the early SW builds, am I correct to assume that these new materials would facilitate this kind of projects (should anyone ever bother working on them) alongside bringing about support for the closed-source Build games like Powerslave?
1

User is offline   oasiz 

  • Dr. Effector

#4

Yeah, this is really cool!

For lameduke you're better off re-coding things in eduke as the con langauge is all there and all interesting things are really only game side (not engine).
Currently you should be able to get a pretty accurate representation with eduke32 con language alone. Many bits were quite buggy or inconsistent so I wouldn't worry about stuff like timing <_<

Anyway, any older game is still under the same problem where the game code is not available. Having a matching engine code as a reference can help though.
2

#5

Thanks guys, an amazing addition to the treasure trove of historical materials already released. Keep up the good work! <_<
1

User is offline   NY00123 

#6

Thanks for the feedbacks of yours! Hopefully even just one of the files may prove to be useful in a new situation I haven't been involved with.

On an interesting note (a coincidence?), as found out by cardèvero from the Duke4.net Discord server:

Ken has recently updated his builgrid.zip and buildsec.zip archives: http://advsys.net/ken/build.htm

Other than updates to the README.TXT files, two .BAS files were added to buildsec.zip, and another one was moved to it from builgrid.zip:

Ken Silverman said:

05/08/2019: Bonus! I have included 3 versions of my original QuickBasic
prototype of the sector-based engine. It is interesting to compare the
progression of features with a file compare utility:
12/20/1993 SECTOR.BAS : Discovered this early version just recently!
01/04/1994 BUILD.BAS : Originally included with BUILGRID.ZIP.
02/06/1994 BUILD_2.BAS : Originally called BUILD.BAS; found in another dir.


On the topic of recreating prototype builds' sources, as expected, it'll still be quite difficult and time consuming, especially without corresponding game sources. Even versions 1.1 and 1.2 of Shadow Warrior have a great deal of code line changes; I similarly expect the total amount of differences between versions 1.3d and 1.4 of Duke Nukem 3D to be quite far from little.

Access to the differing Build engine sources/headers/objects may still assist, though, and very greatly.

For the ones not aware, these two videos should demonstrate groudraw:




I've also attached two screenshots from the 1994 snapshot of Ken-Build.
Attached File  game_000.png (17.91K)
Number of downloads: 14
Attached File  game_001.png (11.91K)
Number of downloads: 12
5

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic


All copyrights and trademarks not owned by Voidpoint, LLC are the sole property of their respective owners. Play Ion Fury! ;) © Voidpoint, LLC

Enter your sign in name and password


Sign in options