factorio-learning-environment icon indicating copy to clipboard operation
factorio-learning-environment copied to clipboard

Explore the requirements for updating to 2.0.0

Open JackHopkins opened this issue 6 months ago • 3 comments

An exploratory project to determine the amount of effort needed to upgrade to 2.0.0.

JackHopkins avatar Jun 23 '25 16:06 JackHopkins

@JackHopkins https://github.com/JackHopkins/factorio-learning-environment/issues/166 is also about this FYI

kiankyars avatar Jun 24 '25 07:06 kiankyars

https://github.com/tburrows13/factorio-2.0-mod-porting-guide

hrshtt avatar Jun 28 '25 05:06 hrshtt

I think overall restructuring #229 has a chance to help us with setting up 2.0 updates as well.

/env/
  core/                           # Version-agnostic abstractions & multi-agent
    instances/
      - base_instance.py          # Renamed from instance.py
      - multi_agent_instance.py   # Renamed from a2a_instance.py
    namespaces/
      - base_namespace.py         # Renamed from namespace.py  
      - multi_agent_namespace.py  # Renamed from a2a_namespace.py
    entities/
      - entities.py               # If future versions are merely additive it could be version-agnostic
    protocols/                    # Move from /env/protocols
    exceptions/                   # Move from /env/exceptions
    
  factorio/ or game_api/         # Version-specific implementations
    v1_1/                         # [Optional] Current Factorio 1.1.110 implementation
      - game_types.py             # Move from /env/game_types.py
      tools/                      # Move from /env/tools/
      lib/                        # Move from /env/lib/    
  adapters/                       # External system integrations
    gym/                          # Move from /env/gym_env/
      - action.py
      - config.py
      - environment.py

i propose we club all the logic coupled with factorio versions together, as far as i understand the only difference between versions should be some version specific FactorioInstance implementation, game_types.py, possibly entities.py and tools/ lib/ lua scripts. Hence they should be a single submodule. which can then eventually be upgraded to 2.0.

hrshtt avatar Jun 29 '25 07:06 hrshtt