Skip to content

Releases: duyminh1998/pycmo

v1.4.0

12 Dec 02:17
ee2c247
Compare
Choose a tag to compare

pyCMO v1.4.0

1.4.0 release notes

Release Date: December 11th, 2023

Cut Date: December 11th, 2023

Changes

  • PyCMO now has a Gymnasium implementation in pycmo.env.cmo_gym_env. To use this environment (see scripts/floridistan/gym_demo.py), install gymnasium and set use_gymnasium=True in pycmo/configs/config.py.
  • floridistan scenario is optimized. The target is closer to the strike platforms. The game ends when BLUE loses a unit or when BLUE destroys the target. Each timestep incurs a reward of -1. Destroying the target earns the agent a reward of 300. There is a four hour time limit.

Internal

  • CMOEnv::reset now automatically calls CMOEnv::client::close_scenario_end_and_player_eval_messages when close_scenario_end_and_player_eval_messages=True is passed in.
  • Changed collections.namedtuple in pycmo.lib.features to typing.NamedTuple for improved typing.
  • Standardized data types coming from CMO and into pycmo.lib.features
  • FeaturesFromSteam no longer has avai_weapons (it was never used)
  • Added boolean parameter to rtb function in pycmo.lib.actions because apparently, we should allow users to set rtb=False to cancel a unit in the process of returning to base
  • Created custom spaces out of gymnasium.spaces. These should be used with pycmo.cmo_gym_env.FloridistanPycmoGymEnv and whatever inherits from pycmo.cmo_gym_env.BasePycmoGymEnv to define CMO-specific observation and action spaces.
  • Updated CMO version number to 1328.12 to comply with new game update.
  • Made gymnasium an optional dependency to not clash with old code.

v1.3.0

27 Nov 23:45
e72166d
Compare
Choose a tag to compare

pyCMO v1.3.0

1.3.0 release notes

Release Date: November 27th, 2023

Cut Date: November 27th, 2023

Changes

  • pyCMO now works with scenarios run on turbo or double turbo speeds
  • Improved pyCMO's reliability to interact with Command. There is now a SteamClientProps class that can be used to tweak settings for SteamClient to fit each scenario. For example, on scenarios where there is a shorter amount of time between data exports, it is better to increase the delay before each action (e.g. sending keys, checking whether specific windows exist) so that we do not miss anything.
  • Scenario time is correctly outputted by print_env_information
  • Added logging (INFO and DEBUG) to several modules
  • Updated actions.py to work with the Steam version of Command as well as added several new features like the ability to sample a random action based on the given observation
  • Updated project's license

Internal

  • Replaced batch and ps scripts that were used to get windows or send keys to certain applications with pywin32
  • init.lua now sets up a default trigger to end the scenario (when time runs out). This should be set by the user for custom conditions to end the scenario.
  • pycmo_lib.lua now contains a new function called teardown_and_end_scen that gets run before the scenario to do teardown things like note the scenario has ended, export the final observation, etc.

v1.2.1

28 Nov 00:00
7765170
Compare
Choose a tag to compare

pyCMO v1.2.0

1.2.0 release notes

Release Date: November 19th, 2023

Cut Date: November 20th, 2023

Changes

  • Created floridistan scenario to demonstrate an agent controlling an aircraft to strike a target
  • Add support for exporting a side's contacts to ScenEdit_ExportScenarioToXML
  • Add functionality in protocol to restart a scenario, end a scenario, and check/record when a scenario has ended
  • Updated run_loop to include a function to run an RL loop with the Steam version of Command
  • Added to init.lua so that observations are recorded when the scenario first loads and added a function to record whether a scenario has ended
  • Added release notes for pyCMO 1.0.0, 1.1.0, and 1.2.0

Internal

  • Separated the creation of sample agents and the running of the demo from sample_agent.py. sample_agent.py now contains the definition of the sample agent while demo.py contains the actual demo.
  • Updated config.py to record the version of Command: Modern Operations
  • Added various batch and PowerShell scripts to automate mouse clicks in support of #20
  • Per #25, protocol will automatically restart the scenario until the time compression is set correctly (it does not check for this) or the scenario has been properly recorded as not ended (the main thing it checks for)
  • Per #26, protocol will automatically press the "Enter scenario" button on the "Side selection and briefing" screen that popups when a scenario is loaded or reloaded until the popup goes away

Misc Notes

This was originally release v1.2.0 but in the process of releasing v1.3.0 I screwed up and deleted the original v1.2.0 release. This is an attempt to reconstruct it.