PDA

View Full Version : Bridge from IL2 to IL2 COD


_1SMV_Poppy_64
05-04-2011, 07:01 AM
Hi all,

I'm writing in Multiplayer forum because I think that if there is some compatibility with old IL2 and New IL2 COD there is also the possibility that the IL2 comunity can swap to IL2 COD.

First of all is a real and functionally client server (as Hyper Lobby) where all the players can join to the game rooms without problems. Now with IL2 COD is not so simple... (see my post related on public IP).

Second: the eventlog must to be as much as possible similar with the old eventlog. A lot of parser scripts are ready (Bellum (in different version), SEOW, TVI) to read the eventlog, of course it is necessary some adjustment, but at the moment, the eventlog generated by COD is TOTALLY different and also in the local language.

I hope that this post can open some doors regarding this issue...

_1SMV_Poppy_64
05-06-2011, 11:42 AM
Any opinion? :rolleyes:

Aracno
05-06-2011, 11:52 AM
I agree with you Poppy, loose all the hard work done with bellum, seow, tvi would be a really bad thing.
I dream a SEOW with CoD ....

ZaltysZ
05-06-2011, 12:08 PM
Use mission scripts to create your own (compatible with previous projects) log.

wildwillie
05-07-2011, 01:49 AM
Poppy -

I've been looking for the same thing (More info in an event log). As Zalty mentioned I think we need to script what we need into the mission so things are printed out to an event log.

Only problem I see is the lack of documentation on exactly what classes methods are accessible in the scripts.

We would need something like

OnStaticDestroyed() <-- Damaged also
{
writeEventLog(timestamp, static, player, event);
}

OnActorDestroyed().....

etc.

We also need a way to communicate with the server when it is running to send chat messages, load new missions, etc. So far I have not been able to get a connection to the server like I had with IL2. (It comes back with a java exception: Connection Denied) Maybe we need to switch from a Java to C# or C++


RAF238thWildWillie

Ataros
05-07-2011, 06:52 AM
In CloD engine new mission objectives can be loaded into a current mission without a need to stop the server (unlike it was in Il-2 coops). This feature is specifically included in the engine to avoid artificial breakdown of an airwar to single separated coop sessions.

Coops disadvantage is that you have wait till it starts, you can not join it at any time. But more important that in coop you can never see some aircraft rtbing from the previous mission to your base or 1 enemy tank that survived the previous mission getting dangerously close to your airfield.

Coop was needed due to original Il-2 engine limitations. Now we have much better possibilities: several "coop" missions can overlap in time and influence each other on the same server. Even at homePC you can host depending on your processor a server with 5-10 simultaneous air-missions taking place in the same airspace not artificially divided to coop rooms.

I think we should just force ourselves to avoid this coop-limited mentality from the past. We do not need to create logs based on mission events only in order to create new mission events. Now we can generate new events based on current mission events directly at the same server without the need to write them to log first.

I hope though we have a better online interface in the future. Maybe something like they have in WW2 Online (try it) where advanced users/officers can post new mission objectives depending on situation on the server directly in the game interface and other players or whole squads can select these objectives to fly that particular mission. Alternatively a voting system can be implemented where players vote for the next mission objectives and type of mission. Devs said we can create unique interfaces for each server as mods and i am sure one day such an interface will be written by modders if the devs do not provide it.

This creates a natural living airwar environment on the server where you can meet other aircraft groups flying other missions at the same time like in real life, what was not possible in limited coops. Leave coop limitations in the past please, coop is dead, think of the bright future )

ps. Very basic sample script that loads new mission objectives into current mission http://forum.1cpublishing.eu/showpost.php?p=279416&postcount=95

wildwillie
05-07-2011, 10:42 AM
Ataros -

The mission events are used for 2 reasons:

1st - It allows us to record player activity and keep statistics for them. This information is kept in a database then processesed/displayed on Web Stats screens. IMHO Players are stat whores and want to see their exploits compared to others. There is a small stats screen within Clod, but it does not show comparisons against others.

2nd - As you pointed out the new style works well for continuation wars. How does this work if the mission changes maps ?


It seems to complicate the Mission Builders job considerably. Perhaps when there is documentation on scripting and a collection of scripts mission makers can share it will be better.

As I understand it now, mission builders still create multiple missions that they would like to have run, but would need to build one mission around them that keeps tabs on the events to schedule the missions accordingly. Again IMHO allowing a mission builder to just add missions to a list which is run in order seemed simplier. Do not get me wrong, I thing there are some wonderful opportunities with the new system that we have not touched yet. But the simplicity of IL2 has merits too.

Are you supposed to be able to communicate with the Dedicated Server console ?

Ataros
05-07-2011, 02:54 PM
How does this work if the mission changes maps ?

I think as we have only one map atm (channel one) there is now need to change it. When more territory is added to the map I think there will be a way to load it dynamically without stopping a server the same way as everything else.

Again IMHO allowing a mission builder to just add missions to a list which is run in order seemed simplier.

With CloD engine it works very similar: mission builders can add separate missions to a list and then they are loaded into the server by a script. You can have absolutely empty original mission with a script that will load all other missions into it one by one say every hour or based on specific triggers like victory conditions, etc. All objects loaded by previous missions stay in the virtual war on the server like it happens in real life. I.e. they are not unloaded from the server when mission objectives are complete. You can use scripts to get statistics from the server to web or create a mod for your particular server or your virtual war to show all the statistics needed inside the game.

The difference from Il-2 is that it can all happen in real time: you analyse results of the mission in real time and load new missions in real time. There is no need to stop the war or change a map. Same way as in real life.

In IL-2 virtual wars ppl used particular scripts to analyze logs of separate coop missions to move frontline on web map and to create new missions with new mission objectives. Now you can rewrite the same scripts in C# and include them in the server script to have the same results but in real time.

Try the simple script I link to in my previous post. It is sufficient to create some interesting dogfight missions. Say having 20 missions running one after another with several different time-cycles and overlapping in time can produce very vivid and unpredictable airwar environment.

Are you supposed to be able to communicate with the Dedicated Server console ?

Sorry I do not know anything on console.

ps. All the above applies mostly to virtual wars that used to be run in coop mode. If you just want to run a simple dogfight server you do not have to use any script to load missions of cause. You can do it the old way like you did in Il-2, but I personally think it is much more fun to let your missions overlap in time at your server.

_1SMV_Poppy_64
05-08-2011, 01:35 PM
Dear all, it's all true that you say, but I mean that without a real eventlog isn't impossible to have a real statistics...

let me show an example:

I flyed a mission with IL2 4.10.1m:

take off with a Spit
destroyed a static object
landed on an airfield

a very simple and basic dog mission, now see the eventlog written by 4.10.1m:

[May 8, 2011 1:10:39 PM] Mission: net/dogfight/1/test.mis is Playing
[1:10:39 PM] Mission BEGIN
[1:10:46 PM] _1SMV_Poppy_64:SpitfireMkIXcHF(0) seat occupied by _1SMV_Poppy_64 at 14030.024 26867.367
[1:10:46 PM] _1SMV_Poppy_64:SpitfireMkIXcHF loaded weapons 'default' fuel 70%
[1:11:29 PM] _1SMV_Poppy_64:SpitfireMkIXcHF in flight at 13216.927 26860.305
[1:12:46 PM] 5_Static destroyed by _1SMV_Poppy_64:SpitfireMkIXcHF at 16366.19 29203.97
[1:14:21 PM] _1SMV_Poppy_64:SpitfireMkIXcHF landed at 13400.042 26746.732
[1:14:23 PM] Mission END

and now a same mission with COD:

------------ BEGIN log session -------------
[15:19:55] Loading mission ...
[15:19:55] Load landscape...
[15:19:56] Load bridges
[15:19:56] Load static objects...
[15:19:57] Mission loaded. time = 2,446
[15:20:06] Loading mission ...
[15:20:07] Load landscape...
[15:20:07] Load bridges
[15:20:08] Load static objects...
[15:20:09] Mission loaded. time = 2,409
[15:20:13] Server: _1SMV_Poppy_64 volerà per le forze Rosso.
[15:20:21] Battle starting...[15:20:21] Server: Inizia la battaglia!
[15:20:21] ok
[15:20:21] Loading mission ...
[15:20:21] Server: Un nuovo gruppo Rosso di 1 velivoli, identificati come Spitfire IIa, è stato avvistato nel settore <,81.
[15:20:21] Mission loaded. time = 0,060
[15:21:48] [2913] ERROR [AI] callStateByName(): state "Main.OnActorDied" not found!
[15:21:49] [2927] ERROR [AI] callStateByName(): state "Main.OnActorDied" not found!
[15:21:49] [2935] ERROR [AI] callStateByName(): state "Main.OnActorDied" not found!
[15:21:49] [2935] ERROR [AI] callStateByName(): state "Main.OnActorDied" not found!
[15:21:50] [2967] ERROR [AI] callStateByName(): state "Main.SoftCollisionDispatcher" not found!
[15:21:50] [2968] ERROR [AI] callStateByName(): state "Main.SoftCollisionDispatcher" not found!
[15:21:50] [2969] ERROR [AI] callStateByName(): state "Main.SoftCollisionDispatcher" not found!
[15:21:50] [2969] ERROR [AI] callStateByName(): state "Main.SoftCollisionDispatcher" not found!
[15:21:50] [2971] ERROR [AI] callStateByName(): state "Main.SoftCollisionDispatcher" not found!
[15:21:50] [2973] ERROR [AI] callStateByName(): state "Main.SoftCollisionDispatcher" not found!
[15:21:50] [2973] ERROR [AI] callStateByName(): state "Main.SoftCollisionDispatcher" not found!
[15:21:50] [2973] ERROR [AI] callStateByName(): state "Main.SoftCollisionDispatcher" not found!
[15:21:50] [2973] ERROR [AI] callStateByName(): state "Main.SoftCollisionDispatcher" not found!
[15:21:50] [2975] ERROR [AI] callStateByName(): state "Main.SoftCollisionDispatcher" not found!
[15:21:50] [2975] ERROR [AI] callStateByName(): state "Main.SoftCollisionDispatcher" not found!
[15:21:50] [2978] ERROR [AI] callStateByName(): state "Main.SoftCollisionDispatcher" not found!
[15:22:24] [4124] ERROR [AI] callStateByName(): state "Main.OnActorDied" not found!
[15:23:50] Server: _1SMV_Poppy_64 è salvo a terra.
[15:23:51] Server: La battaglia termina.
[08/05/2011 15:23:55] -------------- END log session -------------

NO reports of weapon loaded, NO reports of object destroied, NO coordinates for any event. What about the errors? Log in Italian? Of course I'm Italian but for an internationals tournaments we need an international logs files...

This is not an event log and in this way is not possible to upload on any web statistics software...

In this way no community can be created!

Thank you

ZaltysZ
05-08-2011, 04:42 PM
Dear all, it's all true that you say, but I mean that without a real eventlog isn't impossible to have a real statistics...


As I said, do it yourself. :) You can catch events in scripts and do anything you want with that information (write to database, write to your own log file and etc.).

ZaltysZ
05-08-2011, 04:53 PM
Only problem I see is the lack of documentation on exactly what classes methods are accessible in the scripts.

In script you can define your own Mission class, which has access to Battle and Gameplay objects. It is enough for moving players around, tracking kills and etc. Classes for server and UI programming are still not reachable, but will be soon. It means, that it would be possible to design your own server UI, which will be showed to players.

I would suggest you to look at this from different point. If you used to read log and issue pretty limited commands via console, now you can implement almost all logic via C# scripts. I didn't try it, but I think you can simply connect to MySQL database from script and insert records directly, without parsing logs.

_1SMV_Poppy_64
05-08-2011, 09:45 PM
Ok, thanks.

Do you know if is there any documentations, any instructions how to do it?
Ciao.

wildwillie
05-09-2011, 12:41 AM
Zalty's -

If we can add the following to the scrips:

using MySql.Data;
using MySql.Data.MySqlClient;

which allow us to link in the MySQL Connector/NET that would be great. We would be able to write data to the database as the events happen.

Then we just need the proper methods for monitering objects in the script.

ZaltysZ
05-09-2011, 10:18 AM
using MySql.Data;
using MySql.Data.MySqlClient;

I am almost sure it will work. I say "almost", because devs mentioned sandboxing, but I guess it is only for client side.

Then we just need the proper methods for monitering objects in the script.

I basically put game DLL's as references into Visual Studio and browse through Object Browser. Most methods have self explaining names and parameters.

wildwillie
05-09-2011, 11:34 AM
Thank you for the info Zaltys. Looks like a switch from Java to C#.

_1SMV_Poppy_64
05-15-2011, 07:25 PM
Our team is working to develop some scripts to write a readable eventlog but (as reported in the IL2 COD manual) we are waiting for a manual with all functions and instructions...

We hope that the manual can be ready ASAP...
:!: