# Let's play Duke Nukem 3D!

**URL:** <https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429>\
**Category:** Games\
**Created:** [August 20, 2018, 12:00am UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429 "2018-08-20T00:00:46Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Oet](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/oet/32/5786_2.png) [@Oet](https://forum.clockworkpi.com/u/Oet)\
**Post date:** [August 20, 2018, 12:00am UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429/1 "2018-08-20T00:00:46Z")

</div>

_Hmm, ain’t got time to play with myself!_

Next up is Duke Nukem 3D! The website of EDuke32 recommends building from source. Okay, so be it. 🙂 Make sure you have a valid copy of DUKE3D.GRP!

![20180820_015111](https://cdck-file-uploads-canada1.s3.dualstack.ca-central-1.amazonaws.com/flex029/uploads/clockworkpi/original/1X/c6c37722e4560faaf6ab82bb7e22c6e82de91588.jpeg)

1. Install these dependencies:

```auto
sudo apt update && sudo apt install libflac-dev libsdl2-mixer-dev libvorbis-dev libvpx-dev 

```

1. Download the latest EDuke32 source files (this will create directory **./svn.eduke32.com/** ):

```auto
wget -r --no-parent https://svn.eduke32.com/eduke32/

```

1. Go to the source files:

```auto
cd svn.eduke32.com/eduke32/

```

1. Build it!

```auto
make

```

_What are you waiting for, Christmas?_

1. Wait at least **20 minutes**. Be patient when it shows ‘Linking’ operations. These two just take long:

```auto
Linking eduke32...
Linking mapster32...

```

It should now have created two files; **eduke32** and **mapster32**.

1. Make a new game folder ‘Duke3D’:

```auto
mkdir ~/games/Duke3D

```

1. Copy the **file** eduke32 to this folder:

```auto
cp eduke32 ~/games/Duke3D

```

1. Copy your purchased DUKE3D.GRP also to this folder!

2. Create the launch script:

```auto
cd ~/apps/launcher/Menu/GameShell/
echo 'cd ~/games/Duke3D' > 'Duke Nukem 3D.sh'
echo './eduke32' >> 'Duke Nukem 3D.sh'

```

1. Clean up:

```auto
rm -r ~/svn.eduke32.com

```

1. Reboot!

Set the controls in-game!

_Let’s rock!_  
 ![](https://cdck-file-uploads-canada1.s3.dualstack.ca-central-1.amazonaws.com/flex029/uploads/clockworkpi/original/1X/66d9a058047cd1c94c8e8b10e88f401ffbaf8e48.png)

---

<div class="post-metadata">

**Author:** ![Gerst](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/gerst/32/959_2.png) [@Gerst](https://forum.clockworkpi.com/u/Gerst)\
**Post date:** [August 24, 2018, 6:44pm UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429/2 "2018-08-24T18:44:50Z")

</div>

I’ve got it working! Runs very smoothly although the sound is a bit choppy. It might be resolved by turning down the sample rate and number of voices in the settings.

Oh, and for anyone trying this out… Do not touch the display settings. If you do, the game will instantly render in 640x480 and you can’t get rid of that setting. Only way is to go into you settings file using SSH and changing it to 320x240 manually again.

So with all that said, let’s rock! Very awesome to play this classic again!

Thanks for setting this up, @Oet !

---

<div class="post-metadata">

**Author:** ![Oet](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/oet/32/5786_2.png) [@Oet](https://forum.clockworkpi.com/u/Oet)\
**Post date:** [August 24, 2018, 7:04pm UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429/3 "2018-08-24T19:04:20Z")

</div>

Thx. I had the same choppy sound.

I reduced the Voices to a minimum:  
Options --\> Souns Setup --\> Advanced --\> Voices --\> Apply Changes

Runs smooth now!

---

<div class="post-metadata">

**Author:** ![Oet](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/oet/32/5786_2.png) [@Oet](https://forum.clockworkpi.com/u/Oet)\
**Post date:** [August 25, 2018, 2:11pm UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429/4 "2018-08-25T14:11:02Z")

</div>

For people who directly want to correct their resolution, run these:

```auto
sed -i 's/^ScreenWidth.*/ScreenWidth = 320/' ~/.config/eduke32/eduke32.cfg
sed -i 's/^ScreenHeight.*/ScreenHeight = 240/' ~/.config/eduke32/eduke32.cfg

```

---

<div class="post-metadata">

**Author:** ![Gerst](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/gerst/32/959_2.png) [@Gerst](https://forum.clockworkpi.com/u/Gerst)\
**Post date:** [August 26, 2018, 5:50pm UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429/5 "2018-08-26T17:50:09Z")

</div>

And here’s an icon for the shell 🙂

![Duke%20Nukem%203D](https://canada1.discourse-cdn.com/flex029/uploads/clockworkpi/original/2X/c/c6efb1ed66c07bc298802d8e0a8128f80fd9a9f7.png)

---

<div class="post-metadata">

**Author:** ![Oet](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/oet/32/5786_2.png) [@Oet](https://forum.clockworkpi.com/u/Oet)\
**Post date:** [August 26, 2018, 9:42pm UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429/6 "2018-08-26T21:42:28Z")

</div>

@Nielsvd also made one:

![](https://canada1.discourse-cdn.com/flex029/uploads/clockworkpi/original/2X/d/d1f950132842bdb997cb1a0154bf8cc08b853723.png)

---

<div class="post-metadata">

**Author:** ![Micro007](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/micro007/32/745_2.png) [@Micro007](https://forum.clockworkpi.com/u/Micro007)\
**Post date:** [August 27, 2018, 12:49pm UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429/7 "2018-08-27T12:49:33Z")

</div>

How do you got your controls mapped? I tried to map em myself but I can’t seem to unmap so I got some awkward presses happening lol

---

<div class="post-metadata">

**Author:** ![Gerst](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/gerst/32/959_2.png) [@Gerst](https://forum.clockworkpi.com/u/Gerst)\
**Post date:** [August 27, 2018, 2:40pm UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429/8 "2018-08-27T14:40:26Z")

</div>

Press your ‘start’ button and press the desired button after. This works as long as you don’t remap your ‘start’ button of course. 😉

---

<div class="post-metadata">

**Author:** ![kajirye](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/kajirye/32/15_2.png) [@kajirye](https://forum.clockworkpi.com/u/kajirye)\
**Post date:** [August 30, 2018, 6:55am UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429/9 "2018-08-30T06:55:24Z")

</div>

Thanks for the tutorial. It was very clear, and the game runs smoothly.

I put the sample rate to the minimum, and turned up voices to the max, and haven’t noticed any choppiness in sounds so far doing that.

Any recommendations on how you setup the controls? I’ve only ever played duke3D with both a mouse and keyboard, and I cant decide how to set it up optimally for the gameshell

---

<div class="post-metadata">

**Author:** ![acronym2k2](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/acronym2k2/32/1059_2.png) [@acronym2k2](https://forum.clockworkpi.com/u/acronym2k2)\
**Post date:** [September 3, 2018, 10:06pm UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429/10 "2018-09-03T22:06:08Z")

</div>

Here is a copy of my Settings. Maybe this could help. I’m still tweaking, so i may alter this later.

```
this file is automatically generated by EDuke32
unbindall
bind "1" "gamefunc_Weapon_1"
bind "2" "gamefunc_Weapon_2"
bind "3" "gamefunc_Weapon_3"
bind "4" "gamefunc_Weapon_4"
bind "5" "gamefunc_Weapon_5"
bind "6" "gamefunc_Weapon_6"
bind "7" "gamefunc_Weapon_7"
bind "8" "gamefunc_Weapon_8"
bind "9" "gamefunc_Weapon_9"
bind "0" "gamefunc_Weapon_10"
bind "-" "gamefunc_Shrink_Screen"
bind "=" "gamefunc_Enlarge_Screen"
bind "BakSpc" "gamefunc_TurnAround"
bind "+" "gamefunc_Map"
bind "Q" "gamefunc_Quick_Kick"
bind "W" "gamefunc_Move_Forward"
bind "U" "gamefunc_Open"
bind "R" "gamefunc_Steroids"
bind "T" "gamefunc_SendMessage"
bind "Y" "gamefunc_Show_Opponents_Weapon"
bind "" "gamefunc_Mouse_Aiming"
bind "" "gamefunc_Toggle_Crosshair"
bind "Home" "gamefunc_Inventory_Left"
bind "End" "gamefunc_Inventory_Right"
bind "PgDn" "gamefunc_Inventory"
bind "J" "gamefunc_Crouch"
bind "H" "gamefunc_Strafe_Left"
bind "S" "gamefunc_Move_Backward"
bind "L" "gamefunc_Strafe_Right"
bind "F" "gamefunc_Map_Follow_Mode"
bind "" "gamefunc_Holo_Duke"
bind "" "gamefunc_Jetpack"
bind "" "gamefunc_See_Coop_View"
bind "SemiColon" "gamefunc_Previous_Weapon"
bind "O" "gamefunc_Next_Weapon"
bind "LShift" "gamefunc_Run"
bind "N" "gamefunc_NightVision"
bind "M" "gamefunc_MedKit"
bind "I" "gamefunc_Jump"
bind "RShift" "gamefunc_Run"
bind "LAlt" "gamefunc_Strafe"
bind "Space" "gamefunc_Jump"
bind "CapLck" "gamefunc_AutoRun"
bind "F6" "gamefunc_Quick_Save"
bind "F9" "gamefunc_Quick_Load"
bind "ScrLck" "gamefunc_Holster_Weapon"
bind "Kpad7" "gamefunc_Aim_Up"
bind "Up" "gamefunc_Move_Forward"
bind "Kpad9" "gamefunc_Look_Up"
bind "Kpad-" "gamefunc_Shrink_Screen"
bind "Left" "gamefunc_Turn_Left"
bind "Kpad5" "gamefunc_Center_View"
bind "Right" "gamefunc_Turn_Right"
bind "Kpad+" "gamefunc_Enlarge_Screen"
bind "Kpad1" "gamefunc_Aim_Down"
bind "Down" "gamefunc_Move_Backward"
bind "Kpad3" "gamefunc_Look_Down"
bind "Kpad0" "gamefunc_Look_Left"
bind "Kpad." "gamefunc_Look_Right"
bind "KpdEnt" "gamefunc_Inventory"
bind "K" "gamefunc_Fire"
bind "RAlt" "gamefunc_Strafe"
bind "Y" "gamefunc_Aim_Up"
bind "" "gamefunc_Look_Up"
bind "Left" "gamefunc_Turn_Left"
bind "Right" "gamefunc_Turn_Right"
bind "O" "gamefunc_Aim_Down"
bind "" "gamefunc_Look_Down"
bind "Insert" "gamefunc_Look_Left"
bind "Delete" "gamefunc_Look_Right"
osdeditpal "12"
osdtextpal "12"
osdtextshade "2"
r_texfilter "5"
r_useindexedcolortextures "0"
wchoice "3457860291"
```

---

<div class="post-metadata">

**Author:** ![sjenkinsjr](https://avatars.discourse-cdn.com/v4/letter/s/b5ac83/32.png) [@sjenkinsjr](https://forum.clockworkpi.com/u/sjenkinsjr)\
**Post date:** [September 21, 2018, 2:44am UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429/11 "2018-09-21T02:44:08Z")

</div>

I tried this 3 times and keep getting errors during the build… Followed it several times… Made sure I had everything type right, not sure why it’s not working!

( ![15374980528837022834390086143256](https://cdck-file-uploads-canada1.s3.dualstack.ca-central-1.amazonaws.com/flex029/uploads/clockworkpi/original/2X/b/bf63c0f8980a4ac0b36290765dadbf9d4bc27ce5.jpeg)

---

<div class="post-metadata">

**Author:** ![ManlyStump](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/manlystump/32/889_2.png) [@ManlyStump](https://forum.clockworkpi.com/u/ManlyStump)\
**Post date:** [September 21, 2018, 9:30am UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429/12 "2018-09-21T09:30:12Z")

</div>

Can you try the first line again and show us the output from that? It should have installed vpx as the last entry on that line.

---

<div class="post-metadata">

**Author:** ![Oet](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/oet/32/5786_2.png) [@Oet](https://forum.clockworkpi.com/u/Oet)\
**Post date:** [September 21, 2018, 5:07pm UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429/13 "2018-09-21T17:07:21Z")

</div>

You could look if libvpx-dev is installed:

```auto
$ dpkg -l | grep libvpx-dev
ii libvpx-dev:armhf 1.6.1-3+deb9u1 armhf VP8 and VP9 video codec (development files)

```

If you do not see the output you should install it:

```auto
$ sudo apt install libvpx-dev

```

and retry building.

Step 1 of the tutorial has a scrollbar. Move it to the right. 🙂

---

<div class="post-metadata">

**Author:** ![sjenkinsjr](https://avatars.discourse-cdn.com/v4/letter/s/b5ac83/32.png) [@sjenkinsjr](https://forum.clockworkpi.com/u/sjenkinsjr)\
**Post date:** [September 23, 2018, 2:53am UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429/14 "2018-09-23T02:53:24Z")

</div>

I seen the scroll bar… Now I got the loader in the top menu but it won’t load the game… Just goes right back to the game Shell’s main menu!

---

<div class="post-metadata">

**Author:** ![Oet](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/oet/32/5786_2.png) [@Oet](https://forum.clockworkpi.com/u/Oet)\
**Post date:** [September 23, 2018, 12:38pm UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429/15 "2018-09-23T12:38:55Z")

</div>

First check the output of `eduke32` if you run from console.  
You should get `Initialization failed! (No available video device)`:

```auto
$ cd ~/games/Duke3D/
$ ls -al
total 44828
drwxr-xr-x 2 cpi cpi 4096 Sep 23 12:30 .
drwxr-xr-x 8 cpi cpi 4096 Sep 23 12:25 ..
-rwxr-xr-x 1 cpi cpi 44356548 Sep 23 12:30 DUKE3D.GRP
-rwxr-xr-x 1 cpi cpi 1529808 Sep 23 12:25 eduke32
-rw-r--r-- 1 cpi cpi 550 Sep 23 12:26 eduke32.log
$ ./eduke32 

```

The output of `./eduke32` should be:

```auto
EDuke32 r(?)
Built Sep 23 2018 12:06:05, GCC 6.3.0, 32-bit 
Using /home/cpi/games/Duke3D/ for game data
Using /home/cpi/.config/eduke32/ for game data
Initializing SDL 2.0.5
Initialization failed! (No available video device)
Non-interactive mode enabled
Searching for game data...
 Checksumming DUKE3D.GRP... Done
Using "DUKE3D.GRP" as main game data file.
Compiling: GAME.CON (151190 bytes)
Including: DEFS.CON (35992 bytes)
Including: USER.CON (45482 bytes)
GAME.CON: In actor `ORGANTIC':
GAME.CON:3967: warning: found `else' with no `if'.
GAME.CON: In state `pigshootenemystate':
GAME.CON:5890: warning: found `else' with no `if'.
Found 2 warning(s), 0 error(s).
Script compiled in 57ms, 65684 bytes
Initialized 96.0M cache
Initializing OSD...
0 joystick(s) found

```

If you get the output from above, also check your script:

```auto
$ cd ~/apps/launcher/Menu/GameShell/
$ cat 'Duke Nukem 3D.sh' 

```

The output of `cat` should be:

```auto
cd ~/games/Duke3D
./eduke32

```

---

<div class="post-metadata">

**Author:** ![Kaz](https://avatars.discourse-cdn.com/v4/letter/k/ecd19e/32.png) [@Kaz](https://forum.clockworkpi.com/u/Kaz)\
**Post date:** [February 5, 2019, 2:33am UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429/16 "2019-02-05T02:33:54Z")

</div>

Is anyone able to still get eduke32 to compile correctly? It compiles with errors for me. I’ve tried redownloading and making it several times with the same outcome. When I try and run the resulting eduke32 I get a “Segmentation fault” error. Any ideas?

---

<div class="post-metadata">

**Author:** ![Oet](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/oet/32/5786_2.png) [@Oet](https://forum.clockworkpi.com/u/Oet)\
**Post date:** [February 5, 2019, 7:13pm UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429/17 "2019-02-05T19:13:37Z")

</div>

Hi,

It compiles with warnings here, but no errors. However, I do get the “Segmentation fault” when I try to run. This needs some digging…

---

<div class="post-metadata">

**Author:** ![ds\_joan](https://avatars.discourse-cdn.com/v4/letter/d/b5a626/32.png) [@ds\_joan](https://forum.clockworkpi.com/u/ds_joan)\
**Post date:** [February 5, 2019, 7:54pm UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429/18 "2019-02-05T19:54:50Z")

</div>

Remember you can do `make -j4` and it will use all cores for building, which should accelerate the process.

---

<div class="post-metadata">

**Author:** ![Oet](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.clockworkpi.com/oet/32/5786_2.png) [@Oet](https://forum.clockworkpi.com/u/Oet)\
**Post date:** [February 6, 2019, 12:19am UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429/19 "2019-02-06T00:19:16Z")

</div>

They introduced something incompatible in December.  
[November](https://dukeworld.com/eduke32/synthesis/20181118-7241/eduke32_src_20181118-7241.tar.xz): no segmentation fault.  
[December](https://dukeworld.com/eduke32/synthesis/20181207-7242/eduke32_src_20181207-7242.tar.xz): segmentation fault.

Furthermore, eduke32 seems to boot the setup menu now instead of the game.

The best way forward is for me to make a new stable tag for the GameShell, fixing those new changes. I will first have to pinpoint the difference between November and December.

You can of course take the November build and `make` it, but you will still have to deal with this setup menu somehow.

---

<div class="post-metadata">

**Author:** ![Kaz](https://avatars.discourse-cdn.com/v4/letter/k/ecd19e/32.png) [@Kaz](https://forum.clockworkpi.com/u/Kaz)\
**Post date:** [February 6, 2019, 12:39am UTC](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429/20 "2019-02-06T00:39:33Z")

</div>

Wow… thanks for figuring this out! I am going to give the November build a shot and see what it does. Is there a ForceSetup = 1 setting in cfg file that can be changed to a 0 by chance?

[Next page](https://forum.clockworkpi.com/t/lets-play-duke-nukem-3d/1429.md?page=2)
