Sunday, August 8, 2010

Playing Doom Legacy on Ubuntu Lucid

ID Software's Doomsday Engine was released for most computer platforms. You can use it to play a number of legacy games in Ubuntu like Doom, Heretic and Hexen,  all kickass games whose commercial sell-by-date was probably around the turn of the century. Nevertheless some relatively free fun is still to be had, especially with Russian hacks and customisations which arose in the cold vacuum of cyberspace and in an age when RAM and graphics cards were relatively scarce. Believe it or not, people still hand over cash to play Doom on high-end iPhones and it amazes me that proprietary behaviour is relegating the platform to a quaint oddity. Let's free the iWad then?

This tutorial, based upon this one, is still a work in progress. Using it, I managed to get a game of Ultimate Doom going, minus sound.

1. First install deng

Add the closest or most recent deng repo for your distribution, in my case luckily, karmic. Check here for repo updates and campaign for more releases.
deb http://debian.keesmeijs.nl/ karmic-kees main
deb-src http://debian.keesmeijs.nl/ karmic-kees main

sudo apt-get update &&  install deng

2. Install the Snowberry launcher

Dependencies

First make sure you have snowberry's dependencies: python and a recent wxpython (available here at wxpython.org)

To get the latest wxpython add this key

curl http://apt.wxwidgets.org/key.asc | sudo apt-key add -


Add the following to your sources list

deb http://apt.wxwidgets.org/ [distro]-wx main
deb-src http://apt.wxwidgets.org/ [distro]-wx main

Where [distro] is your distro i.e lucid-wx main


Update then install python-wxgtk2.8

sudo apt-get update && install python-wxgtk2.8


Check out snowberry via subversion

(if you don't have subversion installed, now is a good time to install it)

svn co https://deng.svn.sourceforge.net/svnroot/deng/trunk/snowberry snowberry


You will have to edit some files.

Open and edit "snowberry.py"

gksudo gedit /hom/[user]/snowberry/snowberry.py


Add "#!/usr/bin/python" without quotation marks as the first line in the script, and make it executable.

Now run snowberry.py from the terminal. If it doesn't run see Troubleshooting section below.

cd /home/[user]/snowberry/
python snowberry.py


Doomsday Engine Frontend should launch and start a setup wizard, tell it where the wads for doom, doom 2, hexen etc. are (I suggest a folder in your home folder called doomsday) and setup addons/display/sound settings to suite yourself.

Create a launcher for the client, to do this  create a simple script in my home folder by opening a empty file (lets call it "snowberry launcher") and pasting in the following (replacing your name with mine) and Make the script executable.

#!/bin/bash
cd /home/afrodeity/snowberry/
python snowberry.py
exit


Then you can just create a launcher on your desktop/ applications menu by pointing it at this script.

Troubleshooting.

If you get some junk output in the terminal like this:

File "snowberry.py", line 26, in <module>
import language, ui, plugins, sb.profdb
File "/home/afrodeity/SVN/snowberry/ui.py", line 698, in <module>
app = SnowberryApp()
File "/home/afrodeity/SVN/snowberry/ui.py", line 536, in __init__
wx.App.__init__(self, 0)
File "/usr/lib/python2.6/dist-packages/wx-2.6-gtk2-unicode/wx/_core.py", line 7700, in __init__
self._BootstrapApp()
File "/usr/lib/python2.6/dist-packages/wx-2.6-gtk2-unicode/wx/_core.py", line 7352, in _BootstrapApp
return _core_.PyApp__BootstrapApp(*args, **kwargs)
File "/home/afrodeity/SVN/snowberry/ui.py", line 540, in OnInit
self.mainFrame = MainFrame('Snowberry')
File "/home/afrodeity/SVN/snowberry/ui.py", line 290, in __init__
self.mainPanel = MainPanel(self.profSplitter)
File "/home/afrodeity/SVN/snowberry/ui.py", line 166, in __init__
area.addSpacer()
File "/home/afrodeity/SVN/snowberry/sb/widget/area.py", line 197, in addSpacer
self.containerSizer.AddStretchSpacer(self.weight)
AttributeError: 'BoxSizer' object has no attribute 'AddStretchSpacer'


Here is a solution:

This link suggested commenting out lines 196 197 198 & 201 in /snowberry/sb/widget/area.py

gedit /snowberry/sb/widget/area.py

196#     if self.expanding:
197#     self.containerSizer.AddStretchSpacer(self.weight)
198#     else:
199.      self.containerSizer.Add((0, 0), self.weight, self._getLayoutFlags(),
200.     self.border)
201#    pass


If you need you can take a look at my file:

Getting hold of Doom wads.

From http://dengine.net/doom

No comments:

Post a Comment