State of the Snail: May 11th, 2017


#1

Hello, FiveM community. In this State of the :snail:, we keep you updated on the smaller developments in the FiveM modification ecosystem over the past time span.

We’re hoping to release a SotS periodically, but of course that won’t always succeed.

Let’s get started.

OneSync research

Firstly, some additional research has been done for the next milestone step for FiveM after the completion of FXServer, more on which further in this post - we have now fully documented a list of sync trees used by the RAGE network object manager.

Have a snippet from this list:

[    115031] --- NET SYNC TREE class CAutomobileSyncTree (0) ---
[    115031] class CProjectBaseSyncParentNode (127/0/0)
[    115031]     class CProjectBaseSyncParentNode (1/0/0)
[    115031]         class CVehicleCreationDataNode (1/0/0)
[    115031]         class CAutomobileCreationDataNode (1/0/0)
[    115031]     class CProjectBaseSyncParentNode (127/127/0)
[    115031]         class CProjectBaseSyncParentNode (127/127/0)
[    115031]             class CProjectBaseSyncParentNode (127/127/0)
[    115031]                 class CGlobalFlagsDataNode (127/127/0)
[    115031]                 class CDynamicEntityGameStateDataNode (127/127/0)
[    115031]                 class CPhysicalGameStateDataNode (127/127/0)
[    115031]                 class CVehicleGameStateDataNode (127/127/0)
[    115031]             class CProjectBaseSyncParentNode (127/127/1)
[    115031]                 class CEntityScriptGameStateDataNode (127/127/1)
[    115031]                 class CPhysicalScriptGameStateDataNode (127/127/1)
[    115031]                 class CVehicleScriptGameStateDataNode (127/127/1)
[    115031]                 class CEntityScriptInfoDataNode (127/127/1)
[    115031]         class CPhysicalAttachDataNode (127/127/0)
[    115031]         class CVehicleAppearanceDataNode (127/127/0)
[    115031]         class CVehicleDamageStatusDataNode (127/127/0)
[    115031]         class CVehicleComponentReservationDataNode (127/127/0)
[    115031]         class CVehicleHealthDataNode (127/127/0)
[    115031]         class CVehicleTaskDataNode (127/127/0)
[    115031]     class CProjectBaseSyncParentNode (127/86/0)
[    115031]         class CSectorDataNode (87/87/0)
[    115031]         class CSectorPositionDataNode (87/87/0)
[    115031]         class CEntityOrientationDataNode (87/87/0)
[    115031]         class CPhysicalVelocityDataNode (87/87/0)
[    115031]         class CVehicleAngVelocityDataNode (87/87/0)
[    115031]         class CProjectBaseSyncParentNode (127/86/0)
[    115031]             class CVehicleSteeringDataNode (86/86/0)
[    115031]             class CVehicleControlDataNode (87/87/0)
[    115031]             class CVehicleGadgetDataNode (127/127/0)
[    115031]     class CProjectBaseSyncParentNode (4/0/0)
[    115031]         class CMigrationDataNode (4/0/0)
[    115031]         class CPhysicalMigrationDataNode (4/0/0)
[    115031]         class CPhysicalScriptMigrationDataNode (4/0/1)
[    115031]         class CVehicleProximityMigrationDataNode (4/0/0)
[    115031] --- END TREE ---

FXServer

We’ve been working on a full rewrite of the current CitizenMP.Server .NET server, written in C++, sharing core code with the client, including the resources system. This’ll simplify making changes to the server, as everything will be built from the same codebase.

Here’s a slightly outdated screenshot of chat running from FXServer, albeit with only one player:

A lot of features you’ve always wished for will be first released in FXServer, though there is a long way to go for feature parity:

The much-wished-for MySQL library

Some things have gotten in the way of development of this library, so instead of it being an add-on for the current CitizenMP.Server, it’ll be officially released in FXServer only.

We’re sorry for the inconvenience, however there’s a wide range of alternative data storage solutions - we just don’t want people depending on something that might be in flux or break later on.

A fresher look for the forums

We’ve been tweaking the forums and reorganizing categories to fit the desired direction of the community better.

Also, a few external moderators have been appointed: these are not part of the main CitizenFX Collective, however they have privileges to manage the forums, and have been proven to be… helpful.

At this time, these include @Proportionality, @Havoc and @Deziel0495.

Feedback

We’re still looking for a way to allow the community to provide feedback for the project in a cleaner way, spanning from server developers asking for features to be added to the platform API to players wanting certain base client features - currently it seems some legitimate wishes/concerns get drowned under the typical support questions and a lot of people are unwilling to speak out; if any of you have a better way that you think might work to provide feedback, please do suggest it!

Open code

We’ve been trying to keep the open source repository in sync, however due to some troubles we’ve not gotten around to documenting the repository layout, how to get started and providing a clean build environment for open source contributors.

In addition, issue tracking is currently a bit of a trouble - internally we’re using a Trello board to manage the project, however as this is a SaaS solution, we can not publish this board without revealing the identities of the Collective - and no synchronization solutions seem to exist that would allow us to publish filtered contents of this board instantly.

Statistics

We see a typical server-reported (summing the amount of players returned from the /servers API) player peak of ~2500 concurrent players - using curl and jq you can query this state yourself as well:

$ curl -s https://runtime.fivem.net/servers | jq "[.[] | select(.Data != null) | .Data.clients | tonumber] | add"

Other statistics are still not available as the UI is still manually built and therefore we’ve not reintegrated Piwik tracking - the UI could be a great starting point for open source contributions so we’re looking forward to opening and integrating the UI build into the client build process.

Anything you’d like to hear? Post a reply, or message us elsewhere!


State of the Snail: August 2018
EssentialMode without a SQL
Any news on the new update with mySQL in the base files?
#2

:+1: Good luck with the coding!


#3

release FXserver :rolling_eyes: :stuck_out_tongue:
good job for you mod mp :+1:


#4

Sweet :open_mouth: guess i’ll have to wait for the MySQL changes before starting the server though :S and idea when that may be?


#5

Keep working we supporting you amazing work ! we give more support maybe one day for more slots :smiley:


#6

Can’t wait! Good work guys.


#7

Keep up the good work everyone! Your efforts are very much appreciated by many.


#8

So, OneSync is approach to >32 players?

What is FXServer exactly? Some kind of framework. part of FiveM server base?


#9

Good Work) i want it)


#10

Any update as to when the MySQL changes are coming? Won’t be starting up the server till they have :S


#11

Looks like you know what you’re doing, that’s cool too!

- Like my post please!