![]() |
IL2DCE: A dynamic campaign engine for IL-2 Sturmovik: Cliffs of Dover
|
Let's have a look :)
|
Enjoy your stay, but respect the license ;)
|
Have some problems compiling it. what's the path the solution's folder needs to be installed in?
|
http://code.google.com/p/il2dce/wiki/Build_Instructions
I will try to update the document ASAP. So long ... The source has to be checked out in a way that the IL2DCE.sln file is at the following location: Code:
C:\Program Files (x86)\Steam\steamapps\common\il-2 sturmovik cliffs of dover\parts\IL2DCE\trunk\IL2DCE\IL2DCE.sln Of course you have to adjust the path to the CoD installation if it is installed at a different place. Use the project "Game" as the startup project. If you use the debug configuration everything (dlls, config files, ...) is placed at the right location and you can "start" the application in Visual Studio to execute the launcher.exe If you use the release configuration everything is placed into "C:\Program Files (x86)\Steam\steamapps\common\il-2 sturmovik cliffs of dover\parts\IL2DCE\trunk\IL2DCE\Release" and a NSIS install script is provided to create the installer. |
I've figured out the path, atm I'm using "il-2 sturmovik cliffs of dover\parts\_work\IL2CoD_solution" as the svn checkout folder.
There's yet a problem with the Pre-Build Events of the Game project.. they don't seem to work, so the GlobalAssemblyInfo.cs is not created. This is what I'm trying to figure out now. PS: Got it, there's an error in the Pre-Build script: Code:
SubWcRev "$(SolutionDir)ProjectDir)." "$(ProjectDir)Properties\GlobalAssemblyInfo.template" "$(ProjectDir)Properties\GlobalAssemblyInfo.cs" Code:
SubWcRev "$(SolutionDir)." "$(ProjectDir)Properties\GlobalAssemblyInfo.template" "$(ProjectDir)Properties\GlobalAssemblyInfo.cs" PPS: why x86 and not x64? |
Fixed the pre-build event.
|
Now it is really fixed.
|
As another suggestion, you might want to add some default GlobalAssemblyInfo.cs and IL2DCEInst.nsi files to svn, as the solution won't "find" them until the used rebuilds the project, then refreshes those files (which are marked as missing in the beginning).
|
And a bug: after the first mission, the loading of the next generated mission fails with a Mission: xxx group is already loaded error message. It is caused by the fact that player's group gets duplicated (eve more than twice sometime) into the [AirGroups] section (but not in the group properties or group waypints section):
Code:
[PARTS] |
Hi,
about adding a dummy GlobalAssemblyInfo.cs and IL2DCEInst.nsi to the SVN repository. This is unfortunatly not possible. This would lead to uncommited changes in the working copy the first time you build it (because revision number is updated in both files) and when you commit the changes ... the revision is increased which again leads to uncommited changes. about the bug: Thanks, I will have a look at it. The prototype doesn't support the generation of a second mission at the moment. I think you have to go back to the main menu to property quit the current mission to be able to generate a new one. Of course it will be handled in the future. Keep in mind that it is really a prototype at the moment. The main goal is to test different things like how to implement a custom user interface, multiplayer addin, ... The features that are present are in no way finished. |
Looking great so far. Keep at it mate this could be a massive breakthrough :D I am really stoked about this.
SD |
New release available that allows to create multiple missions in a row without errors. I also improved the menu (spawn parked option, continue current mission, create next mission) and fixed some other bugs (multiple entries of the same item in airgroup and aircraft list).
Thanks to adonys for the bug report. |
This is brilliant - even as a prototype. Thank you.
|
Are there any problems or is everything working fine?
I'm currently work on the implementation of ground units and getting it integrated into multiplayer. Especially the integration into multiplayer is driving my crazy as there is no documentaiton or examples at all ... so basically everything is try-and-error. |
No issues on the actual mission generation. Works fine with the ones I've tried so far anyway. but I will try bomber missions now.
The main thing I've noticed is that the esc key is taken over by the campaign generator - so no way of starting a recording the mission or changing controls after you start it. |
Bomber missions are limited to "area" ground attacks at the moment. They will all perform level bombing (even Stukas). This will be changed when the ground units are implemented.
The menu issue will be addressed, just don't know when :) |
Thanks for sharing the code 41Sqn_Banks :)
|
I want to give a small developers update for the next release. The main goal of the next release is to provide bomber missions. Therefore the most important new feature are ground attack missions against moving (ships, vehicles, armor) and static (radar) targets.
The vehicles and armors try to find their way themselves using roads and bridges if possible. Ships travel in convoys along waterways that are predefined within the template file. This is done because the calculated ship pathes would be to close to the coast. The release will contain the campaign "Kanalkampf (July 10 to August 11)". |
The links provided don't work for me. Anywhere else i can download this?
|
May i suggest using www.airwarfare.com for hosting if you're not already using it?
If i'm not mistaken it's ran by the same people who gave us mission4today (and we all know how great of a resource that is for the previous IL2 series), so in time it should be to CoD what M4T is to IL2. I think it's easier than using rapidshare-type services (downloads won't expire) and after a while everyone will know it's the place to go for community created content. Just a friendly heads-up/suggestion ;-) |
Quote:
|
Quote:
|
Hi 41Sqn_Banks, it's a really good job!
I'm writing a script to write a eventlog in order to assign scores to the pilots in any online campaign, you've already thought about this? The aim is to use a parser in perl like the BELLUM to write score in a MySql DB. Ciao |
Quote:
The author welcomes using this script in others missions as far as I remember (other part of the script can be switched off). |
Quote:
Stat: http://bok.il2war.com/all_pilots.php Dinamic front map :http://bok.il2war.com/mapa.html We are currently preparing a dynamic online campaign for IL-2 Sturmovik 1946 will start in autumn , but we start working to see if it is feasible with COD in the future. The only problems are some data available in the log, but I believe problems are solvable. For example, the old eventlog of IL-2 is obtained for each player also: Code:
Fire Bullets: 588 Code:
06:51:00 Stab_JG26302 loaded weapons 'default' fuel 70% Ciao |
Use a .Net Ado wrapper for MySQL in CloDo and write the data direct in the database. So no need for a eventlog.
|
Quote:
You can add anything else what you like with C# script I believe. No need for eventlogs anymore. You can get mission results in real time, move frontline and upload new objectives and new air and ground units without stopping the server unlike you had to do in original IL-2. This is a new level of online campaigns but it requires some knowledge of C#. |
Quote:
@Ataros Ok, I understand. I have what I need but I'm just trying another route and check if others prefer the same my way ;) Bye |
I've got a reasonable amount of programming experience and am interested in contributing. How can I help?
|
Send me a PM with your email address and I'll invite you to the developers' mailing list.
|
A lot of good news recently and here is another one: Development of the next release is almost finished. There are a few minor features left but they should be ready until the weekend. Then I will spend the weekend with testing and finishing the new Kanalkampf campaign to make full use of the new features.
A small overview of the features: - Moving ships (using predefined waterways) - Moving vehicles and armors (using calculated roads) - Static ground units (Artillery, Radar, ...) - Mission types for bombers: Attack ground units, armed recon, recon - Mission types for fighters: Cover ground units, intercept, escort - Loadout and altitude for the missions depend in aircraft and mission type - Rudimental briefing before the flight - Start a career and gain experience, get promoted to a higher rank and get a higher position within your flight (don't expect to much for now, this will be really really simplified in this release) If all goes well a beta release will be available next week. |
Hi, Banks!
Did you manage to get any help from naryv on the MP part of your DCE at sukhoi.ru forums? He just mentioned he was/is very busy with the upcoming patch and may have more time next week after the patch is out. You may try contacting him again if it is still needed. Looking forward to flying IL2DCE online. Thanks for all your efforts! |
Yes I'm in contact with naryv and he helped a lot with API and mission file questions. Unfortunatly he couldn't help solving the problems with the multiplayer addin directly but asked the network developer ... who is unfortunatly even more busy than naryv with the upcoming patch.
I'm confident that the problems can be solved after the patch release. If not directly via a multiplayer addin I will rewrite IL2DCE to work as a regular mission file script for multiplayer. |
Great news! Thanks and GL with it!
|
Unfortunatly there will not be an release today. The tests on the weekend showed that I need further fine tuning to improve the coordination of air and ground units. Stay tuned ...
|
4 Attachment(s)
Some WIP screenshots of the campaign and career menu.
|
Awesome! I finally bought COD last week just because people were finally developing DCs for it!
THANK YOU! |
Do I spot certain similarities to another dynamic campaign in a certain other flight sim? No problem, of course, but then copying is the most honest form of appreciation. ;)
I do see areas where more immersion can be inserted ... a pilot picture (which the user can define), a bio (just like in RoF), date and place of birth ... Looks like a good start, though. |
So, when can we expect an update to include the E-4?
|
Quote:
|
now that's what i call "Good news";) Txs i'm looking forward to that very much!
S! |
Quote:
I do very much appreciate you putting it on yourself to create this DC for the game :grin:. The community needs people like you. |
Awesome, thanks tons
|
Quote:
|
Great :grin:. And well, there is always something where you will think it needs some finetuning, all in all, like I said, it's great you are doing what you are doing.
|
Good day for an update, isn't it?
Here we go: http://il2dce.googlecode.com/files/IL2DCE-0.2.0.302.exe Please run the uninstaller before you apply the new version. Read more: http://code.google.com/p/il2dce/wiki...install_IL2DCE Know issues: - Deleting a career doesn't update the list, you need to go back to the main menu - Detonators/Fuzes are not set, depending on the generated altitude the bombs may not explode Note that this release should be considered as a "release candidate" and wasn't tested on different systems. |
is it christmas already??:grin::grin: Txs for the Update i'm sure i will enjoy it :)
|
Downloaded it and flew a first mission. Worked very well, many thanks to you :grin:.
Just a couple of questions if I may. I started as Leutnant for blue, was the last plane on take off, yet had << markings on my plane which leads me to believe I was supposed to be flight leader. My flight did not recognize me (escort mission btw). Should I take off manually or in auto pilot? The first time around I chose auto. Two flights of emils took off E1s and E4s, my flight was with the E4s. Upon return to the airfiled all the E1s had most unfortunate contact mishaps with the ground, yeah they crashed after being called down for landing. Other than that everything seemed to work as intended, had even great frame rates, thanks again for all your work you are putting into this. |
Quote:
|
Quote:
|
Quote:
Quote:
|
Quote:
Is there a chance to use it online on a dedicated server, e.g. for generating air-missions on Repka Steppe map? |
Neat! Will have to try it out, thanks for your hard work 41Sqn_Banks!
|
Quote:
|
Quote:
Ideally I would like to combine a ground war generator like this one http://forum.1cpublishing.eu/showpos...00&postcount=9 (in case your DCE does not generate similar ongoing war) with a coop-style air-missions generator like yours on the same server (in particular Steppe map running on Repka #2 and 3 now). The idea is that all red or blue players on a server receive a message "Next mission starts at the airfield in E3 sector in 5 minutes. Get prepared!" which is repeated every minute before the mission starts. Then when players spawn at a specified airfield (at spawn area) they can read more specific briefing OnPlaceEnter, change the aircraft if necessary, etc. and fly the mission in a good old coop style. The opposition would receive similar messages and directed to the same area to intercept. Players would not be obliged to start the mission on the ground and can join in progress if they took off at a different airfield (some updates on current objectives will be send to everyone like it is done now on Repka 2 & 3). If a new mission is started every 20 minutes there will be about 2-4 missions simultaneously running on the same server. They should concentrate on the same objective or objectives located close to each other to let most of players find each other. Hope you like the idea :) |
Quote:
Just thought it might be good for you to know anyways, even if there is not much you can do about it. Keep up the good work :grin: |
just wanted to let you know that i found a bug... when play the HE111 career the AI planes all crashe into the hill on the end of the runway and i can't make it either when it's emptey (for recon missions) i can take off but obly with like a meter space between me and the hill. Hope this can be corrected?
S! |
Small bug report:
1. Playing as Bf-110 pilot, the first A.I pilot to take off crashes in to the small elevation at the end of the runway. 2. Fuses, yes it's a known problem but what's the point of flying ground attack missions in Erg.210 if neither mine or my A.I companions bombs won't explode? Doesn't matter at which altitude I drop the bombs, they won't explode, yes they are armed. Small requests: 1. Could a Zerstörer campaign be added? i.e. ZG 26 with only air-air/recon missions. That's all for now, yet again, thanks again for this great addition to CloD. It has really invigorated my interest in the game again.:grin: |
Quote:
Just have a look at the file that defines the loadouts for the different operation types (which isn't complete for every type, e.g. Ju 88 has not all loadouts defined): http://code.google.com/p/il2dce/sour...craftInfo.ini# Now multiplicate this by every suitable fuses and delay times configuration. In addition I first need to find out which configuration is suitable. You see it's a mammoth task. For the other requests/bugs: The missions are generated based on a template which can be created in the FMB. The template file of Kanalkampf campaign is located in <cod steam folder>/parts/IL2DCE/Campaigns/Kanalkampf/Template.mis You can simply modify the squadrons or add new squadrons in the FMB. The take-off waypoint defines the airfield used by the squadron. I will give instruction on how create your own campaign or modify a existing campaign soon. So everyone can use his favourite aircraft :) |
Quote:
|
it is as simple as adding a flight for Bf-110C-4 or Bf-110C-7, for the BoB_LW_ZG2_Stab or BoB_LW_ZG26_Stab airgroups into the Template.mis file.
|
Quote:
|
Some questions from sukhoi.ru users http://www.sukhoi.ru/forum/showthrea...=1#post1715124
Quote:
|
Small update: http://il2dce.googlecode.com/files/IL2DCE-0.2.1.306.exe
Includes a bugfix for russian language culture, added a Bf 110 C-4 squadron and moved some squadrons to other airfields to avoid takeoff crashes. |
Thank you very much for the fix!
Was it a regional settings issue like decimal comma or data format, anything we need to know? |
Quote:
If you want to convert a string to a double value, for example Code:
string inputString = "0.5"; Code:
double outputDouble; Code:
double someDoubleValue = 0.5; |
If you are unsatisfied with one of the missions, please give me feedback. At least I need the mission type and a description what you didn't like. Even better if you can provide the mission files. They are located at:
"C:\Users\<windows login>\Documents\1C SoftClub\il-2 sturmovik cliffs of dover\mission\IL2DCE\<pilot name>\<campaign name>_<mission date>.mis" and the .briefing file. |
So far everything seems to work as intended. Time to look into the future: What do I plan for the next release(s)?
1. Fuzes and delay times configuration for the different mission types. 2. Ground control that directs patroling fighters to incoming targets in real time. This will give better results for the "cover" mission types and allows patrol mission along a route instead of an area. Intercept missions should also benefit of it. I will try to implement this feature as a dedicated module that can be used in other mission too. 3. Support for all ground targets (it's already implemented, only need to be enabled in the campaign template) After this steps the mission generation should be very solid and I will look at the campaign progress (squadron managment, moving ground war, ...). |
Quote:
|
Hi,
I want to give a small status update as the roadmap oulined in my last post has changed. I'm currently concentrating on the online/dedicated server support and a true dynamic campaign (not just randomized mission creation). I think Ataros will be pleased to hear that ;) Both features involved a rather fundamental rework of the mission generation. The basic features are already working: - periodic spawning of air groups - respawning of destroyed ground groups - dynamic waypoint calculation for ground groups - moving frontline. However there is a lot to complete ... so the next release will definitly take a couple of weeks. |
wow that is awsome news :grin: can't wait to try that hehe good to hear that things go back to normal slowly with COD:)
S! Rowddy |
Thank you very much for update! I love the way it sounds :)
Will it be possible to use the generator with different maps like Steppe, Fields as well (like in naryv's examples) or only the Channel map? |
Quote:
|
Quote:
|
Awesome news!
Thank you! |
What really impresses me is this:
http://code.google.com/p/il2dce/issues/list I do not know but I have this feeling in my stomach that I am missing this from some other SW I spent a lot of time with.... ;) Very impressive Banks, I can not hide my curiocity, what do you do for a living???? LOL ~S~ |
Quote:
BlackSix mentioned at sukhoi that they do not have possibility to set up a tracker themselves now. Maybe someone who knows how to do it can help? If anyone is interested, let's start a new thread on this. |
Google Code is only for hosting Open Source software project. However I've read that one could create a google like issue list with "Google Pages". However I think there are better bug/issue tracker like "Bugzilla" (which has voting IIRC) or "Mantis Bug Tracker". To make full use of these the users must be registered to the system. I think this is the main problem.
Anyway ... has been a log time since the last update of IL2DCE. I didn't have much time in the last weeks and was doing a lot of other stuff. |
Really looking forward to this also Banks!..will it be possible to use Offline also?
352ndRibbs |
Great work,
perhaps it's time to try this sim again :) |
I'm hoping their are plans for upgrading the DCE to include a "dynamic war" type system. Something akin to the old IL2-1946 Bellum code, or IL2 Wars, Southern Cross War etc.
What I mean is things like... 1. Persistent aircraft states - damage takes time to repair a given airplane, wear persists & increases from flight to flight, maintenance "repairs" wear. maybe maintentance rates could be related to number of workshops at airfield. Destroy workshops leads to reduced maintentance rate. 2. Peristent pilots - "same" AI pilot for a given plane. Same name, skill attributes increase with number of succcessful missions &/or number of kills, targets hit etc. 3. Moving front lines - based on outcome of missions & objectives achieved. Some script for moving front lines is already available. 4. Pilot replacement - Pehaps lost pilots can be replaced at a certain rate. 5. Plane replacement - Perhaps planes can be replaced at a certain rate, maybe related to the presence of aircraft factories. Destroy aircraft factories leads to reduce aircraft replacement rate. |
I'm looking into campaigns for my crew at the moment and this does look promising but there's no update for a while? Is it still being worked on? Just installed it, haven't had a play yet though.
Thank you to Banks, these types are the real heroes of IL2 :) |
Hi, just wondering if the project is still going and if there will be a new update? :)
Thanks! |
I'm currently in a creative break. Actually I thought about continuing last week but I must admit that I need to finish two other projects first:
- website of 41 squadron which is about 90% - a small historical static campaign of 41 squadron covering. Honestly I think I lost a bit the track of the important features before I halted the development. I experimented to much in dynamic ground war and ship movement, which causes many problems with the current state of the game (e.g. missing bridges) and are not that important for major phases of the Battle of Britain. When I continue development in a couple of weeks I will concentrate on a persistent world where destroyed objects remain destroyed and must be replaced by reinforcements/supplies. The targets will be static airfields and reinforcement/supply depots and not moving ground objects. |
Quote:
|
Today I officially resumed the work and committed the first change since December 28: The new airfield attack mission type.
As already said in my previous post I will concentrate on static targets (radar, airfields) to recreate "Operation Adlerangriff" for the next release. These targets work much more flawless compared to moving ground and sea units (of course they will be added with a later release). The next step is tracking looses of air units and then implementing some kind of reinforcements system. |
awsome m8 looking forward to this :)
|
That's great news. Looking forward to try the next build :)
|
Quote:
|
Quote:
|
Hi Banks,
I understand your system is more or less a script compilation which uses a given template to start with. Is it feasible without too many issues to use the DCE with any other starting template/map? F.e. if I want to use the whole map and a certain starting condition of 10th July 1940? BTW: http://www.emailgoodies.faketrix.com...er-give-up.jpg |
Quote:
There is also a small ini-info file for every campaign that defines the date and the names. You can optionally overwrite the default plane settings for a campaign, e.g. if you want to disable a loadout or change the role of an aircraft (e.g. enable recon missions for Bf 109 or disable airfield attacks for Ju 87 or change the mission altitude ranges). To keep the world persistent I will write a new "template" when the battle is stopped that reflects the current positions of the units, so basically the mission file is used to store all information and the current state. I'd recommend to wait with creating a own template at the moment. I need to define the various "markers" in the template first, because at the moment this can change from release to release, e.g. at the moment I use front markers to define the target locations for ships and ground units, which obviously doesn't work if both are on the map. |
Quote:
EDIT: To give an example of what I'm talking about WRT "lack of flexibility". The phase Kanalkampf began with a limited number of units doing active missions (i.e. Stab/JG 51 and its subordinated Gruppen, KG 2, the Stukas etc). That doesn't mean there aren't other units still "resting" on the map and those may become active at some point. If, however, we define them and their base in the FMB the DCE will see them as "active" and will use them ... I hope that makes sense. If not we can meet somewhere else to talk about this in german. ;) |
Quote:
Availability date or more general special events at a certain date are time based information and obviously can't be defined in the FMB and would require a own text file (or for better usability a calendar editor). However so far I have no idea how to combine certain events with the dynamic changing front-line. But this is stuff for the advanced user. |
Quite honestly the idea of stuffing most things into the template was proven insufficient by DGen years ago. It was not flexible enough to depict changes of aircraft types (i.e. the switch from Bf 109 to Fw 190 within a sub-campaign, not between two of them) or sudden transfers to other locations for reasons you as a player had no control over, a thing which later happened so frequently (i.e. transfer of parts of Fliegerkorps VIII from Kharkov to Orel during Citadel).
I, personally, believe that only certain things should be defined on the template: - airbase locations (i.e. deactivating air bases which weren't in use at a certain time) - major railway lines (= primary supply lines) - major railyards - if applicable shipping lines (= major supply lines) - major roads (= secondary supply lines) - major harbour installations - minor harbour installations - bridges (weak spots of supply lines) [ - Army Group or Army Level Supply Dump location(s) ] ... basically all things that are mostly static or cannot be moved somewhere else. Anything that is mobile or even semi-mobile should be defined in another file. I mean I am a rivet counter when it comes to historical details and I would invest considerable time into adding such details. But not everyone would do the same and I understand that. But if you cram all such things into the template and don't use external files you're automatically limiting the amount of historical details, accuracy and flexibility your tool can generate. |
Quote:
I agree it would be practicable to define the locations of cities, rail yards and harbors for every map (the default definition can be overwritten by every campaign). But this would be a "map template" (location of map characteristics) opposed to a "campaign template" (location of units). I still have some problems with adding "scripted events", of course I can define that unit x was transferred to airfield y at date z. However, what happens if airfield y is already in enemy territory? We see that "events" won't work in combination with a dynamic frontline. Of course a dynamic frontline is not desired if you want to create a historical campaign. So basically if you want to create a historical campaign you want to define the frontline and location of air units and maybe even for ground units. I don't think you want to define that for every day but let's say for every week. Between these dates the frontline may develop dynamically. But what happens if a unit is destroyed? Will it reappear with the next define situation? I think it would be very possible to add "reinforcement events" to a dynamic campaign that define which air or ground units become available at a certain time. It may be even possible to define a "preferred location" for them that is used if it is in friendly territory. It would be cool to add some "special events" where a scripted mission is loaded, e.g. to stage a scripted paratrooper operation or a key assault. But then again this would produced problems with the dynamic front line. One solution for the front line dilemma would be to link the events to the front situation, i.e. they only happen if the corresponding area is still in own hands. |
Quote:
Quote:
Quote:
|
Quote:
If looses are dynamic but front line is static there could be a situation that one side has lost all ground units but still the front line doesn't move. Or a vital air unit can't operate anymore because it lost all aircraft in a unlucky operation. How to have static locations/transfers of air units of the front line moves dynamic? In addition it's not possible to simulate the whole ground war in detail for performance reasons. As far as I can see at the moment the only practicable way would be to have a scripted definition of the exact locations of air and ground units for certain dates, e.g. 1 August 1940, 7 August 1940 and 14 August 1940. Between those dates everything happens dynamic, but when one of the dates is reached the scripted definition is applied and basically resets the dynamic changes to the ones defined for the date. The only exception could be the squadron of the player where looses and experience of the squadron mates remains throughout the campaign. This would result in a basically static campaign progress with randomized missions and dynamic development of the own unit. |
I took some time to really think about this but quite honestly all I can offer is an opinion and some snippets.
Quote:
Quote:
Historically ground warfare was heavily dependant on different sets of factors such as training, doctrine, Command&Control, Communication and whether one side was on the strategic offense or defense. The Red Army of 1941 was numerically powerful but totally unprepared for the Blitzkrieg style of war practiced by the Wehrmacht. The germans won a lot of battles not through firepower but through coordination, movement and training. We can't simulate those advantages in a flight sim ... Which in turn means the impact of a player should be confined to the location he is in and the timetable for the advance/retreat could be shifted only minimally. Quote:
1.) A unit may have lost too many aircraft and/or its crew is suffering from fatigue so RAF FC may decide to move it to a secure location to recuperate and bring a fresh squadron to the battle area. Same goes for the LW. 2.) The LW may want to concentrate certain assets in one area for increased impact on operations, just as it happened to the fighter units which were concentrated in the Pas-de-Calais area in August/September 1940. |
All times are GMT. The time now is 04:46 AM. |
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright © 2007 Fulqrum Publishing. All rights reserved.