Optional Introduction
I have a sort of love-hate relationship with FiveM platform…
This project’s goals and how it empowers customization and freedom in modifying GTA V is very appealing to me, but I really detest Microsoft products’ enormous complexity, bulkiness and freedom-constricting, anti-consumer licenses.
I can’t stand such amazing project being so tightly coupled with something so loathsome. It is another of those things in the world that cause me a great deal of mental anguish. (hey, surprise surprise, my username has real meaning)
I’ve read authoritative posts and participated in some discussions on these forums, some felt really good to be a part of, some gave me hope, some slightly demoralized and some completely crushed me to the point I just wanted to quit forever and forget this platform exists.
But no matter how hard I tried to forget and move on, I came back, because this post:
is just like a splinter in my mind, driving me mad…
Actually, it has driven me to starting exploration of FiveM’s source and figuring out if I can maybe try to do what I care about myself…
Ideally, the end goal for me is to try and remove/replace all Microsoft-specific cruft in the codebase (powershell, cmd/bat, Visual Studio, windows-specific headers, maybe .net/cs too), then compile (with gcc or llvm), run and debug FiveM client on Linux
NOTE: This will probably take crazy long time (if ever) to be completed, but what I’m getting from reading these forums is that this kind of port is very much possible, but very low priority for the FiveM team at best and never going to happen at worst.
Since FiveM team refused to make this easier for me (if curious, see ‘completely crushed’ link in the introduction above), I have to start from scratch, that is, by trying to understand Windows client build process.
So far, I’ve partially converted fxd utility (the fxd gen
command to try and generate unix makefiles instead of VS project) into bash scripts, but I’ve run into a bit of a snag:
“What do I do about seemingly Windows-specific (but not really?) dependecies like minhook?”
Since a native (ELF executable) build of GTA V does not (and probably will not ever) exist, some form of loading PE format is going to be mandatory and I think some mechanism that allows hooking Windows functions is going to be mandatory as well (minhook?).
I’ve noticed that launcher/bootstrapper is very heavily “microsoftized” and will probably require a full rewrite, so I’m guessing this is not the best part to start porting from and (unfortunately) it’s the first thing that “goes off” when going top-to-bottom through the build process.
Perhaps someone has an idea or knows how to (done it before?) isolate just the ‘game’ (RAGE engine) part (part that executes when you successfully run a connect
command from client console) from the rest of the FiveM client?
I’d appreciate any input/interest/help in exploring this.