2006/01/22

Como compilar Duke Nukem

¡¡¡Come Get Some!!!


si aqui les va como compilar uno de mis pocos juegos favoritos donde podemos derrotar a los alienigenas que roban a nuestras chicas... o como dice Duke "Nobody steal our chicks and lives"

pero diran: "ese juego ni lo conozco no ha de ser tan bueno" imaginen que hasta esta en la wikipedia...

http://en.wikipedia.org/wiki/Duke_Nukem_3D

jejej de lo se han perdido

para compilarlo se necesita: lib-SDL, lib-SDL-devel y tener un emulador de dos para lanzar el programa de configuracion que aun no ha sido portado

1. Primero descargar las fuentes del cvs de icculus.org y luego compilar; las fuentes se descargan de esta forma:


cvs -z3 -d:pserver:anonymous@cvs.icculus.org:/cvs/cvsroot login


la contraseña es: anonymous

luego:


cvs -z3 -d:pserver:anonymous@cvs.icculus.org:/cvs/cvsroot co duke3d


cuando la descarga de la fuente del juego este completa te regresara el prompt y entonces escribes


cd duke3d/source


ya en el directorio source ejecutamos


cvs -z3 -d:pserver:anonymous@cvs.icculus.org:/cvs/cvsroot co buildengine


luego nos pasamos al directorio buildengine


cd buildengine


para poder compilar necesitamos editar el archivo Makefile que esta en el directorio buildengine en la linea 16 debemos editar el valor


macosx := true


y pasarlo a false, el valor debe quedar asi:


macosx := false


y ahora ejecutamos make


make


subimos un nivel en el arbol de directorios y compilamos de nuevo ejecutando make:


cd ..
make


2. Ahora debemos conseguir una version Shareware de DukeNukem ya que el codigo del juego es libre pero no asi los archivos que acompañan al juego pero eso no es problema, pero eso se los digo mas adelante...

hay que descargar este archivo 3dduke13.zip que se encuentra en el servidor ftp de 3drealms creadores de Duke Nukem luego de descargarlo lo desempaquetamos con unzip asi: unzip 3dduke13.zip


[dalfa@E DukeNukem]$ unzip -v 3dduke13.zip
Archive: 3dduke13.zip
Length Method Size Ratio Date Time CRC-32 Name
-------- ------ ------- ----- ---- ---- ------ ----
9108 Defl:X 3931 57% 04-24-96 13:30 5c41fbe4 LICENSE.TXT
142342 Defl:X 73260 49% 04-24-96 13:30 19441356 INSTALL.EXE
5848108 Defl:X 5845941 0% 04-24-96 13:30 1358a896 DN3DSW13.SHR
496 Defl:X 354 29% 04-24-96 13:30 f5f08b5b FILE_ID.DIZ
-------- ------- --- -------
6000054 5923486 1% 4 files
[dalfa@E DukeNukem]$ unzip 3dduke13.zip

Archive: 3dduke13.zip
inflating: LICENSE.TXT
inflating: INSTALL.EXE
inflating: DN3DSW13.SHR
inflating: FILE_ID.DIZ


ahora necesitamos extraer los archivos del arhivo DN3DSW13.SHR siempre con el comando unzip asi: unzip DN3DSW13.SHR


[dalfa@E DukeNukem]$ unzip -v DN3DSW13.SHR
Archive: DN3DSW13.SHR
Length Method Size Ratio Date Time CRC-32 Name
-------- ------ ------- ----- ---- ---- ------ ----
9108 Defl:X 3931 57% 07-16-98 15:56 5c41fbe4 LICENSE.TXT
25942 Defl:X 25284 3% 04-24-96 13:30 06602bb8 COMMIT.EXE
28893 Defl:X 7589 74% 04-24-96 13:30 70ef6dfa DEFS.CON
6226 Defl:X 6071 3% 04-24-96 13:30 21a4683f DEMO1.DMO
9701 Defl:X 9461 3% 04-24-96 13:30 c97b103b DEMO2.DMO
3759 Defl:X 3702 2% 04-24-96 13:30 0f186133 DEMO3.DMO
73594 Defl:X 72452 2% 04-24-96 13:30 64e0e19a DN3DHELP.EXE
188954 Defl:X 156584 17% 04-24-96 13:30 504086c1 DUKE.RTS
1178963 Defl:X 591624 50% 04-24-96 13:30 b1757729 DUKE3D.EXE
11035779 Defl:X 4806752 56% 04-24-96 13:30 983ad923 DUKE3D.GRP
99639 Defl:X 15524 84% 04-24-96 13:30 cc08e0a8 GAME.CON
4125 Defl:X 1476 64% 04-24-96 13:30 9bc828c4 MODEM.PCK
2760 Defl:X 1396 49% 04-24-96 13:30 2ac0cf34 README.DOC
95177 Defl:X 91323 4% 04-24-96 13:30 c927e301 SETMAIN.EXE
27153 Defl:X 26349 3% 04-24-96 13:30 f8dbc57d SETUP.EXE
6871 Defl:X 2111 69% 04-24-96 13:30 5ae1f4fd ULTRAMID.INI
36960 Defl:X 9450 74% 04-24-96 13:30 20446233 USER.CON
-------- ------- --- -------
12833604 5831079 55% 17 files


[dalfa@E DukeNukem]$ unzip DN3DSW13.SHR
Archive: DN3DSW13.SHR
replace LICENSE.TXT? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
inflating: LICENSE.TXT
inflating: COMMIT.EXE
inflating: DEFS.CON
inflating: DEMO1.DMO
inflating: DEMO2.DMO
inflating: DEMO3.DMO
inflating: DN3DHELP.EXE
inflating: DUKE.RTS
inflating: DUKE3D.EXE
inflating: DUKE3D.GRP
inflating: GAME.CON
inflating: MODEM.PCK
inflating: README.DOC
inflating: SETMAIN.EXE
inflating: SETUP.EXE
inflating: ULTRAMID.INI
inflating: USER.CON


copiamos el binario que compilamos en duke3d/sources al lugar donde estan los archivos extraidos a DN3DSW13.SHR


[dalfa@E ~]$ cp duke3d/source/duke3d DukeNukem/
«duke3d/source/duke3d» -> «DukeNukem/duke3d»


debemos ejecutar el programa de configuracion que lamentablemente es un exe este se puede ejecutar con dosbox o dosemu yo usare dosbox


[dalfa@E DukeNukem]$ dosbox
CONFIG:Loading settings from config file /etc/dosbox.conf
ALSA:Can't subscribe to MIDI port (65:0)
MIDI:Opened device:oss
Using joystick 2-Axis,8-Button with 5 axes and 8 buttons


Z:\> mount c /home/dalfa/DukeNukem/
Drive C is mounted as local directory /home/dalfa/DukeNukem

Z:\>c:

C:\>SETUP.EXE


entonces aparecera una aplicacion de configuracion bastante sencilla entonces configuras a tu antojo lo que mas importa es configurar el sonido, cuando terminemos cerramos el emulador y entramos en el directorio con el binario duke3d y cambiamos el nombre de un archivo asi:


mv DUKE3D.CFG duke3d.cfg


esto es porque el program de configuracion trabaja en dos y a ellos no les importa si un archivo tiene mayusculas o no pero en linux el binario duke3d busca el archivo de configuracion duke3d.cfg no DUKE3D.CFG

ya casi esta ahora copiamos unos archivos .con del directorio testdata al directorio donde estara el juego y cambiaremos sus nombres de minusculas a mayusculas asi:


[dalfa@E ~]$ cp -f duke3d/testdata/defs.con DukeNukem/DEFS.CON
«duke3d/testdata/defs.con» -> «DukeNukem/DEFS.CON»

[dalfa@E ~]$ cp -f duke3d/testdata/game.con DukeNukem/GAME.CON
«duke3d/testdata/game.con» -> «DukeNukem/GAME.CON»

[dalfa@E ~]$ cp -f duke3d/testdata/user.con DukeNukem/USER.CON
«duke3d/testdata/user.con» -> «DukeNukem/USER.CON»


con esto el juego debe estar funcional, ahora para probarlo entramos al directorio donde esta y lo ejecutamos asi: ./duke3d


[dalfa@E ~]$ cd DukeNukem/


[dalfa@E DukeNukem]$ ./duke3d

Duke Nukem 3D v1.4 - Atomic Edition
Copyright (c) 1996 3D Realms Entertainment

STUB: CONTROL_ClearAssignments
Compiling: 'GAME.CON'.
Including: 'DEFS.CON'.
Including: 'USER.CON'.
Code Size:64840 bytes(1794 labels).
* Hold Esc to Abort. *
Loading art header.
Checking sound inits.
Checking music inits.
RTS Manager Started.
Adding DUKE.RTS.
Using .RTS file:DUKE.RTS
Loading palette/lookups.



3. con esto tendremos el juego de demostracion (shareware) de DukeNukem funcionando asi que solo funcionara el primer episodio "LA MELTDOWN" si cuentan con una copia del juego Duke Nukem Atomic Edition original puedes usar los archivos que se encuentran ahi en vez de usar los de esta version de demostracion asi tendras acceso total al juego como si estuvieses en el juego original

pero entonces para que tanto trabajo si solo se puede usar un episodio y cuesta tanto ponerlo en marcha...

pues porque DukeNukem es muy flexible y se pueden bajar episodios de usuarios del juego mucho mejores que los del juego original basta con hacer una simple busqueda en google para encontrar decenas de ellos yo personalmente tengo alrededor de 300

Google.com: Duke Nukem 3D Episodes

Google.com: Duke Nukem 3D Episodios

aqui hay varios y tambien varios archivos para usar con el juego:

http://www.bur.st/~duke3d/episode.shtml

http://www-tet.ee.tu-berlin.de/solyga/DUKE3D/maps.html

los episodios son archivos .map hay archivos .map que traen consigo muchos otros archivos estos episodios muchas veces no funcionan con el binario que se compila para linux ya que para usarlos en dos muchas veces habia que parchar el exe para usarlos pero tambien hay episodios que solo constan de un archivo map esos si funcionan con el binario de linux para poder jugarlos se hace asi:


./duke3d -map nombre_del_episodio.map


cuando ya tengan todo listo puede ser que la pantalla del juego se mire muy pequeña se puede configurar editando el archivo duke3d.cfg en la lineas 25 y 26


ScreenWidth = 320
ScreenHeight = 200


cambiarlas por


ScreenWidth = 800
ScreenHeight = 600


el juego se puede compilar gracias a:

http://icculus.org/duke3d/

duke3d.cfg



[Setup]
SetupVersion = "1.4"

[Screen Setup]
ScreenMode = 2
ScreenWidth = 1024
ScreenHeight = 768
Shadows = 1
Password = ""
Detail = 1
Tilt = 1
Messages = 1
Out = 0
ScreenSize = 8
ScreenGamma = 56

[Sound Setup]
FXDevice = 0
MusicDevice = 0
FXVolume = 252
MusicVolume = 232
NumVoices = 8
NumChannels = 2
NumBits = 16
MixRate = 44000
MidiPort = 0x330
BlasterAddress = 0x220
BlasterType = 6
BlasterInterrupt = 7
BlasterDma8 = 1
BlasterDma16 = 5
BlasterEmu = 0x620
ReverseStereo = 1
SoundToggle = 1
VoiceToggle = 1
AmbienceToggle = 1
MusicToggle = 1

[KeyDefinitions]
Move_Forward = "Up" "Kpad8"
Move_Backward = "Down" "Kpad2"
Turn_Left = "Left" "Kpad4"
Turn_Right = "Right" "KPad6"
Strafe = "LAlt" "RAlt"
Fire = "LCtrl" "RCtrl"
Open = "Space" ""
Run = "LShift" "RShift"
AutoRun = "CapLck" ""
Jump = "A" "/"
Crouch = "Z" ""
Look_Up = "PgUp" "Kpad9"
Look_Down = "PgDn" "Kpad3"
Look_Left = "Insert" "Kpad0"
Look_Right = "Delete" "Kpad."
Strafe_Left = "," ""
Strafe_Right = "." ""
Aim_Up = "Home" "KPad7"
Aim_Down = "End" "Kpad1"
Weapon_1 = "1" ""
Weapon_2 = "2" ""
Weapon_3 = "3" ""
Weapon_4 = "4" ""
Weapon_5 = "5" ""
Weapon_6 = "6" ""
Weapon_7 = "7" ""
Weapon_8 = "8" ""
Weapon_9 = "9" ""
Weapon_10 = "0" ""
Inventory = "Enter" "KpdEnt"
Inventory_Left = "[" ""
Inventory_Right = "]" ""
Holo_Duke = "H" ""
Jetpack = "J" ""
NightVision = "N" ""
MedKit = "M" ""
TurnAround = "BakSpc" ""
SendMessage = "T" ""
Map = "Tab" ""
Shrink_Screen = "-" "Kpad-"
Enlarge_Screen = "=" "Kpad+"
Center_View = "KPad5" ""
Holster_Weapon = "ScrLck" ""
Show_Opponents_Weapon = "W" ""
Map_Follow_Mode = "F" ""
See_Coop_View = "K" ""
Mouse_Aiming = "U" ""
Toggle_Crosshair = "I" ""
Steroids = "R" ""
Quick_Kick = "`" ""
Next_Weapon = "'" ""
Previous_Weapon = ";" ""

[Controls]
ControllerType = 1
JoystickPort = 0
MouseSensitivity = 32768
ExternalFilename = "EXTERNAL.EXE"
EnableRudder = 0
MouseAiming = 0
MouseAimingFlipped = 1
MouseButton0 = "Fire"
MouseButtonClicked0 = ""
MouseButton1 = "Strafe"
MouseButtonClicked1 = "Open"
MouseButton2 = "Move_Forward"
MouseButtonClicked2 = ""
JoystickButton0 = "Fire"
JoystickButtonClicked0 = ""
JoystickButton1 = "Strafe"
JoystickButtonClicked1 = "Inventory"
JoystickButton2 = "Run"
JoystickButtonClicked2 = "Jump"
JoystickButton3 = "Open"
JoystickButtonClicked3 = "Crouch"
JoystickButton4 = "Aim_Down"
JoystickButtonClicked4 = ""
JoystickButton5 = "Look_Right"
JoystickButtonClicked5 = ""
JoystickButton6 = "Aim_Up"
JoystickButtonClicked6 = ""
JoystickButton7 = "Look_Left"
JoystickButtonClicked7 = ""
MouseAnalogAxes0 = "analog_turning"
MouseDigitalAxes0_0 = ""
MouseDigitalAxes0_1 = ""
MouseAnalogScale0 = 0
MouseAnalogAxes1 = "analog_moving"
MouseDigitalAxes1_0 = ""
MouseDigitalAxes1_1 = ""
MouseAnalogScale1 = 0
JoystickAnalogAxes0 = "analog_turning"
JoystickDigitalAxes0_0 = ""
JoystickDigitalAxes0_1 = ""
JoystickAnalogScale0 = 0
JoystickAnalogAxes1 = "analog_moving"
JoystickDigitalAxes1_0 = ""
JoystickDigitalAxes1_1 = ""
JoystickAnalogScale1 = 0
JoystickAnalogAxes2 = "analog_strafing"
JoystickDigitalAxes2_0 = ""
JoystickDigitalAxes2_1 = ""
JoystickAnalogScale2 = 0
JoystickAnalogAxes3 = ""
JoystickDigitalAxes3_0 = "Run"
JoystickDigitalAxes3_1 = ""
JoystickAnalogScale3 = 0
GamePadDigitalAxes0_0 = "Turn_Left"
GamePadDigitalAxes0_1 = "Turn_Right"
GamePadDigitalAxes1_0 = "Move_Forward"
GamePadDigitalAxes1_1 = "Move_Backward"
GameMouseAiming = 0
AimingFlag = 0

[Comm Setup]
ComPort = 2
IrqNumber = 65535
UartAddress = 0xFFFF
PortSpeed = 9600
ToneDial = 1
SocketNumber = 0xFFFF
NumberPlayers = 2
ModemName = ""
InitString = "ATZ"
HangupString = "ATH0=0"
DialoutString = ""
PlayerName = "DUKE"
RTSName = "DUKE.RTS"
RTSPath = ".\"
UserPath = ".\"
PhoneNumber = ""
ConnectType = 2
CommbatMacro#0 = "An inspiration for birth control."
CommbatMacro#1 = "You're gonna die for that!"
CommbatMacro#2 = "It hurts to be you."
CommbatMacro#3 = "Lucky Son of a Bitch."
CommbatMacro#4 = "Hmmm....Payback time."
CommbatMacro#5 = "You bottom dwelling scum sucker."
CommbatMacro#6 = "Damn, you're ugly."
CommbatMacro#7 = "Ha ha ha...Wasted!"
CommbatMacro#8 = "You suck!"
CommbatMacro#9 = "AARRRGHHHHH!!!"
PhoneName#0 = ""
PhoneNumber#0 = ""
PhoneName#1 = ""
PhoneNumber#1 = ""
PhoneName#2 = ""
PhoneNumber#2 = ""
PhoneName#3 = ""
PhoneNumber#3 = ""
PhoneName#4 = ""
PhoneNumber#4 = ""
PhoneName#5 = ""
PhoneNumber#5 = ""
PhoneName#6 = ""
PhoneNumber#6 = ""
PhoneName#7 = ""
PhoneNumber#7 = ""
PhoneName#8 = ""
PhoneNumber#8 = ""
PhoneName#9 = ""
PhoneNumber#9 = ""
PhoneName#10 = ""
PhoneNumber#10 = ""
PhoneName#11 = ""
PhoneNumber#11 = ""
PhoneName#12 = ""
PhoneNumber#12 = ""
PhoneName#13 = ""
PhoneNumber#13 = ""
PhoneName#14 = ""
PhoneNumber#14 = ""
PhoneName#15 = ""
PhoneNumber#15 = ""

[Misc]
Executions = 73
RunMode = 1
Crosshairs = 1
WeaponChoice0 = 3
WeaponChoice1 = 4
WeaponChoice2 = 5
WeaponChoice3 = 7
WeaponChoice4 = 8
WeaponChoice5 = 6
WeaponChoice6 = 0
WeaponChoice7 = 2
WeaponChoice8 = 9
WeaponChoice9 = 1

No hay comentarios: