Project Dynamism Posted March 4, 2020 Share Posted March 4, 2020 (edited) Hello all, I would like to introduce "Project Dynamism", a persistence and dynamic content creation framework for DCS World. My aim is to provide a dynamic and persisting environment that allows for better immersion and a feeling of progression in DCS World campaigns and replayed single missions. This is achieved by recreating previously inflicted battle damage to scenery, static objects and AI units at mission start. At mission end all additional damage is recorded. Project Dynamism is developed with focus on user-friendliness and feature-richness at minimal impact: integrated into DCS World as module with own campaign and mission section automatic check and renewal of the integration, e.g. after DCS update controllable via F10 radio menu minimum effort for mission creators to use (via naming convention, no triggers) ease to port existing missions and campaigns to use the persistence features minimal installation and integration overhead Typical use cases are: Create a single mission that is replayed until attrition of the enemy. Create a series of training missions that accumulate the damage and destruction at the shooting ground. Create a campaign that simulates weakening of the enemie's shield of SAM sites and final breakthrough to the valuable target. Create a campaign that accurately tracks attrition of air, ground and sea forces be they friendly or foe. Create a campaign with resource restrictions by persisting the destruction of warehouses, fuel storages and parked airplanes. Create a campaign that simulates the effect of destroyed infrastructure like bridges, FARPs and supply points. Inspired by DCS Witchcraft and the Dynamic Campaign Engine this project tries to push the boundaries even farther. The long-term target is to develop "Project Dynamism" into a full dynamic campaign environment. Running independently from DCS as a browser app it automatically creates missions for the user into which content is spawned dynamically. In view of the RTS dynamic campaign under development by Eagle Dynamics this project instead will focus on turn-based elements (e.g. alternating planning and execution stages) and casual gamers with limited time to play. Currently this is a single-person project running next to a full-time job and small familiy. It started half a year ago. So keep your expectations at bay. This is also the reason why I am planning to ask for funding via donations or for advanced features. The base version will remain for free. The money will be used to fund additional DCS maps and DCS modules if needed for development, pay local students who can spend more time in coding, and keeping the server running. In the end DCS and its community shall benefit due to the reinvestment of the money into DCS products and publishing parts of the software as open-source. Enougth talking and dreaming, I would like to invite YOU to test the current version of "Project Dynamism". Please give constructive feedback about its current state, bugs and problems found as well as the future plans meantioned above. Download link, installation instructions and how-to-use can be found in the post below. Happy flying! Edited March 27, 2020 by Project Dynamism Check Out: :book: Project Dynamism - Persistence and Dynamic Content Creation Framework for DCS World and on DCS Forum:helpsmilie: Link to comment Share on other sites More sharing options...
Project Dynamism Posted March 4, 2020 Author Share Posted March 4, 2020 (edited) Download and Instructions Download https://www.digitalcombatsimulator.com/en/files/3308298/ Installation Extract the content of the zip archive to a folder of your choice (preferably one that needs no admin permission for creating files inside). Start the application by double-clicking "Dynamism.DCS.Connector.exe". If asked download and install the required NET Framework 4.5 from the official website. Please acknowledge the license agreement. The "Settings" tab should now be visible. Provide a unique username, password and email and click "Sign In". The button shall turn green. Integrate into your DCS World installation by picking the DCS World user data folder. The button shall turn green. In case the button next to DCS communication channel remains red, there is another process already occupying it. Please set another HTTP port. Use Switch to the "Missions" tab and download the campaigns, single or multiplayer missions of interest. Give the "Download" button time to turn green (UI is frozen until). Start DCS World, you can minimize (to system tray) the application. Do not close it! DCS World's main screen shall show the Dynamism module's icon and the downloaded missions shall be listed in the respective DCS World section (missions/campaigns) under the Dynamism module. Have fun playing the provided content or create your own one! Create In order to use Project Dynamism in your own mission you will only need to follow a file naming convention: "Dyn - <campaign_id> - <mission_number><mission_type>.miz" The campaign_id can be anything. It is used to identify missions that belong to a series. So make sure it is unique and the same for all. It is allowed to contain special characters including the dash "-" Set mission_number to 1 except for a series of consecutive missions which should be numbered sequentially. The hundreds of mission_number are interpreted as stage e.g. mission_number 205 is the 5th mission in stage 2 Set mission_type to one of the following: 'a' accumulative (incl. current mission) -> battle damage is accumulated, e.g. over several replays of same mission 'i' incremental (excl. current mission) -> battle damage of previous mission in sequence is restored, no accumulation over several replays of same mission, only damage of last play of a mission is persisted 'sa' staged accumulative (excl. previous stages, incl. current mission) -> same as accumulative but limited to scope of one stage 'si' staged incremental (excl. previous stages, excl. current mission) -> same as incremental but limited to scope of one stage If mission_type is omitted then 'a' is assumed. If mission_number is omitted then 1 is assumed. Hence the following mission file names are all valid and will trigger Project Dynamism to record the battle damages. Only the "Dyn -" prefix is mandatory: <campaign_id> <m_number> <m_type> "Dyn - FC3 - Su25_Tester.miz" -> 'FC3 - Su25_Tester' 1 'a' "Dyn - Dynamism.miz" -> 'Dynamism' 1 'a' "Dyn - FC3 - Su25_Tester - 201si" -> 'FC3 - Su25_Tester' 201 'si' "Dyn - Réunion & Liberté - 6" -> 'Réunion & Liberté' 6 'a' Alternatively a *.lua file can be placed next to the *.miz file to overwrite the parameters. Make sure the file names are identical. This allows for advanced features like reserves: "Dyn - FC3 - Su33_RussoGeorgian_09Aug_PotiSead.lua" "Dyn - FC3 - Su33_RussoGeorgian_09Aug_PotiSead.miz" The *.lua file might have the following content (all entries optional): dynamism.campaign_id = 'RussoGeorgian' dynamism.mission_no = 2 dynamism.persistence_type = 'i' dynamism.reserves['C-101 #01'] = 'C-101 #05,C-101 #06,C-101 #07,C-101 #08,C-101 #09' dynamism.reserves['Patrol #1,Patrol #2'] = 'Patrol #3,Patrol #4' Reserves will replace destroyed primary units/objects. Depletion of reserves is persisted. If static objects or units shall act as reserves they must be declared in the *.lua file next to the *.miz file. The reserves can themselves be units or static objects or just virtual (not existing in mission). Add one or multiple lines that conform to (see example above): dynamism.reserves['<primary_unit_names>'] = '<reserve_unit_names>' Deinstallation For easy deactivation and later re-activation the Dynamism mod can be disabled from within the DCS World module manager. Permanent removal will require the following steps: Delete the unzipped application folder of "Dynamism.DCS.Connector.exe" or simply do not start the application as it will automatically re-integrate into DCS World. Go to DCS World user data folder (typically C:\Users\<username>\Saved Games\DCS) and delete: the "Dynamism" folder inside the "Mods\tech" subfolder the "DynamismHooks.lua" from the "Scripts\Hooks" subfolder Edited March 27, 2020 by Project Dynamism Check Out: :book: Project Dynamism - Persistence and Dynamic Content Creation Framework for DCS World and on DCS Forum:helpsmilie: Link to comment Share on other sites More sharing options...
Project Dynamism Posted March 4, 2020 Author Share Posted March 4, 2020 (edited) Reserved Share Please feel encouraged to share your missions and campaigns. They can easily be included into the library and be downloaded by fellow DCS players through Dynamism Connector or the DCS User Files. To do so, the following steps are necessary: Package the Project Dynamism mission or campaign into a simple flat ZIP file - no folder hierarchy - preferably just the MIZ file for single or multiplayer - preferably just the CMP file, MIZ files and accompanying image files for campaigns Upload your ZIP file on the DCS User Files - https://www.digitalcombatsimulator.com/en/files/ From within the "My files" section copy the download link - it should look like https://www.digitalcombatsimulator.com/upload/iblock/fb5/Ground%20Attrition%20-%20Snowplow.zip - Note that the download link changes every time an edit is made and needs to be updated in the library! Post an email to project.dynamism[-at-]outlook.com specifying the following items - type (single, campaign, multiplayer) - name (brief) - description (brief) - author (your attribution) - modules (needed map, plane modules, mods, etc.) - download link (from DCS user files, as above) - image (landscape 273x130 pixel PNG) Thanks! Edited April 3, 2020 by Project Dynamism Check Out: :book: Project Dynamism - Persistence and Dynamic Content Creation Framework for DCS World and on DCS Forum:helpsmilie: Link to comment Share on other sites More sharing options...
Hunter Joker Posted March 5, 2020 Share Posted March 5, 2020 Hi, ED is not working to a specifico WWII dynamic campaign so pls add support to WWII if possible. Thx. Inviato dal mio BLA-L09 utilizzando Tapatalk https://www.youtube.com/user/garaganotube Link to comment Share on other sites More sharing options...
maxxstv Posted March 5, 2020 Share Posted March 5, 2020 thank you. a how can i deinstall? Link to comment Share on other sites More sharing options...
Shrike88 Posted March 5, 2020 Share Posted March 5, 2020 Is there a way to edit or get to work with multiplayer online coop ? Does this support it ? Link to comment Share on other sites More sharing options...
Spearzone Posted March 6, 2020 Share Posted March 6, 2020 Thank you for this tool. We needed such thing for a long time. So far I have only tried it in singleplayer and it works nice ! Will be a really cool addition to DCS in conjuntion with tigair's SKYNED IADS script https://forums.eagle.ru/showthread.php?t=264586 as you could now implement a full IADS in the first mission of the campaign which would then get degraded more and more throughout the campaign when key components would get destroyed Link to comment Share on other sites More sharing options...
ikaruga Posted March 6, 2020 Share Posted March 6, 2020 (edited) Hi, I get a crash when trying to download a campaign without specifying an install directory. I know it's stupid, and should not happen "in real life", but a simple error message would be better. I also got this error at mission start : https://pasteboard.co/IXRHRk4.png https://pasteboard.co/IXRIiOD.png At the end of the mission, I also get an error message. EDIT : My bad ! I did something wrong and now it works ! Thanks a lot ! Edited March 6, 2020 by ikaruga Link to comment Share on other sites More sharing options...
Project Dynamism Posted March 6, 2020 Author Share Posted March 6, 2020 Hi all, thanks for your interest and feedback. @Hunter Joker Interesting. I was at the impression ED is focusing on WWII first. Project Dynamism at the moment should work equaly well for WWII era. I just can't test much as I do not own any planes nor the asset pack and map(s). This project will rather be geared towards single-player, sporadic play, and limited duration sessions than simulating a full scale war in real-time within DCS World. @maxxstv: Added deinstallation instructions to the second post (see above). @ikaruga: Thanks for discovering. I will add the issues to the project backlog for fixing it in the next version. @Spearzone: Was just reading about the SKYNED IADS script a couple of days ago. Indeed interesting. Will try to make a Dynamism demo mission/campaign that uses it. Any suggestion for the player's airframe? I only own FC3, A-10C and Mig-21. @Shrike88 and Spearzone: I am a singleplayer guy. No experience what is needed for multiplayer and running it on a server. The two demo campaigns "Snowplow" and "Hailstorm" define playable aircraft via client slots. Guess you tested and thats not enough for multiplayer? Check Out: :book: Project Dynamism - Persistence and Dynamic Content Creation Framework for DCS World and on DCS Forum:helpsmilie: Link to comment Share on other sites More sharing options...
Zortex Posted March 7, 2020 Share Posted March 7, 2020 (edited) Hello, Malwarebytes and Norton Internet Security reports this is a virus. Do you want to take a look at this ? From VirusTotal https://imgur.com/a/XWNmDVB Edited March 7, 2020 by Zortex link Link to comment Share on other sites More sharing options...
ikaruga Posted March 7, 2020 Share Posted March 7, 2020 I did a few tests yesterday and I'm really enjoying it ! It works very well : the vehicles stay dead in the next mission, I tried adding a few choppers to both sides, they don't respawn at the next mission either if you don't specify them reserves... This has a lot of potential, can't wait for more campaigns ! A question : why is it server based ? Why not saving the campaign data locally, like other missions do (Persian Power, Operation Clear Field ... ) ? Link to comment Share on other sites More sharing options...
Spearzone Posted March 7, 2020 Share Posted March 7, 2020 Is there a way to edit or get to work with multiplayer online coop ? Does this support it ? Would be pretty much interested in the same feature as i mainly play online coop missions. The question is : Does the tool need the "campaign mode" to run or would it also be possible to get it running with the mission files running one after the other online coop , as you can only select .miz files when setting up a multiplayer but not a campaign file. @project dynamism : Any chance to make the tool running with a series of coop multiplayer mission (based on the same basic setup or template) that are not officially a campaign ? Link to comment Share on other sites More sharing options...
Project Dynamism Posted March 8, 2020 Author Share Posted March 8, 2020 Hello all, @Zortex Yes, I am aware of this. The false positives on VirusTotal stem from the use of a code obfuscator. "Project Dynamism" is implemented in C# which binaries can be easily decompiled and the source code copied one-to-one. Within minutes one would be able to produce a runnable alternative - or worse malicious - connector that handles communication between DCS World and the server (REST API). Also to hide API tokens I opted for code obfuscation knowing that "security by obfuscation" is just the very first layer of defense. I will experiment with less aggressive obfuscation and limiting it to the net code only. Maybe it helps in triggering less false positives. @ikaruga Happy you find the tool useful. Notice that also shot-down planes and choppers will be recreated as wrecks at their respective crash sites. Pretty impressive to fly over an area where a "turkey shoot" had happened in an earlier mission (e.g. enemy airbase taken by surprise). I have a naval operation Su-33 campaign in the pipeline. It really benefits from the persistence and was the trigger for developing "Project Dynamism". Since DCS World 2.5.6 made considerble changes to lighting conditions I have to refly and adjust all missions again in order to recreate the perfect flying atmosphere. Regarding the question why is "Project Dynamism" server based: You are perfectly right. Currently it could save all data locally, never in need to telephone out. I opted for server based technology to - be more independent of DCS and LUA - support a range of DCS versions and react to scripting framework changes by serving adapted LUA scripts - provide dynamic content e.g. news/changelog, new missions and campaigns - and most important auto-create mission files and control assets during mission runtime (in future) - in summary be future proof to develop this into a dynamic campaign framework that is configured via web interface and interacts with DCS at runtime @Spearzone You can run without the "campaign mode". It is just a nice wrapping for single player. In effect all what configures the persistence is contained in the mission files. Running one mission after the other e.g. for online play is equivalent. Just make sure in the call to "dynamism.OnMissionStart('<campaign_id>',<mission_number>,'<mission_type>')" that <campaign_id> stays the same for all missions in the sequence and that <mission_number> increases. So, YES, you can run a series of coop multiplayer missions (based on the same basic setup or template) that are not wrapped into a campaign but still use all features of the persistence. Check Out: :book: Project Dynamism - Persistence and Dynamic Content Creation Framework for DCS World and on DCS Forum:helpsmilie: Link to comment Share on other sites More sharing options...
Spearzone Posted March 8, 2020 Share Posted March 8, 2020 (edited) I tried running it as a host in multiplayer but it didn't work. As there is no mission end like in campaign or single player where you press EXIT (you just load the next mission without exiting as this would shutdown the server) i added a radio item in the comm menu that would let you run "dynamism.OnMissionEnd()" to save any damage to units but it didn't work. When loading the next mission all killed units were alive again. Any suggestions ? [EDIT : I tried now running the exact same 3 mission files in campaign mode --> dynamism working in single player mission mode --> dynamism not working as a host in multiplayer --> dynamism not working] Edited March 8, 2020 by Spearzone Link to comment Share on other sites More sharing options...
Project Dynamism Posted March 8, 2020 Author Share Posted March 8, 2020 Hello Spearzone, Interesting, as it should work equally well for single player mission mode. Adding the "dynamism.OnMissionEnd()" command to radio menu and calling it in multiplayer mode should also suffice. One thing that could screw the experience in your setup of running the same mission over again would be to have <mission_type> in "dynamism.OnMissionStart('<campaign_id>',<mission_number>,'<mission_type>')" not set to 'a' but something like 'i'. 'i' incremental (excl. current mission) -> battle damage of previous mission in sequence is restored, no accumulation over several replays of same mission, only damage of last play of a mission is persisted (when moving to the next in sequence) -> when re-running the mission one will not see any damage previously inflicted in that mission but only the damage until the previous mission in the sequence. Another idea is that the <campaign_id> of the single player mission is identical to an actual campaign in your pilot's log which was reset/never played. This will automatically trigger the "reset campaign" action which erases all inflicted damage. Try to name the single player <campaign_id> to something weird that is guaranteed to not exist (but respect the limited character set "a-zA-Z_0-9. -"). Same should fix the reset problem for the multiplaer mission (hopefully). If this still does not sort things out you might want to PM me your respective dcs.log (typically in C:\Users\<username>\Saved Games\DCS\Logs\dcs.log) You should see plenty of "SCRIPTING: Dynamism.Export" entries that trace what is going on. Check Out: :book: Project Dynamism - Persistence and Dynamic Content Creation Framework for DCS World and on DCS Forum:helpsmilie: Link to comment Share on other sites More sharing options...
Spearzone Posted March 9, 2020 Share Posted March 9, 2020 @Project Dynamism Got it running as a host in a multiplayer game now. You were right : The reason why it didn't work before was that the campaign name I used in the DoScript at mission start was also an active single player campaign. I just resaved the mission using a new campaign name in "dynamism.OnMissionStart('<campaign_id>',<mission_number>,'<mission_type>')" and now it worked. I had to make a trigger to manually call up the dynamism mission end script to make it usable in multiplayer. Link to comment Share on other sites More sharing options...
Jara4 Posted March 9, 2020 Share Posted March 9, 2020 Great idea! I am looking forward to test it ASAP. THX Link to comment Share on other sites More sharing options...
ikaruga Posted March 9, 2020 Share Posted March 9, 2020 A question : What happens if I call the SetReserves multiple times ? Does it overwrite the previous occurrence or is it cumulative ? I want to set reserves for multiple planes but it's tedious to do them all in a single small text window. Link to comment Share on other sites More sharing options...
Project Dynamism Posted March 9, 2020 Author Share Posted March 9, 2020 (edited) For defining reserves for units or statics in a mission one can call dynamism.SetReserves() multiple times. The calls must happen before the call to dynamism.OnMissionStart(). The reserves can themselves be units or static objects or just virtual (not existing in mission). dynamism.SetReserves({'F-16 #1','F-16 #2'},{'F-16-res #1','F-16-res #2','F-16-res #3','F-16-res #4'}) dynamism.SetReserves({'Molniya #1'},{'Molniya #2','Molniya #3'}) dynamism.SetReserves({'T-80 #01','T-80 #02','T-80 #03','T-80 #04','T-80 #05'},{'T-80 #06','T-80 #07','T-80 #08','T-80 #09','T-80 #10'}) dynamism.OnMissionStart('ReservesTestMission',1,'a') In above example let's say there is a flight of two F-16 #1 and #2. Each of them is backed by four reserves F-16-res #1 .. #4. In case some F-16 is destroyed, on next mission start, it will be replenished from the reserves. So there will be again the flight of two F-16 #1 and #2. If the reserves exist as units in the mission, they will disappear depending on the attrition of the original F-16 flight. The reserves themselves can of course be destroyed as well, e.g. parked aircraft on the ground. This continues until all reserves are depleted. Then the original F-16 flight will not be able to be replenished and starts with a reduced number of units (depending which one was shot down). Then there shall be only one Molniya ship attacking a convoi. In a previous mission Molniya #1 .. #3 were anchored at a port where the player had the chance to destroy them. Depending on the player's success at attacking the port there might now be a Molniya drawn from the surviving reserves or even none at all that is performing the attack. The attack group in the current mission is set up with Molniya #1. Similar for a platoon of 10 T-80 tanks that were under attack in an earlier mission. Now 5 of them are supposed to make a thrust on the opponent's position. Depending on the earlier attrition of the platoon now 5 or less tanks will start the attack. Edited March 11, 2020 by Project Dynamism Check Out: :book: Project Dynamism - Persistence and Dynamic Content Creation Framework for DCS World and on DCS Forum:helpsmilie: Link to comment Share on other sites More sharing options...
Project Dynamism Posted March 9, 2020 Author Share Posted March 9, 2020 (edited) @Spearzone Glad you got it working. I'm currently looking into the "Hooks" mechanism of attaching to DCS World. Seems superior to the old approach of MissingScripting.lua This appears to work for single and multiplayer, allows to differentiate between single/multi and whether it is running in campaign (through mission file path). With this information I can get rid of the name collision problem you experienced. Will roll out a new LUA script that adds the "save mission destructions" trigger automatically to the F10 menu... DONE v0.8.1 Edited March 9, 2020 by Project Dynamism Check Out: :book: Project Dynamism - Persistence and Dynamic Content Creation Framework for DCS World and on DCS Forum:helpsmilie: Link to comment Share on other sites More sharing options...
HiCKS-BB15 Posted March 9, 2020 Share Posted March 9, 2020 Hello ProDy : Just after the installation, i receive an alert by Windows Defender : Threat detected: Trojan:Win32/Zpevdo.A Warning level: Severe Category: Trojan Horse Details: This program is dangerous and executes commands from a malicious person. Details : file: C:\Program Files\Eagle Dynamics\Project Dynamism\Dynamism.DCS.Connector.exe Without more explanantion, it's hard to thrust you and provide some tests. Link to comment Share on other sites More sharing options...
Bogey Jammer Posted March 9, 2020 Share Posted March 9, 2020 Excellent idea, but a monthly fee, sorry I pass. I go back to try to make my own dynamic campaign engine ;) I'll buy : МиГ-23МЛД & МЛА МиГ-27К МиГ-25 Mirage III F-4E any IJ plane 1950' Korea Dynamic campaign module Link to comment Share on other sites More sharing options...
Project Dynamism Posted March 9, 2020 Author Share Posted March 9, 2020 Hi HiCKS-BB15, That is new and that is bad. Windows Defender is also my major instance of trust... not one of the small antimalware vendors on VirusTotal that used to give a false positive in the past. I can also reproduce on my side. Thanks for the heads up. Will investigate how to do better (see post https://forums.eagle.ru/showpost.php?p=4239097&postcount=13 for the reason). Hello ProDy : Just after the installation, i receive an alert by Windows Defender : Without more explanantion, it's hard to thrust you and provide some tests. Check Out: :book: Project Dynamism - Persistence and Dynamic Content Creation Framework for DCS World and on DCS Forum:helpsmilie: Link to comment Share on other sites More sharing options...
ikaruga Posted March 10, 2020 Share Posted March 10, 2020 (edited) I'm afraid I have to agree with Bogey Jammer about the monthly fee. Each player creating their own server and connecting on it with the current client would solve the problem, though ... However, you would have to start the server, the client AND DCS to play the dynamic campaign. No idea how much RAM it would take, though ... As a sidenote, there's currently a known bug in DCS being investigated that corrupts the debriefings and messes up with your dynamic campaign, preventing me to go to the next mission. Not much you can do about it, though ... https://forums.eagle.ru/showthread.php?p=4240066#post4240066 Edited March 10, 2020 by ikaruga Link to comment Share on other sites More sharing options...
Spearzone Posted March 10, 2020 Share Posted March 10, 2020 Wanna take part in the monthly fee and server based tool discussion here : Generally I find this script is a great addition to DCS. I am part of a Coop mission multiplayer group and all of us put many many hour of freetime in it to create Skins packs, scripts (tigairs skynet IADS), handouts and missions without charging for it. It's part of the game. @Project Dynamism : I would really recommend you to get away from this "using an extra tool with monthly fee approach". Why not just publish the script (often this is how things really develop in the DCS community as other developers can create great additions to given scripts). You could still incorporate a link to your website with a paypal donate button on it. Anyone using the script can then decide wether it's useful for him and if he wants to make a donation (I would :smilewink:). Anyway, thanks for doing this work ! Link to comment Share on other sites More sharing options...
Recommended Posts