Linux Betas

  • 59 Replies
  • 22418 Views
*

Offline Miss Paula

  • 953
  • 30
  • I demand more of these.
    • View Profile
Re: Linux Betas
« Reply #30 on: January 06, 2013, 03:30:24 »
that issue should be solved now.
back to linux beta issues! \o/
Spoiler: (click to show/hide)
:hs::hs::hs::hs::fish::hs::hs::hs::hs:
:hs:

Re: Linux Betas
« Reply #31 on: January 08, 2013, 06:23:54 »
I tried the linux 64 demo Beta 1.
os: debian wheezy
libc: eglibc 2.13

It complains about needing glibc 2.14 and 2.15.  A more detailed dump from ldd fallows.

Code: [Select]
$ ldd --data-relocs --function-relocs bin/Knytt\ Underground
bin/Knytt Underground: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by bin/Knytt Underground)
bin/Knytt Underground: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /home/eric/mess/Knytt Underground/bin/../lib/libopenal.so.1)
bin/Knytt Underground: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /home/eric/mess/Knytt Underground/bin/../lib/libpython2.7.so.1.0)
bin/Knytt Underground: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.15' not found (required by /home/eric/mess/Knytt Underground/bin/../lib/libpython2.7.so.1.0)
bin/Knytt Underground: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /home/eric/mess/Knytt Underground/bin/../lib/libvorbisfile.so.3)
bin/Knytt Underground: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /home/eric/mess/Knytt Underground/bin/../lib/libpng12.so.0)
bin/Knytt Underground: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.15' not found (required by /home/eric/mess/Knytt Underground/bin/../lib/libvorbis.so.0)
bin/Knytt Underground: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /home/eric/mess/Knytt Underground/bin/../lib/libvorbis.so.0)
bin/Knytt Underground: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /home/eric/mess/Knytt Underground/bin/../lib/libogg.so.0)
        linux-vdso.so.1 =>  (0x00007fff69f5d000)
        libglfw.so.2 => /home/eric/mess/Knytt Underground/bin/../lib/libglfw.so.2 (0x00007fa303945000)
        libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007fa3036c9000)
        libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007fa303429000)
        libopenal.so.1 => /home/eric/mess/Knytt Underground/bin/../lib/libopenal.so.1 (0x00007fa3031d6000)
        libpython2.7.so.1.0 => /home/eric/mess/Knytt Underground/bin/../lib/libpython2.7.so.1.0 (0x00007fa302cd8000)
        libvorbisfile.so.3 => /home/eric/mess/Knytt Underground/bin/../lib/libvorbisfile.so.3 (0x00007fa302acf000)
        libpng12.so.0 => /home/eric/mess/Knytt Underground/bin/../lib/libpng12.so.0 (0x00007fa3028a9000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fa3025a2000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa30231f000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa302109000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa301d7f000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa301b62000)
        libXrandr.so.2 => /usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007fa30195a000)
        libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fa30161e000)
        libglapi.so.0 => /usr/lib/x86_64-linux-gnu/libglapi.so.0 (0x00007fa3013f8000)
        libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007fa3011e5000)
        libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007fa300fe3000)
        libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007fa300ddc000)
        libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007fa300bdb000)
        libxcb-glx.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0 (0x00007fa3009c3000)
        libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fa3007a2000)
        libXxf86vm.so.1 => /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 (0x00007fa30059c000)
        libdrm.so.2 => /usr/lib/x86_64-linux-gnu/libdrm.so.2 (0x00007fa300390000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa30018b000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fa2fff74000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fa2ffd6c000)
        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fa2ffb68000)
        libvorbis.so.0 => /home/eric/mess/Knytt Underground/bin/../lib/libvorbis.so.0 (0x00007fa2ff93b000)
        libogg.so.0 => /home/eric/mess/Knytt Underground/bin/../lib/libogg.so.0 (0x00007fa2ff733000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fa303b58000)
        libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007fa2ff52a000)
        libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fa2ff327000)
        libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fa2ff121000)
symbol memcpy, version GLIBC_2.14 not defined in file libc.so.6 with link time reference        (/home/eric/mess/Knytt Underground/bin/../lib/libogg.so.0)
symbol memcpy, version GLIBC_2.14 not defined in file libc.so.6 with link time reference        (/home/eric/mess/Knytt Underground/bin/../lib/libvorbis.so.0)
symbol __acosf_finite, version GLIBC_2.15 not defined in file libm.so.6 with link time reference        (/home/eric/mess/Knytt Underground/bin/../lib/libvorbis.so.0)
symbol __exp_finite, version GLIBC_2.15 not defined in file libm.so.6 with link time reference  (/home/eric/mess/Knytt Underground/bin/../lib/libvorbis.so.0)
symbol __pow_finite, version GLIBC_2.15 not defined in file libm.so.6 with link time reference  (/home/eric/mess/Knytt Underground/bin/../lib/libvorbis.so.0)
symbol __log_finite, version GLIBC_2.15 not defined in file libm.so.6 with link time reference  (/home/eric/mess/Knytt Underground/bin/../lib/libvorbis.so.0)
symbol memcpy, version GLIBC_2.14 not defined in file libc.so.6 with link time reference        (/home/eric/mess/Knytt Underground/bin/../lib/libpng12.so.0)
symbol memcpy, version GLIBC_2.14 not defined in file libc.so.6 with link time reference        (/home/eric/mess/Knytt Underground/bin/../lib/libvorbisfile.so.3)
symbol memcpy, version GLIBC_2.14 not defined in file libc.so.6 with link time reference        (/home/eric/mess/Knytt Underground/bin/../lib/libpython2.7.so.1.0)
symbol __fdelt_chk, version GLIBC_2.15 not defined in file libc.so.6 with link time reference   (/home/eric/mess/Knytt Underground/bin/../lib/libpython2.7.so.1.0)
symbol memcpy, version GLIBC_2.14 not defined in file libc.so.6 with link time reference        (/home/eric/mess/Knytt Underground/bin/../lib/libopenal.so.1)
symbol memcpy, version GLIBC_2.14 not defined in file libc.so.6 with link time reference        (bin/Knytt Underground)


This problem is discussed at http://stackoverflow.com/questions/8823267/linking-against-older-symbol-version-in-a-so-file

*

Offline Cale

  • 12
  • 0
    • View Profile
Re: Linux Betas
« Reply #32 on: February 05, 2013, 11:22:07 »
At first when I tried to run the game, I got:

cale@ender:~/Downloads/Knytt Underground$ ./run.sh
./bin/Knytt Underground: /lib/i386-linux-gnu/libc.so.6: version `GLIBC_2.15' not found (required by /home/cale/Downloads/Knytt Underground/bin/../lib/libpython2.7.so.1.0)
./bin/Knytt Underground: /lib/i386-linux-gnu/libm.so.6: version `GLIBC_2.15' not found (required by /home/cale/Downloads/Knytt Underground/bin/../lib/libvorbis.so.0)

In an attempt to fix this, I replaced the libraries in ./lib with symlinks to the versions installed on my system:

cale@ender:~/Downloads/Knytt Underground$ cd lib/
cale@ender:~/Downloads/Knytt Underground/lib$ ln -sf /usr/lib/libpython2.7.so.1.0 .
cale@ender:~/Downloads/Knytt Underground/lib$ ln -sf /usr/lib/libvorbis.so.0 .

Running the game again, things seemed to actually run, but I noticed that there was no sound and saw lots of errors of the form:

An internal OpenAL call failed in audio.h (296) : AL_INVALID_OPERATION, the specified operation is not allowed in the current state

and reading up in the log, the first thing the game printed was:

AL lib: (EE) oss_open_playback: Could not open /dev/dsp: No such file or directory
Device open failed

So, if the trick worked once, I decided to try it again:

cale@ender:~/Downloads/Knytt Underground$ cd lib/
cale@ender:~/Downloads/Knytt Underground/lib$ ln -sf /usr/lib/libopenal.so.1 .

and then everything worked.

I do occasionally see some messages about missing files in the terminal though, in particular:

Could not load ./World/Masks/Rocky 1.png
...
Could not load ./World/Tilesets/Null Tileset.png
Could not load ./World/Masks/Null Tileset.png

(and there may be others)

Could some of the art resources be missing from the package, or is this completely harmless? I haven't noticed anything too strange in the game.

*

Offline Cale

  • 12
  • 0
    • View Profile
Re: Linux Betas
« Reply #33 on: February 05, 2013, 11:31:43 »
Okay, I noticed some odd behaviour.

The human artifact in chapter 1 which you reach by travelling to the right a few screens using the blue light is invisible for me. I can collect it from that place multiple times though, so I now have 9 of them in my inventory, just by walking back and forth a tiny bit on that platform. I'm pretty sure it's not supposed to work like that.

The foam shooter is similar in that regard.

*

Offline Cale

  • 12
  • 0
    • View Profile
Re: Linux Betas
« Reply #34 on: February 05, 2013, 11:39:00 »
Now when I return to the person who was going to trade me artifacts for the stone to access the fairies, I get this blank speech bubble:

http://i.imgur.com/hSxDtoD.png

I'm not completely sure what to do from here.

Perhaps I'll try replacing the libraries with more links to my system's versions, or perhaps a problem is being introduced by version incompatibilities in the installed libraries on my system.

*

Offline Nifflas

  • 1532
  • 61
    • View Profile
Re: Linux Betas
« Reply #35 on: February 05, 2013, 15:37:31 »
Quote
Could some of the art resources be missing from the package, or is this completely harmless? I haven't noticed anything too strange in the game.
There's a strange Multimedia Fusion 2 reason for this behavior, but it's harmless.

The missing dialog must be because you carry more artifacts than you should be able to have at that point. I have no idea why that problem happens though, it's very odd. Maybe something Python related (which controls e.g. item collecting) doesn't behave correctly.

I wonder if this happens to more Linux users.
« Last Edit: February 05, 2013, 15:49:29 by Nifflas »

*

Offline Cale

  • 12
  • 0
    • View Profile
Re: Linux Betas
« Reply #36 on: February 06, 2013, 00:09:45 »
Okay, I found out something about the invisible items which can be collected repeatedly. When I started a new saved game for Chapter 1, I noticed that the candlesticks had become invisible and could be collected multiple times, when previously they hadn't been. I realised I had neglected to mention that I had actually substituted libpng for my system's version as well at some point along the way, and returning to using the version which came with the game made the candlesticks and the artifact behave properly. However, for some odd reason, the foam shooter is still invisible and can be collected multiple times.

I noticed that it appeared fine in the inventory though. Copying World/Items/Items In Inventory/Foam Shooter (Artifact).png to World/Items/Items In Level/Foam Shooter (Artifact).png makes the item appear in the game and function correctly! So this behaviour has something to do with certain png files that libpng apparently doesn't like and how the game handles some kind of failure to load the image. I don't see any message in the terminal about this image, and everything else on my system is perfectly okay with both versions of the image. Using the pnginfo and pngchunks tools on both versions shows almost no difference in their structure (of course, they're slightly different images, but the format is practically identical). So why the game is happy with one and not the other is confusing.

I'll keep looking into it a bit. Perhaps strace will be able to reveal something about what is happening.

*

Offline Cale

  • 12
  • 0
    • View Profile
Re: Linux Betas
« Reply #37 on: February 06, 2013, 00:50:00 »
Curious. It seems to have something to do with the state of my saved game. Shortly after I wrote my last message, I reloaded the game running under strace to see if there was anything that went noticeably wrong with loading the image files (after having unpacked the game files again to be sure everything was default, and reapplying my fix for libpython, libvorbis and libopenal) I ran back to the room with the foam shooter, and it was there!

I then restarted the game without strace, created a new saved game, played through. Noticed that the second gemstone (the one after the earthquake opens up the hole) was invisible too. I think I'd had that happen on my first playthrough, but wasn't as aware of this issue then. Made my way back to the foam shooter, and it was invisible again. I quit the game at that point, and just reopened it and reloaded the save that I'd made shortly before the earthquake and getting the second gemstone. The gem was visible again. I ran to the foam shooter. Visible too!

At this point, I'm thoroughly confused. :)

This calls into question my earlier testing of copying the inventory png over the level one being any kind of solution to the issue (which is a good thing, since apart from the actual colours of the pixels, the structure of those two files is identical).
« Last Edit: February 06, 2013, 00:53:44 by Cale »

*

Offline Mathias

  • 32
  • 5
    • View Profile
Re: Linux Betas
« Reply #38 on: February 06, 2013, 02:14:10 »
Hi Cale

Under what distro/arch are you running? Would it be possible to send me the savegame, and if possible, some instructions on how to reproduce the issue?

Thanks!

*

Offline Cale

  • 12
  • 0
    • View Profile
Re: Linux Betas
« Reply #39 on: February 06, 2013, 04:49:28 »
Sure, I'm on Ubuntu natty (11.04), 32 bit, and running the 32 bit version of the game of course.

I can certainly send you a copy of the saved game, though on some continued testing, I think I can cause the issue to occur somewhat randomly just by entering and leaving the room in which the Foam Shooter is, at the bottom of the well. If I climb up and down, entering and leaving that room repeatedly, the Foam Shooter appears correctly maybe about 25% of the time, and is invisible the other times (but can be collected infinitely many times when in that state).

If it is random every time I enter the room, it makes some sense why everything was behaving so mysteriously before.

I just tried moving my .Nifflas/Knytt Underground directory out of the way to start fresh, and I can make this happen with the candleholders too. Just entering and leaving the room will often be enough to make the issue occur for me, usually on the very first try. I would estimate that the top candleholder appears about 10% of the times that I reenter the room. I have seen it appear twice in a row, but it's somewhat rare that it appears at all on repeated attempts. The very first time I entered the rooms, the top candleholder was invisible, and the bottom one was visible. I don't think that means anything now though (apart from the fact that it's inconsistent).

*

Offline Cale

  • 12
  • 0
    • View Profile
Re: Linux Betas
« Reply #40 on: February 06, 2013, 04:54:49 »
One interesting case to note is that if I collect the item while it's invisible, leave the room, and then return, I can still collect it again.

*

Offline Cale

  • 12
  • 0
    • View Profile
Re: Linux Betas
« Reply #41 on: February 07, 2013, 08:18:29 »
Let me know if there's anything I can do to get you guys more information about what is happening. I'm pretty convinced by now that this occurs with at least all the collectible items in the game that I've seen (including the ones I've found in Chapter 3), and it's fairly random behaviour, each time the room is entered. Sometimes it seems hard to get an item to appear, sometimes it's harder to get it to disappear. Perhaps a race condition? I tried rebuilding libpython from the 2.7.3 source distribution, and that doesn't seem to have affected anything.

*

Offline Cale

  • 12
  • 0
    • View Profile
Re: Linux Betas
« Reply #42 on: February 09, 2013, 20:36:44 »
Okay, I have some mild progress on this issue.

I discovered Global Script.py and read it, noticing right off the bat the room_loaded procedure which loads the sprites for the objects.

I added some more printing to this and discovered that when the objects were invisible, sprite_item_load_image(identifier) was returning False. I apparently don't have the source code for this procedure, so I can't dig into why it would return False, but I did try making it hammer until the loading was successful like this:

    # Iterate through items and removed ones picked up, and load their images and ones not picked.
    item_list = sprite_list_identifiers('Item',True)
    for identifier in item_list:
        print ("Handling item: " + identifier)
        if savegame_string('Collected Items',str(room_x())+','+str(room_y())+' '+identifier) is not False:
            print (identifier + " already collected, deleting.")
            sprite_delete('Item',identifier)
        else:
            print (identifier + " not already collected, loading image.")
            loaded = False
            while not loaded:
              print "Attempting to load"
              loaded = sprite_item_load_image(identifier)

but that unfortunately resulted in an infinite loop the first time I ran into a case where it failed to load on the first try, so the behaviour at least seems deterministic inside of this scope.

*

Offline Nifflas

  • 1532
  • 61
    • View Profile
Re: Linux Betas
« Reply #43 on: February 09, 2013, 20:47:08 »
Yeah, it should never be False unless the image is missing. The reason it happens is not the MMF2 code either (because it works consistently in Windows and Mac OS). Must be something very specifically related to Chowdren and Linux, and it's probably related to something that can be different on different systems (otherwise I'd expect to have heard about this from many more Linux users).

Thanks for looking into all this. Maybe Mathias can fix it.

*

Offline Cale

  • 12
  • 0
    • View Profile
Re: Linux Betas
« Reply #44 on: February 09, 2013, 21:50:50 »
I also just tried this:

def sprite_item_touched(identifier):
    loaded = sprite_item_load_image(identifier)
    print "sprite_item_load_image(\"" + identifier + "\") -> " + str(loaded)
    if loaded:
      # Pick up the item
      sprite_item_pickup(identifier)
 
      # Delete the room type
      map_roomtype_delete(room_x(),room_y())
 
      # Store that this item was picked up, and refresh inventory
      savegame_set_key('Collected Items',str(room_x())+','+str(room_y())+' '+identifier,"Collected")
      savegame_set_key('Inventory',identifier,savegame_value('Inventory',identifier)+1)
      inventory_refresh(True)
 
      # Store the player position so the player will start from here after death
      savegame_set_key('General','X Room',room_x())
      savegame_set_key('General','Y Room',room_y())
      savegame_set_key('General','X Position',player_x_tile())
      savegame_set_key('General','Y Position',player_y_tile())
      savegame_set_key('General','Direction',player_direction())

This at least prevents me from screwing up my saved game when I touch an invisible item.

One thing I've noticed is that if the sprite didn't load when I entered the room, this never seems to succeed in loading it, which is consistent with the infinite loop I had earlier.