factoriax.playground.play.achievements#
Free-play achievement ladder for the interactive client.
The ladder takes a human player from mining raw ore by hand to a rocket launch, one mechanic at a time.
Each hint names a key, so this ladder belongs to the playground. A research scenario declares its own set, next to the env that reads it. No scenario shares this ladder.
Not registered as a scenario: free play builds its env directly in
factoriax.playground.play.main, so the ladder never enters the
engine or the scenario registry.
Module Attributes
The ladder, in unlock order. |
|
|
- factoriax.playground.play.achievements.FREE_PLAY_ACHIEVEMENTS: tuple[Achievement, ...] = (Achievement(id='first_ore', condition=<function <lambda>>, name='First Ore', hint='Walk onto an ore tile and press SPACE to mine.', weight=1.0), Achievement(id='stockpile', condition=<function <lambda>>, name='Stockpile', hint='Keep mining until you have 10 ore total.', weight=1.0), Achievement(id='apprentice_engineer', condition=<function _holds_any_machine_item>, name='Apprentice Engineer', hint='Open inventory (I), select a recipe, and craft it (E).', weight=1.0), Achievement(id='breaking_ground', condition=<function <lambda>>, name='Breaking Ground', hint='Select a machine in your hotbar and press E to place it.', weight=1.0), Achievement(id='coal_gathered', condition=functools.partial(<function holds_item>, item=1), name='Coal Gathered', hint='Walk onto a coal tile and press SPACE to mine a piece of coal.', weight=1.0), Achievement(id='automated_mining', condition=functools.partial(<function any_buffer_nonempty>, machine=1), name='Automated Mining', hint='Place a miner on an ore tile and wait for it to produce.', weight=1.0), Achievement(id='moving_parts', condition=<function _arm_and_pallet_placed>, name='Moving Parts', hint='Craft and place both an arm and a pallet.', weight=1.0), Achievement(id='first_pipeline', condition=functools.partial(<function any_buffer_nonempty>, machine=2), name='First Pipeline', hint='Use an arm to move miner output into a pallet.', weight=1.0), Achievement(id='belt_network', condition=functools.partial(<function has_machines>, machine=3, count=5), name='Belt Network', hint='Craft and place at least 5 conveyor belts.', weight=1.0), Achievement(id='scaling_up', condition=functools.partial(<function has_machines>, machine=1, count=3), name='Scaling Up', hint='Have 3 miners placed on the map at the same time.', weight=1.0), Achievement(id='industrialist', condition=<function <lambda>>, name='Industrialist', hint='Place 10 machines of any type on the map.', weight=1.0), Achievement(id='assembler_crafted', condition=functools.partial(<function holds_item>, item=27), name='Assembler Crafted', hint='Open inventory (I), select the Assembler recipe, and craft it.', weight=1.0), Achievement(id='assembly_line', condition=functools.partial(<function has_machines>, machine=4), name='Assembly Line', hint='Place an assembler on the map.', weight=1.0), Achievement(id='first_assembly', condition=<function any_assembler_has_output>, name='First Assembly', hint='Feed inputs to your assembler. It picks the recipe itself.', weight=1.0), Achievement(id='rocket_complete', condition=functools.partial(<function has_machines>, machine=6), name='Rocket Complete', hint='Craft a rocket in an assembler and place it on the map.', weight=1.0), Achievement(id='first_science', condition=<function _holds_any_science>, name='First Science', hint='Produce a science pack in an assembler.', weight=1.0), Achievement(id='advanced_science', condition=functools.partial(<function holds_item>, item=17), name='Advanced Science', hint='Produce an advanced science pack.', weight=1.0))#
The ladder, in unlock order. Index is the persisted bit position.
- factoriax.playground.play.achievements.free_play_conditions(state: EnvState) Array#
Bound evaluator for
FactoriaxEnv.