Jump to content
coconut

[Release] Sturmovik Server Control

Recommended Posts

I'll have a look at it this evening and let you know how things go. 

 

Thanks again for all the work you do and as a small measure of my (and my Squads) appreciation have started supporting you on Patreon.

Share this post


Link to post
Share on other sites

Eventually got it to build but now can't remember the steps I took to do it, will start over and try to figure out what I did.

 

 

Thanks,

Edited by AKA_Scorp

Share this post


Link to post
Share on other sites

The problem I had was that I had to do very little to get it to build:

 

Open with VS 2017 - build - gives errors

Close Solution

Open with VS 2017 - build - builds successfully

 

 

Share this post


Link to post
Share on other sites

Some update: I'm in the process of cleaning up the project structure of the campaign plugin, using nuget for everything that does not reside in the git repo. Not done yet, but it's going well. I've also put in place an automated build system "in the cloud", but it's not quite working yet.

 

At the moment I don't really have the time to develop and release, and getting that part working automatically will be nice.

Share this post


Link to post
Share on other sites

Hi Coconut,

 

I'm attempting to build the Campaign from source but am getting multiple errors.  Here is an example from the BlocksMissionData.fs file:

 

module SturmovikMission.Blocks.BlocksMissionData

open SturmovikMission.DataProvider (The namespace DataProvider is not defined)
open System.Numerics
open System.IO
open VectorExtension

 

Severity    Code    Description    Project    File    Line    Suppression State
Error    FS0039    The namespace 'DataProvider' is not defined.    Blocks    D:\Neil_Vennard\Documents\Visual Studio 2017\Projects\Coconuts Projects\sturmovikcampaign\Blocks\BlocksMissionData.fs    3    Active
Error    FS0039    The namespace or module 'SturmovikMissionTypes' is not defined. Maybe you want one of the following:
   SturmovikMission    Blocks    D:\Neil_Vennard\Documents\Visual Studio 2017\Projects\Coconuts Projects\sturmovikcampaign\Blocks\BlocksMissionData.fs    20    Active
Error    FS0039    The field, constructor or member 'GroupData' is not defined.    Blocks    D:\Neil_Vennard\Documents\Visual Studio 2017\Projects\Coconuts Projects\sturmovikcampaign\Blocks\BlocksMissionData.fs    27    Active

 

When I check on NuGet it looks like all the packages are installed but under references DataProvider and NLog have the yellow Exclamation make.

 

I think if I knew how to fix this part I could correct any other errors and get it working.

 

Thanks

Edited by AKA_Scorp
typo

Share this post


Link to post
Share on other sites

Make sure that the error window does not show intellisense errors, only build errors. Intellisense can be out of whack until a build succeeds.

If it's really build errors, ny guess is that the DataProvider DLL is not properly referenced. You can check by right-clicking on the DataProvider entry under Blocks/References, then choose property. The full path should point to SturmovikCampaign/packages/SturmovikMission.DataProvider.4.2.0.1/...

 

If it's wrong, I'm not sure how to fix that other than delete, check out again, choose "restore packages" (right-click on top node in solution explorer), then check the path again.

Share this post


Link to post
Share on other sites

The DataProvider did not have a path so I deleted it and added a new reference to it and that helped.  I seem to be missing a file called sample.mission, I tried using an old mission file and renaming it but that didn't work. Do I need that file or am I chasing red herrings?

 

 

Share this post


Link to post
Share on other sites

Pull the latest version, it should have all the sample mission files that are needed. Otherwise it’s in packages/sturmovik.dataprovider/ in one of the sub folders. 

Share this post


Link to post
Share on other sites

I found the sample.mission file in \sturmovikcampaign\packages\SturmovikMission.DataProvider.4.2.0.1\content after I restored the nuget packages, I then copied it into each of the app folders where it showed as missing.

 

Then deleted any of the references that had a warning on then and added them as new references. 

 

Saved and closed everything, opened it and then could get a successful build.

 

Thanks for you help pointing me in the right direction.

 

Now onto to Server Controller, wish me luck :)

 

 

Share this post


Link to post
Share on other sites

I'm thinking of using the Campaign Control App instead of the server controller, is there any way to change the port it uses to connect to the the dserver so that I can run more than one instance?

 

Also which commit do you use on you servers?

 

Thanks,

 

 

Share this post


Link to post
Share on other sites
3 hours ago, AKA_Scorp said:

I'm thinking of using the Campaign Control App instead of the server controller, is there any way to change the port it uses to connect to the the dserver so that I can run more than one instance?

It reads the port number from the SDS config file. The location of the sds file is provided in the campaign config file. So yes, it should be able to work with as many instances as you like, but you need to have them in different directories, and each needs their own campaign config file. You would run one Campaign Control App per DServer instance.

 

3 hours ago, AKA_Scorp said:

Also which commit do you use on you servers?

For the campaign, I'm running 1.24.0.0. Not sure of the exact commit, but it should be f7103a7

For SturmovikServerControl, I'm running 1.15.0.0. Here again, not sure of the commit, maybe cd4bc40

 

Note that those versions were built from my PC, they probably can't be built from source by other people. Versions that should build anywhere are the most recent ones, so that's the ones you want to use if you are building from sources. I have however not tested them yet, so there are risks they don't actually work.

 

Are you encountering problems with Sturmovik Server Control? Another user I've been in contact managed to compile after some fixes and help from my part, but got an error during run time instead. I'm curious, because I'm not getting that run time error myself.

 

Also, there should soon be weekly builds, the last touches to make that work should be in place next week.

Edited by coconut

Share this post


Link to post
Share on other sites

I was thinking that it might read the SDS file but though my SDS file had 8992 I could see in the in the app window that that it was trying to connect to 8991.  I have separate  folders setup as you describe so it should work.

 

I'm having problems compiling the last Server Controller was getting Websharper errors, I may go back to it eventually but I kind of like the campaign app. 

 

I did get a version of the Server Controller to compile from about a month or perhaps longer ago.  It runs but doesn't seem to get along with the latest campaign plugin.

 

Great to here about the weekly builds.

Share this post


Link to post
Share on other sites

Compile the 1.24 version of the campaign.  Got it to run both as an app and was able to connect via the server controller (not sure which version).  It generates a campaign starts the server and I am able to connect but there are no objects at the airfields so I can't spawn in.

 

I'm having problems compiling compiling Sever Controller 1.15 in the Api.fs file vectors are not defined.

 

type MapArrow =
        { Start : Vector2
          Tip : Vector2
          Width : Vector2
          Color : Vector3
        }

Share this post


Link to post
Share on other sites

For vector, that’s because system.numerics.vectors.dll must point at the one in packages. Visual studio often picks the one from the OS instead which lacks these types. 

 

If if you cannot spawn it might be because the rcon connection isn’t working

Share this post


Link to post
Share on other sites
10 hours ago, coconut said:

If if you cannot spawn it might be because the rcon connection isn’t working

I also forgot that there is an empty airfield bug affecting StalingradSummer at the moment, so that could be another reason.

Share this post


Link to post
Share on other sites

Your help with the vectors worked, got it to compile and it looks like the server control is working.

 

I'll recompile the campaign and try a different map, pretty sure I was using the Stalingrad Summer.

 

Thanks

Share this post


Link to post
Share on other sites

OK got it all working and running missions, thanks for all your help and work.

 

It mostly came down to opening Nuget and doing a restore.  Close and then open the project.  Fix any missing references and files.

 

Close and open the project and then build if there are no errors.

 

 

Share this post


Link to post
Share on other sites

Both our servers seem to be chugging along quite nicely so now I am getting to the point where we might make my own missions.

 

I'm going to start small by adjusting the plane set, so in the plane set files:

  • I presume anything with a # is a comment.
  • What does the "Static: 8" mean?
  • In the vehicles.mission file all the names are lowercase, does that mean that case is not important in the plane set file?

 

Thanks,

 

 

 

Share this post


Link to post
Share on other sites
21 hours ago, AKA_Scorp said:

I presume anything with a # is a comment.

Correct

 

21 hours ago, AKA_Scorp said:

What does the "Static: 8" mean?

8th static plane, see the list at the top of the file

For axis, that's a stuka under a net, for Allies it's a yak1

 

21 hours ago, AKA_Scorp said:

In the vehicles.mission file all the names are lowercase, does that mean that case is not important in the plane set file?

The list of names from vehicles.mission is not the reference. This is the reference, names are between quotes:

 

    member this.PlaneName =
        match this with
        | Bf109e7 -> "bf109e7"
        | Bf109f2 -> "bf109f2"
        | Bf109f4 -> "bf109f4"
        | Bf109g2 -> "bf109g2"
        | Bf109g4 -> "bf109g4"
        | Bf109g6 -> "bf109g6"
        | Fw190a3 -> "fw190a3"
        | Fw190a5 -> "fw190a5"
        | Mc202 -> "mc202"
        | Bf110e -> "bf110e"
        | Bf110g -> "bf110g"
        | Ju87 -> "ju87"
        | Ju88a4 -> "ju88"
        | Ju52 -> "ju52"
        | He111h6 -> "he111h6"
        | He111h16 -> "he111h16"
        | Hs129b2 -> "hs129b2"
        | I16 -> "i16"
        | IL2M41 -> "il2mod41"
        | IL2M42 -> "il2mod42"
        | IL2M43 -> "il2mod43"
        | La5 -> "la5s8"
        | La5fns2 -> "la5fns2"
        | Lagg3s29 -> "lagg3s29"
        | Mig3 -> "mig3"
        | P39 -> "p39"
        | P40 -> "p40"
        | A20 -> "a20"
        | Pe2s35 -> "pe2s35"
        | Pe2s87 -> "pe2s87"
        | Yak1s69 -> "yak1s69"
        | Yak1s127 -> "yak1s127"
        | Yak7bs36 -> "yak7bs36"
        | SpitfireMkVb -> "spitfireMkVb"

Case does not matter.

Share this post


Link to post
Share on other sites

After running the campaign for a week I have noticed that the campaign is not advancing.  I can reset a campaign or restart a campaign, get a new mission which runs great until it comes time to generate a new one when nothing happens.  The server just keeps switching between the two missions it generated originally.

 

I was sure there was something wrong with the server sds file or with the campaign config file and have been adjusting things there to try to fix it. When the controller is running I get all the usual messages about AC at the bases etc so it is communicating with the server.

 

Finally I tried the app without the server controller and that is working fine.  That makes me thing the server controller is the problem not the campaign, any thoughts?

 

Thanks,

 

Just noticed you have a new version, will try it.

Edited by AKA_Scorp

Share this post


Link to post
Share on other sites

Hmm, that's strange, hard to say without seeing the logs. Possibly a permission issue? Are you using a different account to run the controller?

Share this post


Link to post
Share on other sites

I installed the latest builds of the Controller and the Campaign.

 

Using the App it works fine except that it will only connect to port 8991.

 

Using the Controller it will run one mission and then kill the server at the time it is supposed to generate the next mission.

 

In the command window I get a message about "no entries available for suitable extraction" (see image).

 

Controller Config File:

 

Quote

  - Name: Expert
      Description: AKA Expert Server
      ServerHostname: localhost
      ServerPort: 8992
      Login:
      Password:
      GameDirectory: D:\BoXCampaign\IL2_Expert\
      CampaignPluginAssembly: D:\BoXCampaign\Campaign\Campaign.dll
      CampaignPluginType: Campaign.ServerControlPlugin.Plugin
      CampaignPluginConfig: D:\BoXCampaign\Campaign\Config.yaml

 

Campaign Config File:

 

Quote

Campaign:
    PlaneSet: auto
    StrategyFile: StalingradAutumn.Mission
    UseTextMissionFile: false
    Seed: 42
    WeatherDayMaxOffset: 7
    MaxFires: 20
    MaxBuildingIcons: 10
    MaxConvoys: 8
    MaxAttackers: 4
    MaxPatrols: 2
    MaxCapturedPlanes: 0
    MissionName: DynCampaign
    MissionLength: 60
    ColumnSplitInterval: 60
    MaxSimultaneousConvoys: 2
    MaxSimultaneousFerryFlights: 2
    MaxVehiclesInBattle: 15
    BattleKillRatio: 5
    MaxBattleKillsRatioByPlayers: 1.0
    MaxBattleKillsRatioByAI: 0.25
    OutputDir: D:\BoXCampaign\Data_Expert
    ServerDataDir: D:\BoXCampaign\IL2_Expert\data
    ServerBinDir: D:\BoXCampaign\IL2_Expert\bin
    ServerSdsFile: sds\campaign.sds
    InstallPath: D:\BoXCampaign\Campaign
    PurgeLogs: true
    ThinkTime: 60
    DesiredProduction: 300.0
    PlaneProduction: 2000.0

    Briefing: |
        This mission is part of a dynamic campaign where the events from one mission affect the following missions.
        
        Objectives: Truck convoys, tank columns, field camps (look for dugouts), factories, parked planes, anti-air cannons.
        
        Each region has a 'life bar' indicating the storage health (colored bar) and current supply level (color of the bar).
        If the bar is red, the region is poorly defended. If it's green, it's fully defended.
        If the bar is short, it means storage is damaged. The shorter the bar, the mode damage.
        
        Some regions have numbers beside their name: these represent the number of tanks in that region at the start of the mission.
        
        Planes can be transferred from one airfield to another, but the result will only be visible in the next mission.

    
    WebHook: ""
    MaxFriendlyFireEvents: 10
    FriendlyFireBanDuration: 0
    MaxNoobScore: 5.0
    NoobBanDuration: 0

 

Startup.cfg

Quote

[KEY = system]
      bin_log_folder = "binlogs\"
      chatlog = 0
      debug_info = 1
      debug_render = 0
      dlgbox_sky = 0
      gamelog = 1
      keep_binary_log = 1
      mgenlog = 1
      mission_text_log = 1
      modes = 0
      playoffline = 0
      reset_configs = 0
      show_net_skins = 1
      skin_dir = "graphics\Skins\"
      text_log_folder = "logs\"
[END]

 

On my test server I'm an admin and on the main server I gave the login full privileges.

 

When resetting a campaign it does delete the all the log files.

 

Maybe it's something obvious that I'm not seeing but I'm not getting anywhere with it.

 

Grateful for any insights.

 

Almost forgot, when the window opens I get an error unable to open fsplickler.pdb

 

 

 

error.jpg

Edited by AKA_Scorp

Share this post


Link to post
Share on other sites

Hi Coconut,

Seeing the stuff going on here I thought I'd continue with my troubles here so it could perhaps also serve others?

I got everything built, managed to run the SetPasswd.exe which successfully inserted the password hash in the config file.

However, starting the SturmovikServerControl.exe, I get this:

 

 

2018-08-05 13:45:11.7989|ERROR|<StartupCode$SturmovikServerControl>.$SturmovikServerControl.ServerState|Failed to load type 'Campaign.ServerControlPlugin.Plugin' from assembly 'C:\Users\jung\Documents\Coconut\Campaign\Bin\Campaign.dll': 'method not found "Microsoft.FSharp.Core.FSharpChoice`2<CampaignServerControl.Api.ScheduledTask,System.String> CampaignServerControl.Api.CampaignServerApi.StartOrResume(System.String)".'
2018-08-05 13:45:13.7677|INFO|<StartupCode$SturmovikServerControl>.$Main|main: Listening on http://localhost:8083/
2018-08-05 13:45:13.7677|INFO|<StartupCode$SturmovikServerControl>.$Main|main: Ban checker started
2018-08-05 13:45:14.8285|ERROR|RConClient.Client|Failed to connect to game server: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte 127.0.0.1:8991  (translates to: could not establish connection, target computer refused)

 

I can connect to the server controller in my browser, and see a window with 2 tabs, "IL2 Sturmovik server control", and "Primary dserver instance", both with a username and password form. However I can't log in in any of the forms, and I am afraid that could be related to the missing method above?

 

Any help greatly appreciated, thank you!

 

 

edit: this is my SturmovikServerControl,yaml (login data deleted):

 

Server:
  ControllerUrls:
    - http://localhost:8083/
  AdminPasswordHash: ...removed
  Instances:
    - Name: Primary DServer instance
      Description: trying to get a Coconut campaign running
      ServerHostname: localhost
      ServerPort: 8991
      Login: removed
      Password: removed

      OffLoadServerInput: ReqKill
      GameDirectory: C:\il2\
      ChatLogDirectory: 
      LogDirectory: 
      ChatLogUpdateEnabled: false
      CampaignPluginAssembly: C:\Users\jung\Documents\Coconut\Campaign\Bin\Campaign.dll
      CampaignPluginType: Campaign.ServerControlPlugin.Plugin
      CampaignPluginConfig: CampaignConfig.yaml

Edited by Nocke

Share this post


Link to post
Share on other sites

That happens when you run an old version of ssc with a new version of the campaign, or vice versa

Share this post


Link to post
Share on other sites

Things have gone downhill since my post.  I'm going to reinstall everything and give it another try.  After that, if I am still having problems I will work backwards trying different versions together.

 

Thanks

 

Nocke when you connect to the server try localhost:8083/status

 

 

Share this post


Link to post
Share on other sites

Coconut, is there a problem making the mission short, maybe 15 mins to make troubleshooting faster?

 

 

Share this post


Link to post
Share on other sites

@AKA_Scorp the error about fspickler.pdb is not important. No idea why it’s not able to process the logs. 

You need to look at the detailed logs, available in event viewer after you create the event source. I’ll send you the info on how to do that tomorrow. 

Share this post


Link to post
Share on other sites

I think I have it running smoothly with Server Controller V1.15.0 and Campaign V1.24.

 

On the download page not the latest zip file one down for both Controller and Campaign.

 

 

Share this post


Link to post
Share on other sites

I fixed a bug with the log extraction today. Maybe that's what causing problems in your case @AKA_Scorp

Share this post


Link to post
Share on other sites
On 8/5/2018 at 3:23 PM, coconut said:

That happens when you run an old version of ssc with a new version of the campaign, or vice versa

 

On 8/5/2018 at 5:45 PM, AKA_Scorp said:

 

 

Nocke when you connect to the server try localhost:8083/status

 

 

Thx both! I am a step further now and will have a rest again before tackling the remaining stuff :)

Share this post


Link to post
Share on other sites
10 hours ago, coconut said:

I fixed a bug with the log extraction today. Maybe that's what causing problems in your case @AKA_Scorp

 

Thanks, I'll have a look at that later in the week.

 

 

Share this post


Link to post
Share on other sites

Hi there,

Had another little session on this today.

Managed to connect from the web interface to the server controller. Scheduled a mission, it was able to start the dserver, which also found the correct sds-file.

However it seems no missions are generated? To be sure I did not just set the path to the mission files (DynCampaign_1,2) wrongly, I searched my entire harddisk, to no avail.

 

Any hint is greatly appreciated, thx in advance!

Share this post


Link to post
Share on other sites

Which entry did you choose, Nocke? First time you would need to do "Campaign reset", to create the initial campaign state. From then on it rolls on its own. If you stop SSC and DServer, to continue the mission choose "Campaign".

Share this post


Link to post
Share on other sites

~S~

 

Ive gotten everything up n generating, with the sample missions. IE Stalingrad, Vluki, etc

But now Im trying to create my own testing map/campaign, and Im getting an error I just cant figure out.

 

List 2 is 10 elements shorter than list 1.

LOL doing a lot of counting...cant figure out what the "lists" are/is 

 

Help really appreciated

Thanks

IIJG1_Schulte "Moxy"

Edited by II./JG1_Schulte

Share this post


Link to post
Share on other sites

Nice to see people building new campaigns!  There is a tool “WorldCheck” to validate campaigns. You should try it in it’s latest version, its error message might be more helpful. The tool is part of the same code base as the campaign plugin. 

 

EDIT: to use, drag and drop the mission file on WorldCheck.exe, or run in CMD and pass the path to the mission to WorldCheck, or right-click on the mission and choose "open with...", and select WorldCheck.exe

Edited by coconut

Share this post


Link to post
Share on other sites
On 8/8/2018 at 9:08 PM, coconut said:

Which entry did you choose, Nocke? First time you would need to do "Campaign reset", to create the initial campaign state. From then on it rolls on its own. If you stop SSC and DServer, to continue the mission choose "Campaign".

I did not check that small button in front of "campaign reset".

 

On step further now, thx!  😀

Hallelujahhhhhhhh!!!!!!!!   It started !!!!!!!!

Share this post


Link to post
Share on other sites

... of course the questioning continues .... may I ask, Master, how you send the logs and messages to the discord server?

Unless you do not want to give that away, which would be perfectly understandable ...

... and a perhaps related question: after the first mission ends, it stops with the message "Execution aborted due to failure: No entries found suitable for result extraction".

Maybe just because nothing happened, because I set the mission time to only 15 minutes for testing, and did not do anything?

 

Share this post


Link to post
Share on other sites
46 minutes ago, Nocke said:

how you send the logs and messages to the discord server?

 

You need to create a webhook for the channel you want to publish to (done in Discord). Then put in the webhook URL in the config file for the plugin, entry "WebHook".

 

49 minutes ago, Nocke said:

Maybe just because nothing happened, because I set the mission time to only 15 minutes for testing, and did not do anything?

Stupid question: Did you enable logs? If yes, you also need to let the mission run in DServer for at least 90% of the mission duration specified in the campaign config.

Lack of activity should not be a problem, at least not in the most recent build.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...