-
-
Save flibitijibibo/f06e3f60eb66e5462da824e490229591 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
# FNA Update Script | |
# Written by Ethan "flibitijibibo" Lee | |
# | |
# Released under public domain. | |
# No warranty implied; use at your own risk. | |
# | |
# Run this script in the game's executable folder. | |
# | |
# This script requires the following programs: | |
# - git | |
# - msbuild, which should include a C# compiler | |
# | |
# You may want to update MonoKickstart as well! | |
# https://github.com/flibitijibibo/MonoKickstart/tree/master/precompiled | |
# Be Smart. Be Safe. | |
set -e | |
# Move to script's directory | |
cd "`dirname "$0"`" | |
# Grab native libraries | |
curl -O https://fna.flibitijibibo.com/archive/fnalibs.tar.bz2 | |
tar xvfj fnalibs.tar.bz2 lib64 | |
rm fnalibs.tar.bz2 # Wouldn't want to waste disk space, would we... | |
# Download and build latest FNA | |
if [ -d "FNA" ]; then | |
cd FNA | |
git pull | |
git submodule update | |
else | |
git clone --recursive https://github.com/FNA-XNA/FNA | |
cd FNA | |
curl -o FNA.Settings.props https://flibitijibibo.com/Terraria.Settings.props | |
fi | |
msbuild /p:Configuration=Release /p:Platform=x86 FNA.sln | |
cd .. | |
cp FNA/bin/Release/* . | |
# We out. | |
echo Complete! |
@MyNameIsKeegan been getting the same error, seems to this:
Exception: System.TypeLoadException: Could not resolve type with token 01000203 from typeref (expected class 'SDL2.SDL_image' in assembly 'FNA, Version=22.2.0.0, Culture=neutral, PublicKeyToken=null') at (wrapper managed-to-native) System.RuntimeMethodHandle.GetFunctionPointer(intptr) at System.RuntimeMethodHandle.GetFunctionPointer () [0x00000] in <d1664be62cd44600bbd25f7afa292479>:0 at Terraria.Program.ForceJITOnAssembly (System.Reflection.Assembly assembly) [0x00060] in <2587bb223ae24a7fa015a01bdfbc78b9>:0 at Terraria.Program.ForceLoadAssembly (System.Reflection.Assembly assembly, System.Boolean initializeStaticMembers) [0x0000d] in <2587bb223ae24a7fa015a01bdfbc78b9>:0 at Terraria.Program.ForceLoadThread (System.Object threadContext) [0x00005] in <2587bb223ae24a7fa015a01bdfbc78b9>:0 at System.Threading.ThreadHelper.ThreadStart_Context (System.Object state) [0x00025] in <d1664be62cd44600bbd25f7afa292479>:0 at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00071] in <d1664be62cd44600bbd25f7afa292479>:0 at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <d1664be62cd44600bbd25f7afa292479>:0 at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state) [0x0002b] in <d1664be62cd44600bbd25f7afa292479>:0 at System.Threading.ThreadHelper.ThreadStart (System.Object obj) [0x0000f] in <d1664be62cd44600bbd25f7afa292479>:0
For anyone in the future, I fixed this by downloading FNA myself and changing the Makefile to have
lib/SDL2-CS/src/SDL2_gfx.cs \ lib/SDL2-CS/src/SDL2_image.cs \ lib/SDL2-CS/src/SDL2_mixer.cs \ lib/SDL2-CS/src/SDL2_ttf.cs \
at the bottom of the sources list, game runs significantly better now
It runs now! And of course much better performance, thank you for your help! Audio is a bit crunchy and crackly now which is annoying but a big step forward from black screen.
msbuild can be installed on arch linux with the mono-msbuild package
Msbuild doesn't seem to work for me, so instead I just used xbuild and it worked flawlessly
Could someone be kind enough to help me with using this with other Renderers than OpenGL on Arch Linux? I updated the Kickstarter and ran this Script, but /gldevice:Vulkan freezes right after starting the game, something about VK_DEVICE_LOST. Trying to start with /gldevice:D3D11 complains about no valid driver being found
Edit: Solved it by installing libdxvk and lib32-libdxvk from AUR. And also vkd3d and lib32-vkd3d from Extra and Multilib Repo
Got caught up with something almost immediately after running that script, but finally got to try running Terraria... and it crashes after a couple seconds with a black screen. Any ideas?