Fulqrum Publishing Home   |   Register   |   Today Posts   |   Members   |   UserCP   |   Calendar   |   Search   |   FAQ

Go Back   Official Fulqrum Publishing forum > Fulqrum Publishing > IL-2 Sturmovik

IL-2 Sturmovik The famous combat flight simulator.

Reply
 
Thread Tools Display Modes
  #1  
Old 12-25-2013, 04:59 AM
TheGrunch's Avatar
TheGrunch TheGrunch is offline
Approved Member
 
Join Date: Oct 2009
Location: United Kingdom
Posts: 843
Default New server controller - any input?


I've been writing a server controller, mainly because I wanted a controller that offered a simple way of running a DCG campaign for just a few people, but also as an exercise to introduce myself to writing programs in Java, and later in Clojure.
I actually wrote a lot more functionality in pure Java before I became frustrated with the awkward multithreading features and started rewriting the whole thing from scratch a few days ago.

This is what is working so far:
  • Written in Java/Clojure so very portable - DCG features will only work on Windows though.
  • Direct access to the remote server console via a TCP socket connection to view output and enter commands.
  • Intelligent parsing of console output - at present difficulty settings are parsed from the server at runtime before they are loaded into the table in the Settings page. This means that I won't have to rewrite the program every time DT add a difficulty setting.

Things that were tested in the Java-only branch and shouldn't take me too long to restore:
  • Local mission selection - when you are running the server on the local machine, you can simply select the server .exe and the .mis file and you will be able to load the selected mission.
  • Remote mission loading using direct path entry - when you are using the server remotely you can enter a path for the mission to load.
  • DCG integration - the Next button generates a new DCG mission and when complete, loads the mission. This can only be done when the server is running locally or when the server directory is accessible over a network share.
  • Easily editable .ini configuration file.

Planned features:
  • Mission cycle configuration.
  • In-game control via chat - enter commands on chat to control the server.
  • Simple pilot management. I don't envisage this being extremely detailed.

Features I'm not planning to write:
  • Statistics.

Anybody have any suggestions/input/comments?

Last edited by TheGrunch; 12-25-2013 at 05:03 AM.
Reply With Quote
  #2  
Old 12-25-2013, 02:41 PM
IceFire IceFire is offline
Approved Member
 
Join Date: Apr 2008
Posts: 1,879
Default

Sounds pretty good

Do you intend to implement any target features like target circle percentage or target counts (x cars, x tanks, x static aircraft, etc.).

FBDj development seems to have ended and a new daemon to take its place some day might be nice. Not to freak you out
__________________
Find my missions and much more at Mission4Today.com
Reply With Quote
  #3  
Old 12-26-2013, 10:02 AM
TheGrunch's Avatar
TheGrunch TheGrunch is offline
Approved Member
 
Join Date: Oct 2009
Location: United Kingdom
Posts: 843
Default

Not initially, as parsing the eventlog is a much bigger job than just chat and the server console due to the variety of different event types, but I wouldn't rule it out!

Sent from my ST23i using Tapatalk
Reply With Quote
  #4  
Old 12-27-2013, 04:02 PM
TheGrunch's Avatar
TheGrunch TheGrunch is offline
Approved Member
 
Join Date: Oct 2009
Location: United Kingdom
Posts: 843
Default

Things are going well, mission state is now parsed from the server console output and the UI is updated to suit the current state:

An .ini configuration file is now generated and parsed back into the controller.



Next on the list:
  • to design and implement the mission loading UIs for single, cycle and DCG modes
  • to make the controller actually do something with the bit of information that it gets back:
    Code:
    [:file [:mission [:setting Mode single]] 
           [:server [:setting Port 21003] [:setting IP 192.168.1.254]]]
Reply With Quote
  #5  
Old 01-06-2014, 08:18 AM
TheGrunch's Avatar
TheGrunch TheGrunch is offline
Approved Member
 
Join Date: Oct 2009
Location: United Kingdom
Posts: 843
Default

Still putting a few hours into this every couple of days. I don't outwardly have anything much to show for it though, other than silent loading & saving of properties when the program is closed & opened.
Recent changes have involved migrating to a different packaging method (JavaFX Ant tasks instead of JavaFX Maven plugin) a different build tool (Leiningen instead of Maven), adopting a license (the Eclipse Public License), performance improvements by the use of a lot of type hinting to eliminate uses of the Reflection API at runtime, and a lot of refactoring as I've learnt more about Clojure in general. I've also eliminated a lot of niggles in the way I was manipulating the difficulty settings table control.
Hopefully I can get back to making a mess of my code with new features now that I've spent a couple of weeks tidying it up!
Reply With Quote
  #6  
Old 01-06-2014, 11:37 AM
TheGrunch's Avatar
TheGrunch TheGrunch is offline
Approved Member
 
Join Date: Oct 2009
Location: United Kingdom
Posts: 843
Default

Quote:
Originally Posted by IceFire View Post
Do you intend to implement any target features like target circle percentage or target counts (x cars, x tanks, x static aircraft, etc.).
IceFire, on this topic, and on the more general topic of dealing with in-mission events, what would you say is the most important list of capabilities for a server controller that reacts to events so that I have some idea of where this could go?
Reply With Quote
  #7  
Old 01-18-2014, 04:15 AM
TheGrunch's Avatar
TheGrunch TheGrunch is offline
Approved Member
 
Join Date: Oct 2009
Location: United Kingdom
Posts: 843
Default

Still chipping away at this when I can. As part of optimising the program I managed to remove all outstanding text parsing bugs that I was experiencing and reduce memory usage by nearly 100% from nearly 200MB to under 100MB!
I have also substantially decoupled the JavaFX interface from the application logic and documented the program thoroughly.
It's now potentially possible for someone to write (for example) an Android app which makes use of this application's logic but which provides a different UI with extremely minimal alterations to the existing code.
Now I really do need to stop messing about and get it to actually load missions!
Reply With Quote
  #8  
Old 01-30-2014, 10:56 PM
TheGrunch's Avatar
TheGrunch TheGrunch is offline
Approved Member
 
Join Date: Oct 2009
Location: United Kingdom
Posts: 843
Default

I've made a lot of progress, but the last week and a half has been eaten up struggling with a really aggravating bug:

Mission paths from the text field work 100% of the time, first time, every time.
Mission paths from the file chooser fail the first time, every time, and work after that. I have actually gone as far as booting up Wireshark to take a look at what is actually being sent via TCP, and the data sent in both cases is identical, right down to the line ending characters.

Completely baffled!
Reply With Quote
  #9  
Old 03-24-2014, 05:42 PM
TheGrunch's Avatar
TheGrunch TheGrunch is offline
Approved Member
 
Join Date: Oct 2009
Location: United Kingdom
Posts: 843
Default

As mentioned in the Daidalos team subforum, I have now solved the problem above (turned out to be network share configuration rather than a code defect).

Now working on the mission cycle scheduler!
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 01:44 PM.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © 2007 Fulqrum Publishing. All rights reserved.