Active player (254)
Joined: 4/10/2022
Posts: 15
Hello, for the past 8 months I have been TASing Pizza Tower using libTAS with a custom Linux port of the game, however one problem I have always had is that the game does not run with any audio, now that the end of the any% TAS is getting closer, I want this to get fixed so it can be submitted to TASVideos and potentially even GDQ. I've been trying to fix it in lots of different ways but I'm completely out of ideas and I just don't possess the required coding knowledge to pull something like this off. If you know anyone who would maybe be able to take a look at this, please consider asking them as well as it increases the chances of this getting fixed. The way the game is ported goes as follows:
  • Copy all of the game files to a new location (the game is DRM free, so it can run independently from Steam with no issues)
  • Rename the "data.win" file to "game.unx" and put it inside of a new folder called "assets" next to the game executable.
  • Place the "lang" folder inside of the "assets" folder you just created
  • Replace the "PizzaTower.exe" file with a Linux runner file, which you can download here: https://drive.google.com/file/d/1gzMQf3T4RnW822l3911Vq_Jz_203GPq7/view
  • That's all!
After this, the game should run perfectly inside of Ubuntu 22.04, with 1 problem. There is no audio. The problem comes from the fact that this game uses a custom DLL file for its audio, the "gamemaker-fmod.dll" file. The developers of Pizza Tower have stated that they do not want to release the source code to this file so it is up to us to figure out how it works. I don't know much about how this works, so if anyone has a better description of what this file is and what it does, please feel free to tell me and I'll update this post. I would be willing to do something in return if you manage to fix this issue, as long as it's not too demanding or time-consuming of course.
Dimon12321
He/Him
Editor, Reviewer, Experienced player (597)
Joined: 4/5/2014
Posts: 1227
Location: Romania
Vexxter wrote:
Hello, for the past 8 months I have been TASing Pizza Tower using libTAS with a custom Linux port of the game, however one problem I have always had is that the game does not run with any audio, now that the end of the any% TAS is getting closer
Now it's the "right" time to ask for help =-| To begin with, I'm not familiar with the game at all. Have you done enough research on this topic? 1. If you launch the game without libTAS, does it have the audio? If it does, then you can create in issue in libTAS repository and keylie may figure out what's the problem on libTAS' side. 2. I found in this Steam discussion that the game audio is stored in files with .bank extension. Are these files present in the right folder? Maybe these files are not found by the game. 3. If the game is still in development, then you may as well question the devs to make sure if gamemaker-fmod.dll has any Windows-specific dependencies. Then it might be the actual root cause of missing audio. 4. What's this recreation project? These contributors may have some knowledge how the game works, so maybe they can help 5. What about the game logs? I'm sure there is a way to launch the game in some kind of a debug/developer mode and see what errors the game outputs. Maybe some variable in configs or .ini files is responsible for logging
TASing is like making a film: only the best takes are shown in the final movie.
Active player (254)
Joined: 4/10/2022
Posts: 15
Dimon12321 wrote:
Vexxter wrote:
Hello, for the past 8 months I have been TASing Pizza Tower using libTAS with a custom Linux port of the game, however one problem I have always had is that the game does not run with any audio, now that the end of the any% TAS is getting closer
Now it's the "right" time to ask for help =-| To begin with, I'm not familiar with the game at all. Have you done enough research on this topic? 1. If you launch the game without libTAS, does it have the audio? If it does, then you can create in issue in libTAS repository and keylie may figure out what's the problem on libTAS' side. 2. I found in this Steam discussion that the game audio is stored in files with .bank extension. Are these files present in the right folder? Maybe these files are not found by the game. 3. If the game is still in development, then you may as well question the devs to make sure if gamemaker-fmod.dll has any Windows-specific dependencies. Then it might be the actual root cause of missing audio. 4. What's this recreation project? These contributors may have some knowledge how the game works, so maybe they can help 5. What about the game logs? I'm sure there is a way to launch the game in some kind of a debug/developer mode and see what errors the game outputs. Maybe some variable in configs or .ini files is responsible for logging
I've searched through a lot of different things, but as I said I am not too familiar with low-level coding so I don't fully understand what could be useful or not. 1. No, the game uses FMOD library files next to the game that are Windows only. While there are Linux versions of the FMOD library files, Pizza Tower's "fmod-gamemaker.dll" file is made by the Pizza Tower developers and only has a Windows version, so the game cannot communicate with FMOD through this file. Some people on Discord have told me that a port to Linux of this file would maybe solve the issue, but I have no idea where to begin on doing that. 2. I put them in the same location as they normally are, which should be correct. The console outputs that it didn't find the library files in the first place, so that would have to be figured out afterwards. 3. I don't know how to contact the developers. A few months ago they said that they're working on a Linux version of the game but I don't think they are anymore, because they've released a lot of updates after that and there still isn't one. 4. I saw this, but I'm not sure how I would contact these people, as I do not have a Gamebanana or Twitter account 5. When you open the game, the console outputs this a bunch of times:
error trying to load assets/gameframe_x64.dll - assets/gameframe_x64.dll: invalid ELF header
error trying to load gameframe_x64.so - gameframe_x64.so: cannot open shared object file: No such file or directory
error trying to load libgameframe_x64.so - libgameframe_x64.so: cannot open shared object file: No such file or directory
error trying to load gameframe_x64_linux.so - gameframe_x64_linux.so: cannot open shared object file: No such file or directory
error trying to load libgameframe_x64_linux.so - libgameframe_x64_linux.so: cannot open shared object file: No such file or directory
error trying to load gameframe_x64_arm.so - gameframe_x64_arm.so: cannot open shared object file: No such file or directory
error trying to load libgameframe_x64_arm.so - libgameframe_x64_arm.so: cannot open shared object file: No such file or directory
error trying to load libgameframe_x64_linux_arm.so - libgameframe_x64_linux_arm.so: cannot open shared object file: No such file or directory
error trying to load gameframe_x64_armeabi-v7a.so - gameframe_x64_armeabi-v7a.so: cannot open shared object file: No such file or directory
error trying to load libgameframe_x64_armeabi-v7a.so - libgameframe_x64_armeabi-v7a.so: cannot open shared object file: No such file or directory
error trying to load libgameframe_x64_linux_armeabi-v7a.so - libgameframe_x64_linux_armeabi-v7a.so: cannot open shared object file: No such file or directory
error trying to load gameframe_x64_arm64.so - gameframe_x64_arm64.so: cannot open shared object file: No such file or directory
error trying to load libgameframe_x64_arm64.so - libgameframe_x64_arm64.so: cannot open shared object file: No such file or directory
error trying to load libgameframe_x64_linux_arm64.so - libgameframe_x64_linux_arm64.so: cannot open shared object file: No such file or directory
error trying to load gameframe_x64_arm64-v8a.so - gameframe_x64_arm64-v8a.so: cannot open shared object file: No such file or directory
error trying to load libgameframe_x64_arm64-v8a.so - libgameframe_x64_arm64-v8a.so: cannot open shared object file: No such file or directory
error trying to load libgameframe_x64_linux_arm64-v8a.so - libgameframe_x64_linux_arm64-v8a.so: cannot open shared object file: No such file or directory
After that, it spams this for a while:
error trying to load assets/steamworks_x64.dll - assets/steamworks_x64.dll: invalid ELF header
error trying to load Steamworks_x64.so - Steamworks_x64.so: cannot open shared object file: No such file or directory
error trying to load libSteamworks_x64.so - libSteamworks_x64.so: cannot open shared object file: No such file or directory
error trying to load Steamworks_x64_linux.so - Steamworks_x64_linux.so: cannot open shared object file: No such file or directory
error trying to load libSteamworks_x64_linux.so - libSteamworks_x64_linux.so: cannot open shared object file: No such file or directory
error trying to load Steamworks_x64_arm.so - Steamworks_x64_arm.so: cannot open shared object file: No such file or directory
error trying to load libSteamworks_x64_arm.so - libSteamworks_x64_arm.so: cannot open shared object file: No such file or directory
error trying to load libSteamworks_x64_linux_arm.so - libSteamworks_x64_linux_arm.so: cannot open shared object file: No such file or directory
error trying to load Steamworks_x64_armeabi-v7a.so - Steamworks_x64_armeabi-v7a.so: cannot open shared object file: No such file or directory
error trying to load libSteamworks_x64_armeabi-v7a.so - libSteamworks_x64_armeabi-v7a.so: cannot open shared object file: No such file or directory
error trying to load libSteamworks_x64_linux_armeabi-v7a.so - libSteamworks_x64_linux_armeabi-v7a.so: cannot open shared object file: No such file or directory
error trying to load Steamworks_x64_arm64.so - Steamworks_x64_arm64.so: cannot open shared object file: No such file or directory
And finally, it spams this for a while before deciding to start up:
error trying to load assets/fmod-gamemaker.dll - assets/fmod-gamemaker.dll: invalid ELF header
error trying to load fmod-gamemaker.so - fmod-gamemaker.so: cannot open shared object file: No such file or directory
error trying to load libfmod-gamemaker.so - libfmod-gamemaker.so: cannot open shared object file: No such file or directory
error trying to load fmod-gamemaker_linux.so - fmod-gamemaker_linux.so: cannot open shared object file: No such file or directory
error trying to load libfmod-gamemaker_linux.so - libfmod-gamemaker_linux.so: cannot open shared object file: No such file or directory
error trying to load fmod-gamemaker_arm.so - fmod-gamemaker_arm.so: cannot open shared object file: No such file or directory
error trying to load libfmod-gamemaker_arm.so - libfmod-gamemaker_arm.so: cannot open shared object file: No such file or directory
error trying to load libfmod-gamemaker_linux_arm.so - libfmod-gamemaker_linux_arm.so: cannot open shared object file: No such file or directory
error trying to load fmod-gamemaker_armeabi-v7a.so - fmod-gamemaker_armeabi-v7a.so: cannot open shared object file: No such file or directory
error trying to load libfmod-gamemaker_armeabi-v7a.so - libfmod-gamemaker_armeabi-v7a.so: cannot open shared object file: No such file or directory
error trying to load libfmod-gamemaker_linux_armeabi-v7a.so - libfmod-gamemaker_linux_armeabi-v7a.so: cannot open shared object file: No such file or directory
error trying to load fmod-gamemaker_arm64.so - fmod-gamemaker_arm64.so: cannot open shared object file: No such file or directory
error trying to load libfmod-gamemaker_arm64.so - libfmod-gamemaker_arm64.so: cannot open shared object file: No such file or directory
error trying to load libfmod-gamemaker_linux_arm64.so - libfmod-gamemaker_linux_arm64.so: cannot open shared object file: No such file or directory
error trying to load fmod-gamemaker_arm64-v8a.so - fmod-gamemaker_arm64-v8a.so: cannot open shared object file: No such file or directory
error trying to load libfmod-gamemaker_arm64-v8a.so - libfmod-gamemaker_arm64-v8a.so: cannot open shared object file: No such file or directory
error trying to load libfmod-gamemaker_linux_arm64-v8a.so - libfmod-gamemaker_linux_arm64-v8a.so: cannot open shared object file: No such file or directory
The only debug launch command there is is "-debug", but that's just Gamemaker's default debug mode and it doesn't really help with this problem