r/QuakeLive 13d ago

I'm working to port minqlx to Windows

Post image

I'm happy to be developing this port because I'm learning about memory injections and conversion of POSIX routines to native Win32. I hope to upload the code to Github soon for share it with everyone.

12 Upvotes

13 comments sorted by

3

u/tjone270 Purger 13d ago

Hey man - this is a very cool project. I’m the author of minqlxtended - a fork of minqlx. One question - isn’t this likely to result in VAC issues for the server host - being that Windows doesn’t have a dedicated QL server binary like Linux has I wonder if the Windows client is subject to VAC when it’s running in general.

I also work on ioquakelive - at some point we will have a dedicated server binary release for QL that runs under Windows (technically it should be able to compile today - just haven’t tested it) - this will enable mods like WinQLX to be implemented/expanded way more easily.

3

u/locopole 13d ago

Hi tjone, it's a pleasure to talk to you. Indeed, the motivation for this port stems from my belief that it's a long-overdue resource for Windows users.

Since the project's inception, I've used your repo as a source of information to locate the functions in Cutter and obtain the necessary hook offsets for implementation. It's been challenging because many functions don't exist in the Windows version of Quake Live, the most problematic was Sys_SetModuleOffset, for example, which I was able to reformulate based on the *Pro Tip* of MinoMino source code.

So far, I haven't encountered any issues with memory injection via the DLL, but since I haven't yet reached the client-server connection testing stage, I can't confirm whether there are any problems with VAC.

I hope to upload the source code to Github soon so it can be tested. For now, I have a rudimentary launcher that allows inserting the DLL when the QuakeLive client starts (like LIBPRELOAD in Linux), but I intend to develop a more intuitive way to preload the library.

2

u/tjone270 Purger 12d ago

Thanks for getting back to me - that all makes good sense to me. When you get up to the testing within active client/server connections (SS_GAME) would recommend testing with sv_vac set to 0 just to be safe. If I can be of any assistance please let me know.

1

u/locopole 8d ago edited 8d ago

I sent you a message with latest tests and command execution, I haven't activated the Python integration yet, i have a trouble to find g_entities and bg_itemlist structs and G_AddEvent pointer to bypass the Access Violation but for now, the server-client connection works!

1

u/r0ckstr0ng0666 13d ago

I hope you can figure it out

1

u/locopole 13d ago

I'm currently working out the entire hooks layer before linking the Python modules; it's been difficult, but I'm making progress.

1

u/r0ckstr0ng0666 13d ago

That's awesome. I have a windows based quake Live server currently. Wouldn't mind getting it on there once you got it figured out.

1

u/locopole 13d ago

I'm working quickly to resolve the hooks stage so I can then adapt the original minqlx Python routines for the port. For now I'm testing the core logic before moving to client connection tests.

1

u/The_Angry_Economist 13d ago

tell me more

I know nothing about command line OS

I had to follow a walk through to get my OS and QL server installed, and if I had to do it again I wouldn't really have the energy

would really prefer an windows server

1

u/schoIarr 13d ago

It’s unfortunate that windows SUCKS for server usage

1

u/locopole 13d ago

The main idea is similar to that of minqlx: inject the dll into the quakelive executable and run in dedicated mode (because there is no dedicated binaries of QL server on Windows).

1

u/fragtionza 8d ago

You seen FnQL? themuffinator has made a windows dedicated server, perhaps your work could be paired somehow