Releases: duyminh1998/pycmo
Releases · duyminh1998/pycmo
v1.4.0
pyCMO v1.4.0
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 (seescripts/floridistan/gym_demo.py
), installgymnasium
and setuse_gymnasium=True
inpycmo/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 callsCMOEnv::client::close_scenario_end_and_player_eval_messages
whenclose_scenario_end_and_player_eval_messages=True
is passed in.- Changed
collections.namedtuple
inpycmo.lib.features
totyping.NamedTuple
for improved typing. - Standardized data types coming from CMO and into
pycmo.lib.features
FeaturesFromSteam
no longer hasavai_weapons
(it was never used)- Added boolean parameter to
rtb
function inpycmo.lib.actions
because apparently, we should allow users to setrtb=False
to cancel a unit in the process of returning to base - Created custom spaces out of
gymnasium.spaces
. These should be used withpycmo.cmo_gym_env.FloridistanPycmoGymEnv
and whatever inherits frompycmo.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
pyCMO v1.3.0
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 forSteamClient
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 calledteardown_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
pyCMO v1.2.0
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 whiledemo.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.