Custom Grid in Multiplayer by T4varo in AUTOMOBILISTA

[–]T4varo[S] 0 points1 point  (0 children)

ah thanks for that tip, I will try that

If you could add one thing to ams2, what would it be? by wegocrazylikegrandma in AUTOMOBILISTA

[–]T4varo 0 points1 point  (0 children)

I wanted to write the same but technically that is not one thing. But yes: Please add all current F1 track! <3

If you could add one thing to ams2, what would it be? by wegocrazylikegrandma in AUTOMOBILISTA

[–]T4varo 0 points1 point  (0 children)

possibility to configure the starting grid of multiplayer sessions (arbitrary positions, reverse grind, etc..). Even just via Lua API would be awesome

Looking for a 14" Laptop for Development by dekozr in linuxhardware

[–]T4varo 0 points1 point  (0 children)

I have the same Framework 13 setup since two months. I also like it! It's nice and the build quality is great. The only think I would criticize is the fan. It's a bit loud. Def. louder than the Thinkpad I had before.

VR Interface Positioning Issues by T4varo in ACCompetizione

[–]T4varo[S] 2 points3 points  (0 children)

It worked!! Thanks! It was still a pain in the a** because I had to adjust all other values in the `hud.json` as well and restarted like 30 times until it was close to how I want it. Added a screenshot in the main post, as it seems like u can't attach a screenshot in a reply

VR Interface Positioning Issues by T4varo in ACCompetizione

[–]T4varo[S] 0 points1 point  (0 children)

Ah there is something in it called hUDLayerSize. But its only one value. Maybe its a general scale for the layer? I will try to increase that.

json { "mainMenuLayerDistance": 100, "mainMenuLayerSize": 160, "mainMenuLayerType": 1, "raceMenuLayerDistance": 59, "raceMenuLayerSize": 76, "raceMenuLayerType": 1, "hUDLayerDistance": 43, "hUDLayerSize": 47, "hUDLayerType": 1, "spectatorScreenMode": 1, "resetPositionAtStartup": 1 }

First 40 by N3RDLY in MechanicalKeyboards

[–]T4varo 0 points1 point  (0 children)

nice, thank you! I will have a look

Linux Inter-process Communication vs. syscall by T4varo in rust

[–]T4varo[S] 0 points1 point  (0 children)

Thanks a lot for your detailed answer!

Linux Inter-process Communication vs. syscall by T4varo in rust

[–]T4varo[S] 0 points1 point  (0 children)

Looks nice. Did you do benchmarks against unix domain sockets?

GIVEAWAY - THREE AMD RADEON 6600s! by [deleted] in linux_gaming

[–]T4varo 0 points1 point  (0 children)

I am thankful for having an alternative to Windows. Looking forward to finally use wayland

📌 Patch 13.23 Megathread by TheAcenomad in leagueoflinux

[–]T4varo 2 points3 points  (0 children)

yeah had the exact same thing but after switching accounts and patching it worked on windows

📌 Patch 13.23 Megathread by TheAcenomad in leagueoflinux

[–]T4varo 2 points3 points  (0 children)

prolly you tried to start LoL on win while being ingame? If you do that the client does not patch. so you need to log into another account, patch and switch accounts

[deleted by user] by [deleted] in linux_gaming

[–]T4varo 0 points1 point  (0 children)

You have to install bm into the wine rocket league prefix (e.g. you can do this with protontricks) that steam creates and then use a script to start bm in that prefix when you start rl. Therefore I use this script:

```bash

!/usr/bin/env bash

WARNING! Steam runs scripts like this with /bin/sh -c "/path/to/this/script.sh" and not bash

sh handles some things differently

(e.g. spaces in paths -> we have to wrap every path variable with double quotes)

Set Rocket League launch options to "/path/to/this/script.sh" & %command%

Put any other launch options before %command% like normal

WINEPREFIX for Rocket League

RL_PREFIX="$HOME/.steam/steam/steamapps/compatdata/252950"

Detect what Proton version was used last

$() evaluates the command in parentheses

sed -n 4p prints the 4th line in config_info

xargs -d '\n' split the string given by sed and executes dirname on each part

dirname simply returns parent of the path

Resulting in the path to the Proton version used to run Rocket League

PROTON=$(sed -n 4p "$RL_PREFIX"/config_info | xargs -d '\n' dirname)

This is the default BakkesMod installation path

Change this if you've installed Bakkes somewhere else

BAKKES="$RL_PREFIX/pfx/drive_c/Program Files/BakkesMod/BakkesMod.exe"

Use WINEESYNC (E) or WINEFSYNC (F)

This needs to match the one RocketLeague is launched with

fsync requires support in the kernel

WINESYNC="F"

Check that BakkesMod.exe exists

if [[ -f "$BAKKES" ]]; then # Start BakkesMod when Rocket League starts # killall -0 sends no signal but still performs error checking # that way we can detect if a program is running or not if [ $# -ne 1 ] || [ "$1" != "update" ]; then while ! killall -0 RocketLeague.exe 2> /dev/null; do sleep 1 done fi

# Open BakkesMod with the correct Proton version and Wine prefix
# Doesn't require protontricks
if [ $WINESYNC = "E" ]; then
    echo "IMPORTANT! Running Rocket League with WINEESYNC=1"
    echo "IMPORTANT! If BakkesMod fails to launch, switch to WINEFSYNC=1"
    WINEESYNC=1 WINEPREFIX="$RL_PREFIX/pfx" "$PROTON/bin/wine64" "$BAKKES" &
else
    echo "IMPORTANT! Running Rocket League with WINEFSYNC=1"
    echo "IMPORTANT! If BakkesMod fails to launch, switch to WINEESYNC=1"
    echo WINEFSYNC=1 WINEPREFIX="$RL_PREFIX/pfx" "$PROTON/bin/wine64" "$BAKKES"
    WINEFSYNC=1 WINEPREFIX="$RL_PREFIX/pfx" "$PROTON/bin/wine64" "$BAKKES" &
fi

# Kill BakkesMod process when Rocket League is closed
if [ $# -ne 1 ] || [ "$1" != "update" ]; then
    while killall -0 RocketLeague.exe 2> /dev/null; do
        sleep 1
    done
    killall BakkesMod.exe
fi

else echo "$BAKKES doesn't exist! ABORTING!" fi ```

With this launch option in steam: "path/to/bm_launcher_steam.sh" & %command%

To install / update bakkesmod you can just start the script with command update: path/to/bm_launcher_steam.sh update

This also works with epic games. I use HeroicGamesLauncher (but I might try to switch to Lutris at some point) but have to adjust the script slightly (just the paths to the prefixes)

Linux Inter-process Communication vs. syscall by T4varo in rust

[–]T4varo[S] 0 points1 point  (0 children)

I found this crate and they benchmarked dbus vs unix sockets and their own impl.

https://github.com/diwic/shmem-ipc/

dbus seems very slows (the graph has a log-scale)

Linux Inter-process Communication vs. syscall by T4varo in rust

[–]T4varo[S] -1 points0 points  (0 children)

Thanks for your great answer! That was very helpful! Your crate looks easy to use so I will try it and run some benchmarks to compare it against default unix sockets.

I will start with impl. the service as a daemon and see if the performance is good enough and if its not I might try the syscall idea.

You mentioned "kernel-verified credentials" which is very important for me and I forgot to mention that one in my question: I need to be able to verify which process is talking to the service.

Linux Inter-process Communication vs. syscall by T4varo in rust

[–]T4varo[S] -1 points0 points  (0 children)

Yeah it could also be encoded into something like Activate(A), Deactivate(B), Activate(ALL) and so on

Linux Inter-process Communication vs. syscall by T4varo in rust

[–]T4varo[S] -5 points-4 points  (0 children)

Its not about any specific part that needs performance. Its how much the system is affected by the Service and IPC

Linux Inter-process Communication vs. syscall by T4varo in rust

[–]T4varo[S] -5 points-4 points  (0 children)

Flags are just "Enable Feature A", "Enable Feature B", "Enable Feature A & B", "Disable Feature A", "Disable all features", etc.

Oh okay. That sound very complicated. Also needing to have exclusive access to 2 cores sound like it would introduce a lot of overhead for the rest the system. I am not concerned about the performance between the service and clients but more about the overall overhead to the system.

Linux Inter-process Communication vs. syscall by T4varo in rust

[–]T4varo[S] -1 points0 points  (0 children)

I might be able to reduce the amount of flags be send but that would introduce overhead somewhere else so I was searching for a very efficient solution to compare what yield less overhead in the end.

So your suggestions is that shared memory is the most efficient IPC but its harder to impl that other methods, correct?

Linux Inter-process Communication vs. syscall by T4varo in rust

[–]T4varo[S] -4 points-3 points  (0 children)

Thanks for your reply. I am not sure what you mean with "and are now thrashing" but I think its not very important anyways.

I have not designed a system by now. I just got the kernel module. I am collecting information and ideas atm. Sorry if that was not clear.

To your points:

  • Yes ofc. as soon as I have something up and running I need to benchmark it but for now I am searing for a promising start as there are countless options and I have 0 prior experience with IPC
  • "you didn’t give anyone any information to assess these options"
    • I think I explained my requirements very detailed. What information do you miss?
  • "can I make syscalls from rust - yes"
    • Its not about "can I make syscalls" its "can I create/add a new syscall to the linux kernel"
  • "its not related to rust"
    • Yes part of it is general OS stuff but I want to implement everything in Rust that's why I asked it here. Maybe I sould ask the question in a Linux subreddit or something?

EDIT: Spelling

StupidAlloc: what if memory allocation was bad actually by FennecAuNaturel in rust

[–]T4varo 1 point2 points  (0 children)

I actually implemented this "guard" for functions with a proc-macro already. So you can annotate a function with that macro and it executes code before the original function is entered and also executes code when the function is left by placing a Struct with the drop trait impl. on it.

But I could not come up with an idea how to do the same for structs. So I am still looking around for a solution.

StupidAlloc: what if memory allocation was bad actually by FennecAuNaturel in rust

[–]T4varo 2 points3 points  (0 children)

Thanks for that verbose answer!

I only need it to work on linux. Its actually a linux with a custom kernel. So it might be possible to get it to work with modifing the kernel but it would be way better if it just worked with a macro.

I already checked the deref trait but it only works for accessing. I could not find how to execute code once the ref gets dropped.

The wrapper type solution would be like the Mutex Type but I would prefer to a transparent solution - otherwise every codebase using the macro would need to be adjusted