Annoyed by the clumbersome booking system in recently released multiplayer for Assetto Corsa, I wanted to see if something could be done to improve it. I came up with a system that uses prebooked slots and a specially prepared client to join those slots at any time.
Experimental version for AC early access v0.9.10 is available here. It requires the client to install a modified online interface module and a server to be running a special version. See the readme there for additional information.
While it allows joining a server at any time it has some limitations. Mainly you can only select from cars that the server has prebooked and annoyingly when a race is over the session will never end until all clients have disconnected.
edit: Freejoin updated to version 1.20 with better compatibility and various fixes. See the Freejoin page for more info.
Great mod :) Have you thought of offering this to the official dev team? Is there any problems with “join lag”? I’m asking this because the only reason for the ridiculous Booking mentioned on the official AC forums was to reduce join lag.
No there does not seem to be any join lag. With this its likely because all the cars are loaded when you join the server, but even if they wouldn’t I dont think there really is any technical reason why there would be any lag issues with loading the models & cars on the fly.
The fact that the devteam wants to use the booking for no apparent? reason, is quite interesting. We’ve been racing lfs for 10 years with our own dedicated server and as you already know, the mp just works :) Easy to join, restart races, etc. etc. I really hope the mp-system of AC is not going to be something like the dreaded GTR-series back in da day. I mean the Next session – Next session type of cr*p.
It’s really great that you’ve started to tackle this already :) Slightly OT: have you considered to “port” other tarmac stages from RBR than the Jeux Plane?
No clue why the booking stuff is there but I’m sure the devs have their reasons… No plans for other RBR stages.
LFS Cars have way less polygons than AC. If AC was loading models on the fly it would be laggy i guess. The solution would be to use a system similar to rFactor. Each new player has a “tempcar” which gets replaced with the actual car once each of the other players go to Pit/Spectate.
Any update ? The “Show only free-join servers” -icon is gone :(
thx , the mod works great im glad to see your mod works well, and its extreme usefull.
It looks like the latest patch broke the FREE JOIN. Has anyone sucessfully modified the server.py to once again?
well assetto release a new structure for the mp server and theme, due that the old implementation doesnt work. so i was cheking the logs and see server.py cant find the server.ini , and entrylist.ini and i do a small change on the code to make it work.
where say “server/cfg/server_cfg.ini” i remove the server subfolder path and looks like “cfg/server_cfg.ini” and do the same whit the entrylist lines on the python code.
on the theme/online i ll check what i can do to get the new feature provided by kunos and the freejoin filter.
as allways thx Kegetys, for your time and develope.
Yes the server side should work just by changing the paths, client side works as well but you’ll miss some of the online UI changes. I’ll update Freejoin once I find them time for it.
Hello!
How do I run the python command under Linux?
I’m not a python gun but it’s not working for me
[root@centos ac]# python server.py
File “server.py”, line 19
def print(*args, **kwargs):
^
SyntaxError: invalid syntax
Obviously when it works I won’t run it as root ;)
Check that you are using python 3.x and not 2.x. If you have both installed you maybe need to use “python3” command to run it. Note some of the cfg paths are wrong for the current server version, you’ll need to change those I believe.
I found out that the paths in server.py were wrong for myself and fixed it. Now I am searching for a solution for the following issue: “[FREEJOIN] ERROR: GUID is not valid!” (…=GUID number of the first car in entry list)
Entry list contains only cars that are also in server_cfg.ini, number of prebooked cars < number of pits, name of car and skin taken from the server launcher.
There are some Freejoin-Servers running, so i guess it is still possible with the current version. But I have no clue, what causes the error?
Booking time was not 0, so there was a booking session, which seems to be the reason for this error code.
Error 10054 and exsisting connection was forcefully closed by remote host?
How do i fix this. If I run the normal server exe it works but can’t use the freejoin slots
Hi, i Have Error – WinError 2…
Any solution?
Thanx
C:\AC_server>C:\Python34\python.exe server.py
[FREEJOIN] Server name
[FREEJOIN] Clients: 18, HTTP port: 24400, passsword:
Traceback (most recent call last):
File “server.py”, line 251, in
subprocess.Popen([“./acServer.exe”])
File “C:\Python34\lib\subprocess.py”, line 858, in __init__
restore_signals, start_new_session)
File “C:\Python34\lib\subprocess.py”, line 1111, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
C:\AC_server>pause
Press any key to continue . . .
I have the same kypo.
I managed to workaround doing this change in server.py:
line 251: change the acServer.exe path using the full path instead. Note I also had to use doubleslash for this, like below:
subprocess.Popen([“C:\\Program Files (x86)\\Steam games\\SteamApps\\common\\assettocorsa\\server\\acServer.exe”])
Doing this made the script able to go further into the freejoin server creation but I encountered a 2nd issue, that was server_cfg.ini not found, resulting in infinite warning message saying freejoin could not connect to AC server.
I was not able to workaround this 2nd error yet. I tried to use the full path for the server_cfg.ini at lines 25, 41 and 51 but it did not work (the script still seems to use the original path).
I’ll update if I find something.
After looking for it more, I only see that the script starts acServer.exe but it seems to be closed (crash ?) immediately. I’ve tried without the booking section, and also with it and time 0 but still doesn’t work.
If I start acServer.exe manually using the same cfg files, it doesn’t crash.
I wonder if this may have to do with the encoding of the cfg files. Tried UTF8 / ANSI / unicode with no success though (but with different errors when running the script depending on the cfg file encoding type).
Works using server.py you can find here:
http://www.assettocorsa.net/forum/index.php?threads/freejoin-by-kegetys.10099/#post-166307
Script must be placed in the same folder as acServer.exe
Seems when I use this we have no collision detection on for the servers? I can just drive thru cars on the track! Anyone else seeing this also?
Hi.
After last update AssettoCorsa Freejoin dont work.
Server looks to be OK when starting, but on clients PCs freejoin dont work. No servers found and icon to Freejoin filter is blank. Some fix?
wow amazing mod its just awesome , took me a while to setup the server i eventually did thanks to husky on the forums :D , thing is i can not set my own custom cars it always overides them and when i lock the server_cfg.ini file in other words read only the server shits out errors , can you help me out please i would really apreciate it :) x
Make sure you follow the server configuration guidelines. You should not set any files read only.
hi , how about the setting my own custom cars that i want available on the server cause it does seem like i can everytime i make and declare car ini file in the server cfg under freejoin its just ignored and the cars are overwritten when i start the server :( , how do i make it so i dictate what cars i want on the server ?
Any idea about this error running a linux server with python 3.2 (most up to date version supported by Debian Wheezy)
[FREEJOIN] Starting ACserver
[FREEJOIN] Warning: Running x64 server despite x64 architexture
[HOOK] end
[HOOK] end
[FREEJOIN] WARNING: Could not connect to AC server!
TCP+1 port has been opened. Could it be due to the python version being too old ?
I have ran it myself on Wheezy with Python 3.2 successfully (on both x86 and x64 servers). Check if you can run the x86 AC server on its own, the “[HOOK] end” message would suggest the AC server process has terminated.
Thank you kegetys. It works now. It seems the guy was messing up with x86 / x64 versions and/or it wasn’t the last updated binaries.
My server is crashing after a day or so… running the x86 linuix server. I’m geting some weird “SI xxx” messages in my console where xxx are what seem like random numbers.
Also getting the error, – ‘Warning, server CPU overload , last step, xxxms’
That just means your server’s CPU isn’t powerful enough.
Thanks Wally, quite a few people are experiencing high cpu use on the linux flavour of the server…I would’ve thought my VPS to be powerful enough but i guess not.
How do I redirect freejoin output to a text file in a Windows shell? I am getting blank output files created. I am using this command:
C:\Python34\python.exe server.py > out.log 2> error.log
Note that the log files are created, and the server is running correctly, it’s just that the log files are empty. If I run without the output redirection, I see the expected output in the command window.
Is server.py doing something with stdout?
I have had continuous server crash using freejoin yesterday. It crashed at approx 20min after session started and I was using modded tracks if that’s of any influence.
Though, given the error msg I suspect those crash have to do with the use of python chat app to discuss with each others during sessions. Maybe because of french specific characters ? (like é, è etc). Or is it because of too long sentence ? (string index out of range error)
What do you think kegetys ? Note also I used the same pwd for session and admin pwd, so everyone was set as admin.
Below is the full error msg:
[FREEJOIN]
Exception in thread Thread-1:
Traceback (most recent call last):
File “C:\Program Files (x86)\Python34
ap_inner
self.run()
File “C:\Program Files (x86)\Python34
self._target(*self._args, **self._k
File “C:\Program Files (x86)\Steam ga
server.py”, line 672, in server_handler
process_server_output(str, serverPr
File “C:\Program Files (x86)\Steam ga
server.py”, line 636, in process_server
handle_chat(process, line)
File “C:\Program Files (x86)\Steam ga
server.py”, line 568, in handle_chat
if is_admin(user) and msg[0] == ‘!’
IndexError: string index out of range
Beside this, the cycle function only works half. It works if you manually skip tracks using !next chat cmd, but if you just wait the end of the session length then the script always reload the 1st track in the cycle list. (I’m set with practice only, quali and race are set at 0).
Iroiroiro gave me a fix, will try tonight:
http://www.assettocorsa.net/forum/index.php?threads/freejoin-by-kegetys.10099/page-4#post-199808
Is on plan update to work whit admin psw ?
Lack of time to work on it right now, even though it should not be that hard. Though with official support for “freejoin” racing I’m not sure if freejoin itself is needed so much anymore.
I like comands to admin race server :) like !help for users ECT – show specyfic info on chat pls make this :)
!next work perfect when i delete if admin :)
# Handle admin commands
if msg[0] == ‘!’: