APX: RF2 server made easy

Discussion in 'Component and Mod Packaging' started by guenther, Oct 29, 2020.

  1. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
    instinkt likes this.
  2. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
    Small set of updates:

    TL;DR: APX wizard can now build updates for tracks also

    - Updated https://wiki.apx.chmr.eu/doku.php?id=servers.json to feature the new tracks_path property
    - Added command https://wiki.apx.chmr.eu/doku.php?id=commands:build_track to upload track component files
    - Added article https://wiki.apx.chmr.eu/doku.php?id=track_updates
    - Updated https://wiki.apx.chmr.eu/doku.php?id=example_event_civic_2013_botniaring
    - Updated https://wiki.apx.chmr.eu/doku.php?id=event_configuration
    - Updated https://wiki.apx.chmr.eu/doku.php?id=example_event_bmw_m8_gte_custom_liveries_autopolis(edited)
    - Updated https://wiki.apx.chmr.eu/doku.php?id=servers.json to feature some descriptive texts about the meaning of several paths
     
    instinkt likes this.
  3. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
    - Removed pywinauto calls when killing a server
    - Removed unused functions
    - Removed Serverstatustext model as it's bloating the database
    - Added field status to server, which will feature the last status or null
    - Fixed https://github.com/apx-simracing/issues/issues/41
    - Removed field public_ip as it serves no purpose at the moment
    - Removed status_failures counter as it serves no purpose anymore (as the reciever does pushing instead of server side pulling)
    - Added option to control the mod version (default is 1.0{randomstring})
    - Added hook onStateChange(descriptor: str, args:str) https://wiki.apx.chmr.eu/doku.php?id=hooks#onstatechange_eventstr_argsstr
    - Added increased verbosity for deployments with human-readable state (see image https://media.discordapp.net/attachments/800998845097705512/868773943098617916/unknown.png)
    - Removed tenancy (visible in field 'user') as it makes no sense at the moment
    - Removed server locking (visible as field 'pending action') as the new state field should be sufficient to show the user the server state
    - Removed action unlock (if stuck) from server list actions
    - Add --admin flag to reciever if you need to run it as an admin user (use with extreme caution)
    - Fixed an issue causing the components not to be imported
    - The PUBLIC_URL is now set per default
    - Fixed an issue causing the reciever to not work out of the box (old mod template)
    - Added the Civic BTCC 2013 to the common component list to allow the default event to be added
    - Added default event to demo data
    - The default MEDIA_URL is now http://localhost:8181
    - Added uploads.bat to spawn a local webserver to serve http://localhost:8181 to allow downloading of files
    - Added stub for new installation guide https://wiki.apx.chmr.eu/doku.php?id=setup_screenshots
     
    SLK likes this.
  4. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
    An upcoming update will implement servers from scratch. This means you click on "create server from scratch" and a new server get's created automatically. You don't have to configure anything on files as the rest of the configuration can be handled with the web interface.
     
    SLK and Hazi like this.
  5. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
    - You don't have to add JSON blobs anymore in events
    - Added server settings damange multiplier, admin password, rejoin, rules, fuel and tire multiplier, failures, max clients, max AI clients, upstream, downstream, force real name, replays on/off, webui_port, driving aids, race time scale to events
    - The wizard event page can now control which ports should be listened to (WebUI/ Sim Port/ HTTP Port)
    - If a server is deleted and was created by APX, the files will now be also removed (this requires watch.bat to be running)
    - Added field is managed to list to show which servers are actually generated with APX
    - Added proper port checking on the reciever
    - If APX creates a server from scratch, the keys are automatically collected
    - When APX creates a server, it will add random ports to it.
    - Moved ports from event to server
    - Added check to find out if ports on a host are already allocated by another rFactor server
    - I updated the installation manual https://wiki.apx.chmr.eu/doku.php?id=setup_screenshots as I think the managed installation of servers will now become the default within APX. Starting now only the wizard download is required to get started, the reciever can still be downloaded, but it's only meant for advanced setups now.
    - Fixed an issue when a component has e. g. version latest-even, but the only version available is 1.13. This would cause the deployment to fail. Now the reciever will fall back and use the only available version.
    - The script behind watch.bat will now reset the server status, if needed
    - The script behind watch.bat will now kill the server if the scripts recieves a CTRL+C to be aborted (if the dedicated server is running, it won't be killed)
    - If the download of the reciever fails, abort the deployment and set a state
    Common component updates (https://wiki.apx.chmr.eu/doku.php?id=common_components)

    This updates means that this components/ mods are preconfigured within the wizard. You can directly utilize them in your events

    - Added the Tatuus vehicle family
    - Added the BMW M4 Class 1
    - Added Stock Car vehicle family (2015, 2018, 2018x)
    - Added Formula Pro
    - Added BTCC NGTC vehicle family
    - Added URD GT500 HSV010GT and SC430
    - Added Aston Martin Vantage GTE
    - Added Corvette C8R GTE
    - Added Portland 2019
    - Added Botniaring 2017
    - Added Brianza 1966
    - Added Lime Rock Park 2021
    - Added Monte Carlo 1966
    - Added Malaysia 2007
    - Added Indianapolis 2020
    - Added Silverstone 2016
    - Added Spa 2020
    - Added Circuit d'Azur
    - Added Monza 2021
    - Added Longfort 1967
    - Added support to add date values into mod and package versions. E. g. "%d%m%Y" will be interpreted as "30072021". This is especially useful if you build your package multiple times with an explicit version label. The placeholder values are available on https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes
    - Merged watch.bat uploads.bat into wizard.bat (you only need that to start
    - The wizard is now per default in non-debug mode
    - Updated https://wiki.apx.chmr.eu/doku.php?id=setup_screenshots accordingly
    - The reciever has now the get-pip.py built in (fixes the previously mentioned issue on Windows Build 1607)
    - Added settings MEDIA_PORT, STATIC_PORT, WIZARD_PORT, LISTEN_IP to the wizard app
    - Updated https://wiki.apx.chmr.eu/doku.php?id=setup_wizard accordingly
    - Updated the settings template to represent the new content
    - Important: The wizard.bat script now occupies three ports: 8000, 8282 and 8383 (WIZARD_PORT, MEDIA_PORT, STATIC_PORT in settings.py)
    - The MEDIA_PORT and STATIC_PORT settings are required to access your uploads properly and serve the assets for the admin interface
     
    SLK likes this.
  6. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
  7. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
    I added some concurrency updates for scenarios where you e. g. other multiple APX wizard instances for multiple organisations on the same host machine. In this scenarios, it's important to limit resources allocated by the organisations to make sure they don't overbook the server. This could be especially useful if you are offering server hosting. - Added property steamcmd_bandwith to the server view - Added settings MAX_SERVERS, MAX_STEAMCMD_BANDWITH, MAX_UPSTREAM_BANDWITH, MAX_DOWNSTREAM_BANDWITH. You have to add these with following defaults within your settings.py if you are updating:
    MAX_SERVERS = None
    MAX_STEAMCMD_BANDWITH = None
    MAX_UPSTREAM_BANDWITH = None
    MAX_DOWNSTREAM_BANDWITH = None
    - MAX_SERVERS limit the overall amount of servers to be used. If exceeded, no deployment/ server start/ stop action can be done anymore - MAX_STEAMCMD_BANDWITH defines an overall limit over how many bandwith kbit/s all servers together can occupy at once. If set to a value, each server must feature an explicit value for the field steamcmd_bandwith (which is per default only optional) keep in mind that a too low limit can cause downloads to fail because of timeouts - MAX_UPSTREAM_BANDWITH and MAX_DOWNSTREAM_BANDWITH enforce a limit on how many kbit/s up and down all servers together can occupy. If none, there is no limit enforced - Updated https://wiki.apx.chmr.eu/doku.php?id=setup_wizard - Fixed an issue when multiple recievers are building at the same time causing the pkginfo.dat and cmpinfo.dat to be overwritten
    - Added guide https://wiki.apx.chmr.eu/doku.php?id=event_signup on how to run event signups using the APX wizard
    - To avoid that multiple wizard instances deploy servers with colliding ports, I added the options WEBUI_PORT_RANGE, HTTP_PORT_RANGE and SIM_PORT_Range - Adapted https://wiki.apx.chmr.eu/doku.php?id=setup_wizard to feature new settings
     
  8. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
    - Fixed a typo in the bandwidth settings
    - the next release will feature a experimental update allowing to do an in-place update of existing reciever instances as long as this instances are created by APX itself.
    - Updated https://wiki.apx.chmr.eu/doku.php?id=install_updates
    - If a server is created by APX, the URL and secret fields are now hidden
    - Added clearing of the state field to action "reset status (if stuck)"
    - Changed naming for new servers


    Added screencast about the latest version https://www.youtube.com/watch?v=kRXMSpTx5ZU (sound is a bit quirky, sorry)
     
  9. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
    "Some" updates:

    - Fixed an issue causing the log file not displayed in the wizard
    - Added logging in case of the absence of VEH files if no entries are present
    - Created article for troubleshooting purposes https://wiki.apx.chmr.eu/doku.php?id=troubleshooting
    - Fixed an issue where causing the reciever to select VEH files from another version. Builds now using the versions requested(edited)
    - Added an experimental addition, which adds keys on deployment, if present. See https://wiki.apx.chmr.eu/doku.php?id=setup_wizard#add_keys for more details. Basically a present set of ServerKeys.bin and ServerUnlock.bin inside of uploads/keys will be auto-added to each new server. I am not entirely sure if it works reliable, so it's marked as experimental addition. If working, it could help to get some flakiness out of the DLC handling(edited)
    - Added article for versioning info: https://wiki.apx.chmr.eu/doku.php?id=content_versions
    - Future builds will automatically fall back to the latest version on build. If content is marked as official DLC, APX will attempt to use the latest even version if skins are attempted to build
    - Fixed an issue caused newly created servers to fail on build if collection of replays is allowed
    - Added guide for plugin additions https://wiki.apx.chmr.eu/doku.php?id=wizard_plugins
    - The flag do update is now removed. When using entries, the flag will be automatically set to True
    - On save for events, the entries will be checked if the below component has a veh template set. If not, an error is displayed
    - For tracks, the trackfile entries are now linked to a track, not a component.
    - Similar to vehicles, the update flag will set if needed automatically for tracks if needed
    - Added guide on how to realize liveries https://wiki.apx.chmr.eu/doku.php?id=wizard_skins
    - Fixed an issue causing an constraint error when deleting a server
    - The global key injection now only injects a ServerUnlock.bin, other files are ignored (see https://wiki.apx.chmr.eu/doku.php?id=setup_wizard#add_keys)
    - Added an validation when an entry is saved
    - Added help text to event name - Added validator to event name (max length is 21 chars if ADDPREFIX is on, else 26 chars)
    - Remove ComponentFile entity to reduce complexity
    - Hide Group and User in the admin form as they serve no purpose at the moment
    - Fixed an issue causing an error when saving track files
    - The logfile of deployment now informs about the grip files names seen in mod files
    - Added grip_needle to the session view. You can add the filename or a part of it of the desired mod grip file. e. g. "heavy" will tell APX to use the HEAVY.RRBIN file provided by the track itself. Please note: This will only work if the GDB and RRBIN files are within the same mas file.
    - Added a guide with remarks on the session configuration: https://wiki.apx.chmr.eu/doku.php?id=wizard_session
     
    cybe likes this.
  10. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
    Another weekend, another set of updates

    - Fixed an issue causing an constraint error when deleting a server
    - The global key injection now only injects a ServerUnlock.bin, other files are ignored (see https://wiki.apx.chmr.eu/doku.php?id=setup_wizard#add_keys)
    - Added an validation when an entry is saved
    - Added help text to event name
    - Added validator to event name (max length is 21 chars if ADDPREFIX is on, else 26 chars)
    - Remove ComponentFile entity to reduce complexity
    - Hide Group and User in the admin form as they serve no purpose at the moment
    - Fixed an issue causing an error when saving track files
    - The logfile of deployment now informs about the grip files names seen in mod files
    - Added grip_needle to the session view. You can add the filename or a part of it of the desired mod grip file. e. g. "heavy" will tell APX to use the HEAVY.RRBIN file provided by the track itself. Please note: This will only work if the GDB and RRBIN files are within the same mas file.
    - Added a guide with remarks on the session configuration: https://wiki.apx.chmr.eu/doku.php?id=wizard_session
    - Fixed the layout list for Zandvoort_2017: Only available layout is now Zandvoort GP (was accidentally Zandvoort 2020 GP Layout)
    - If you are running an existing wizard version, you need to correct the track with the name "Zandvoort 2020 GP Layout@Zandvoort_2017" accordingly
    - Newly installed instances will apply these change on installation
    - Added a warning if the layout is wrong, see details on https://wiki.apx.chmr.eu/doku.php?id=troubleshooting#grip_is_not_used
    - Fixed an issue causing instances not to be updatable to R73
    - Fixed an issue when using alphanumeric numbers instead of numeric numbers
    - Added an experimental feature to the event to include stock skins from the component the update is build onto
    - Add option to write texts into the server based on a schedule
    - Add option to only apply a schedule if server is in practice mode
    - Extended troubleshooting guide https://wiki.apx.chmr.eu/doku.php?id=troubleshooting
     
  11. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
  12. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
  13. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
  14. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
    cybe and Hazi like this.
  15. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
    The next release will feature an easy mode for new users and removes the need to provide VEH file templates.

    This means that you can create servers and build liveries in servers even when you have no idea how the server works.
     
  16. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
    makan likes this.
  17. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
    The next release 80 is not finished, but a short heads up what is coming:
    • Discord messages are now using embeds to show the content required to connect to the server
    • A server can have it's own discord message hook now
    • Real weather is now supported
    • Added more supported files to the import
    • logo_brand.png and similar files are now supported for livery building
    • Introduced base mods to support updates-for-updates (e. g. if you want to use workshop mods based on other mods)
    • Reduced complexity for entries and entry files massively. They are now included in a new menu point called "liveries"
    • Reworked scheduling
    In sum, R80 introduces more than 85 changes to the APX project. You can find the changelog here.
    R80 will be approx. released in 3 weeks.
     
    Corti and Hazi like this.
  18. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145
    Same message as posted in the discord:

    APX was started as an open-result proof of concept. It was more a challenge to see how far it can get. APX always had a strict condition towards rFactor: Work as expected. This does not mean it's required to work as a user would expect, it is more that I know what is going on and I can build logic around that. But there are some landmines on that way. At the point where the server runs, it's more or less a black box. While I try to workaround a lot of issues, I am again at the point where I need to question my effort in this project.

    I cannot do anything on weird port listening logic (not freeing ports after exit, for example) which somehow seems to have undocumented port margins to be obeyed, keys imploding when steam was running (wtf??), packages packaged that large that steamcmd cannot even download them. How is this supposed to work smoothly? Also, documentation of packaging and download features of the server are just non-existant. I am quite tired of reading endless forum threads to find out that something worked for 40% of the time, but at the end the user needs to fiddle around with /Installed folder trees again.

    I know that an "open" simulation requires a lot more fiddling around (which is not new to me since I am working on Linux for the majority of time) compared to AC or whatever. Even as APX can automate a lot of stuff around the server it does not create any benefit to the user if the user needs hours to get the sim working again.I am talking about the msvc runtimes, that obviously abysmal JSON parser, and, of course, the overlapping packages issues. I don't want to be unfair on this. I don't know any internals and what is going on inside S397, but I only can judge about the artefacts published into steam. When I see that it feels (note the formatting) like any new update needs another hotfix because something was forgotten while doing the released build, I need to question the Q/A process of it.

    I cannot continue as if the platform would to it's job. We have seen this weekend that the nasty side of the plattform(-netcode) is still an issue, for multiple organisations, in parallel (Basically synchronous jumping into the cesspool). And that is stuff APX cannot and will never be able to workaround, as I told, this is a black box. So, as an free-time developer on an open source project, I need to question myself if I need to take consequences for this project out of such news. For a long time, I've been quite loyal to the platform as I know how hard it is to maintain legacy code from another company, especially it is as large as rF2's codebase might be. But after some time, this issues must be addressed and finally fixed. I don't see this. Issues seen over a year ago (https://chmr.eu/matocolori-24-hours-a-technical-view/) are still around. I know that refactoring does not create direct revenue, but neither a non-working product does.

    So long story short. I will turn down activities on this project to the bare minimum for some time. As I already mentioned in https://chmr.eu/easy-easy/, I will focusing on my degree the next months so I will be absent independent of events around rFactor anyways.

    See you around :)

    PS: This is about predictability of an automation, nothing else.
    PS #2: Before anyone misinterprets this. I am not talking about abandoning this project yet.
     
    Last edited: Nov 15, 2021
  19. cybe

    cybe Registered

    Joined:
    Aug 23, 2019
    Messages:
    25
    Likes Received:
    28
    I can understand it. But I wanted to express once again that I would like to thank you for all the work you have put into APX and the attempt to automate everything and make life as easy as possible for an rFactor 2 Server administrator and for your time, all the bug fixes and help. Whenever I can help again, test something or give feedback, I will do so.
     
    atomed, vava74 and Corti like this.
  20. guenther

    guenther Registered

    Joined:
    Oct 5, 2018
    Messages:
    136
    Likes Received:
    145

Share This Page