Hi everyone!
Time really is flying by - we’re already half way into March! While the last month hasn’t seen anything terribly exciting that we’re ready to talk about yet, we still want to share a few things with you!
Beware of malicious software
Before we get into the rest of the update, we want to share some words around safety with you.
As of late we’ve seen a surge in targeted abuse, spreading malicious software by claiming it will ‘fix FiveM/RedM issues’.
This is not legitimate software, and you should never run .exe
files from people you don’t trust. Cfx.re staff will never ask you to run untrusted executables, and we rarely, if ever, contact you in a Discord DM without prior notice. If we do contact you, or if you’re not sure if someone is impersonating us, it is easy to verify that we are in fact real staff by checking our roles in the Cfx.re Project Hub on Discord.
If you receive a message from anyone who might be impersonating Cfx.re staff, block the user, report the content to Discord, and do not reply to them.
To re-iterate: ignore and report DMs asking you to run untrusted software, and stick to the public channels on Discord when getting or providing help.
Stay safe.
Usage of leaked resources
Every so often, we get a request from people asking us why their server was “blocked for stolen scripts”, where we in fact haven’t blocked their server.
Indeed, it turns out that certain server assets have been circulating that contain a backdoor, often used by the supposed author of these assets to ‘destroy’ a server, corrupting its scripts and adding a message saying the server was blocked.
This seems to mainly circle around a set of assets sold from unauthorized stores, then “cracked” and repackaged in “server bundles” sold on other stores purporting to be a “FiveM script marketplace/store” or similar.
If you’re looking to set up a preconfigured server, we’d suggest you stay away from these stores or other “super script bundles”, and instead look for the recipe options in txAdmin, or download/buy compatible scripts yourself from the #development:releases section.
FiveM
Most of our work on FiveM for the past month has been focused on fixing various issues within the game. Give the changelog a peek!
- Client security improvements and abuse mitigation
- FiveM: Refactor ‘PointerArgumentSafety’ to be part of the build process, and marks ‘Any*’ arguments as an explicit no-go.
- Prevent abuse of non-msgpack arguments passed to ResultAsObject and a direct InvokeNative call being able to return an arbitrary string as a result.
- Reset result state if it ‘looks like’ game code didn’t actually touch the result.
- Prevent DllImport from non-platform modules in Mono.
- Replace the deprecated
frontend.chrome-dev.tools
URL for profiler. - Fix a few C# scripting bugs, such as
enum
not being correctly serialized, and a server-sideNullReferenceException
issue. - Fix V8 (JS) stack overflows crashing the game instead of raising an error.
- Fix game build switching for second-client (
CL2
) mode - Fix LocalPlayer state bag breaking when a client was rejoining a server after being disconnected, but getting assigned the same player ID.
- Anticheat changes, including the following:
- Fixed a compatibility issue with Windows 7 (closing instantly on launch)
- FiveM: Reimplemented mitigation of ‘SLOD’ peds so that it works on builds other than 1604.
- Note that not all anticheat changes are included in the changelog.
- Rockstar integration fixes:
- Most cases of ‘Timed out waiting for ROS/MTL’, mainly on systems with dual/quadcore CPUs should be gone now.
- We no longer delete the cached Rockstar account when services are down, so no more unexpected Rockstar login dialogs.
- Some fixes in crash reporting:
- FiveM: Fixed a regression introduced in the last release where ‘pool full’ errors instead showed up as a
fmt::v8::format_error
exception. - Support ‘symbolication’ (friendly names, used in server quit messages and advanced error dialogs) for Windows 7/8.1.
- Fixed some cases where the crash dialog itself would crash due to a timing issue.
- FiveM: Fixed a regression introduced in the last release where ‘pool full’ errors instead showed up as a
- FiveM: Asset streaming reliability improvements:
- Reduce download priority for assets that are no longer relevant, such as when moving rapidly across the map.
- Some fixes for hanging when disconnecting from a server, before the main menu gets a chance to show: now we rely less on the streaming engine to succeed for a frame or two.
- FiveM: Prevent custom key binds breaking with a lot of duplicate
RegisterKeyMapping
calls - FiveM: Fix a rare FxDK map compilation issue, and fix key input in FxDK.
- FiveM: A few regression fixes for game build 2545:
- Loading story mode when having last used 2545 no longer crashes.
- ‘NetworkEntityDamage’ game events now contain actual data.
- Misc fixes:
- Mitigations for a relatively rare game hang in Mumble client code.
- When using the optimized ‘OAL’ mode for the Lua runtime, vector results now work correctly.
- FxDK: No more duplicate entries in the project explorer when renaming an entry.
Documentation
Earlier this year we onboarded a new team member who is helping us clean up our documentation efforts. We have already pushed some great new documentation, and more is coming! The repository is now receiving more love and care, and we are aiming to have all pull requests addressed by the end of the month.
Anti-cheat
We’ve recently pushed out some changes to the anti-cheat that should help us get rid of even more cheaters and make the games more enjoyable for everyone.
Said changes led to more than 5,000 users of paid cheats being banned from our platform for 300 days.
We mainly rely on community submissions to get our hands on working cheats, paid or free. (To preserve our anonymity as well as avoiding any sort of account flagging that would prevent us from being able to reverse-engineer those cheats)
If you want to provide us with a known working and undetected cheat, please send an email to abuse@fivem.net with the following information:
- Archive containing the cheat executables
- Name of the cheat
- Where did you get it (Discord server, website, Youtube video, …)
- NEVER USED license or account + instructions on how to activate the license (for paid cheats)
RedM
While RedM is more of a niche game, we’re happy to say that we’re observing a slow but steady growth! RedM is now nearing 200,000 unique players and peaked at over 3000 concurrent players over 450 servers
Have any ideas on how we could improve the RedM experience? Have cool any projects you want to show off? Reach out and let us know!
Website update
We’ve updated the RedM site to align it with our other web-facing content - you’ll notice it’s now much more similar to the FiveM site in design. We’ve kept it simple for the time being as we’re working on expanding both of the core websites. Make sure to check it out!
Platform Stability
Downtime for any game is painful for everyone involved - both us at Cfx.re, and of course, the players. While we have already been able to make great improvements, we’re still not done. Some weeks ago we kicked our projects to improve stability into higher gear, and we are going to continue improving it for the foreseeable future.
Establishing more resilient infrastructure
February saw us onboarding a new team member to help improve the core infrastructure that runs our services, including a full refresh of the cluster powering it all. Currently, we are testing different providers to figure out which one we would like to go with, and we are hoping to conclude this testing soon. After we determine the primary provider we will start working out a timeline to share with all of you. Hopefully, this should be ready in the next monthly update.
Another big part of increasing the resiliency of our infrastructure is simply better monitoring and alerting. We are making tweaks to some of our alerts to be able to catch some issues faster, and to be able to catch issues we haven’t seen previously.
In the end, we are aiming to have an infrastructure that can more reliably take a hit and still keep going without anyone noticing. Our most glaring issue right now is DNS, which often leads to a ‘trail’ effect of what would otherwise be an outage no one would have noticed. Anyone on heavily cached DNS resolvers, often those ran by consumer ISPs, suffer for longer than others.
Outages
We’ve had a number of outages already this year, and we understand that this is incredibly frustrating for everyone, including us. To touch more on what was mentioned in the previous point, our most glaring point of failure is currently DNS.
Currently, our infrastructure has its ingress through Cloudflare which is working great for us - and one of the standard ‘big name’ ingresses in the Kubernetes space behind it. However, the flimsy part here is that our infrastructure is currently not homogeneous, is spread across multiple providers in an attempt to mitigate single-homed downtime, and has grown organically with the platform. With this in mind, we currently use a component named external-dns to handle our DNS - and it has somewhat strange handling of DNS records for Cloudflare.
Whenever one of our ingress controllers suffers a minor outage (be it a few seconds or just a few minutes), the DNS is removed from Cloudflare and re-added. If we are unlucky, this change is cached by ISPs around the world and you get the 6: couldn't resolve host: x.fivem.net
that some have faced in recent times. This fixes itself automatically within an hour or so, but is still not ideal.
We’re working on better solutions that we will deploy with our new production infrastructure in the future, and we are hoping to maybe even deploy it on the current cluster if we can find a safe way to do it.
We hear you. Outages are incredibly annoying, and we want everyone to be able to enjoy the experiences on the platform. More updates pertaining to outages and the infrastructure will be shared as time passes.
txAdmin
Last month we released the v4.13 update, here are some highlights from the changelog:
- Core: Improved web performance (over 30%!) and resiliency against DoS;
- Core: Added the reason for the
playerDropped
events in server log; - Menu: Added the
txAdmin-menuAnnounceNotiPos
convar to be able to control the announcement position; - And many bug fixes: particle effects on wrong players, invincibility during NoClip, not being able to revoke bans (broken IDs) and more!