FS-Force for IL2 1946 ( Modded)

Discussions and general chat

Moderator: RussDirks

Post Reply
Salty58
Posts: 6
Joined: Sat Mar 17, 2012 12:54 am

FS-Force for IL2 1946 ( Modded)

Post by Salty58 » Sat Mar 17, 2012 1:04 am

FS-Force has made a world of difference for me in FSX. I was having a difficult time adjusting my G940. This program changed all that. I also fly IL2 quite a bit and the force feedback in that sim has never been very good, almost a sort of afterthought. Consequently, many users do not bother with force feedback HOTAs at all. To me, some sensory feedback is a must in light of the disadvantages a PC flight sim inherently has. I do not know if it is possible or how much trouble it would take but I would purchase something equivalent for IL2 in an instant. My question is, would you be motivated enough to look into programing something? I would love being a beta tester for you!

RussDirks
Site Admin
Posts: 696
Joined: Sat Sep 13, 2003 1:18 pm
Location: Chilliwack, Canada

Post by RussDirks » Sat Mar 17, 2012 8:16 am

Do you know if IL2 has an API, official or "hacked", by which 3rd party addons can obtain information about the current state of the sim? FS Force needs information about the user airplane, like airspeed, AOA, landing gear configuration, AGL, and many other data items. With FSX you could obtain those easily with SimConnect. Without some way to get that information, it just won't work.
Russel Dirks
Forum Moderator

Salty58
Posts: 6
Joined: Sat Mar 17, 2012 12:54 am

Post by Salty58 » Sat Mar 17, 2012 11:05 pm

IL2 has been greatly modified, which accounts for its longevity. The sim dates from 2001 but has been updated quite a bit since then. The game is designed to be played in Open GL but will run in Direct X also. I am not a programer so I can't really tell you how the game engine communicates or tracks aircraft in motion. There are only a handful of files for forcefeedback, with a file extention of .ffe. I can't open them up in Notepad. The aircraft FM and associated data is contained in a file called a "Buttons" file. This file contains all the data for every aircraft in the game. I do know that the basis of the game is written in Java. There are many others who could probably answer your questions a lot better than I. I usually hang out at:

http://www.sas1946.com

This is where the authorities on modding are. I'm sure that they could answer all your questions.

Jeff

Salty58
Posts: 6
Joined: Sat Mar 17, 2012 12:54 am

Post by Salty58 » Sun Mar 18, 2012 2:07 am

Found some mor einfo on how IL2 communicates. This is a response from Bolox over on the SAS1946 web site:

well IL2's 'game information output' is a bit more limited i think (DeviceLink)
http://forums.ubi.com/showthread.php/50 ... ons-thread
and the devicelink.txt file in your IL2 install should give your guy a good start as to what's possible.
A list of his questions might enable a more detailed answer

Note should be taken of the fact some of the parameters are disabled online in IL2 (without a specific mod ) and this could (read will)
limit it's use somewhat

any use to you?


Below is the content of the devicelink.txt file from my installed game:
The DeviceLink interface is meant to provide the third-party software with the
current condition of the player's aircraft as well as allow an unified method of
connecting alternative operating controls.

DeviceLink utilizes the UDP protocol to transfer the data. In this network, IL2
plays a part of the server. The external application sends a query packet, in
reply, IL2 sends back one (or several) packets containing the query result.
Proposing using the protocol within a single computer, ar a local network, no
data encoding is used and data integrity CRC-checks are not taken. Packets do
contain only symbolic information, the allowed range is (0x21-0x7e). A query
packet is preceded with an 'R' symbol, the resulting packed is preceded with an
'A'; followed by one or several "key"/"value" pairs. The "key" is the number
identifying a parameter. The "value" may be omitted or consist of a number of
copies. The semantics of the "value" depends on the parameter itself. The "keys"
are preceded with a '/', the "values" are preceded with a '\'. If a "value" is
to contain one of these symbols, it is preceded with a '\'. There are two types
of "keys" - (get) requiring to return the value of the given parameter, and
(set) setting the given parameter. The (get) keys are even while the latter ones
are odd. "Get-keys" may contain values for the specified parameter, the answer
packet returns the "value" with the "get-key". "Set-keys" may contain values for
the parameter, but with these the reply contains none.

Ex.:

key 40 - altimeter
key 81 - power
Query packet - R/40/81\1.6e-1
Return the aircraft altitude, and set the power to 1.6e-1.
Reply (answer) packet - A/40\534.3
Returns the current altitude 534.3 meters MSL.

The DeviceLink interface is activated if the [DeviceLink] section is found in the
conf.ini file. Within this section, "port" specifies the number of UDP port for
data transfer.
Using "host" parameter one can specify the address of the network interface in
use.
The "IPS" parameter restricts the allowed client IP addresses. If the "IPS"
parameter is not found in the section, any IP address is allowed to connect.

Ex.:

[DeviceLink]
port=10000
IPS=10.1.1.3 10.1.1.8

Port number is 10000, allowed clients are 10.1.1.3 and 10.1.1.8.



1. Parameters - common.



Version
2 get()
return: string containing DeviceLink version id.

accessible get
4 get(parameter key)
return: parameter key and 1 or 0 - wheither this key has get method
allowed in the current context (I.e. allowed during the mission
but not while mission is loading).

accessible set
6 get(parameter key)
return: parameter key and 1 or 0 - wheither this parameter has set method
allowed.

time of day
20 get()
return: float[hours] - current tome of the day within the game.

plane
22 get()
return: string identifying the player plane.

cockpits
24 get()
return: int, quantity of cockpits in the player aircraft.

cockpit cur
26 get()
return: int, number of the cockpit the player is currently in, starting
with 0. The cockpit # 0 is always the pilot in command's cockpit.
Returns -1 if the camera is on an external view.

engines
28 get()
return: int, quantity of engines on the player aircraft.



2. Parameters - instruments readings.



In current version, this section is disabled while playing the game over the
net.

speedometer_indicated
30 get()
return: float [km/h] +0.00 +inf

variometer
32 get()
return: float [m/s] -inf +inf

slip
34 get()
return: float [deg.] -45.00 +45.00

turn
36 get()
return: float [undefined] -1.00 +1.00
turn indicator

angular_speed
38 get()
return: float [deg./s] -inf +inf

altimeter
40 get()
return: float [m] +0.00 +inf

azimuth
42 get()
return: float [deg.] +0.00 +359.(9)

beacon_azimuth
44 get()
return: float [deg.] +0.00 +359.(9)

roll
46 get()
return: float [deg.] -180.00 +180.00

pitch
48 get()
return: float [deg.] -90.00 +90.00

fuel
50 get()
return: float [kg.] +0.00 +inf

overload
52 get()
return: float [undefined] -inf +inf

shake_level
54 get()
return: float [undefined] +0.00 +1.00

gear_pos_l
56 get()
return: float [undefined] +0.00 +1.00
left gear "leg" position

gear_pos_r
58 get()
return: float [undefined] +0.00 +1.00
right gear "leg" position

gear_pos_c
60 get()
return: float [undefined] +0.00 +1.00
central gear position

magneto
62 get(int - engine idx)
return: int [undefined] +0 +3

rpm
64 get(int - engine idx)
return: float [rpm] +0.00 +inf

manifold
66 get(int - engine idx)
return: float [bar] +0.00 +inf

temp_oilin
68 get(int - engine idx)
return: float [deg.C] -273.00 +inf

temp_oilout
70 get(int - engine idx)
return: float [deg.C] -273.00 +inf

temp_water
72 get(int - engine idx)
return: float [deg.C] -273.00 +inf

temp_cylinders
74 get(int - engine idx)
return: float [deg.C] -273.00 +inf



3. Parameters - controls.



3.1. Analog controls (joy axis).
"Value" is limited to -1.00 +1.00.



Power
80 get() return: float
81 set(float)

Flaps
82 get() return: float
83 set(float)

Aileron
84 get() return: float
85 set(float)

Elevator
86 get() return: float
87 set(float)

Rudder
88 get() return: float
89 set(float)

Brakes
90 get() return: float
91 set(float)

Prop Pitch
92 get() return: float
93 set(float)

Aileron Trim
94 get() return: float
95 set(float)

Elevator Trim
96 get() return: float
97 set(float)

Rudder Trim
98 get() return: float
99 set(float)



3.2. Discontinuous.
If the set method contains no value, calling it is equal to depressing the
corresponding hotkey once.



Level Stabilizer
100 get() return: 1 or 0
101 set()

Toggle Engine
103 set()

Boost (WEP) On/Off
104 get() return: 1 or 0
105 set()

Magneto Next
106 get() return: int 0 - 3
107 set()

Magneto Prev.
108 get() return: int 0 - 3
109 set()

Supercharger Next Stage
110 get() return: int
111 set()

Supercharger Prev. Stage
112 get() return: int
113 set()

Select All Engines
115 set()

Unselect All Engines
117 set()

Select Left Engines
119 set()

Select Right Engines
121 set()

Select Engine #1
123 set()

Select Engine #2
125 set()

Select Engine #3
127 set()

Select Engine #4
129 set()

Select Engine #5
131 set()

Select Engine #6
133 set()

Select Engine #7
135 set()

Select Engine #8
137 set()

Toggle Selection for All Engines
139 set()

Toggle Left Engines
141 set()

Toggle Right Engines
143 set()

Select/Unselect Engine #1
145 set()

Select/Unselect Engine #2
147 set()

Select/Unselect Engine #3
149 set()

Select/Unselect Engine #4
151 set()

Select/Unselect Engine #5
153 set()

Select/Unselect Engine #6
155 set()

Select/Unselect Engine #7
157 set()

Select/Unselect Engine #8
159 set()

Fire Extinguisher
161 set()

Feather Prop.
162 get() return: int
163 set()

Gear Up/Down
164 get() return: float
165 set()

Rise Gear manually
167 set()

Lower Gear manually
169 set()

Cowl or Armor Flaps
171 set()

Airbrake
172 get() return: int 0 - 1
173 set()

Lock Tail Wheel
174 get() return: int 0 - 1
175 set()

Jettison Droptanks
177 set()

Attach/Detach Aircraft
179 set()

Weapon 1
180 get() return: int 0 - 1
181 set(int) 1 - start 0 - stop

Weapon 2
182 get() return: int 0 - 1
183 set(int) 1 - start 0 - stop

Weapon 3
184 get() return: int 0 - 1
185 set(int) 1 - start 0 - stop

Weapon 4
186 get() return: int 0 - 1
187 set(int) 1 - start 0 - stop

Weapon 1+2
188 get() return: int 0 - 1
189 set(int) 1 - start 0 - stop

Toggle Gun Pods On/Off
190 get() return: int 0 - 1
191 set()

Toggle Sight Mode (Auto)
193 set()

Increase Sight Distance
195 set()

Decrease Sight Distance
197 set()

Adjust Sight Control to Right
199 set()

Adjust Sight Control to Left
201 set()

Increase Sight Altitude
203 set()

Decrease Sight Altitude
205 set()

Increase Sight Velocity
207 set()

Decrease Sight Velocity
209 set()

Toggle Wing Fold
210 get() return: int 0 - 1
211 set()

Open/Close Canopy
212 get() return: int 0 - 1
213 set()

Toggle Arresting Hook
214 get() return: int 0 - 1
215 set()

Toggle Chocks
216 get() return: int 0 - 1
217 set()

Gunner Fire
220 get() return: int 0 - 1
221 set(int) 1 - start 0 - stop

Gunner Move
223 set(int,int,int)
Increment of mouse movement along the 3 axis. The third one is not used
currently.



4. Parameters - camera control.



4.1. Discontinuous.
If the set method contains no value, calling it is equal to depressing the
corresponding hotkey once.



Pilot or Gunner Position
300 get() return: int current player cockpit idx
301 set()

Jump to Cockpit #1 (Pilot)
303 set()

Jump to Cockpit #2
305 set()

Jump to Cockpit #3
307 set()

Jump to Cockpit #4
309 set()

Jump to Cockpit #5
311 set()

Jump to Cockpit #6
313 set()

Jump to Cockpit #7
315 set()

Jump to Cockpit #8
317 set()

Jump to Cockpit #9
319 set()

Jump to Cockpit #10
321 set()

FOV 90
323 set()

FOV 85
325 set()

FOV 80
327 set()

FOV 75
329 set()

FOV 70
331 set()

FOV 65
333 set()

FOV 60
335 set()

FOV 55
337 set()

FOV 50
339 set()

FOV 45
341 set()

FOV 40
343 set()

FOV 35
345 set()

FOV 30
347 set()

Toggle FOV
348 get() return: float, current FOV, degrees.
349 set()

Increase FOV
351 set()

Decrease FOV
353 set()

Cockpit View
355 set()

No Cockpit View
357 set()

External View
359 set()

Next Friendly View
361 set()

Next Enemy View
363 set()

Fly-by View
365 set()

Padlock Enemy
367 set()

Padlock Friendly
369 set()

Padlock Enemy Ground
371 set()

Padlock Friendly Ground
373 set()

Padlock Next
375 set()

Padlock Previous
377 set()

Instant View Forward with Padlock
479 set(int) 1 - start 0 - stop

External Padlock, Enemy Air
381 set()

External Padlock, Friendly Air
383 set()

External Padlock, closest Enemy Air
385 set()

External Padlock, Enemy Ground
387 set()

External Padlock, Friendly Ground
389 set()

External Padlock, closest Enemy Ground
391 set()

Chase View
393 set()

Next Friendly Chase View
395 set()

Next Enemy Chase View
397 set()

Toggle Gunsight
399 set()

Toggle Seat Position
447 set()

4.2. Analogue.



TrackIR
11 set(float,float,float)
Sets the camera turn angles - yaw, pitch, and roll [deg.].
The roll param is ignored.



5. Parameters - misc.



5.1. Discontinuous.
If the set method contains no value, calling it is equal to depressing the
corresponding hotkey once.



Toggle Autopilot
401 set()

Toggle Level Autopilot
403 set()

Bail Out
405 set()

Tinted Reticle Dimmer (German Planes)
407 set()

Cockpit Lights
409 set()

Toggle Nav. Lights
411 set()

Toggle Landing Light
413 set()

Toggle Wingtip Smoke
415 set()

Toggle Map
417 set()

Chat
419 set()

Online Rating
421 set(int) 1 - show 0 - hide

Next Ratings Page
443 set()

Toggle Speed Bar
423 set()

Toggle Icon Types
425 set()

Toggle Mirrors Show/Mode
427 set()

Quick Start/Save Track
429 set()

Radio Mute Key
431 set(int) 1 - start 0 - stop

Mute
445 set()

Radio Channel Switch
433 set()

Accelerate Time x2/x4/x8
435 set()

Normal Time
437 set()

Decelerate Time x2/x4
439 set()

PauseGame
441 set()

Time Skip
449 set()


I don't know if this is enough info that you can use to determine whether you could work something like FS-Force into Il2? Be great if you could.

Thanks for giving it some consideration.

Jeff

RussDirks
Site Admin
Posts: 696
Joined: Sat Sep 13, 2003 1:18 pm
Location: Chilliwack, Canada

Post by RussDirks » Tue Mar 20, 2012 12:09 am

Well it looks like there is some possibility of data exchange with the sim, at least in offline mode. Right now, though, I am up to my ears working on other pressing projects, so as much as I'd like to do something with it, I can't make any promises right now.
Russel Dirks
Forum Moderator

Salty58
Posts: 6
Joined: Sat Mar 17, 2012 12:54 am

Post by Salty58 » Tue Mar 20, 2012 8:38 am

I understand. Life's like that. Well if you ever get the urge. Thanks for looking at it.

Post Reply