daveey commited on
Commit
2b299a7
1 Parent(s): faee336

Upload folder using huggingface_hub

Browse files
.gitattributes CHANGED
@@ -33,3 +33,8 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ a20_40x40.mp4 filter=lfs diff=lfs merge=lfs -text
37
+ a20_b4_40x40.mp4 filter=lfs diff=lfs merge=lfs -text
38
+ a20_r4_40x40.mp4 filter=lfs diff=lfs merge=lfs -text
39
+ replay.mp4 filter=lfs diff=lfs merge=lfs -text
40
+ sf_log.txt filter=lfs diff=lfs merge=lfs -text
.summary/0/events.out.tfevents.1719003583.a228d6d534a1 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:720afb546337648336bd32ad625d97609062f9733f1dcf43eb351cf679864fc6
3
+ size 319775646
.summary/0/events.out.tfevents.1719380402.a228d6d534a1 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a6a97bb9a0873756ff88949f65d1e58b6265ed5ee8920e63e2948e5eadb7330e
3
+ size 40
README.md ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: sample-factory
3
+ tags:
4
+ - deep-reinforcement-learning
5
+ - reinforcement-learning
6
+ - sample-factory
7
+ ---
8
+
9
+ A(n) **APPO** model trained on the **GDY-MettaGrid** environment.
10
+
11
+ This model was trained using Sample-Factory 2.0: https://github.com/alex-petrenko/sample-factory.
12
+ Documentation for how to use Sample-Factory can be found at https://www.samplefactory.dev/
13
+
14
+
15
+ ## Downloading the model
16
+
17
+ After installing Sample-Factory, download the model with:
18
+ ```
19
+ python -m sample_factory.huggingface.load_from_hub -r metta-ai/baseline.v0.5.5
20
+ ```
21
+
22
+
23
+ ## Using the model
24
+
25
+ To run the model after download, use the `enjoy` script corresponding to this environment:
26
+ ```
27
+ python -m <path.to.enjoy.module> --algo=APPO --env=GDY-MettaGrid --train_dir=./train_dir --experiment=baseline.v0.5.5
28
+ ```
29
+
30
+
31
+ You can also upload models to the Hugging Face Hub using the same script with the `--push_to_hub` flag.
32
+ See https://www.samplefactory.dev/10-huggingface/huggingface/ for more details
33
+
34
+ ## Training with this model
35
+
36
+ To continue training with this model, use the `train` script corresponding to this environment:
37
+ ```
38
+ python -m <path.to.train.module> --algo=APPO --env=GDY-MettaGrid --train_dir=./train_dir --experiment=baseline.v0.5.5 --restart_behavior=resume --train_for_env_steps=10000000000
39
+ ```
40
+
41
+ Note, you may have to adjust `--train_for_env_steps` to a suitably high number as the experiment will resume at the number of steps it concluded at.
42
+
a20_40x40.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:18533b294f488dd4e785e2f1fdfdaa691bf82b45410181ed7c818b9711dd9340
3
+ size 2002553
a20_b4_40x40.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2002c7c68775b12235bd3b468a9851ffdaef79400091ceb367523b6ed621eb0a
3
+ size 2248841
a20_r4_40x40.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2e55450e0eea72105a88b3d6f1a2d9660b9b8d8beeb744862938f41f8be56250
3
+ size 2359699
a5_25x25.mp4 ADDED
Binary file (696 kB). View file
 
checkpoint_p0/best_000755114_12371787776_reward_0.948.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ed92aa676c393a60db041b043616b7b05537533bb9d86b3e786abce51149d314
3
+ size 39046778
checkpoint_p0/checkpoint_000980417_16063152128.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fcca43dd239da730d227114fee3fda64832289d7fe39e09213947879b747a80b
3
+ size 39048218
checkpoint_p0/checkpoint_000980730_16068280320.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c7e099530d05fa7407ff36f910da7c2966e4a6aae7fe0f10ab149b1ee400a8ab
3
+ size 39048218
config.json ADDED
@@ -0,0 +1,162 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "help": false,
3
+ "algo": "APPO",
4
+ "env": "GDY-MettaGrid",
5
+ "experiment": "p2.dr6",
6
+ "train_dir": "/workspace/metta/train_dir",
7
+ "restart_behavior": "resume",
8
+ "device": "gpu",
9
+ "seed": 0,
10
+ "num_policies": 1,
11
+ "async_rl": true,
12
+ "serial_mode": false,
13
+ "batched_sampling": false,
14
+ "num_batches_to_accumulate": 2,
15
+ "worker_num_splits": 2,
16
+ "policy_workers_per_policy": 1,
17
+ "max_policy_lag": 50,
18
+ "num_workers": 32,
19
+ "num_envs_per_worker": 2,
20
+ "batch_size": 16384,
21
+ "num_batches_per_epoch": 1,
22
+ "num_epochs": 1,
23
+ "rollout": 256,
24
+ "recurrence": 256,
25
+ "shuffle_minibatches": false,
26
+ "gamma": 0.99,
27
+ "reward_scale": 1.0,
28
+ "reward_clip": 1000.0,
29
+ "value_bootstrap": false,
30
+ "normalize_returns": true,
31
+ "exploration_loss_coeff": -0.002,
32
+ "value_loss_coeff": 0.976,
33
+ "kl_loss_coeff": 0.0,
34
+ "aux_loss_coeff": 0.0,
35
+ "exploration_loss": "symmetric_kl",
36
+ "gae_lambda": 0.95,
37
+ "ppo_clip_ratio": 0.1,
38
+ "ppo_clip_value": 1.0,
39
+ "with_vtrace": false,
40
+ "vtrace_rho": 1.0,
41
+ "vtrace_c": 1.0,
42
+ "optimizer": "adam",
43
+ "adam_eps": 1e-06,
44
+ "adam_beta1": 0.9,
45
+ "adam_beta2": 0.999,
46
+ "max_grad_norm": 4.0,
47
+ "learning_rate": 0.0001,
48
+ "lr_schedule": "constant",
49
+ "lr_schedule_kl_threshold": 0.008,
50
+ "lr_adaptive_min": 1e-06,
51
+ "lr_adaptive_max": 0.01,
52
+ "obs_subtract_mean": 0.0,
53
+ "obs_scale": 1.0,
54
+ "normalize_input": false,
55
+ "normalize_input_keys": null,
56
+ "decorrelate_experience_max_seconds": 150,
57
+ "decorrelate_envs_on_one_worker": true,
58
+ "actor_worker_gpus": [],
59
+ "set_workers_cpu_affinity": true,
60
+ "force_envs_single_thread": false,
61
+ "default_niceness": 0,
62
+ "log_to_file": true,
63
+ "experiment_summaries_interval": 10,
64
+ "flush_summaries_interval": 30,
65
+ "stats_avg": 100,
66
+ "summaries_use_frameskip": true,
67
+ "heartbeat_interval": 20,
68
+ "heartbeat_reporting_interval": 180,
69
+ "train_for_env_steps": 9999999999999,
70
+ "train_for_seconds": 10000000000,
71
+ "save_every_sec": 120,
72
+ "keep_checkpoints": 2,
73
+ "load_checkpoint_path": null,
74
+ "init_checkpoint_path": "train_dir/baseline.v0.5.4/checkpoint_p0/checkpoint_000349863_5732155392.pth",
75
+ "load_checkpoint_kind": "latest",
76
+ "save_milestones_sec": -1,
77
+ "save_best_every_sec": 5,
78
+ "save_best_metric": "reward",
79
+ "save_best_after": 100000,
80
+ "benchmark": false,
81
+ "encoder_mlp_layers": [
82
+ 512,
83
+ 512
84
+ ],
85
+ "encoder_conv_architecture": "convnet_simple",
86
+ "encoder_conv_mlp_layers": [
87
+ 512
88
+ ],
89
+ "use_rnn": true,
90
+ "rnn_size": 512,
91
+ "rnn_type": "gru",
92
+ "rnn_num_layers": 1,
93
+ "decoder_mlp_layers": [],
94
+ "nonlinearity": "elu",
95
+ "policy_initialization": "orthogonal",
96
+ "policy_init_gain": 1.0,
97
+ "actor_critic_share_weights": true,
98
+ "adaptive_stddev": true,
99
+ "continuous_tanh_scale": 0.0,
100
+ "initial_stddev": 1.0,
101
+ "use_env_info_cache": false,
102
+ "env_gpu_actions": false,
103
+ "env_gpu_observations": true,
104
+ "env_frameskip": 1,
105
+ "env_framestack": 1,
106
+ "pixel_format": "CHW",
107
+ "use_record_episode_statistics": false,
108
+ "episode_counter": false,
109
+ "with_wandb": true,
110
+ "wandb_user": "platypus",
111
+ "wandb_project": "metta",
112
+ "wandb_group": null,
113
+ "wandb_job_type": "SF",
114
+ "wandb_tags": [],
115
+ "with_pbt": false,
116
+ "pbt_mix_policies_in_one_env": true,
117
+ "pbt_period_env_steps": 5000000,
118
+ "pbt_start_mutation": 20000000,
119
+ "pbt_replace_fraction": 0.3,
120
+ "pbt_mutation_rate": 0.15,
121
+ "pbt_replace_reward_gap": 0.1,
122
+ "pbt_replace_reward_gap_absolute": 1e-06,
123
+ "pbt_optimize_gamma": false,
124
+ "pbt_target_objective": "true_objective",
125
+ "pbt_perturb_min": 1.1,
126
+ "pbt_perturb_max": 1.5,
127
+ "env_cfg": "{\"name\": \"GDY-MettaGrid\", \"_target_\": \"env.griddly.mettagrid.gym_env.MettaGridGymEnv\", \"max_action_value\": 10, \"hidden_features\": {\"grid_obs\": [\"agent:energy\", \"agent:hp\"]}, \"game\": {\"obs_width\": 11, \"obs_height\": 11, \"max_steps\": 5000, \"tile_size\": 16, \"num_agents\": 20, \"no_energy_steps\": 500, \"objects\": {\"agent\": {\"initial_energy\": [50, 250], \"max_energy\": [200, 250], \"max_inventory\": [3, 10], \"freeze_duration\": [5, 20], \"energy_reward\": false, \"hp\": 1, \"mortal\": false, \"upkeep\": {\"time\": 0, \"shield\": [0, 3]}, \"use_cost\": 0}, \"altar\": {\"hp\": [10, 50], \"cooldown\": [2, 5], \"use_cost\": [50, 250]}, \"converter\": {\"hp\": [10, 50], \"cooldown\": [2, 5], \"energy_output\": [50, 200], \"use_cost\": 0}, \"generator\": {\"hp\": [10, 50], \"cooldown\": [3, 10], \"initial_resources\": [5, 50], \"use_cost\": 0}, \"wall\": {\"density\": 0.01, \"hp\": [3, 20]}}, \"actions\": {\"move\": {\"cost\": [0, 2]}, \"rotate\": {\"cost\": [0, 1]}, \"jump\": {\"cost\": [1, 5]}, \"shield\": {\"cost\": [0, 2]}, \"drop\": {\"cost\": [0, 2]}, \"use\": {\"cost\": [0, 2]}, \"attack\": {\"cost\": [3, 10], \"damage\": [3, 10]}}, \"map\": {\"layout\": {\"rooms_x\": 2, \"rooms_y\": 2}, \"room\": {\"width\": 20, \"height\": 20, \"num_agents\": 5, \"objects\": {\"agent\": 5, \"altar\": 1, \"converter\": 3, \"generator\": 10, \"wall\": 40}, \"border\": 1}}}, \"kinship\": {\"team_size\": [1, 5], \"team_reward\": [0.0, 1.0]}}",
128
+ "agent_cfg": "{\"_target_\": \"agent.metta_agent.MettaAgent\", \"observation_encoders\": {\"grid_obs\": {\"feature_names\": [], \"normalize_features\": true, \"label_dim\": 4, \"output_dim\": 512, \"layers\": 4}, \"global_vars\": {\"feature_names\": [], \"normalize_features\": true, \"label_dim\": 4, \"output_dim\": 8, \"layers\": 2}, \"last_action\": {\"feature_names\": [\"last_action_id\", \"last_action_val\"], \"normalize_features\": true, \"label_dim\": 4, \"output_dim\": 8, \"layers\": 2}, \"last_reward\": {\"feature_names\": [\"last_reward\"], \"normalize_features\": true, \"label_dim\": 4, \"output_dim\": 8, \"layers\": 2}, \"kinship\": {\"feature_names\": [\"kinship\"], \"normalize_features\": true, \"label_dim\": 4, \"output_dim\": 8, \"layers\": 2}}, \"fc\": {\"layers\": 3, \"output_dim\": 512}, \"decoder\": {\"_target_\": \"agent.decoder.Decoder\"}, \"core\": {\"_target_\": \"sample_factory.model.core.ModelCoreRNN\", \"rnn_type\": \"gru\", \"rnn_num_layers\": 1, \"rnn_size\": 512}}",
129
+ "command_line": "--aux_loss_coeff=0 --recurrence=256 --rollout=256 --value_loss_coeff=0.976 --exploration_loss=symmetric_kl --exploration_loss_coeff=0.002 --policy_initialization=orthogonal --learning_rate=0.0001 --max_policy_lag=50 --nonlinearity=elu --load_checkpoint_kind=latest --normalize_input=False --seed=0 --batch_size=16384 --decorrelate_experience_max_seconds=150 --train_for_env_steps=9999999999999 --with_wandb=True --wandb_user=platypus --wandb_project=metta --experiment=p2.dr6 --init_checkpoint_path=train_dir/baseline.v0.5.4/checkpoint_p0/checkpoint_000349863_5732155392.pth --rnn_type=gru --rnn_num_layers=1 --rnn_size=512 --env=GDY-MettaGrid --env_cfg={\"name\": \"GDY-MettaGrid\", \"_target_\": \"env.griddly.mettagrid.gym_env.MettaGridGymEnv\", \"max_action_value\": 10, \"hidden_features\": {\"grid_obs\": [\"agent:energy\", \"agent:hp\"]}, \"game\": {\"obs_width\": 11, \"obs_height\": 11, \"max_steps\": 5000, \"tile_size\": 16, \"num_agents\": 20, \"no_energy_steps\": 500, \"objects\": {\"agent\": {\"initial_energy\": [50, 250], \"max_energy\": [200, 250], \"max_inventory\": [3, 10], \"freeze_duration\": [5, 20], \"energy_reward\": false, \"hp\": 1, \"mortal\": false, \"upkeep\": {\"time\": 0, \"shield\": [0, 3]}, \"use_cost\": 0}, \"altar\": {\"hp\": [10, 50], \"cooldown\": [2, 5], \"use_cost\": [50, 250]}, \"converter\": {\"hp\": [10, 50], \"cooldown\": [2, 5], \"energy_output\": [50, 200], \"use_cost\": 0}, \"generator\": {\"hp\": [10, 50], \"cooldown\": [3, 10], \"initial_resources\": [5, 50], \"use_cost\": 0}, \"wall\": {\"density\": 0.01, \"hp\": [3, 20]}}, \"actions\": {\"move\": {\"cost\": [0, 2]}, \"rotate\": {\"cost\": [0, 1]}, \"jump\": {\"cost\": [1, 5]}, \"shield\": {\"cost\": [0, 2]}, \"drop\": {\"cost\": [0, 2]}, \"use\": {\"cost\": [0, 2]}, \"attack\": {\"cost\": [3, 10], \"damage\": [3, 10]}}, \"map\": {\"layout\": {\"rooms_x\": 2, \"rooms_y\": 2}, \"room\": {\"width\": 20, \"height\": 20, \"num_agents\": 5, \"objects\": {\"agent\": 5, \"altar\": 1, \"converter\": 3, \"generator\": 10, \"wall\": 40}, \"border\": 1}}}, \"kinship\": {\"team_size\": [1, 5], \"team_reward\": [0.0, 1.0]}} --agent_cfg={\"_target_\": \"agent.metta_agent.MettaAgent\", \"observation_encoders\": {\"grid_obs\": {\"feature_names\": [], \"normalize_features\": true, \"label_dim\": 4, \"output_dim\": 512, \"layers\": 4}, \"global_vars\": {\"feature_names\": [], \"normalize_features\": true, \"label_dim\": 4, \"output_dim\": 8, \"layers\": 2}, \"last_action\": {\"feature_names\": [\"last_action_id\", \"last_action_val\"], \"normalize_features\": true, \"label_dim\": 4, \"output_dim\": 8, \"layers\": 2}, \"last_reward\": {\"feature_names\": [\"last_reward\"], \"normalize_features\": true, \"label_dim\": 4, \"output_dim\": 8, \"layers\": 2}, \"kinship\": {\"feature_names\": [\"kinship\"], \"normalize_features\": true, \"label_dim\": 4, \"output_dim\": 8, \"layers\": 2}}, \"fc\": {\"layers\": 3, \"output_dim\": 512}, \"decoder\": {\"_target_\": \"agent.decoder.Decoder\"}, \"core\": {\"_target_\": \"sample_factory.model.core.ModelCoreRNN\", \"rnn_type\": \"gru\", \"rnn_num_layers\": 1, \"rnn_size\": 512}}",
130
+ "cli_args": {
131
+ "env": "GDY-MettaGrid",
132
+ "experiment": "p2.dr6",
133
+ "seed": 0,
134
+ "max_policy_lag": 50,
135
+ "batch_size": 16384,
136
+ "rollout": 256,
137
+ "recurrence": 256,
138
+ "exploration_loss_coeff": 0.002,
139
+ "value_loss_coeff": 0.976,
140
+ "aux_loss_coeff": 0.0,
141
+ "exploration_loss": "symmetric_kl",
142
+ "learning_rate": 0.0001,
143
+ "normalize_input": false,
144
+ "decorrelate_experience_max_seconds": 150,
145
+ "train_for_env_steps": 9999999999999,
146
+ "init_checkpoint_path": "train_dir/baseline.v0.5.4/checkpoint_p0/checkpoint_000349863_5732155392.pth",
147
+ "load_checkpoint_kind": "latest",
148
+ "rnn_size": 512,
149
+ "rnn_type": "gru",
150
+ "rnn_num_layers": 1,
151
+ "nonlinearity": "elu",
152
+ "policy_initialization": "orthogonal",
153
+ "with_wandb": true,
154
+ "wandb_user": "platypus",
155
+ "wandb_project": "metta",
156
+ "env_cfg": "{\"name\": \"GDY-MettaGrid\", \"_target_\": \"env.griddly.mettagrid.gym_env.MettaGridGymEnv\", \"max_action_value\": 10, \"hidden_features\": {\"grid_obs\": [\"agent:energy\", \"agent:hp\"]}, \"game\": {\"obs_width\": 11, \"obs_height\": 11, \"max_steps\": 5000, \"tile_size\": 16, \"num_agents\": 20, \"no_energy_steps\": 500, \"objects\": {\"agent\": {\"initial_energy\": [50, 250], \"max_energy\": [200, 250], \"max_inventory\": [3, 10], \"freeze_duration\": [5, 20], \"energy_reward\": false, \"hp\": 1, \"mortal\": false, \"upkeep\": {\"time\": 0, \"shield\": [0, 3]}, \"use_cost\": 0}, \"altar\": {\"hp\": [10, 50], \"cooldown\": [2, 5], \"use_cost\": [50, 250]}, \"converter\": {\"hp\": [10, 50], \"cooldown\": [2, 5], \"energy_output\": [50, 200], \"use_cost\": 0}, \"generator\": {\"hp\": [10, 50], \"cooldown\": [3, 10], \"initial_resources\": [5, 50], \"use_cost\": 0}, \"wall\": {\"density\": 0.01, \"hp\": [3, 20]}}, \"actions\": {\"move\": {\"cost\": [0, 2]}, \"rotate\": {\"cost\": [0, 1]}, \"jump\": {\"cost\": [1, 5]}, \"shield\": {\"cost\": [0, 2]}, \"drop\": {\"cost\": [0, 2]}, \"use\": {\"cost\": [0, 2]}, \"attack\": {\"cost\": [3, 10], \"damage\": [3, 10]}}, \"map\": {\"layout\": {\"rooms_x\": 2, \"rooms_y\": 2}, \"room\": {\"width\": 20, \"height\": 20, \"num_agents\": 5, \"objects\": {\"agent\": 5, \"altar\": 1, \"converter\": 3, \"generator\": 10, \"wall\": 40}, \"border\": 1}}}, \"kinship\": {\"team_size\": [1, 5], \"team_reward\": [0.0, 1.0]}}",
157
+ "agent_cfg": "{\"_target_\": \"agent.metta_agent.MettaAgent\", \"observation_encoders\": {\"grid_obs\": {\"feature_names\": [], \"normalize_features\": true, \"label_dim\": 4, \"output_dim\": 512, \"layers\": 4}, \"global_vars\": {\"feature_names\": [], \"normalize_features\": true, \"label_dim\": 4, \"output_dim\": 8, \"layers\": 2}, \"last_action\": {\"feature_names\": [\"last_action_id\", \"last_action_val\"], \"normalize_features\": true, \"label_dim\": 4, \"output_dim\": 8, \"layers\": 2}, \"last_reward\": {\"feature_names\": [\"last_reward\"], \"normalize_features\": true, \"label_dim\": 4, \"output_dim\": 8, \"layers\": 2}, \"kinship\": {\"feature_names\": [\"kinship\"], \"normalize_features\": true, \"label_dim\": 4, \"output_dim\": 8, \"layers\": 2}}, \"fc\": {\"layers\": 3, \"output_dim\": 512}, \"decoder\": {\"_target_\": \"agent.decoder.Decoder\"}, \"core\": {\"_target_\": \"sample_factory.model.core.ModelCoreRNN\", \"rnn_type\": \"gru\", \"rnn_num_layers\": 1, \"rnn_size\": 512}}"
158
+ },
159
+ "git_hash": "bd6dd5e8f31642adff63d12f41f4ddd3333616af",
160
+ "git_repo_name": "https://github.com/daveey/metta.git",
161
+ "wandb_unique_id": "p2.dr6_20240621_135940_570912"
162
+ }
git.diff ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ diff --git a/third_party/griddly b/third_party/griddly
2
+ index 08f42c2..499412c 160000
3
+ --- a/third_party/griddly
4
+ +++ b/third_party/griddly
5
+ @@ -1 +1 @@
6
+ -Subproject commit 08f42c2aea7a6d7e6bc50a672c748b47028cbf52
7
+ +Subproject commit 499412cb1eda60deb93d8f71a4d8896917a9a60c
8
+ diff --git a/third_party/sample_factory b/third_party/sample_factory
9
+ index 9d990ea..f9d0645 160000
10
+ --- a/third_party/sample_factory
11
+ +++ b/third_party/sample_factory
12
+ @@ -1 +1 @@
13
+ -Subproject commit 9d990eaf3fd40c635febe5b3e67d5c7d3bb7a9cb
14
+ +Subproject commit f9d06453cc0e67ebc14d2e86c8d8d5c62e1389de
replay.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2002c7c68775b12235bd3b468a9851ffdaef79400091ceb367523b6ed621eb0a
3
+ size 2248841
sf_log.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8994115790c628ae58e09ffbf5c67d1135b94ac797854274c044f10ad1d7cd65
3
+ size 33533435