

Project Dynamism
Members-
Posts
66 -
Joined
-
Last visited
Content Type
Profiles
Forums
Events
Everything posted by Project Dynamism
-
Hello rwbishUP, I am currently working on an update v0.9 that simplifies Project Dynamism integration into a mission. Essentially requiring only a naming convention to follow. Also there will be differentiation for campaigns, single and multiplayer missions. Once this is out I would love users to contribute missions to fill up the library! Basically the mission is uploaded as ZIP to the DCS user files section and I will need some description, a picture and list of needed modules for the integration into the database. Currently I am adapting my Su-33 campaign to DCS 2.5.6 and will make that available with v0.9
-
Hi HiCKS-BB15, Currently when minimizing the program via [-] it goes to system tray as an icon. When closing the program via [X] it completely quits. There should be no tray icon. You saying on the program close via [X] there should be a popup, asking whether user wants to actually quit or only minimize to tray?
-
Hi Claw, The error means that there is another process on your machine that is already using HTTP port 9000. Project Dynamism transmits data on http://localhost:9000/ to and from DCS World. Easiest solution would be that you tried to start a second instance of Dynamism.DCS.Connector.exe while the first one was still active. If minimized it is hiding in the system tray (small symbols in the Windows status bar lower right part). You can restore it by left-clicking on the tray icon. The application is closed via the X in the window. If there is indeed another program (not Dynamism.DCS.Connector.exe) occupying that port, then you can change the port in the settings of Dynamism.DCS.Connector.exe. Unfortunately it is not yet exposed via the GUI (working on this right now for update v0.9). Please modify the port in XML file Dynamism.DCS.Connector.exe.config sitting right next to the application executable (port is taken from there for reintegration after DCS World update). Also please modify the port in <DCS World installation folder>\Scripts\MissionScripting.lua to the same number as in the settings file above (port is taken from there).
-
Hi all, Just discovered a better trigger for calling dynamism.OnMissionStart() which now recreates the seamless behaviour as was present with DCS World 2.5.5 and ON MISSION START trigger (which got broken with DCS World 2.5.6) So forget about trigger ONCE at On No Event, with condition Time Less (1) Instead use trigger type MISSION START with no condition and add action DO SCRIPT with dynamism.OnMissionStart('<campaign_id>',<mission_number>,'<mission_type>') This loads Project Dynamism and the battle damage before unpausing the mission. No more stutter a second into it! Another thing to mention: I was wrong in my earlier statement. Of course it is possible and actually needed to call dynamism.SetReserves() multiple times. See updated post 19 for details (https://forums.eagle.ru/showpost.php?p=4240631&postcount=19)
-
@Bogey Jammer, ikaruga & Spearzone, Looks like this goes the same direction as https://forums.eagle.ru/showthread.php?p=4181083 Was thinking of a small monthly fee (e.g. 1 EUR) to try to collect money to outsource development to someone that can dedicate time. Problem is that fix PayPal fees would almost half this anyway. Collection via donations and free base features with paid advanced stuff (a la TacView) could also be an option. Just much less predictable from a resource planning perspective.
-
Alright gentlemen, I uploaded a new executable to the DCS User Files that passes most malware scans on VirusTotal. Notable exception is Malwarebytes (local installation) with https://blog.malwarebytes.com/detections/machinelearning-anomalous-100/ No new functionality, just less code obfuscation to make it easier to be analysed by the scanners. @HiCKS-BB15 Windows Defender is now happy wiht it again (and hopefully stays!) @Zortex VirusTotal now shows 4 positives (mainly small vendors). Malwarebytes (local installation) is already unhappy with the raw executable. Can't do much but report as false positive to them.
-
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).
-
@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
-
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.
-
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.
-
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.
-
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?
-
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!
-
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
-
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!