Linux issues with Robot Underground
We've had some reports of errors that look like this:
pyglet.image.codecs.ImageDecodeException: Unable to load: maps/controlroom.bmp
This is a problem with pyglet image loading on Linux (I knew we should have tested on Linux). If you want to give us a DNW, that's fine, but if you'd still like to play the game, you can download a set of replacement map files here. Just extract them to the data/maps directory, overwriting the files which are already there. You'll also need to add the following line between lines 20 and 21 of lib/worldgen.py:
if pitch > 0: offs -= pitch
(log in to comment)
Comments
I'm getting this immediately as the main menu loads:
Traceback (most recent call last):
File "run_game.py", line 20, in
main.main()
File "lib\main.py", line 240, in main
run()
File "lib\main.py", line 247, in run
control.run()
File "lib\main.py", line 223, in run
app.run()
File "C:\devel\pyweek6-judging\robot-underground-1.0.1\pyglet\app\__init__.py"
, line 263, in run
EventLoop().run()
File "C:\devel\pyweek6-judging\robot-underground-1.0.1\pyglet\app\win32.py", l
ine 73, in run
self._timer_func(0, 0, timer, 0)
File "C:\devel\pyweek6-judging\robot-underground-1.0.1\pyglet\app\win32.py", l
ine 83, in _timer_func
sleep_time = self.idle()
File "C:\devel\pyweek6-judging\robot-underground-1.0.1\pyglet\app\__init__.py"
, line 187, in idle
dt = clock.tick(True)
File "C:\devel\pyweek6-judging\robot-underground-1.0.1\pyglet\clock.py", line
675, in tick
return _default.tick(poll)
File "C:\devel\pyweek6-judging\robot-underground-1.0.1\pyglet\clock.py", line
290, in tick
item.func(ts - item.last_ts, *item.args, **item.kwargs)
File "lib\main.py", line 189, in update
music.update(dt)
File "lib\music.py", line 141, in update
self.player.queue(data.load_song(self.queued))
File "lib\data.py", line 25, in load_song
return media.load(song_path)
File "C:\devel\pyweek6-judging\robot-underground-1.0.1\pyglet\media\__init__.p
y", line 1366, in load
source = _source_class(filename, file)
File "C:\devel\pyweek6-judging\robot-underground-1.0.1\pyglet\media\riff.py",
line 198, in __init__
raise WAVEFormatException('Not a WAVE file')
pyglet.media.riff.WAVEFormatException: Not a WAVE file
Disabling the music seems to fix it (as you might suspect).
I did take a look at the music, though. It's really quite good! "Electro Sketch" is my favorite track... I'm curious what program(s) you used to make it.
That looks like you haven't installed AVBin.
The music isn't original, it was written by a guy called Ken McLeod, who has a website full of Creative Commons music. We used some of his stuff last time around as well.
Oh, and I also got this:
Traceback (most recent call last):
File "run_game.py", line 20, in
main.main()
File "lib\main.py", line 240, in main
run()
File "lib\main.py", line 247, in run
control.run()
File "lib\main.py", line 223, in run
app.run()
File "C:\devel\pyweek6-judging\robot-underground-1.0.1\pyglet\app\__init__.py"
, line 263, in run
EventLoop().run()
File "C:\devel\pyweek6-judging\robot-underground-1.0.1\pyglet\app\win32.py", l
ine 62, in run
self._timer_func(0, 0, timer, 0)
File "C:\devel\pyweek6-judging\robot-underground-1.0.1\pyglet\app\win32.py", l
ine 83, in _timer_func
sleep_time = self.idle()
File "C:\devel\pyweek6-judging\robot-underground-1.0.1\pyglet\app\__init__.py"
, line 187, in idle
dt = clock.tick(True)
File "C:\devel\pyweek6-judging\robot-underground-1.0.1\pyglet\clock.py", line
675, in tick
return _default.tick(poll)
File "C:\devel\pyweek6-judging\robot-underground-1.0.1\pyglet\clock.py", line
290, in tick
item.func(ts - item.last_ts, *item.args, **item.kwargs)
File "lib\main.py", line 187, in update
self.handler.update(dt)
File "lib\missionmode.py", line 819, in update
self.mission.tick()
File "lib\mission.py", line 126, in tick
self.advanceScript()
File "lib\mission.py", line 108, in advanceScript
self.currentScript.advance()
File "lib\script.py", line 258, in advance
state = self.generator.send(self.last_choice)
File "lib\content\act1.py", line 523, in startScript
sound.radio()
File "lib\sound.py", line 17, in __call__
data.load_sound(filename).play()
File "lib\data.py", line 31, in load_sound
return media.load(sound_path)
File "C:\devel\pyweek6-judging\robot-underground-1.0.1\pyglet\media\__init__.p
y", line 1366, in load
source = _source_class(filename, file)
File "C:\devel\pyweek6-judging\robot-underground-1.0.1\pyglet\media\riff.py",
line 194, in __init__
format = wave_form.get_format_chunk()
File "C:\devel\pyweek6-judging\robot-underground-1.0.1\pyglet\media\riff.py",
line 174, in get_format_chunk
for chunk in self.get_chunks():
File "C:\devel\pyweek6-judging\robot-underground-1.0.1\pyglet\media\riff.py",
line 110, in get_chunks
chunk = cls(self.file, name, length, offset)
File "C:\devel\pyweek6-judging\robot-underground-1.0.1\pyglet\media\riff.py",
line 155, in __init__
raise RIFFFormatException('Size of format chunk is incorrect.')
pyglet.media.riff.RIFFFormatException: Size of format chunk is incorrect.
Turning off sound 'fixed' it. These both occurred in Windows with Python 2.5. It looks like you packed pyglet with the game so I didn't bother installing it.
Sorry, pyglet is indeed packaged with the game, but AVBin isn't, as it requires a platform-specific binary. We forgot to mention this in the README.
Sorry if I'm dumb, but where do I put the (in Windows' case) DLL file? I tried the python/DLLs and python/lib/site-packages directories but it didn't work.
C:\Windows\System32 should work, although I don't have a Windows machine handy to check.
AVBin isn't Python-specific. I believe it's intended to go in Windows\System32, which definitely works. If you're wary of adding DLLs to your whole system there may be another solution but I don't know of it.
Yep, works perfect, thanks for the help!
Traceback (most recent call last):
File "run_game.py", line 20, in
main.main()
File "lib/main.py", line 240, in main
run()
File "lib/main.py", line 247, in run
control.run()
File "lib/main.py", line 223, in run
app.run()
File "/home/lucio/Desktop/pyweek/robot-underground-1.0.1/pyglet/app/__init__.py", line 263, in run
EventLoop().run()
File "/home/lucio/Desktop/pyweek/robot-underground-1.0.1/pyglet/app/xlib.py", line 91, in run
sleep_time = self.idle()
File "/home/lucio/Desktop/pyweek/robot-underground-1.0.1/pyglet/app/__init__.py", line 187, in idle
dt = clock.tick(True)
File "/home/lucio/Desktop/pyweek/robot-underground-1.0.1/pyglet/clock.py", line 675, in tick
return _default.tick(poll)
File "/home/lucio/Desktop/pyweek/robot-underground-1.0.1/pyglet/clock.py", line 290, in tick
item.func(ts - item.last_ts, *item.args, **item.kwargs)
File "lib/main.py", line 187, in update
self.handler.update(dt)
File "lib/missionmode.py", line 819, in update
self.mission.tick()
File "lib/mission.py", line 129, in tick
e.tick()
File "lib/actor.py", line 195, in tick
self.attack()
File "lib/actor.py", line 221, in attack
w.fire(self, temptarg)
File "lib/weapon.py", line 57, in fire
target.takeDamage(self.getDamage() * owner.getAttack(), self.damagetype)
File "lib/actor.py", line 58, in takeDamage
self.mission.runScript(self.deathScript)
File "lib/mission.py", line 99, in runScript
self.advanceScript()
File "lib/mission.py", line 108, in advanceScript
self.currentScript.advance()
File "lib/script.py", line 265, in advance
getattr(self, action[0])(*(action[1:]))
File "lib/script.py", line 219, in die
self.actor.die()
File "lib/actor.py", line 297, in die
self.mission.protag.addXp(self.xpvalue)
File "lib/actor.py", line 249, in addXp
self.mission.dispatch_event("on_level_up")
File "/home/lucio/Desktop/pyweek/robot-underground-1.0.1/pyglet/event.py", line 340, in dispatch_event
if handler(*args):
File "lib/missionmode.py", line 702, in on_level_up
sound.level_up()
File "lib/sound.py", line 17, in __call__
data.load_sound(filename).play()
File "lib/data.py", line 31, in load_sound
return media.load(sound_path)
File "/home/lucio/Desktop/pyweek/robot-underground-1.0.1/pyglet/media/__init__.py", line 1366, in load
source = _source_class(filename, file)
File "/home/lucio/Desktop/pyweek/robot-underground-1.0.1/pyglet/media/avbin.py", line 209, in __init__
raise AVbinException('Could not open "%s"' % filename)
pyglet.media.avbin.AVbinException: Could not open "data/sfx/fanfare.wav"
while running on ubuntu. latest avbin. with new patches. (i had sound until then)
With new patches for what?
The one-line patch you posted above plus the new files.
oops, my bad. corrupted zip file.
So all working fine now?
You can also include avBin.dll along with the .exe (in the same directory)
Sorry, that was just for windows.
Am I the only one who doesn't want a White Dress?
Am I the only one who doesn't want a White Dress?
richard on
2008/04/07 12:35:
Yay, that fixed it!