Jump to content

Recommended Posts

Hi all,

 

Some may remember a thread I created last year announcing a tool I created called the Arma Preset Creator, this thread has since been deleted as I thought to re-announce the latest updates and changes.

The application was originally hosted in Azure, which I decided to migrate away from several weeks back, and I took this as an opportunity to recreate the application in Angular 7 as a learning experience, with a backend API.

 

logo.png

What is the Arma Preset Creator?

I play with a pretty small community of players who often gain new players, some of those players a have a good technical understanding of PC's and using them - they are quite proficient, while others are not so much and therein lies a problem when an already simple process of subscribing to Steam collections and creating Arma 3 launcher presets isn't as simple as you'd think. Sometimes it can take 1-2 hours to get people up and running because they've either over or under subscribed to mods or they're running drifted presets.

 

We used to tackle this by exporting our own presets and sharing them via TeamSpeak file browser, but that's a very manual job which has to be done every time there is a change to the server or client mod list, and so with that I thought "Wouldn't it be great if people could dynamically fetch presets based on the current collection state", thus the creation of a very simple application happened.

 

This tool is written in both C# and TypeScript using the Angular 7 framework (though compiled to JavaScript), if you believe in the Richardson Maturity model for REST API's; I'd say this is at Level 2 with HTTP Verbs and Resources.

 

Capabilities

Generate Arma presets based on the following

  • Workshop Collections
  • Workshop Missions with mod dependencies
  • Mods with dependencies

 

Usage

 

Consumers:

What this does is simple,

  1. You enter a workshop item ID from the Steam Workshop
  2. The Preset Creator contacts the Steam API to fetch the workshop item details, and its dependencies (using ISteamRemoteStorage)
  3. The Preset Creator then renders a new Arma 3 HTML Template file and downloads this to your PC

 

For typical/daily end users, you can access this tool via the website here. You will get to see why I work as a backend software engineer, rather than a frontend web developer.

 

Developers:

Previously this application was entirely written in C# and did not expose any API, however with the recent transition to Angular I decided to expose the API for any communities who wish to integrate this functionality on their own websites for ease of use.

 

You can find a developer reference guide here, via Swagger. The API exposes two operations, one which retrieves the Steam workshop item information and the second operation is what generates the Arma 3 launcher preset file where you pass in the previously retrieved Steam workshop item details.

 

At the time of creation, it didn't make too much sense to me to merge both of these operations in one which takes the collection Id and generates the preset, but I'm always happy to add such an operation if people think it's better.

 

URLs:

Arma Preset Creator

Arma Preset Creator Developer Reference

 

Privacy Notice:

The API will log the Steam workshop item ID's used to generate presets, this is entirely to track usage statistics and also see the diversity between the types of workshop items which this application is used for.

No personally identifiable information is, nor will ever be logged with this application, no cookies are used, and no ads will ever run on the website.

 

Changelog:

 

[02/02/2019]:

  • Added HTTPS

[12/12/2018]:

  • Added support for workshop items whose dependencies contain dependencies.
    • Gracefully, duplicates will be filtered at request time so only unique items will be pulled back which is results in lighter load on the Steam Web API
  • Added integration tests (non client facing) to ensure quality and consistency with the API response when refactoring any of the underlying code.
    • Tests added for the scenarios where a workshop item has
      • No dependencies
      • Top level dependencies
      • Nested dependencies (The request resource has a dependency who also has dependencies)
      • Nested dependencies with duplicates (The request resource has a dependency who also has dependencies, some of which are duplicated in the parent resource)

[11/12/2018]:

  • Added some error handling around workshop items which have no children dependencies, this will be rejected as there is no need for this utility to create a preset for a single mod without dependencies.
  • Mods with dependencies will now generate correct presets, whereas previously the parent mod was not included in the final preset file.
  • API reference has updated with a breaking change removing the ArmaPresetRequest and instead passing the SteamWorkshopItem object back into the Arma Generate Preset operation. I will add semantic versioning in the future to protect developers against breaking changes.

[10/12/2018]:

  • Presets can now be generated from missions and other workshop item types which have dependencies
    • Workshop item dependencies which no longer exist on the Steam Workshop will be ignored/excluded from the generated preset, and also will not return from the '/api/steam/workshop/publisheditems/{publishedItemId}' operation
  • As this application has been released, I have obsoleted (rather than removed) the '/api/steam/collections/{collectionId}' operation, developers should now use '/api/steam/workshop/publisheditems/{publishedItemId}'
  • Like 1
  • Thanks 2

Share this post


Link to post
Share on other sites

Idea is good but can you create a preset based on a scenario's mod requirements? I hate having to hunt down and create a preset just to play a couple of missions, each with their own presets. That would save a lot of time.

Share this post


Link to post
Share on other sites
2 minutes ago, Valken said:

Idea is good but can you create a preset based on a scenario's mod requirements? I hate having to hunt down and create a preset just to play a couple of missions, each with their own presets. That would save a lot of time.

 

Unfortunately, that functionality isn't implemented, mostly as I'd never thought of that - I'll have a look at how to handle this and differentiate between collections and missions.

 

The only problem I anticipate is where to draw the line in terms of mods if one mod has dependencies, although this is something which the Launcher will alert you about and take of.

 

Can you provide a mission URL which I could use as an example?

Share this post


Link to post
Share on other sites

Here is one example of a popular and great mission:

 

https://steamcommunity.com/sharedfiles/filedetails/?id=1517530157&searchtext=

 

You can check the author for more but he is a not a crazy mod user.

 

This one is just insane:

 

https://steamcommunity.com/sharedfiles/filedetails/?id=1452083550&searchtext=hunted

 

Would be amazing to make a working preset automatically!

 

Share this post


Link to post
Share on other sites
2 hours ago, Valken said:

Here is one example of a popular and great mission:

 

https://steamcommunity.com/sharedfiles/filedetails/?id=1517530157&searchtext=

 

You can check the author for more but he is a not a crazy mod user.

 

This one is just insane:

 

https://steamcommunity.com/sharedfiles/filedetails/?id=1452083550&searchtext=hunted

 

Would be amazing to make a working preset automatically!

 

 

Update

You can now generate presets from missions, and general workshop items which have dependencies. - Main post updated to reflect this

 

Any mods in the dependencies which are no longer available on Steam will be ignored from the generated preset.

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Updated:

Added some error handling around the creation of a preset where the workshop item is a single item with no dependencies, for this you should just use the Arma 3 launcher to create the preset - it's a single item and has no complexity behind it, I have no plans of adding support for this.

 

 

  • Thanks 1

Share this post


Link to post
Share on other sites

Updated:

The preset creator can now handle workshop items whose dependencies also contain dependencies, and can go n levels deep. It will also filter duplicates based on their published file ID.

 

Please report any issues, findings or suggestions in this thread and I will pick them up in due course depending on how severe, feedback also welcomed, I am now focusing on API integration & end to end testing to begin maintaining quality and backward compatibility.

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Change Notice:

I'm going to temporarily switch off the website this Saturday (02/02/2018) at 1800 GMT 0, I've had a certificate sitting on my desktop for a few weeks now waiting to be installed but I've been somewhat lazy, this will enable HTTPS support - there is nothing sensitive handled over the connection but it doesn't harm the SEO for being indexed on Google.

 

I'm also going to update the error handling, in one case I noticed that a single collection seems to cause Steam's Web API to return a 500 status code - there is nothing I can do about this but the preset creator currently leaves this fall through and doesn't return an error to the end user. I'm going to find this again in the logs and report this with Steam's API developers.

 

Update:

HTTPS is now enabled with HTTP being redirected.

Share this post


Link to post
Share on other sites

Change Notice:

I've just today noticed that this was no longer working due to DNS problems. I have migrated away from Azure DNS and this is now up and running again. Azure DNS certainly wasn't the issue, but as the domain was previously registered via Azure; it was time to finally migrate away.

 

This is now up & running again.

  • Like 1

Share this post


Link to post
Share on other sites

The cloud server went offline over the past week, I've just given it a swift & hard kick and it's back online again.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×