Giter Club home page Giter Club logo

Comments (18)

mittorn avatar mittorn commented on August 26, 2024

try analyze dependencies with ldd and minimize it before running it under box86, half-life does not have too much direct dependencies. maybe need rebuild some depended libraries in minimal configuration or try versions from steam runtime

from box86.

PrcoKillerSK avatar PrcoKillerSK commented on August 26, 2024

I would like to ask, if there is anything new about running Half-Life on Box86.

I would like to start Half-Life Dedicated Server and try to connect to it from other devices. It would be really great if that was possible, to install SteamCMD, download HL, HLDS and launch it.

If this is possible, could someone please tell me, how to do it? I am completely new to Raspberry Pi4. I tried to install SteamCMD in other emulator, but did not have any luck with it. And I see, that this project is active.

from box86.

ptitSeb avatar ptitSeb commented on August 26, 2024

I have started experimenting with the full steam client now. I too had very little success with SteamCMD, especialy since to switch to python.
HL client crash for now, but I have tried a server yet.

from box86.

PrcoKillerSK avatar PrcoKillerSK commented on August 26, 2024

Okay, so... I actually WAS able to launch SteamCMD and install HLDS. I also WAS able to launch HLDS! :) Here are some things I've noticed

  1. Installing HLDS in SteamCMD (also with validation) was successful on my second attempt. But
    this could actually be, that I wrote something wrongly in my app_update command. (Steam also has a note, that sometimes you have to use that command multiple times so it would successfully install the application/game, so it could also be this case :) ).

  2. After launching HLDS it was missing file steamclient.so.

Cannot dlopen("/home/pi/.steam/sdk32/steamclient.so"/0xb6c6fbb0, 2)

With this problem, I still could see my HLDS Pi4 server on PC, but when I tried to connect, the server crashed with segmentation fault. I was able to fix this by creating folder sdk32 in folder .steam and linking that file with ln command. After that, I relaunched my server. When I tried to connect after this fix, I was successfully on the server. I could play there as on any regular server! :) After I disconnected and tried to shut down server, I got segmentation fault again, but... well, I was meaning to shut it down anyway so... same effect... :D

  1. Only I could connect to my server from my PC. No other devices from any other network could see it. This isn't acutally problem of box86, but of my IP address, so it doesn't matter. :)

  2. When I am launching HLDS server now, I still get some errors, but am still able to connect to the server without problems (shutting down still ends with segmentation fault though :( ).

Here is my console log from running server:

pi@raspberrypi:~/Downloads/steamcmd/HLDS $ ./hlds_linux -game valve +maxplayers 16 +map crossfire
Dynarec for ARM, with extension: HALF FAST_MULT EDSP NEON VFPv4 IDIVA
Using default BOX86_LD_LIBRARY_PATH: ./:lib/:lib32/:x86/
Using default BOX86_PATH: ./:bin/
Counted 45 Env var
Looking for ./hlds_linux
Using emulated libstdc++.so.6
Using native(wrapped) libm.so.6
Using native(wrapped) libc.so.6
Using native(wrapped) ld-linux.so.2
Using native(wrapped) libpthread.so.0
Using native(wrapped) librt.so.1
Using emulated libgcc_s.so.1
Using native(wrapped) libdl.so.2
Error: Symbol _ZSt11__once_call not found, cannot apply R_386_TLS_DTPOFF32 @0xb6457d5c ((nil))
Using emulated /home/pi/Downloads/steamcmd/HLDS/engine_i486.so
Using emulated libsteam_api.so
Using emulated /home/pi/Downloads/steamcmd/HLDS/filesystem_stdio.so

Console initialized.
Using breakpad crash handler
Setting breakpad minidump AppID = 70
Forcing breakpad minidump interfaces to load
Using emulated /home/pi/.steam/sdk32/steamclient.so
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
Using emulated /home/pi/Downloads/steamcmd/HLDS/crashhandler.so
scandir failed:/home/pi/Downloads/steamcmd/HLDS/./valve/SAVE
Protocol version 48
Exe version 1.1.2.2/Stdio (valve)
Exe build: 15:16:04 Jul 24 2019 (8308)
STEAM Auth Server
Server IP address _<here is my IP address>_
Using emulated /home/pi/Downloads/steamcmd/HLDS/./valve/dlls/hl.so
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
CAppInfoCacheReadFromDiskThread took 43 milliseconds to initialize
CApplicationManagerPopulateThread took 10 milliseconds to initialize (will have waited on CAppInfoCacheReadFromDiskThread)
Warning: Cannot dlopen("/home/pi/Downloads/steamcmd/HLDS/steamservice.so"/0xa6a3d2f0, 2)
Warning: Cannot dlopen("steamservice.so"/0xa6a3d2f0, 2)
Using native(wrapped) libSDL2-2.0.so.0
RecordSteamInterfaceCreation (PID 2210): SteamGameServer011 / GameServer
RecordSteamInterfaceCreation (PID 2210): SteamUtils005 / Utils
RecordSteamInterfaceCreation (PID 2210): STEAMAPPS_INTERFACE_VERSION005 / Apps
RecordSteamInterfaceCreation (PID 2210): STEAMHTTP_INTERFACE_VERSION002 / HTTP
RecordSteamInterfaceCreation (PID 2210): SteamNetworking005 / Networking
RecordSteamInterfaceCreation (PID 2210): SteamGameServerStats001 / GameServerStats
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit

couldn't exec listip.cfg
couldn't exec banned.cfg
Could not establish connection to Steam servers.
say TEST
<Half-Life> TEST
Reconnected to Steam servers.
   VAC secure mode is activated.
PrcoKillerSK: Connected! So I came here, and I got here, and I wrote here, and here I aaaam! :)
Dropped PrcoKillerSK from server
Reason:  Client sent 'drop'
say Time to shut down
<Half-Life> Time to shut down
shutdownserver
configstore.cpp (121) : Assertion Failed: ConfigStore (InstallConfigStore) is dirty, and being destroyed, we're discarding data
configstore.cpp (121) : Assertion Failed: ConfigStore (InstallConfigStore) is dirty, and being destroyed, we're discarding data
Segmentation fault

As you can see in this log, it can not find some symbol _ZSt11__once_call. Any ideas, what it is please? Maybe some missing or outdated library?

It is also missing file steamservice.so for some reason. This is something I've actually didn't notice yesterday, so either I didn't notice it or it appeared just today.

Segmentation fault at the end... :(

But still, was able to connect, was able to play! :)

  1. About performance. Many friends who knew I was going to try this, were afraid, that when I connect to this box86 HLDS server, it is gonna be lagging as hell... NOPE! :) My ping was about 5, 9, 10... Only sometimes it went up to 100 for a moment (could be because I am connected to Wi-Fi on my Raspberry). So at least for now, I don't worry about performance problem. (Great job box86 team! :) )

As for my next steps, I am going to try AMX Mod X and some simple plugins as Sank sounds and so on. If it works (or even if it won't :D ) I will let you know! :)

Again, great job on this project! A huge respect to all of you! :)

EDIT!
So I've tried adding Metamod, Dproto and AMXX. I tried to launch HLDS with this command:

pi@raspberrypi:~/Downloads/steamcmd/HLDS $ ./hlds_linux -game valve +maxplayers 16 +map crossfire -dll addons/metamod/dlls/metamod.so

It started to launch normally (just that _Symbol ZSt11__once_call not found error). But then, I got this:

Using emulated /home/pi/Downloads/steamcmd/HLDS/./valve/addons/metamod/dlls/metamod.so
Using emulated /home/pi/Downloads/steamcmd/HLDS/hlds_linux
   
   Metamod version 1.21p38 Copyright (c) 2001-2013 Will Day
     Patch: Metamod-P (mm-p) v38 Copyright (c) 2004-2018 Jussi Kivilinna
   Metamod comes with ABSOLUTELY NO WARRANTY; for details type `meta gpl'.
   This is free software, and you are welcome to redistribute it
   under certain conditions; type `meta gpl' for details.
   
Using emulated /home/pi/Downloads/steamcmd/HLDS/valve/dlls/hl.so
Warning, ignoring unsupported Int 3 call
Segmentation fault

Sometimes at the end I also get error like this:
Unimplemented Opcode

Any ideas, what could go wrong please?

Using:
Metamod 1.21p38
AMXX 1.8.2 (tried to comment it in metamod plugins.ini)
dproto 0.4.8 (tried to comment it in metamod plugins.ini)

EDIT 2!
A friend just told me not to launch server with hlds_linux but hlds_run, so my launch command now looks like this:

pi@raspberrypi:~/Downloads/steamcmd/HLDS $ ./hlds_run -game valve +maxplayers 16 +map crossfire -dll addons/metamod/dlls/metamod.so

No Segmentation fault so far, BUT I still keep getting this Warning, ignoring unsupported Int 3 call and after that Unsupported Int 8Ah error (the number changes after every restart). It keeps restarting itself every 10 seconds thanks to HLDS feature.

from box86.

PrcoKillerSK avatar PrcoKillerSK commented on August 26, 2024

After new commit (with Int3 calls) I was hoping, that it would fix this issue. Still no luck and now it gives me Segmentation fault even if I run it with ./hlds_run file. (No luck with ZSt11__once_call not found either).

from box86.

mittorn avatar mittorn commented on August 26, 2024

metamod-p rewrites dlsym, so it will not work. You need original metamod which uses big linkent table. I do not know if it work with dproto

from box86.

PrcoKillerSK avatar PrcoKillerSK commented on August 26, 2024

I tried metamod 1.20 a few minutes ago, but had no luck.

Symbol _DYNAMIC not found, cannot apply R_386_GLOB_DAT .... {{nil}}
Segmentation fault

I also tried metamod am version, but no luck there either. It didn't even launch it with these two.

So the best success so far was with Metamod P when it actually did launch, but crashed on that Int3 call. It seems that it is trying to send hexa number to Int function.

from box86.

mittorn avatar mittorn commented on August 26, 2024

Try build metamod-hl1 with modern compiler, gcc-2.95 version does not seems to work with box86

from box86.

PrcoKillerSK avatar PrcoKillerSK commented on August 26, 2024

My friend compiled it for me, because I don't have x86 linux installed.

He compiled MetamodP and MetamodAM, because compiling original Metamod threw a lot of errors. Still no success.

Metamod AM launch console log ended with this:

Using emulated /home/pi/Downloads/steamcmd/HLDS/./valve/addons/metamod/dlls/metamod.so
Error: Symbol _ZdlPvj not found, cannot apply R_386_JMP_SLOT @0xab85f2d0 (0x2db46)
Segmentation fault

Metamod P launch console log ended with this:

Using emulated /home/pi/Downloads/steamcmd/HLDS/./valve/addons/metamod/dlls/metamod.so
Using emulated /home/pi/Downloads/steamcmd/HLDS/hlds_linux
   
   Metamod version 1.21p38 Copyright (c) 2001-2013 Will Day
     Patch: Metamod-P (mm-p) v38 Copyright (c) 2004-2018 Jussi Kivilinna
   Metamod comes with ABSOLUTELY NO WARRANTY; for details type `meta gpl'.
   This is free software, and you are welcome to redistribute it
   under certain conditions; type `meta gpl' for details.
   
Using emulated /home/pi/Downloads/steamcmd/HLDS/valve/dlls/hl.so
Warning, ignoring unsupported Int 3 call
Segmentation fault

In both logs, again this error appeared in beginning part:
Error: Symbol _ZSt11__once_call not found, cannot apply R_386_TLS_DTPOFF32 @0xb6434d5c ((nil))

So, still no luck so far :(

from box86.

mittorn avatar mittorn commented on August 26, 2024

libstdc++ is forgotten in metamod makefile. It may be fixed by LD_PRELOAD

from box86.

mittorn avatar mittorn commented on August 26, 2024

try BOX86_LD_PRELOAD=(path to x86 libstdc++)

from box86.

PrcoKillerSK avatar PrcoKillerSK commented on August 26, 2024

try BOX86_LD_PRELOAD=(path to x86 libstdc++)

Tried it,, but nothing changed. Not even in startup console log. When i chose different version of library (for example the one from box86), this was still in log:

Using emulated libstdc++.so.6
...
Error: Symbol _ZSt11__once_call not found, cannot apply R_386_TLS_DTPOFF32 @0xb6457d5c ((nil))
...
Warning, ignoring unsupported Int 3 call
Segmentation fault

from box86.

PrcoKillerSK avatar PrcoKillerSK commented on August 26, 2024

I was wondering, is it supposed to write something after that BOX86_LD_PRELOAD=(path to x86 libstdc++.so.6) command in console? I mean, something like: Library libstdc++.so.6 successfully preloaded. Because when I used that command, nothing was printed in console, just only line for next command (and as I said, nothing changed in HLDS console startup log).

from box86.

PrcoKillerSK avatar PrcoKillerSK commented on August 26, 2024

I tried to run the server the simmilar way as in Issue #115, with command:

gdb --args box86 ./hlds_linux -game valve +maxplayers 16 +map crossfire -dll addons/metamod/dlls/metamod.so

This time, the end of console log looked like this:

Program received signal SIGSEGV, Segmentation fault.
0x73855c24 in GetDynablocksFromAddress ()

I tried what was mentioned in the HL2DM issue and tried to print last 20 ARM instructions.

(gdb) x/20i $pc-60
   0x73855be8 <GetTLSPointer+180>:	
    pop	{pc}		; (ldr pc, [sp], #4)
   0x73855bec <GetDynablocksFromAddress>:	str	r11, [sp, #-8]!
   0x73855bf0 <GetDynablocksFromAddress+4>:	str	lr, [sp, #4]
   0x73855bf4 <GetDynablocksFromAddress+8>:	add	r11, sp, #4
   0x73855bf8 <GetDynablocksFromAddress+12>:	sub	sp, sp, #16
   0x73855bfc <GetDynablocksFromAddress+16>:	str	r0, [r11, #-16]
   0x73855c00 <GetDynablocksFromAddress+20>:	
    str	r1, [r11, #-20]	; 0xffffffec
   0x73855c04 <GetDynablocksFromAddress+24>:	
    ldr	r1, [r11, #-20]	; 0xffffffec
   0x73855c08 <GetDynablocksFromAddress+28>:	ldr	r0, [r11, #-16]
   0x73855c0c <GetDynablocksFromAddress+32>:	
    bl	0x73855344 <FindElfAddress>
   0x73855c10 <GetDynablocksFromAddress+36>:	str	r0, [r11, #-8]
   0x73855c14 <GetDynablocksFromAddress+40>:	ldr	r3, [r11, #-8]
   0x73855c18 <GetDynablocksFromAddress+44>:	cmp	r3, #0
   0x73855c1c <GetDynablocksFromAddress+48>:	
    bne	0x73855ccc <GetDynablocksFromAddress+224>
   0x73855c20 <GetDynablocksFromAddress+52>:	
    ldr	r3, [r11, #-20]	; 0xffffffec
=> 0x73855c24 <GetDynablocksFromAddress+56>:	ldrb	r3, [r3]
   0x73855c28 <GetDynablocksFromAddress+60>:	cmp	r3, #204	; 0xcc

I have no idea what those lines mean, but maybe you can figure something out of these.

from box86.

ptitSeb avatar ptitSeb commented on August 26, 2024

It's a segfault (SIGSEGV), not a bus error (SIGBUS), so not the same kind of error. Here the last 20 ARM instruction are less usefull, and it would e better to have gdb backtrace (so just "bt" when there is the segfault).
But acording to the position of the segfault, I think it's more like a missing wrapped function. I guess there are still a lot of "Error missing symbols" at start?

from box86.

PrcoKillerSK avatar PrcoKillerSK commented on August 26, 2024

Nope, just this one:

Error: Symbol _ZSt11__once_call not found, cannot apply R_386_TLS_DTPOFF32 @0xb6457d5c ((nil))
...
Warning, ignoring unsupported Int 3 call
Segmentation fault

Sometimes after that Unsupported Int 3 call it did write this: Unsupported Int 8Ah (the number was changing as I was trying it).

from box86.

ptitSeb avatar ptitSeb commented on August 26, 2024

HalfLife was working fine at some point on steam, but it's broken again, I have to debug what is happening (some libcef madness again, probably)

from box86.

hampta avatar hampta commented on August 26, 2024

Are there those who had/have the same problem as the author of this issue?

I hope there are others like me with Oracle VM.Standard.A1.Flex Free tier VM.

from box86.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.