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

Yay, that fixed it!
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?