From 455f65cd89168861ffc146b4245fba8dfedbfffe Mon Sep 17 00:00:00 2001 From: mx2000 Date: Tue, 28 Oct 2025 01:23:25 +0100 Subject: [PATCH 01/18] Add onlyfish bin --- pufferlib/resources/onlyfish/MouseLover.bin | Bin 0 -> 547388 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 pufferlib/resources/onlyfish/MouseLover.bin diff --git a/pufferlib/resources/onlyfish/MouseLover.bin b/pufferlib/resources/onlyfish/MouseLover.bin new file mode 100644 index 0000000000000000000000000000000000000000..983edd307461c52ebae18bfa63a4f7c999b95c4d GIT binary patch literal 547388 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

  • 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 z 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 literal 0 HcmV?d00001 From 3411ff381cd2453a5791d7bc1115c002130a4095 Mon Sep 17 00:00:00 2001 From: mx2000 Date: Wed, 29 Oct 2025 22:45:42 +0100 Subject: [PATCH 02/18] add predprey env test --- pufferlib/config/ocean/predprey.ini | 19 + pufferlib/ocean/environment.py | 1 + pufferlib/ocean/predprey/binding.c | 24 + pufferlib/ocean/predprey/grid.h | 42 ++ pufferlib/ocean/predprey/predprey.c | 62 +++ pufferlib/ocean/predprey/predprey.h | 752 +++++++++++++++++++++++++++ pufferlib/ocean/predprey/predprey.py | 101 ++++ 7 files changed, 1001 insertions(+) create mode 100644 pufferlib/config/ocean/predprey.ini create mode 100644 pufferlib/ocean/predprey/binding.c create mode 100644 pufferlib/ocean/predprey/grid.h create mode 100644 pufferlib/ocean/predprey/predprey.c create mode 100644 pufferlib/ocean/predprey/predprey.h create mode 100644 pufferlib/ocean/predprey/predprey.py diff --git a/pufferlib/config/ocean/predprey.ini b/pufferlib/config/ocean/predprey.ini new file mode 100644 index 000000000..c38e64fa7 --- /dev/null +++ b/pufferlib/config/ocean/predprey.ini @@ -0,0 +1,19 @@ +[base] +package = ocean +env_name = puffer_predprey +rnn_name = Recurrent + + +[vec] +num_envs = 4 + +[env] +num_envs = 64 +vision = 3 +num_agents = 8 +report_interval = 1 +food_base_spawn_rate = 1e-3 + +[train] +total_timesteps = 150_000_000 +checkpoint_interval = 50 diff --git a/pufferlib/ocean/environment.py b/pufferlib/ocean/environment.py index 93df76506..1593a070a 100644 --- a/pufferlib/ocean/environment.py +++ b/pufferlib/ocean/environment.py @@ -163,6 +163,7 @@ def make_multiagent(buf=None, **kwargs): 'spaces': make_spaces, 'multiagent': make_multiagent, 'slimevolley': 'SlimeVolley', + 'predprey': 'PredPrey', } def env_creator(name='squared', *args, **kwargs): diff --git a/pufferlib/ocean/predprey/binding.c b/pufferlib/ocean/predprey/binding.c new file mode 100644 index 000000000..32ec4e650 --- /dev/null +++ b/pufferlib/ocean/predprey/binding.c @@ -0,0 +1,24 @@ +#include "predprey.h" + +#define Env PredPrey +#include "../env_binding.h" + +static int my_init(Env* env, PyObject* args, PyObject* kwargs) { + env->width = unpack(kwargs, "width"); + env->height = unpack(kwargs, "height"); + env->num_agents = unpack(kwargs, "num_agents"); + env->vision = unpack(kwargs, "vision"); + env->reward_food = unpack(kwargs, "reward_food"); + env->food_base_spawn_rate = unpack(kwargs, "food_base_spawn_rate"); + init_cenv(env); + return 0; +} + +static int my_log(PyObject* dict, Log* log) { + assign_to_dict(dict, "perf", log->perf); + assign_to_dict(dict, "score", log->score); + assign_to_dict(dict, "episode_return", log->episode_return); + assign_to_dict(dict, "steals", log->steals); + assign_to_dict(dict, "collects", log->collects); + return 0; +} \ No newline at end of file diff --git a/pufferlib/ocean/predprey/grid.h b/pufferlib/ocean/predprey/grid.h new file mode 100644 index 000000000..e6581fae4 --- /dev/null +++ b/pufferlib/ocean/predprey/grid.h @@ -0,0 +1,42 @@ +#ifndef GRID_H +#define GRID_H + +#define GRID_HEIGHT 32 +#define GRID_WIDTH 32 + +const unsigned char grid_32_32_3v[GRID_HEIGHT][GRID_WIDTH] = { + {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02} +}; + +#endif // GRID_H diff --git a/pufferlib/ocean/predprey/predprey.c b/pufferlib/ocean/predprey/predprey.c new file mode 100644 index 000000000..4d7b73f59 --- /dev/null +++ b/pufferlib/ocean/predprey/predprey.c @@ -0,0 +1,62 @@ +#include +#include +#include +#include "puffernet.h" +#include "predprey.h" + +int main() { + PredPrey env = { + .num_agents = 4, + .width = 32, + .height = 32, + .vision = 3, + .reward_food = 0.0f, + .food_base_spawn_rate = 1e-3, + }; + allocate_cenv(&env); + c_reset(&env); + c_render(&env); + + // Weights* weights = load_weights("resources/cpr/cpr_weights.bin", 139270); + // int logit_sizes[] = {5}; + // LinearLSTM* net = make_linearlstm(weights, env.num_agents, 49, logit_sizes, 1); + + while (!WindowShouldClose()) { + + for (int i = 0; i < env.num_agents; i++) { + env.actions[i] = rand() % 7; + } + + // User can take control of the first puffer + if (IsKeyDown(KEY_LEFT_SHIFT)) { + sleep(1); + env.actions[0] = NO_MOVE; + if (IsKeyDown(KEY_UP) || IsKeyDown(KEY_W)) + env.actions[0] = UP; + if (IsKeyDown(KEY_DOWN) || IsKeyDown(KEY_S)) + env.actions[0] = DOWN; + if (IsKeyDown(KEY_LEFT) || IsKeyDown(KEY_A)) + env.actions[0] = LEFT; + if (IsKeyDown(KEY_RIGHT) || IsKeyDown(KEY_D)) + env.actions[0] = RIGHT; + if (IsKeyDown(KEY_C)) + env.actions[0] = INTERACT; + if (IsKeyDown(KEY_E)) + env.actions[0] = EAT; + + printf("Getting user input %d\n", env.actions[0]); + } else { + // for (int i = 0; i < env.num_agents*49; i++) { + // net->obs[i] = env.observations[i]; + // } + // forward_linearlstm(net, net->obs, env.actions); + } + + c_step(&env); + c_render(&env); + } + //close_renderer(renderer); + free_CEnv(&env); + + return 0; +} diff --git a/pufferlib/ocean/predprey/predprey.h b/pufferlib/ocean/predprey/predprey.h new file mode 100644 index 000000000..02e7849c7 --- /dev/null +++ b/pufferlib/ocean/predprey/predprey.h @@ -0,0 +1,752 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "raylib.h" + +#include "grid.h" + +#define EMPTY 0 +// Anything non empty should be obstacles +#define NORMAL_FOOD 1 +#define WALL 2 +#define AGENTS 3 + +#define MAX_CELL_OBS 3 // Maximum number of info per cell in observations +#define LOG_BUFFER_SIZE 8192 + +#define SET_BIT(arr, i) (arr[(i) / 8] |= (1 << ((i) % 8))) +#define CLEAR_BIT(arr, i) (arr[(i) / 8] &= ~(1 << ((i) % 8))) +#define CHECK_BIT(arr, i) (arr[(i) / 8] & (1 << ((i) % 8))) +#define min(a, b) ((a) < (b) ? (a) : (b)) + +#define REWARD_DEATH -1.0f + +#define LOG_SCORE_REWARD_DEATH -1 + +#define MAX_INVENTORY_ITEM 100 +#define HP_REWARD_FOOD 20 +#define HP_LOSS_PER_STEP 1 +#define MAX_HP 100 + +#define DOWN 0 +#define UP 1 +#define RIGHT 2 +#define LEFT 3 +#define NO_MOVE 4 +#define INTERACT 5 +#define EAT 6 + +#define SPRITE_SIZE 128 +#define TILE_SIZE 64 + + +#define HEALTH_BAR_WIDTH 48 +#define HEALTH_BAR_HEIGHT 6 + +typedef struct Log Log; +struct Log { + float perf; + float score; + float episode_return; + float steals; + float collects; + float n; +}; + +typedef struct Agent Agent; +struct Agent { + int r; + int c; + int id; + int direction; + int held_food; + float hp; + unsigned char anim; +}; + +typedef struct FoodList FoodList; +struct FoodList { + int *indexes; // Grid flattened index positions + int size; +}; + +FoodList *allocate_foodlist(int size) { + FoodList *foods = (FoodList *)calloc(1, sizeof(FoodList)); + foods->indexes = (int *)calloc(size, sizeof(int)); + foods->size = 0; + return foods; +} + +void free_foodlist(FoodList *foods) { + free(foods->indexes); + free(foods); +} + +typedef struct Renderer Renderer; +typedef struct PredPrey PredPrey; +struct PredPrey { + Renderer* client; + int width; + int height; + int num_agents; + + int vision; + int vision_window; + int obs_size; + + int tick; + + float reward_food; + + unsigned char *grid; + float *observations; + int *actions; + float *rewards; + unsigned char *terminals; + unsigned char *truncations; + unsigned char *masks; + + Agent *agents; + + Log log; + Log* agent_logs; + + FoodList *foods; + float food_base_spawn_rate; +}; + +void add_log(PredPrey *env, Log *log) { + //TODO fix perf calculation + env->log.perf = fmaxf(0, log->score); + env->log.steals += log->steals; + env->log.episode_return += log->episode_return; + env->log.score += log->score; + env->log.collects += log->collects; + env->log.n += 1; +} + +void init_cenv(PredPrey *env) { + env->grid = + (unsigned char *)calloc(env->width * env->height, sizeof(unsigned char)); + env->agents = (Agent *)calloc(env->num_agents, sizeof(Agent)); + env->vision_window = 2 * env->vision + 1; + env->obs_size = (env->vision_window * env->vision_window) * MAX_CELL_OBS + 1; + env->foods = allocate_foodlist(env->width * env->height); + env->agent_logs = (Log *)calloc(env->num_agents, sizeof(Log)); + env->masks = (unsigned char *)calloc(env->num_agents, sizeof(unsigned char)); +} + +void allocate_cenv(PredPrey *env) { + // Called by C stuff + int obs_size = ((2 * env->vision + 1) * (2 * env->vision + 1)) * MAX_CELL_OBS + 1; + env->observations = (float *)calloc(env->num_agents * obs_size, + sizeof(float)); + env->actions = (int *)calloc(env->num_agents, sizeof(unsigned int)); + env->rewards = (float *)calloc(env->num_agents, sizeof(float)); + env->terminals = + (unsigned char *)calloc(env->num_agents, sizeof(unsigned char)); + env->truncations = (unsigned char*)calloc(env->num_agents, sizeof(unsigned char)); + init_cenv(env); +} + +void c_close(PredPrey *env) { + free(env->grid); + free(env->agents); + free_foodlist(env->foods); + free(env->masks); + free(env->agent_logs); +} + +void free_CEnv(PredPrey *env) { + free(env->observations); + free(env->actions); + free(env->rewards); + free(env->terminals); + free(env->truncations); + c_close(env); +} + +int grid_index(PredPrey *env, int r, int c) { return r * env->width + c; } +int get_agent_tile_from_id(int agent_id) { return AGENTS + agent_id; } +int get_agent_id_from_tile(int tile) { return tile - AGENTS; } + +void add_food(PredPrey *env, int grid_idx, int food_type) { + // Add food to the grid and the food_list at grid_idx + assert(env->grid[grid_idx] == EMPTY); + env->grid[grid_idx] = food_type; + FoodList *foods = env->foods; + foods->indexes[foods->size++] = grid_idx; +} + +void reward_agent(PredPrey *env, int agent_id, float reward) { + // Simple helper function which loggs as well + env->rewards[agent_id] += reward; + env->agent_logs[agent_id].episode_return += reward; +} + +void spawn_food(PredPrey *env, int food_type) { + // Randomly spawns such food in the grid + int idx, tile; + do { + int r = rand() % (env->height - 1); + int c = rand() % (env->width - 1); + idx = r * env->width + c; + tile = env->grid[idx]; + } while (tile != EMPTY); + add_food(env, idx, food_type); +} + +void remove_food(PredPrey *env, int grid_idx) { + // Removes food from the grid and food_list + env->grid[grid_idx] = EMPTY; + FoodList *foods = env->foods; + for (int i = 0; i < foods->size; i++) { + if (foods->indexes[i] == grid_idx) { + foods->indexes[i] = foods->indexes[foods->size - 1]; + foods->size--; + return; + } + } +} + +void init_foods(PredPrey *env) { + // On reset spawns x number of each food randomly. + int available_tiles = (env->width * env->height) - + (2 * env->vision * env->width + + 2 * env->vision * (env->height - 2 * env->vision)); + int normalizer = (env->width * env->height) / 576; + int normal = available_tiles / (20 * normalizer); + for (int i = 0; i < normal; i++) { + spawn_food(env, NORMAL_FOOD); + } +} + +void spawn_foods(PredPrey *env) { + // After each step, check existing foods and spawns new food in the + // neighborhood Iterates over food_list for efficiency instead of the entire + // grid. + FoodList *foods = env->foods; + int original_size = foods->size; + for (int i = 0; i < original_size; i++) { + int idx = foods->indexes[i]; + int offset = idx - env->width - 1; // Food spawn in 1 radius + int r = offset / env->width; + int c = offset % env->width; + for (int ri = 0; ri < 3; ri++) { + for (int ci = 0; ci < 3; ci++) { + int grid_idx = grid_index(env, (r + ri), (c + ci)); + if (env->grid[grid_idx] != EMPTY) { + continue; + } + switch (env->grid[idx]) { + // %Chance spawning new food + case NORMAL_FOOD: + if ((rand() / (double)RAND_MAX) < env->food_base_spawn_rate) { + add_food(env, grid_idx, env->grid[idx]); + } + break; + } + } + } + } + + // Each turn there is random probability for a food to spawn at a random + // location To cope with resource depletion + int normalizer = (env->width * env->height) / 576; + if ((rand() / (double)RAND_MAX) < + min((env->food_base_spawn_rate * 2 * normalizer), 1e-2)) { + spawn_food(env, NORMAL_FOOD); + } +} + +void compute_observations(PredPrey *env) { + int obs_idx = 0; + for (int i = 0; i < env->num_agents; i++) { + Agent *agent = &env->agents[i]; + if (agent->hp <= 0) { + continue; + } + // int obs_offset = (i * env->obs_size); + int r_offset = agent->r - env->vision; + int c_offset = agent->c - env->vision; + for (int r = 0; r < env->vision_window; r++) { + for (int c = 0; c < env->vision_window; c++) { + int grid_idx = (r_offset + r) * env->width + c_offset + c; + // int obs_idx = obs_offset + (r * env->vision_window + c ) * MAX_CELL_OBS; + + size_t flat_obs_len = (size_t)env->num_agents * env->obs_size; + if ((size_t)obs_idx + 2 >= flat_obs_len) { // +2 because you write 3 entries + fprintf(stderr, "OBS IDX OOB: agent=%d obs_idx=%d max=%zu vision=%d\n", + i, obs_idx, flat_obs_len, env->vision); + assert(0 && "obs_idx out of range"); + } + + // First obs is the cell type + env->observations[obs_idx++] = env->grid[grid_idx]; + float hp_norm = 0.0f; + float food_norm = 0.0f; + if (env->grid[grid_idx] >= AGENTS) { + int agent_id = get_agent_id_from_tile(env->grid[grid_idx]); + hp_norm = env->agents[agent_id].hp / (float)MAX_HP; + food_norm = env->agents[agent_id].held_food / (float)MAX_INVENTORY_ITEM; + } + + env->observations[obs_idx++] = hp_norm; + env->observations[obs_idx++] = food_norm; + + } + } + //Agent also get its direction + env->observations[obs_idx++] = agent->direction; + } +} + +void remove_agent(PredPrey *env, int agent_id) { + Agent *agent = &env->agents[agent_id]; + int adr = grid_index(env, agent->r, agent->c); + assert(env->grid[adr] == get_agent_tile_from_id(agent->id)); + env->grid[adr] = EMPTY; +} + +void add_hp(PredPrey *env, int agent_id, float hp) { + Agent *agent = &env->agents[agent_id]; + agent->hp += hp; + if (agent->hp > MAX_HP) { + agent->hp = MAX_HP; + } else if (agent->hp <= 0) { + agent->hp = 0; + env->agent_logs[agent->id].score += LOG_SCORE_REWARD_DEATH; + reward_agent(env, agent_id, REWARD_DEATH); + env->terminals[agent->id] = 1; + add_log(env, &env->agent_logs[agent_id]); + remove_agent(env, agent_id); + } +} + +void remove_hp(PredPrey *env, int agent_id, float hp) { + add_hp(env, agent_id, -hp); +} + +void save_grid_to_file(PredPrey *env, const char *filename) { + FILE *file = fopen(filename, "w"); + if (!file) { + perror("Failed to open file"); + return; + } + fprintf(file, "#ifndef GRID_H\n#define GRID_H\n\n"); + fprintf(file, "#define GRID_HEIGHT %d\n", env->height); + fprintf(file, "#define GRID_WIDTH %d\n\n", env->width); + fprintf(file, "static const unsigned char grid[GRID_HEIGHT][GRID_WIDTH] = {\n"); + + for (int r = 0; r < env->height; r++) { + fprintf(file, " {"); + for (int c = 0; c < env->width; c++) { + unsigned char val = env->grid[r * env->width + c]; + fprintf(file, "0x%02X%s", val, (c == env->width - 1) ? "" : ", "); + } + fprintf(file, "}%s\n", (r == env->height - 1) ? "" : ","); + } + fprintf(file, "};\n\n#endif // GRID_H\n"); + fclose(file); +} + +void make_grid_from_scratch(PredPrey *env){ + memset(env->grid, EMPTY, (env->height * env->width) * sizeof(env->grid[0])); + // top walling + for (int r = 0; r < env->vision; r++) { + memset(env->grid + (r * env->width), WALL, + env->width * sizeof(env->grid[0])); + } + // left side walling + for (int r = 0; r < env->height; r++) { + memset(env->grid + (r * env->width), WALL, + env->vision * sizeof(env->grid[0])); + } + // bottom walling + for (int r = env->height - env->vision; r < env->height; r++) { + memset(env->grid + (r * env->width), WALL, + env->width * sizeof(env->grid[0])); + } + + // right side walling + for (int r = 0; r < env->height; r++) { + memset(env->grid + (r * env->width) + (env->width - env->vision), WALL, + env->vision * sizeof(env->grid[0])); + } + save_grid_to_file(env, "grid.h"); +} + +void spawn_agent(PredPrey *env, int i){ + Agent *agent = &env->agents[i]; + agent->id = i; + agent->hp = 100; + int adr = 0; + + bool allocated = false; + while (!allocated) { + adr = rand() % (env->height * env->width); + if (env->grid[adr] == EMPTY) { + int r = adr / env->width; + int c = adr % env->width; + agent->r = r; + agent->c = c; + allocated = true; + } + } + assert(env->grid[adr] == EMPTY); + env->grid[adr] = get_agent_tile_from_id(agent->id); + env->agent_logs[i] = (Log){0}; +} +void c_reset(PredPrey *env) { + env->tick = 0; + memset(env->agent_logs, 0, env->num_agents * sizeof(Log)); + env->log = (Log){0}; + env->foods->size = 0; + memset(env->foods->indexes, 0, env->width * env->height * sizeof(int)); + // make_grid_from_scratch(env); + assert(env->width == GRID_WIDTH && env->height == GRID_HEIGHT); + memcpy(env->grid, grid_32_32_3v, env->width * env->height * sizeof(unsigned char)); + + for (int i = 0; i < env->num_agents; i++) { + spawn_agent(env, i); + } + + init_foods(env); + memset(env->observations, 0, env->num_agents * env->obs_size * sizeof(float)); + memset(env->terminals, 0, env->num_agents * sizeof(unsigned char)); + memset(env->masks, 1, env->num_agents * sizeof(unsigned char)); + compute_observations(env); +} + +void step_agent(PredPrey *env, int i) { + + Agent *agent = &env->agents[i]; + + int action = env->actions[i]; + + ///////////////////////////////// + // Movement + //////////////////////////////// + int dr = 0; + int dc = 0; + + switch (action) { + case UP: + dr = -1; + agent->direction = UP; + break; + case DOWN: + dr = 1; + agent->direction = DOWN; + break; + case LEFT: + dc = -1; + agent->direction = LEFT; + break; + case RIGHT: + dc = 1; + agent->direction = RIGHT; + break; + case NO_MOVE: + return; + } + // Get next row and column + int next_r = agent->r + dr; + int next_c = agent->c + dc; + + int prev_grid_idx = grid_index(env, agent->r, agent->c); + int next_grid_idx = grid_index(env, next_r, next_c); + int tile = env->grid[next_grid_idx]; + if (tile > EMPTY) { + next_grid_idx = prev_grid_idx; + next_r = agent->r; + next_c = agent->c; + } + // update the grid tiles values + int agent_tile = get_agent_tile_from_id(agent->id); + env->grid[prev_grid_idx] = EMPTY; + env->grid[next_grid_idx] = agent_tile; + agent->r = next_r; + agent->c = next_c; + + + ///////////////////////////////// + // Interaction / Eating + //////////////////////////////// + if (action == INTERACT) { + int facing_tile_idx = 0; + switch (agent->direction) { + case UP: + facing_tile_idx = grid_index(env, agent->r - 1, agent->c); + break; + case DOWN: + facing_tile_idx = grid_index(env, agent->r + 1, agent->c); + break; + case LEFT: + facing_tile_idx = grid_index(env, agent->r, agent->c - 1); + break; + case RIGHT: + facing_tile_idx = grid_index(env, agent->r, agent->c + 1); + break; + } + int facing_tile = env->grid[facing_tile_idx]; + + if (facing_tile >= AGENTS) { + int other_agent_id = get_agent_id_from_tile(facing_tile); + Agent *other_agent = &env->agents[other_agent_id]; + // Steal food from other agent + if (other_agent->held_food > 0) { + agent->held_food = other_agent->held_food; + other_agent->held_food = 0; + env->agent_logs[i].steals += 1; + } + } else if (facing_tile == NORMAL_FOOD) { + // Pick up food + agent->held_food += 1; + if (agent->held_food > MAX_INVENTORY_ITEM) { + agent->held_food = MAX_INVENTORY_ITEM; + } + remove_food(env, facing_tile_idx); + env->agent_logs[i].collects += 1; + } + } else if (action == EAT) { + // Eating logic here + if (agent->held_food > 0) { + agent->held_food -= 1; + add_hp(env, i, HP_REWARD_FOOD); + env->agent_logs[i].score += 1; + reward_agent(env, i, env->reward_food); + } + } + return; +} + +void clear_agent(PredPrey *env, int agent_id) { + Agent *agent = &env->agents[agent_id]; + if (agent->r < 0 || agent->c < 0) { + return; + } + int grid_idx = grid_index(env, agent->r, agent->c); + env->grid[grid_idx] = EMPTY; + agent->r = -1; + agent->c = -1; +} + +void c_step(PredPrey *env) { + env->tick++; + + memset(env->rewards, 0, env->num_agents * sizeof(float)); + + for (int i = 0; i < env->num_agents; i++) { + if (env->agents[i].hp == 0) { + spawn_agent(env, i); + continue; + } + step_agent(env, i); + remove_hp(env, i, HP_LOSS_PER_STEP); + } + + spawn_foods(env); + compute_observations(env); +} + +#define ANIM_IDLE 0 +#define ANIM_MOVE 1 +#define ANIM_DEATH 2 +#define ANIM_ATTACK 3 + +typedef struct Animation Animation; +struct Animation { + int num_frames; + int tiles_traveled; + int offset; // Number of tiles from the top of the sheet + int frames[10]; // Order of frames in sheet, left to right +}; + +Animation ANIMATIONS[4] = { + (Animation){ // ANIM_IDLE + .num_frames = 1, + .tiles_traveled = 0, + .offset = 0, + .frames = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0} + }, + (Animation){ // ANIM_MOVE + .num_frames = 6, + .tiles_traveled = 1, + .offset = 4, + .frames = {0, 1, 2, 3, 4, 5, 0, 0, 0, 0} + }, + (Animation){ // ANIM_DEATH + .num_frames = 3, + .tiles_traveled = 0, + .offset = 0, + .frames = {5, 6, 7, 0, 0, 0, 0, 0, 0, 0} + }, + (Animation){ // ANIM_ATTACK + .num_frames = 2, + .tiles_traveled = 0, + .offset = 0, + .frames = {1, 2, 0, 0, 0, 0, 0, 0, 0, 0} + }, +}; + +// Raylib client +Color COLORS[] = { + (Color){255, 0, 0, 255}, (Color){170, 170, 170, 255}, + (Color){255, 255, 0, 255}, (Color){0, 255, 0, 255}, + (Color){0, 255, 255, 255}, (Color){0, 128, 255, 255}, + (Color){128, 128, 128, 255}, (Color){255, 0, 0, 255}, + (Color){255, 255, 255, 255}, (Color){255, 85, 85, 255}, + (Color){170, 170, 170, 255}, (Color){0, 255, 255, 255}, + (Color){0, 0, 255, 255}, (Color){6, 24, 24, 255}, +}; + +#define BLANK CLITERAL(Color){ 0, 0, 0, 0 } // Blank (Transparent) + +Rectangle UV_COORDS[7] = { + (Rectangle){0, 0, 0, 0}, (Rectangle){512, 0, 128, 128}, + (Rectangle){0, 0, 0, 0}, (Rectangle){0, 0, 128, 128}, + (Rectangle){128, 0, 128, 128}, (Rectangle){256, 0, 128, 128}, + (Rectangle){384, 0, 128, 128}, +}; + +struct Renderer { + int cell_size; + int width; + int height; + Texture2D agents[5][10]; + Texture2D tiles; + Texture2D items; + Font font; +}; + +Renderer *init_renderer(int width, int height) { + Renderer *renderer = (Renderer *)calloc(1, sizeof(Renderer)); + renderer->width = width; + renderer->height = height; + + InitWindow(width * TILE_SIZE, height * TILE_SIZE, "Predator Prey"); + SetTargetFPS(10); + + for (int i = 0; i < 10; i++) { + renderer->agents[0][i] = LoadTexture(TextFormat("resources/nmmo3/neutral_%d.png", i)); + renderer->agents[1][i] = LoadTexture(TextFormat("resources/nmmo3/fire_%d.png", i)); + renderer->agents[2][i] = LoadTexture(TextFormat("resources/nmmo3/water_%d.png", i)); + renderer->agents[3][i] = LoadTexture(TextFormat("resources/nmmo3/earth_%d.png", i)); + renderer->agents[4][i] = LoadTexture(TextFormat("resources/nmmo3/air_%d.png", i)); + } + renderer->tiles = LoadTexture("resources/nmmo3/merged_sheet.png"); + renderer->items = LoadTexture("resources/nmmo3/items_condensed.png"); + renderer->font = LoadFont("resources/nmmo3/ManaSeedBody.ttf"); + + return renderer; +} + +void close_renderer(Renderer *renderer) { + CloseWindow(); + free(renderer); +} + + +void draw_health_bar(int bar_x, int bar_y, int health, int max_health) { + DrawRectangle(bar_x, bar_y, HEALTH_BAR_WIDTH, + HEALTH_BAR_HEIGHT, RED); + DrawRectangle(bar_x, bar_y, + HEALTH_BAR_WIDTH * health / max_health, + HEALTH_BAR_HEIGHT, GREEN); + DrawRectangleLines(bar_x, bar_y, HEALTH_BAR_WIDTH, + HEALTH_BAR_HEIGHT, BLACK); +} + +void c_render(PredPrey *env) { + if (env->client == NULL) { + env->client = init_renderer(env->width, env->height); + }; + Renderer *renderer = env->client; + + if (IsKeyDown(KEY_ESCAPE)) { + exit(0); + } + + BeginDrawing(); + ClearBackground(BLANK); + + for (int r = 0; r < env->height; r++) { + for (int c = 0; c < env->width; c++) { + int adr = grid_index(env, r, c); + int tile = env->grid[adr]; + Vector2 pos = { + .x = c * TILE_SIZE, + .y = r * TILE_SIZE, + }; + // Drawing grass no matter what + Rectangle source_rect = { + .x = 11 * TILE_SIZE, + .y = 8 * TILE_SIZE, + .width = TILE_SIZE, + .height = TILE_SIZE + }; + DrawTextureRec(renderer->tiles, source_rect, pos, WHITE); + + if (tile == EMPTY) { + continue; + } else if (tile == WALL) { + Rectangle source_rect = { + .x = 0 * TILE_SIZE, + .y = 1 * TILE_SIZE, + .width = TILE_SIZE, + .height = TILE_SIZE + }; + DrawTextureRec(renderer->tiles, source_rect, pos, WHITE); + } else if (tile == NORMAL_FOOD) { + Rectangle source_rect = { + .x = 4 * TILE_SIZE, + .y = 10 * TILE_SIZE, + .width = TILE_SIZE, + .height = TILE_SIZE + }; + DrawTextureRec(renderer->items, source_rect, pos, WHITE); + } else { + int agent_id = get_agent_id_from_tile(tile); + Agent *agent = &env->agents[agent_id]; + Animation animation = ANIMATIONS[agent->anim]; + int starting_sprite_y = (env->agents[agent_id].direction) * SPRITE_SIZE; + int x_pos = (c - 0.5f)*TILE_SIZE; + int y_pos = (r - 0.5f)*TILE_SIZE; + Vector2 pos = { + .x = x_pos, + .y = y_pos, + }; + Rectangle source_rect = { + .x = 0, + .y = starting_sprite_y, + .width = SPRITE_SIZE, + .height = SPRITE_SIZE + }; + DrawTextureRec(renderer->agents[agent_id%5][agent_id%10], source_rect, pos, WHITE); + + // Draw HP bar + int bar_x = x_pos + TILE_SIZE - HEALTH_BAR_WIDTH/2; + int bar_y = y_pos; + draw_health_bar(bar_x, bar_y, agent->hp, MAX_HP); + + // Food Number in inventory + char* txt; + Color color; + txt = (char*) TextFormat("%d: F: %d", agent_id, agent->held_food); + color = GREEN; + + Vector2 text_pos = {.x = bar_x, .y = bar_y - 20}; + DrawTextEx(renderer->font, txt, text_pos, 21, 1, color); + + } + } + } + EndDrawing(); +} diff --git a/pufferlib/ocean/predprey/predprey.py b/pufferlib/ocean/predprey/predprey.py new file mode 100644 index 000000000..c2b466f77 --- /dev/null +++ b/pufferlib/ocean/predprey/predprey.py @@ -0,0 +1,101 @@ +import gymnasium +import numpy as np + +import pufferlib +from pufferlib.ocean.predprey import binding + +class PredPrey(pufferlib.PufferEnv): + def __init__(self, + num_envs=1, + width=32, + height=32, + num_agents=8, + vision=3, + food_base_spawn_rate=1e-3, + reward_food=0.0, + report_interval=1, + render_mode=None, + buf=None, + seed=0, + ): + obs_shape = ((2*vision+1)*(2*vision+1)*3)+1 + self.single_observation_space = gymnasium.spaces.Box(low=0, high=255, shape=(obs_shape,), dtype=np.float64) + self.single_action_space = gymnasium.spaces.Discrete(7) + self.render_mode = render_mode + self.num_agents = num_agents * num_envs + + self.tick = 0 + self.report_interval = report_interval + + super().__init__(buf) + c_envs = [] + for i in range(num_envs): + n = num_agents + env_id = binding.env_init( + self.observations[i*n:(i+1)*n], + self.actions[i*n:(i+1)*n], + self.rewards[i*n:(i+1)*n], + self.terminals[i*n:(i+1)*n], + self.truncations[i*n:(i+1)*n], + i + seed * num_envs, + width=width, + height=height, + num_agents=num_agents, + vision=vision, + reward_food=reward_food, + food_base_spawn_rate=food_base_spawn_rate, + ) + c_envs.append(env_id) + + self.c_envs = binding.vectorize(*c_envs) + + def reset(self, seed=0): + self.tick = 0 + binding.vec_reset(self.c_envs, seed) + return self.observations, [] + + def step(self, actions): + self.actions[:] = actions + binding.vec_step(self.c_envs) + self.tick += 1 + + info = [] + if self.tick % self.report_interval == 0: + log = binding.vec_log(self.c_envs) + if log: + info.append(log) + + return (self.observations, self.rewards, self.terminals, self.truncations, info) + + def render(self): + binding.vec_render(self.c_envs, 0) + + def close(self): + binding.vec_close(self.c_envs) + +if __name__ == "__main__": + print("Testing PredatorPrey CEnv") + + env = PredPrey() + env.reset() + tick = 0 + timeout=30 + + tot_agents = env.num_agents + actions = np.random.randint(0,7,(1024,tot_agents)) + + import time + start = time.time() + while time.time() - start < timeout: + atns = actions[tick % 1024] + env.step(atns) + # env.render() + tick += 1 + + print(f'SPS: {int(tot_agents * tick / (time.time() - start)):_}') + + env.close() + + + + From 654e003afbf55f1f748a6aa9e8c802ecf5e81dea Mon Sep 17 00:00:00 2001 From: mx2000 Date: Thu, 30 Oct 2025 00:20:52 +0100 Subject: [PATCH 03/18] better logs --- pufferlib/ocean/predprey/predprey.h | 39 ++++++++++++++++------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/pufferlib/ocean/predprey/predprey.h b/pufferlib/ocean/predprey/predprey.h index 02e7849c7..11b899019 100644 --- a/pufferlib/ocean/predprey/predprey.h +++ b/pufferlib/ocean/predprey/predprey.h @@ -11,6 +11,8 @@ #include "grid.h" +#define MAX_TIMESTEPS 1000 // If no agent died by then, we reset + #define EMPTY 0 // Anything non empty should be obstacles #define NORMAL_FOOD 1 @@ -67,6 +69,7 @@ struct Agent { int direction; int held_food; float hp; + int start_tick; unsigned char anim; }; @@ -101,6 +104,7 @@ struct PredPrey { int obs_size; int tick; + int last_agent_dead_tick; float reward_food; @@ -123,7 +127,7 @@ struct PredPrey { void add_log(PredPrey *env, Log *log) { //TODO fix perf calculation - env->log.perf = fmaxf(0, log->score); + env->log.perf = fmaxf(0, log->score/MAX_TIMESTEPS); env->log.steals += log->steals; env->log.episode_return += log->episode_return; env->log.score += log->score; @@ -309,9 +313,13 @@ void compute_observations(PredPrey *env) { void remove_agent(PredPrey *env, int agent_id) { Agent *agent = &env->agents[agent_id]; - int adr = grid_index(env, agent->r, agent->c); - assert(env->grid[adr] == get_agent_tile_from_id(agent->id)); - env->grid[adr] = EMPTY; + if (agent->r < 0 || agent->c < 0) { + return; + } + int grid_idx = grid_index(env, agent->r, agent->c); + env->grid[grid_idx] = EMPTY; + agent->r = -1; + agent->c = -1; } void add_hp(PredPrey *env, int agent_id, float hp) { @@ -321,11 +329,12 @@ void add_hp(PredPrey *env, int agent_id, float hp) { agent->hp = MAX_HP; } else if (agent->hp <= 0) { agent->hp = 0; - env->agent_logs[agent->id].score += LOG_SCORE_REWARD_DEATH; + env->agent_logs[agent->id].score = env->tick - agent->start_tick; reward_agent(env, agent_id, REWARD_DEATH); env->terminals[agent->id] = 1; add_log(env, &env->agent_logs[agent_id]); remove_agent(env, agent_id); + env->last_agent_dead_tick = env->tick; } } @@ -386,6 +395,9 @@ void spawn_agent(PredPrey *env, int i){ Agent *agent = &env->agents[i]; agent->id = i; agent->hp = 100; + agent->start_tick = env->tick; + agent->held_food = 0; + int adr = 0; bool allocated = false; @@ -520,24 +532,12 @@ void step_agent(PredPrey *env, int i) { if (agent->held_food > 0) { agent->held_food -= 1; add_hp(env, i, HP_REWARD_FOOD); - env->agent_logs[i].score += 1; reward_agent(env, i, env->reward_food); } } return; } -void clear_agent(PredPrey *env, int agent_id) { - Agent *agent = &env->agents[agent_id]; - if (agent->r < 0 || agent->c < 0) { - return; - } - int grid_idx = grid_index(env, agent->r, agent->c); - env->grid[grid_idx] = EMPTY; - agent->r = -1; - agent->c = -1; -} - void c_step(PredPrey *env) { env->tick++; @@ -552,6 +552,11 @@ void c_step(PredPrey *env) { remove_hp(env, i, HP_LOSS_PER_STEP); } + if (env->tick - env->last_agent_dead_tick >= MAX_TIMESTEPS) { + c_reset(env); + return; + } + spawn_foods(env); compute_observations(env); } From e33d40bbbf83711b4b897f0d69bc58840a7017b9 Mon Sep 17 00:00:00 2001 From: mx2000 Date: Thu, 30 Oct 2025 06:35:40 +0100 Subject: [PATCH 04/18] fix data mismatch predprey --- pufferlib/ocean/predprey/predprey.h | 20 ++++++++------------ pufferlib/ocean/predprey/predprey.py | 15 +++++++++++---- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/pufferlib/ocean/predprey/predprey.h b/pufferlib/ocean/predprey/predprey.h index 11b899019..4e559afc9 100644 --- a/pufferlib/ocean/predprey/predprey.h +++ b/pufferlib/ocean/predprey/predprey.h @@ -270,10 +270,13 @@ void spawn_foods(PredPrey *env) { } void compute_observations(PredPrey *env) { - int obs_idx = 0; for (int i = 0; i < env->num_agents; i++) { + int obs_idx = i * env->obs_size; Agent *agent = &env->agents[i]; if (agent->hp <= 0) { + for (int j = 0; j < env->obs_size; j++) { + env->observations[obs_idx++] = 0.0f; + } continue; } // int obs_offset = (i * env->obs_size); @@ -281,15 +284,7 @@ void compute_observations(PredPrey *env) { int c_offset = agent->c - env->vision; for (int r = 0; r < env->vision_window; r++) { for (int c = 0; c < env->vision_window; c++) { - int grid_idx = (r_offset + r) * env->width + c_offset + c; - // int obs_idx = obs_offset + (r * env->vision_window + c ) * MAX_CELL_OBS; - - size_t flat_obs_len = (size_t)env->num_agents * env->obs_size; - if ((size_t)obs_idx + 2 >= flat_obs_len) { // +2 because you write 3 entries - fprintf(stderr, "OBS IDX OOB: agent=%d obs_idx=%d max=%zu vision=%d\n", - i, obs_idx, flat_obs_len, env->vision); - assert(0 && "obs_idx out of range"); - } + int grid_idx = grid_index(env,r_offset + r, c_offset + c); // First obs is the cell type env->observations[obs_idx++] = env->grid[grid_idx]; @@ -297,8 +292,9 @@ void compute_observations(PredPrey *env) { float food_norm = 0.0f; if (env->grid[grid_idx] >= AGENTS) { int agent_id = get_agent_id_from_tile(env->grid[grid_idx]); - hp_norm = env->agents[agent_id].hp / (float)MAX_HP; - food_norm = env->agents[agent_id].held_food / (float)MAX_INVENTORY_ITEM; + Agent *grid_agent = &env->agents[agent_id]; + hp_norm = grid_agent->hp / (float)MAX_HP; + food_norm = grid_agent->held_food / (float)MAX_INVENTORY_ITEM; } env->observations[obs_idx++] = hp_norm; diff --git a/pufferlib/ocean/predprey/predprey.py b/pufferlib/ocean/predprey/predprey.py index c2b466f77..04b411914 100644 --- a/pufferlib/ocean/predprey/predprey.py +++ b/pufferlib/ocean/predprey/predprey.py @@ -19,7 +19,7 @@ def __init__(self, seed=0, ): obs_shape = ((2*vision+1)*(2*vision+1)*3)+1 - self.single_observation_space = gymnasium.spaces.Box(low=0, high=255, shape=(obs_shape,), dtype=np.float64) + self.single_observation_space = gymnasium.spaces.Box(low=0, high=255, shape=(obs_shape,), dtype=np.float32) self.single_action_space = gymnasium.spaces.Discrete(7) self.render_mode = render_mode self.num_agents = num_agents * num_envs @@ -73,23 +73,30 @@ def render(self): def close(self): binding.vec_close(self.c_envs) +def pret(obs, i): + for j in range(7): + print(obs[i,j*7*3:(j+1)*7*3]) + print("************************") + if __name__ == "__main__": print("Testing PredatorPrey CEnv") env = PredPrey() - env.reset() + o, _ = env.reset() tick = 0 timeout=30 tot_agents = env.num_agents actions = np.random.randint(0,7,(1024,tot_agents)) + env.render() import time start = time.time() + # while tick < 1000: while time.time() - start < timeout: atns = actions[tick % 1024] - env.step(atns) - # env.render() + o, r, t, trun, info = env.step(atns) + env.render() tick += 1 print(f'SPS: {int(tot_agents * tick / (time.time() - start)):_}') From a6a868fb4bbe16aebd1bbe84cadddca487cb9e5f Mon Sep 17 00:00:00 2001 From: mx2000 Date: Thu, 30 Oct 2025 16:46:46 +0100 Subject: [PATCH 05/18] fix max food to avoid infinite loop on spawning agents --- pufferlib/ocean/predprey/predprey.h | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/pufferlib/ocean/predprey/predprey.h b/pufferlib/ocean/predprey/predprey.h index 4e559afc9..a14ea2ad2 100644 --- a/pufferlib/ocean/predprey/predprey.h +++ b/pufferlib/ocean/predprey/predprey.h @@ -11,7 +11,7 @@ #include "grid.h" -#define MAX_TIMESTEPS 1000 // If no agent died by then, we reset +#define MAX_TIMESTEPS 10 // If no agent died by then, we reset #define EMPTY 0 // Anything non empty should be obstacles @@ -123,6 +123,7 @@ struct PredPrey { FoodList *foods; float food_base_spawn_rate; + float max_food; }; void add_log(PredPrey *env, Log *log) { @@ -144,6 +145,12 @@ void init_cenv(PredPrey *env) { env->foods = allocate_foodlist(env->width * env->height); env->agent_logs = (Log *)calloc(env->num_agents, sizeof(Log)); env->masks = (unsigned char *)calloc(env->num_agents, sizeof(unsigned char)); + // Arbitrarly set max food to a proportion of available tiles + env->max_food = 0.55 * ( + (env->width * env->height) - ( + env->vision*env->width*2 + + env->vision*2*(env->height - 2*env->vision) + ) - env->num_agents); } void allocate_cenv(PredPrey *env) { @@ -235,6 +242,10 @@ void spawn_foods(PredPrey *env) { // After each step, check existing foods and spawns new food in the // neighborhood Iterates over food_list for efficiency instead of the entire // grid. + // Only do it if the number of foods is less than max_foods + if (env->foods->size >= env->max_food) { + return; + } FoodList *foods = env->foods; int original_size = foods->size; for (int i = 0; i < original_size; i++) { @@ -552,7 +563,6 @@ void c_step(PredPrey *env) { c_reset(env); return; } - spawn_foods(env); compute_observations(env); } From 4b523162b8a0ed11efe46b8f89f4eac1ae8aff87 Mon Sep 17 00:00:00 2001 From: mx2000 Date: Thu, 30 Oct 2025 17:20:16 +0100 Subject: [PATCH 06/18] put back 1000 max timesteps --- pufferlib/ocean/predprey/predprey.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pufferlib/ocean/predprey/predprey.h b/pufferlib/ocean/predprey/predprey.h index a14ea2ad2..31c49b847 100644 --- a/pufferlib/ocean/predprey/predprey.h +++ b/pufferlib/ocean/predprey/predprey.h @@ -11,7 +11,7 @@ #include "grid.h" -#define MAX_TIMESTEPS 10 // If no agent died by then, we reset +#define MAX_TIMESTEPS 1000 // If no agent died by then, we reset #define EMPTY 0 // Anything non empty should be obstacles From 632a888f8ebe2167c6697ce4c310b27559d9ffca Mon Sep 17 00:00:00 2001 From: mx2000 Date: Sat, 1 Nov 2025 11:36:22 +0100 Subject: [PATCH 07/18] rework predprey env --- pufferlib/ocean/predprey/grid.h | 2 +- pufferlib/ocean/predprey/predprey.c | 48 ++- pufferlib/ocean/predprey/predprey.h | 497 ++++++++++++++--------- pufferlib/ocean/predprey/predprey_prof.c | 36 ++ pufferlib/ocean/predprey/terrain.h | 42 ++ 5 files changed, 417 insertions(+), 208 deletions(-) create mode 100644 pufferlib/ocean/predprey/predprey_prof.c create mode 100644 pufferlib/ocean/predprey/terrain.h diff --git a/pufferlib/ocean/predprey/grid.h b/pufferlib/ocean/predprey/grid.h index e6581fae4..e1ef256e4 100644 --- a/pufferlib/ocean/predprey/grid.h +++ b/pufferlib/ocean/predprey/grid.h @@ -4,7 +4,7 @@ #define GRID_HEIGHT 32 #define GRID_WIDTH 32 -const unsigned char grid_32_32_3v[GRID_HEIGHT][GRID_WIDTH] = { +static const unsigned char grid[GRID_HEIGHT][GRID_WIDTH] = { {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}, {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}, diff --git a/pufferlib/ocean/predprey/predprey.c b/pufferlib/ocean/predprey/predprey.c index 4d7b73f59..545d04a57 100644 --- a/pufferlib/ocean/predprey/predprey.c +++ b/pufferlib/ocean/predprey/predprey.c @@ -1,7 +1,7 @@ #include #include #include -#include "puffernet.h" +// #include "puffernet.h" #include "predprey.h" int main() { @@ -11,7 +11,7 @@ int main() { .height = 32, .vision = 3, .reward_food = 0.0f, - .food_base_spawn_rate = 1e-3, + .food_base_spawn_rate = 1e-1, }; allocate_cenv(&env); c_reset(&env); @@ -20,7 +20,6 @@ int main() { // Weights* weights = load_weights("resources/cpr/cpr_weights.bin", 139270); // int logit_sizes[] = {5}; // LinearLSTM* net = make_linearlstm(weights, env.num_agents, 49, logit_sizes, 1); - while (!WindowShouldClose()) { for (int i = 0; i < env.num_agents; i++) { @@ -54,9 +53,50 @@ int main() { c_step(&env); c_render(&env); + } - //close_renderer(renderer); free_CEnv(&env); return 0; } + + +//////////////// +// For profile +//////////////// +// #include +// #include +// #include +// #include "predprey.h" + +// int main() { +// PredPrey env = { +// .num_agents = 4, +// .width = 32, +// .height = 32, +// .vision = 3, +// .reward_food = 0.0f, +// .food_base_spawn_rate = 1e-1, +// }; +// allocate_cenv(&env); +// c_reset(&env); + +// long i = 0; +// while (true) { + +// for (int i = 0; i < env.num_agents; i++) { +// env.actions[i] = rand() % 7; +// } + +// c_step(&env); + +// i++; +// if (i > 10000000) { +// printf("breaking"); +// break; +// } +// } +// free_CEnv(&env); + +// return 0; +// } diff --git a/pufferlib/ocean/predprey/predprey.h b/pufferlib/ocean/predprey/predprey.h index 31c49b847..e51f314e1 100644 --- a/pufferlib/ocean/predprey/predprey.h +++ b/pufferlib/ocean/predprey/predprey.h @@ -9,15 +9,25 @@ #include "raylib.h" -#include "grid.h" +#include "terrain.h" #define MAX_TIMESTEPS 1000 // If no agent died by then, we reset #define EMPTY 0 -// Anything non empty should be obstacles -#define NORMAL_FOOD 1 -#define WALL 2 -#define AGENTS 3 + +// Tiles +#define TILE_DIRT 0 +#define TILE_WATER 4 +#define TILE_GRASS 8 +#define TILE_HOUSE 3 + +// Items +#define ITEM_FOOD 10 +#define ITEM_WOOD 13 +#define ITEM_BED 8 + +// Entities +#define ENTITY_AGENT 0 #define MAX_CELL_OBS 3 // Maximum number of info per cell in observations #define LOG_BUFFER_SIZE 8192 @@ -47,7 +57,6 @@ #define SPRITE_SIZE 128 #define TILE_SIZE 64 - #define HEALTH_BAR_WIDTH 48 #define HEALTH_BAR_HEIGHT 6 @@ -73,24 +82,35 @@ struct Agent { unsigned char anim; }; -typedef struct FoodList FoodList; -struct FoodList { - int *indexes; // Grid flattened index positions - int size; +// typedef struct FoodList FoodList; +// struct FoodList { +// int *indexes; // Grid flattened index positions +// int size; +// }; + +// FoodList *allocate_foodlist(int size) { +// FoodList *foods = (FoodList *)calloc(1, sizeof(FoodList)); +// foods->indexes = (int *)calloc(size, sizeof(int)); +// foods->size = 0; +// return foods; +// } + +// void free_foodlist(FoodList *foods) { +// free(foods->indexes); +// free(foods); +// } + + +// Usefull for biomes where resource can spawn into +typedef struct Biome_idx Biome_idx; +struct Biome_idx { + int *grass_idx; + int grass_count; + + int *dirt_idx; + int dirt_count; }; -FoodList *allocate_foodlist(int size) { - FoodList *foods = (FoodList *)calloc(1, sizeof(FoodList)); - foods->indexes = (int *)calloc(size, sizeof(int)); - foods->size = 0; - return foods; -} - -void free_foodlist(FoodList *foods) { - free(foods->indexes); - free(foods); -} - typedef struct Renderer Renderer; typedef struct PredPrey PredPrey; struct PredPrey { @@ -108,7 +128,6 @@ struct PredPrey { float reward_food; - unsigned char *grid; float *observations; int *actions; float *rewards; @@ -121,11 +140,39 @@ struct PredPrey { Log log; Log* agent_logs; - FoodList *foods; + // FoodList *foods; float food_base_spawn_rate; float max_food; + int food_count; + + unsigned char *terrain; // Array of terrain types, size width*height + unsigned char *items; // Array of item types, size width*height + short *pids; // Array of entity idx, size width*height + + Biome_idx biome_idxs; }; +void init_biome_idx(PredPrey *env) { + // I only do that once on load - will need to do that every reset if map changes + env->biome_idxs.grass_idx = (int *)calloc(env->width * env->height, sizeof(int)); + env->biome_idxs.dirt_idx = (int *)calloc(env->width * env->height, sizeof(int)); + + env->biome_idxs.grass_count = 0; + env->biome_idxs.dirt_count = 0; + + for (int r = 0; r < env->height; r++) { + for (int c = 0; c < env->width; c++) { + int grid_idx = r * env->width + c; + unsigned char tile = env->terrain[grid_idx]; + if (tile == TILE_GRASS) { + env->biome_idxs.grass_idx[env->biome_idxs.grass_count++] = grid_idx; + } else if (tile == TILE_DIRT) { + env->biome_idxs.dirt_idx[env->biome_idxs.dirt_count++] = grid_idx; + } + } + } +} + void add_log(PredPrey *env, Log *log) { //TODO fix perf calculation env->log.perf = fmaxf(0, log->score/MAX_TIMESTEPS); @@ -137,12 +184,10 @@ void add_log(PredPrey *env, Log *log) { } void init_cenv(PredPrey *env) { - env->grid = - (unsigned char *)calloc(env->width * env->height, sizeof(unsigned char)); env->agents = (Agent *)calloc(env->num_agents, sizeof(Agent)); env->vision_window = 2 * env->vision + 1; env->obs_size = (env->vision_window * env->vision_window) * MAX_CELL_OBS + 1; - env->foods = allocate_foodlist(env->width * env->height); + // env->foods = allocate_foodlist(env->width * env->height); env->agent_logs = (Log *)calloc(env->num_agents, sizeof(Log)); env->masks = (unsigned char *)calloc(env->num_agents, sizeof(unsigned char)); // Arbitrarly set max food to a proportion of available tiles @@ -151,6 +196,9 @@ void init_cenv(PredPrey *env) { env->vision*env->width*2 + env->vision*2*(env->height - 2*env->vision) ) - env->num_agents); + env->terrain = (unsigned char *)calloc(env->width * env->height, sizeof(unsigned char)); + env->items = (unsigned char *)calloc(env->width * env->height, sizeof(unsigned char)); + env->pids = (short *)calloc(env->width * env->height, sizeof(short)); } void allocate_cenv(PredPrey *env) { @@ -166,12 +214,20 @@ void allocate_cenv(PredPrey *env) { init_cenv(env); } +void free_biome(PredPrey *env) { + free(env->biome_idxs.grass_idx); + free(env->biome_idxs.dirt_idx); +} + void c_close(PredPrey *env) { - free(env->grid); free(env->agents); - free_foodlist(env->foods); + // free_foodlist(env->foods); free(env->masks); free(env->agent_logs); + free(env->terrain); + free(env->items); + free(env->pids); + free_biome(env); } void free_CEnv(PredPrey *env) { @@ -183,17 +239,7 @@ void free_CEnv(PredPrey *env) { c_close(env); } -int grid_index(PredPrey *env, int r, int c) { return r * env->width + c; } -int get_agent_tile_from_id(int agent_id) { return AGENTS + agent_id; } -int get_agent_id_from_tile(int tile) { return tile - AGENTS; } - -void add_food(PredPrey *env, int grid_idx, int food_type) { - // Add food to the grid and the food_list at grid_idx - assert(env->grid[grid_idx] == EMPTY); - env->grid[grid_idx] = food_type; - FoodList *foods = env->foods; - foods->indexes[foods->size++] = grid_idx; -} +int flat_idx(PredPrey *env, int r, int c) { return r * env->width + c; } void reward_agent(PredPrey *env, int agent_id, float reward) { // Simple helper function which loggs as well @@ -201,83 +247,95 @@ void reward_agent(PredPrey *env, int agent_id, float reward) { env->agent_logs[agent_id].episode_return += reward; } -void spawn_food(PredPrey *env, int food_type) { - // Randomly spawns such food in the grid - int idx, tile; - do { - int r = rand() % (env->height - 1); - int c = rand() % (env->width - 1); - idx = r * env->width + c; - tile = env->grid[idx]; - } while (tile != EMPTY); - add_food(env, idx, food_type); -} - -void remove_food(PredPrey *env, int grid_idx) { - // Removes food from the grid and food_list - env->grid[grid_idx] = EMPTY; - FoodList *foods = env->foods; - for (int i = 0; i < foods->size; i++) { - if (foods->indexes[i] == grid_idx) { - foods->indexes[i] = foods->indexes[foods->size - 1]; - foods->size--; - return; +void init_foods(PredPrey *env) { + // Fill dirt area with food + for (int i = 0; i < env->biome_idxs.dirt_count; i++) { + int grid_idx = env->biome_idxs.dirt_idx[i]; + if (env->items[grid_idx] == EMPTY) { + env->items[grid_idx] = ITEM_FOOD; + env->food_count += 1; } } } -void init_foods(PredPrey *env) { - // On reset spawns x number of each food randomly. - int available_tiles = (env->width * env->height) - - (2 * env->vision * env->width + - 2 * env->vision * (env->height - 2 * env->vision)); - int normalizer = (env->width * env->height) / 576; - int normal = available_tiles / (20 * normalizer); - for (int i = 0; i < normal; i++) { - spawn_food(env, NORMAL_FOOD); +// void spawn_foods_organic(PredPrey *env) { +// // After each step, check existing foods and spawns new food in the +// // neighborhood Iterates over food_list for efficiency instead of the entire +// // grid. +// // Only do it if the number of foods is less than max_foods +// if (env->foods->size >= env->max_food) { +// return; +// } +// FoodList *foods = env->foods; +// int original_size = foods->size; +// for (int i = 0; i < original_size; i++) { +// int idx = foods->indexes[i]; +// int offset = idx - env->width - 1; // Food spawn in 1 radius +// int r = offset / env->width; +// int c = offset % env->width; +// for (int ri = 0; ri < 3; ri++) { +// for (int ci = 0; ci < 3; ci++) { +// int neighboor_idx = flat_idx(env, (r + ri), (c + ci)); +// if (env->terrain[neighboor_idx] != TILE_DIRT && env->items[neighboor_idx] != 0) { +// continue; +// } +// switch (env->items[idx]) { +// // %Chance spawning new food +// case ITEM_FOOD: +// if ((rand() / (double)RAND_MAX) < env->food_base_spawn_rate) { +// add_food(env, neighboor_idx, env->items[idx]); +// } +// break; +// } +// } +// } +// } + +// // // Each turn there is random probability for a food to spawn at a random +// // // location To cope with resource depletion +// // int normalizer = (env->width * env->height) / 576; +// // if ((rand() / (double)RAND_MAX) < +// // min((env->food_base_spawn_rate * 2 * normalizer), 1e-2)) { +// // spawn_food_random(env, NORMAL_FOOD); +// // } +// } + +bool spawn_food_random(PredPrey *env){ + // Try x time to spawn food wihtin the DIRT area + if (env->food_count >= env->max_food) { + return false; } + int attempts = 0; + while (attempts ++ < 100){ + int rand_idx = rand() % env->biome_idxs.dirt_count; + int grid_idx = env->biome_idxs.dirt_idx[rand_idx]; + + if (env->items[grid_idx] == EMPTY) { + env->items[grid_idx] = ITEM_FOOD; + env->food_count++; + return true; + } + } + return false; } -void spawn_foods(PredPrey *env) { - // After each step, check existing foods and spawns new food in the - // neighborhood Iterates over food_list for efficiency instead of the entire - // grid. - // Only do it if the number of foods is less than max_foods - if (env->foods->size >= env->max_food) { - return; - } - FoodList *foods = env->foods; - int original_size = foods->size; - for (int i = 0; i < original_size; i++) { - int idx = foods->indexes[i]; - int offset = idx - env->width - 1; // Food spawn in 1 radius - int r = offset / env->width; - int c = offset % env->width; - for (int ri = 0; ri < 3; ri++) { - for (int ci = 0; ci < 3; ci++) { - int grid_idx = grid_index(env, (r + ri), (c + ci)); - if (env->grid[grid_idx] != EMPTY) { - continue; - } - switch (env->grid[idx]) { - // %Chance spawning new food - case NORMAL_FOOD: - if ((rand() / (double)RAND_MAX) < env->food_base_spawn_rate) { - add_food(env, grid_idx, env->grid[idx]); - } - break; - } - } +void regrow_food(PredPrey *env){ + // Regrow food in all dirt tiles that do not have food already with some probability + for (int i = 0; i < env->biome_idxs.dirt_count; i++) { + int grid_idx = env->biome_idxs.dirt_idx[i]; + if (env->items[grid_idx] == EMPTY && rand() / (double)RAND_MAX < env->food_base_spawn_rate) { + env->items[grid_idx] = ITEM_FOOD; + env->food_count += 1; } } +} - // Each turn there is random probability for a food to spawn at a random - // location To cope with resource depletion - int normalizer = (env->width * env->height) / 576; - if ((rand() / (double)RAND_MAX) < - min((env->food_base_spawn_rate * 2 * normalizer), 1e-2)) { - spawn_food(env, NORMAL_FOOD); - } +void spawn_items(PredPrey *env) { + // Currently items are only spawning every step in their corresponding BIOME + regrow_food(env); + // if (rand() / (double)RAND_MAX < env->food_base_spawn_rate) { + // spawn_food_random(env); + // } } void compute_observations(PredPrey *env) { @@ -295,15 +353,16 @@ void compute_observations(PredPrey *env) { int c_offset = agent->c - env->vision; for (int r = 0; r < env->vision_window; r++) { for (int c = 0; c < env->vision_window; c++) { - int grid_idx = grid_index(env,r_offset + r, c_offset + c); + int grid_idx = flat_idx(env,r_offset + r, c_offset + c); + unsigned char item_idx = env->items[grid_idx]; + short entity_id = env->pids[grid_idx]; - // First obs is the cell type - env->observations[obs_idx++] = env->grid[grid_idx]; + // First obs is items if any + env->observations[obs_idx++] = item_idx; float hp_norm = 0.0f; float food_norm = 0.0f; - if (env->grid[grid_idx] >= AGENTS) { - int agent_id = get_agent_id_from_tile(env->grid[grid_idx]); - Agent *grid_agent = &env->agents[agent_id]; + if (entity_id != -1) { + Agent *grid_agent = &env->agents[entity_id]; hp_norm = grid_agent->hp / (float)MAX_HP; food_norm = grid_agent->held_food / (float)MAX_INVENTORY_ITEM; } @@ -323,8 +382,8 @@ void remove_agent(PredPrey *env, int agent_id) { if (agent->r < 0 || agent->c < 0) { return; } - int grid_idx = grid_index(env, agent->r, agent->c); - env->grid[grid_idx] = EMPTY; + int grid_idx = flat_idx(env, agent->r, agent->c); + env->pids[grid_idx] = -1; agent->r = -1; agent->c = -1; } @@ -349,53 +408,80 @@ void remove_hp(PredPrey *env, int agent_id, float hp) { add_hp(env, agent_id, -hp); } -void save_grid_to_file(PredPrey *env, const char *filename) { - FILE *file = fopen(filename, "w"); +void save_terrain_to_file(PredPrey *env, const char *filename) { + char filepath[512]; + char dir[512]; + strncpy(dir, __FILE__, sizeof(dir) - 1); + char *last_slash = strrchr(dir, '/'); + if (last_slash) *last_slash = '\0'; + snprintf(filepath, sizeof(filepath), "%s/%s", dir, filename); + FILE *file = fopen(filepath, "w"); if (!file) { perror("Failed to open file"); return; } - fprintf(file, "#ifndef GRID_H\n#define GRID_H\n\n"); - fprintf(file, "#define GRID_HEIGHT %d\n", env->height); - fprintf(file, "#define GRID_WIDTH %d\n\n", env->width); - fprintf(file, "static const unsigned char grid[GRID_HEIGHT][GRID_WIDTH] = {\n"); + fprintf(file, "#ifndef H\n#define H\n\n"); + fprintf(file, "#define HEIGHT %d\n", env->height); + fprintf(file, "#define WIDTH %d\n\n", env->width); + fprintf(file, "static const unsigned char terrain[HEIGHT][WIDTH] = {\n"); for (int r = 0; r < env->height; r++) { fprintf(file, " {"); for (int c = 0; c < env->width; c++) { - unsigned char val = env->grid[r * env->width + c]; + unsigned char val = env->terrain[r * env->width + c]; fprintf(file, "0x%02X%s", val, (c == env->width - 1) ? "" : ", "); } fprintf(file, "}%s\n", (r == env->height - 1) ? "" : ","); } - fprintf(file, "};\n\n#endif // GRID_H\n"); + fprintf(file, "};\n\n#endif // H\n"); fclose(file); } void make_grid_from_scratch(PredPrey *env){ - memset(env->grid, EMPTY, (env->height * env->width) * sizeof(env->grid[0])); // top walling for (int r = 0; r < env->vision; r++) { - memset(env->grid + (r * env->width), WALL, - env->width * sizeof(env->grid[0])); + memset(env->terrain + (r * env->width), TILE_WATER, + env->width * sizeof(env->terrain[0])); } // left side walling for (int r = 0; r < env->height; r++) { - memset(env->grid + (r * env->width), WALL, - env->vision * sizeof(env->grid[0])); + memset(env->terrain + (r * env->width), TILE_WATER, + env->vision * sizeof(env->terrain[0])); } // bottom walling for (int r = env->height - env->vision; r < env->height; r++) { - memset(env->grid + (r * env->width), WALL, - env->width * sizeof(env->grid[0])); + memset(env->terrain + (r * env->width), TILE_WATER, + env->width * sizeof(env->terrain[0])); } // right side walling for (int r = 0; r < env->height; r++) { - memset(env->grid + (r * env->width) + (env->width - env->vision), WALL, - env->vision * sizeof(env->grid[0])); + memset(env->terrain + (r * env->width) + (env->width - env->vision), TILE_WATER, + env->vision * sizeof(env->terrain[0])); } - save_grid_to_file(env, "grid.h"); + + // Calculate dimensions + int inner_width = env->width - (2 * env->vision); + int inner_height = env->height - (2 * env->vision); + int house_size = inner_height / 3; + int field_width = inner_width - house_size; + + // Fill inner terrain + for (int r = env->vision; r < env->height - env->vision; r++) { + int row_offset = r * env->width + env->vision; // row offset in global grid + int row_in_inner = r - env->vision; // row index in inner area reference + + if (row_in_inner >= inner_height - house_size) { + // Bottom rows: HOUSE on left, DIRT on right + memset(env->terrain + row_offset, TILE_HOUSE, house_size * sizeof(env->terrain[0])); + memset(env->terrain + row_offset + house_size, TILE_DIRT, field_width * sizeof(env->terrain[0])); + } else { + // Top rows: all GRASS + memset(env->terrain + row_offset, TILE_GRASS, inner_width * sizeof(env->terrain[0])); + } + } + + save_terrain_to_file(env, "terrain.h"); } void spawn_agent(PredPrey *env, int i){ @@ -410,7 +496,7 @@ void spawn_agent(PredPrey *env, int i){ bool allocated = false; while (!allocated) { adr = rand() % (env->height * env->width); - if (env->grid[adr] == EMPTY) { + if (env->pids[adr] == -1 && env->terrain[adr] != TILE_WATER) { int r = adr / env->width; int c = adr % env->width; agent->r = r; @@ -418,20 +504,26 @@ void spawn_agent(PredPrey *env, int i){ allocated = true; } } - assert(env->grid[adr] == EMPTY); - env->grid[adr] = get_agent_tile_from_id(agent->id); + assert(env->pids[adr] == -1); + env->pids[adr] = agent->id; env->agent_logs[i] = (Log){0}; } void c_reset(PredPrey *env) { env->tick = 0; memset(env->agent_logs, 0, env->num_agents * sizeof(Log)); env->log = (Log){0}; - env->foods->size = 0; - memset(env->foods->indexes, 0, env->width * env->height * sizeof(int)); + env->food_count = 0; + // env->foods->size = 0; + // memset(env->foods->indexes, 0, env->width * env->height * sizeof(int)); + // make_grid_from_scratch(env); - assert(env->width == GRID_WIDTH && env->height == GRID_HEIGHT); - memcpy(env->grid, grid_32_32_3v, env->width * env->height * sizeof(unsigned char)); - + memcpy(env->terrain, terrain, env->width * env->height * sizeof(unsigned char)); + init_biome_idx(env); // TODO dump that for current map & memcpy + + memset(env->items, EMPTY, env->width * env->height * sizeof(unsigned char)); + // Carrefull here but -1 works with memset + memset(env->pids, -1, env->width * env->height * sizeof(short)); + for (int i = 0; i < env->num_agents; i++) { spawn_agent(env, i); } @@ -443,6 +535,19 @@ void c_reset(PredPrey *env) { compute_observations(env); } +bool is_obstacle(PredPrey *env, int idx) { + int tile = env->terrain[idx]; + if (tile == TILE_WATER) { + return true; + } + + short entity_id = env->pids[idx]; + if (entity_id != -1){ + return true; + } + return false; +} + void step_agent(PredPrey *env, int i) { Agent *agent = &env->agents[i]; @@ -479,18 +584,16 @@ void step_agent(PredPrey *env, int i) { int next_r = agent->r + dr; int next_c = agent->c + dc; - int prev_grid_idx = grid_index(env, agent->r, agent->c); - int next_grid_idx = grid_index(env, next_r, next_c); - int tile = env->grid[next_grid_idx]; - if (tile > EMPTY) { + int prev_grid_idx = flat_idx(env, agent->r, agent->c); + int next_grid_idx = flat_idx(env, next_r, next_c); + if (is_obstacle(env, next_grid_idx)) { next_grid_idx = prev_grid_idx; next_r = agent->r; next_c = agent->c; } // update the grid tiles values - int agent_tile = get_agent_tile_from_id(agent->id); - env->grid[prev_grid_idx] = EMPTY; - env->grid[next_grid_idx] = agent_tile; + env->pids[prev_grid_idx] = -1; + env->pids[next_grid_idx] = agent->id; agent->r = next_r; agent->c = next_c; @@ -502,40 +605,44 @@ void step_agent(PredPrey *env, int i) { int facing_tile_idx = 0; switch (agent->direction) { case UP: - facing_tile_idx = grid_index(env, agent->r - 1, agent->c); + facing_tile_idx = flat_idx(env, agent->r - 1, agent->c); break; case DOWN: - facing_tile_idx = grid_index(env, agent->r + 1, agent->c); + facing_tile_idx = flat_idx(env, agent->r + 1, agent->c); break; case LEFT: - facing_tile_idx = grid_index(env, agent->r, agent->c - 1); + facing_tile_idx = flat_idx(env, agent->r, agent->c - 1); break; case RIGHT: - facing_tile_idx = grid_index(env, agent->r, agent->c + 1); + facing_tile_idx = flat_idx(env, agent->r, agent->c + 1); break; } - int facing_tile = env->grid[facing_tile_idx]; - - if (facing_tile >= AGENTS) { - int other_agent_id = get_agent_id_from_tile(facing_tile); - Agent *other_agent = &env->agents[other_agent_id]; + + int facing_tile = env->pids[facing_tile_idx]; + if (facing_tile != -1) { + Agent *other_agent = &env->agents[facing_tile]; // Steal food from other agent if (other_agent->held_food > 0) { agent->held_food = other_agent->held_food; other_agent->held_food = 0; env->agent_logs[i].steals += 1; } - } else if (facing_tile == NORMAL_FOOD) { + } + + if (env->items[next_grid_idx] == ITEM_FOOD) { // Pick up food agent->held_food += 1; if (agent->held_food > MAX_INVENTORY_ITEM) { agent->held_food = MAX_INVENTORY_ITEM; } - remove_food(env, facing_tile_idx); + env->items[next_grid_idx] = EMPTY; + env->food_count -= 1; env->agent_logs[i].collects += 1; + } - } else if (action == EAT) { - // Eating logic here + } + + if (action == EAT) { if (agent->held_food > 0) { agent->held_food -= 1; add_hp(env, i, HP_REWARD_FOOD); @@ -563,10 +670,11 @@ void c_step(PredPrey *env) { c_reset(env); return; } - spawn_foods(env); + spawn_items(env); compute_observations(env); } +// Animations #define ANIM_IDLE 0 #define ANIM_MOVE 1 #define ANIM_DEATH 2 @@ -607,26 +715,12 @@ Animation ANIMATIONS[4] = { }, }; -// Raylib client -Color COLORS[] = { - (Color){255, 0, 0, 255}, (Color){170, 170, 170, 255}, - (Color){255, 255, 0, 255}, (Color){0, 255, 0, 255}, - (Color){0, 255, 255, 255}, (Color){0, 128, 255, 255}, - (Color){128, 128, 128, 255}, (Color){255, 0, 0, 255}, - (Color){255, 255, 255, 255}, (Color){255, 85, 85, 255}, - (Color){170, 170, 170, 255}, (Color){0, 255, 255, 255}, - (Color){0, 0, 255, 255}, (Color){6, 24, 24, 255}, -}; +////////////////////////////////////////////////////////////////// +// Rendering +////////////////////////////////////////////////////////////////// #define BLANK CLITERAL(Color){ 0, 0, 0, 0 } // Blank (Transparent) -Rectangle UV_COORDS[7] = { - (Rectangle){0, 0, 0, 0}, (Rectangle){512, 0, 128, 128}, - (Rectangle){0, 0, 0, 0}, (Rectangle){0, 0, 128, 128}, - (Rectangle){128, 0, 128, 128}, (Rectangle){256, 0, 128, 128}, - (Rectangle){384, 0, 128, 128}, -}; - struct Renderer { int cell_size; int width; @@ -690,44 +784,41 @@ void c_render(PredPrey *env) { for (int r = 0; r < env->height; r++) { for (int c = 0; c < env->width; c++) { - int adr = grid_index(env, r, c); - int tile = env->grid[adr]; + int adr = flat_idx(env, r, c); + + int terrain_type = env->terrain[adr]; + int item_type = env->items[adr]; + int entity_id = env->pids[adr]; + Vector2 pos = { .x = c * TILE_SIZE, .y = r * TILE_SIZE, }; - // Drawing grass no matter what + + // Drawing terrain Rectangle source_rect = { - .x = 11 * TILE_SIZE, - .y = 8 * TILE_SIZE, + .x = 0, + .y = terrain_type * TILE_SIZE, .width = TILE_SIZE, .height = TILE_SIZE }; DrawTextureRec(renderer->tiles, source_rect, pos, WHITE); - - if (tile == EMPTY) { - continue; - } else if (tile == WALL) { - Rectangle source_rect = { - .x = 0 * TILE_SIZE, - .y = 1 * TILE_SIZE, - .width = TILE_SIZE, - .height = TILE_SIZE - }; - DrawTextureRec(renderer->tiles, source_rect, pos, WHITE); - } else if (tile == NORMAL_FOOD) { + + // Drawing items + if (item_type != 0) { Rectangle source_rect = { .x = 4 * TILE_SIZE, - .y = 10 * TILE_SIZE, + .y = item_type * TILE_SIZE, .width = TILE_SIZE, .height = TILE_SIZE }; DrawTextureRec(renderer->items, source_rect, pos, WHITE); - } else { - int agent_id = get_agent_id_from_tile(tile); - Agent *agent = &env->agents[agent_id]; + } + + if (entity_id != -1) { + Agent *agent = &env->agents[entity_id]; Animation animation = ANIMATIONS[agent->anim]; - int starting_sprite_y = (env->agents[agent_id].direction) * SPRITE_SIZE; + int starting_sprite_y = (env->agents[entity_id].direction) * SPRITE_SIZE; int x_pos = (c - 0.5f)*TILE_SIZE; int y_pos = (r - 0.5f)*TILE_SIZE; Vector2 pos = { @@ -740,7 +831,7 @@ void c_render(PredPrey *env) { .width = SPRITE_SIZE, .height = SPRITE_SIZE }; - DrawTextureRec(renderer->agents[agent_id%5][agent_id%10], source_rect, pos, WHITE); + DrawTextureRec(renderer->agents[entity_id%5][entity_id%10], source_rect, pos, WHITE); // Draw HP bar int bar_x = x_pos + TILE_SIZE - HEALTH_BAR_WIDTH/2; @@ -750,7 +841,7 @@ void c_render(PredPrey *env) { // Food Number in inventory char* txt; Color color; - txt = (char*) TextFormat("%d: F: %d", agent_id, agent->held_food); + txt = (char*) TextFormat("%d: F: %d", entity_id, agent->held_food); color = GREEN; Vector2 text_pos = {.x = bar_x, .y = bar_y - 20}; diff --git a/pufferlib/ocean/predprey/predprey_prof.c b/pufferlib/ocean/predprey/predprey_prof.c new file mode 100644 index 000000000..c41d5ab04 --- /dev/null +++ b/pufferlib/ocean/predprey/predprey_prof.c @@ -0,0 +1,36 @@ +#include +#include +#include +#include "predprey.h" + +int main() { + PredPrey env = { + .num_agents = 4, + .width = 32, + .height = 32, + .vision = 3, + .reward_food = 0.0f, + .food_base_spawn_rate = 1e-1, + }; + allocate_cenv(&env); + c_reset(&env); + + long i = 0; + while (true) { + + for (int i = 0; i < env.num_agents; i++) { + env.actions[i] = rand() % 7; + } + + c_step(&env); + + i++; + if (i > 10000000) { + printf("breaking"); + break; + } + } + free_CEnv(&env); + + return 0; +} diff --git a/pufferlib/ocean/predprey/terrain.h b/pufferlib/ocean/predprey/terrain.h new file mode 100644 index 000000000..89909d80c --- /dev/null +++ b/pufferlib/ocean/predprey/terrain.h @@ -0,0 +1,42 @@ +#ifndef H +#define H + +#define HEIGHT 32 +#define WIDTH 32 + +static const unsigned char terrain[HEIGHT][WIDTH] = { + {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04}, + {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04} +}; + +#endif // H From 5c991dee9bd3a77f8582fd6aca3e7f7a939eb1a4 Mon Sep 17 00:00:00 2001 From: mx2000 Date: Sat, 1 Nov 2025 14:40:30 +0100 Subject: [PATCH 08/18] add diff poses for rendering --- pufferlib/ocean/predprey/predprey.h | 54 +++++++++++------------------ 1 file changed, 20 insertions(+), 34 deletions(-) diff --git a/pufferlib/ocean/predprey/predprey.h b/pufferlib/ocean/predprey/predprey.h index e51f314e1..fd5a36985 100644 --- a/pufferlib/ocean/predprey/predprey.h +++ b/pufferlib/ocean/predprey/predprey.h @@ -29,6 +29,12 @@ // Entities #define ENTITY_AGENT 0 +// Animations +#define ANIM_IDLE 0 +#define ANIM_INTERACT 1 +#define ANIM_EAT 2 + + #define MAX_CELL_OBS 3 // Maximum number of info per cell in observations #define LOG_BUFFER_SIZE 8192 @@ -553,6 +559,7 @@ void step_agent(PredPrey *env, int i) { Agent *agent = &env->agents[i]; int action = env->actions[i]; + agent->anim = ANIM_IDLE; ///////////////////////////////// // Movement @@ -626,6 +633,7 @@ void step_agent(PredPrey *env, int i) { agent->held_food = other_agent->held_food; other_agent->held_food = 0; env->agent_logs[i].steals += 1; + agent->anim = ANIM_INTERACT; } } @@ -638,7 +646,7 @@ void step_agent(PredPrey *env, int i) { env->items[next_grid_idx] = EMPTY; env->food_count -= 1; env->agent_logs[i].collects += 1; - + agent->anim = ANIM_INTERACT; } } @@ -647,6 +655,7 @@ void step_agent(PredPrey *env, int i) { agent->held_food -= 1; add_hp(env, i, HP_REWARD_FOOD); reward_agent(env, i, env->reward_food); + agent->anim = ANIM_EAT; } } return; @@ -674,44 +683,21 @@ void c_step(PredPrey *env) { compute_observations(env); } -// Animations -#define ANIM_IDLE 0 -#define ANIM_MOVE 1 -#define ANIM_DEATH 2 -#define ANIM_ATTACK 3 - +// Simplified animations to just be poses (1 frame only) typedef struct Animation Animation; struct Animation { - int num_frames; - int tiles_traveled; - int offset; // Number of tiles from the top of the sheet - int frames[10]; // Order of frames in sheet, left to right + int x; // x position in sprite sheet }; -Animation ANIMATIONS[4] = { +Animation ANIMATIONS[3] = { (Animation){ // ANIM_IDLE - .num_frames = 1, - .tiles_traveled = 0, - .offset = 0, - .frames = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0} - }, - (Animation){ // ANIM_MOVE - .num_frames = 6, - .tiles_traveled = 1, - .offset = 4, - .frames = {0, 1, 2, 3, 4, 5, 0, 0, 0, 0} + .x = 0, }, - (Animation){ // ANIM_DEATH - .num_frames = 3, - .tiles_traveled = 0, - .offset = 0, - .frames = {5, 6, 7, 0, 0, 0, 0, 0, 0, 0} + (Animation){ // ANIM_INTERACT + .x = 5 }, - (Animation){ // ANIM_ATTACK - .num_frames = 2, - .tiles_traveled = 0, - .offset = 0, - .frames = {1, 2, 0, 0, 0, 0, 0, 0, 0, 0} + (Animation){ // ANIM_EAT + .x = 3, }, }; @@ -789,7 +775,7 @@ void c_render(PredPrey *env) { int terrain_type = env->terrain[adr]; int item_type = env->items[adr]; int entity_id = env->pids[adr]; - + Vector2 pos = { .x = c * TILE_SIZE, .y = r * TILE_SIZE, @@ -826,7 +812,7 @@ void c_render(PredPrey *env) { .y = y_pos, }; Rectangle source_rect = { - .x = 0, + .x = animation.x * SPRITE_SIZE, .y = starting_sprite_y, .width = SPRITE_SIZE, .height = SPRITE_SIZE From 758eb529356b57869dbb8491ca0de018e9a3e6ec Mon Sep 17 00:00:00 2001 From: mx2000 Date: Mon, 3 Nov 2025 20:21:06 +0100 Subject: [PATCH 09/18] improve logs & agents spawn in house --- pufferlib/ocean/predprey/predprey.h | 167 ++++++++++++++++++---------- 1 file changed, 108 insertions(+), 59 deletions(-) diff --git a/pufferlib/ocean/predprey/predprey.h b/pufferlib/ocean/predprey/predprey.h index fd5a36985..ccd475b77 100644 --- a/pufferlib/ocean/predprey/predprey.h +++ b/pufferlib/ocean/predprey/predprey.h @@ -115,6 +115,9 @@ struct Biome_idx { int *dirt_idx; int dirt_count; + + int *house_idx; + int house_count; }; typedef struct Renderer Renderer; @@ -162,9 +165,11 @@ void init_biome_idx(PredPrey *env) { // I only do that once on load - will need to do that every reset if map changes env->biome_idxs.grass_idx = (int *)calloc(env->width * env->height, sizeof(int)); env->biome_idxs.dirt_idx = (int *)calloc(env->width * env->height, sizeof(int)); + env->biome_idxs.house_idx = (int *)calloc(env->width * env->height, sizeof(int)); env->biome_idxs.grass_count = 0; env->biome_idxs.dirt_count = 0; + env->biome_idxs.house_count = 0; for (int r = 0; r < env->height; r++) { for (int c = 0; c < env->width; c++) { @@ -174,6 +179,8 @@ void init_biome_idx(PredPrey *env) { env->biome_idxs.grass_idx[env->biome_idxs.grass_count++] = grid_idx; } else if (tile == TILE_DIRT) { env->biome_idxs.dirt_idx[env->biome_idxs.dirt_count++] = grid_idx; + } else if (tile == TILE_HOUSE) { + env->biome_idxs.house_idx[env->biome_idxs.house_count++] = grid_idx; } } } @@ -189,6 +196,22 @@ void add_log(PredPrey *env, Log *log) { env->log.n += 1; } +void add_agent_log(PredPrey *env, int agent_id) { + int time_alive = env->tick - env->agents[agent_id].start_tick; + assert(time_alive > 0); + env->agent_logs[agent_id].score = time_alive; + env->agent_logs[agent_id].steals /= time_alive; + env->agent_logs[agent_id].collects /= time_alive; + add_log(env, &env->agent_logs[agent_id]); + + //I don't fully reset because the agent might not be dead yet + //So I still need to keep track of collect & steal counts + //episode_returns will accumulate over life + //score will be overwritten next time + env->agent_logs[agent_id].steals *= time_alive; + env->agent_logs[agent_id].collects *= time_alive; +} + void init_cenv(PredPrey *env) { env->agents = (Agent *)calloc(env->num_agents, sizeof(Agent)); env->vision_window = 2 * env->vision + 1; @@ -205,6 +228,10 @@ void init_cenv(PredPrey *env) { env->terrain = (unsigned char *)calloc(env->width * env->height, sizeof(unsigned char)); env->items = (unsigned char *)calloc(env->width * env->height, sizeof(unsigned char)); env->pids = (short *)calloc(env->width * env->height, sizeof(short)); + + // make_grid_from_scratch(env); + memcpy(env->terrain, terrain, env->width * env->height * sizeof(unsigned char)); + init_biome_idx(env); } void allocate_cenv(PredPrey *env) { @@ -223,6 +250,7 @@ void allocate_cenv(PredPrey *env) { void free_biome(PredPrey *env) { free(env->biome_idxs.grass_idx); free(env->biome_idxs.dirt_idx); + free(env->biome_idxs.house_idx); } void c_close(PredPrey *env) { @@ -253,6 +281,19 @@ void reward_agent(PredPrey *env, int agent_id, float reward) { env->agent_logs[agent_id].episode_return += reward; } +bool is_obstacle(PredPrey *env, int idx) { + int tile = env->terrain[idx]; + if (tile == TILE_WATER) { + return true; + } + + short entity_id = env->pids[idx]; + if (entity_id != -1){ + return true; + } + return false; +} + void init_foods(PredPrey *env) { // Fill dirt area with food for (int i = 0; i < env->biome_idxs.dirt_count; i++) { @@ -329,7 +370,11 @@ void regrow_food(PredPrey *env){ // Regrow food in all dirt tiles that do not have food already with some probability for (int i = 0; i < env->biome_idxs.dirt_count; i++) { int grid_idx = env->biome_idxs.dirt_idx[i]; - if (env->items[grid_idx] == EMPTY && rand() / (double)RAND_MAX < env->food_base_spawn_rate) { + if ( + env->items[grid_idx] == EMPTY && + rand() / (double)RAND_MAX < env->food_base_spawn_rate && + env->food_count < env->max_food + ) { env->items[grid_idx] = ITEM_FOOD; env->food_count += 1; } @@ -401,10 +446,9 @@ void add_hp(PredPrey *env, int agent_id, float hp) { agent->hp = MAX_HP; } else if (agent->hp <= 0) { agent->hp = 0; - env->agent_logs[agent->id].score = env->tick - agent->start_tick; reward_agent(env, agent_id, REWARD_DEATH); env->terminals[agent->id] = 1; - add_log(env, &env->agent_logs[agent_id]); + add_agent_log(env, agent_id); remove_agent(env, agent_id); env->last_agent_dead_tick = env->tick; } @@ -490,41 +534,49 @@ void make_grid_from_scratch(PredPrey *env){ save_terrain_to_file(env, "terrain.h"); } -void spawn_agent(PredPrey *env, int i){ - Agent *agent = &env->agents[i]; - agent->id = i; +void spawn_agent(PredPrey *env, int agent_id){ + Agent *agent = &env->agents[agent_id]; + agent->id = agent_id; agent->hp = 100; agent->start_tick = env->tick; agent->held_food = 0; + // Spawn only in the house area int adr = 0; - - bool allocated = false; - while (!allocated) { - adr = rand() % (env->height * env->width); - if (env->pids[adr] == -1 && env->terrain[adr] != TILE_WATER) { - int r = adr / env->width; - int c = adr % env->width; - agent->r = r; - agent->c = c; - allocated = true; + for (int i = 0; i < env->biome_idxs.house_count; i++) { + adr = env->biome_idxs.house_idx[i]; + if (is_obstacle(env, adr)){ + continue; } + int r = adr / env->width; + int c = adr % env->width; + agent->r = r; + agent->c = c; + break; } + + // bool allocated = false; + // while (!allocated) { + // adr = rand() % (env->height * env->width); + // if (!is_obstacle(env, adr)) { + // int r = adr / env->width; + // int c = adr % env->width; + // agent->r = r; + // agent->c = c; + // allocated = true; + // } + // } assert(env->pids[adr] == -1); env->pids[adr] = agent->id; - env->agent_logs[i] = (Log){0}; + env->agent_logs[agent_id] = (Log){0}; } void c_reset(PredPrey *env) { + env->tick = 0; + env->last_agent_dead_tick = 0; + memset(env->agent_logs, 0, env->num_agents * sizeof(Log)); env->log = (Log){0}; - env->food_count = 0; - // env->foods->size = 0; - // memset(env->foods->indexes, 0, env->width * env->height * sizeof(int)); - - // make_grid_from_scratch(env); - memcpy(env->terrain, terrain, env->width * env->height * sizeof(unsigned char)); - init_biome_idx(env); // TODO dump that for current map & memcpy memset(env->items, EMPTY, env->width * env->height * sizeof(unsigned char)); // Carrefull here but -1 works with memset @@ -534,28 +586,18 @@ void c_reset(PredPrey *env) { spawn_agent(env, i); } + env->food_count = 0; init_foods(env); + memset(env->observations, 0, env->num_agents * env->obs_size * sizeof(float)); memset(env->terminals, 0, env->num_agents * sizeof(unsigned char)); memset(env->masks, 1, env->num_agents * sizeof(unsigned char)); - compute_observations(env); -} -bool is_obstacle(PredPrey *env, int idx) { - int tile = env->terrain[idx]; - if (tile == TILE_WATER) { - return true; - } - - short entity_id = env->pids[idx]; - if (entity_id != -1){ - return true; - } - return false; + compute_observations(env); } void step_agent(PredPrey *env, int i) { - + Agent *agent = &env->agents[i]; int action = env->actions[i]; @@ -591,15 +633,15 @@ void step_agent(PredPrey *env, int i) { int next_r = agent->r + dr; int next_c = agent->c + dc; - int prev_grid_idx = flat_idx(env, agent->r, agent->c); + int curr_grid_idx = flat_idx(env, agent->r, agent->c); int next_grid_idx = flat_idx(env, next_r, next_c); if (is_obstacle(env, next_grid_idx)) { - next_grid_idx = prev_grid_idx; + next_grid_idx = curr_grid_idx; next_r = agent->r; next_c = agent->c; } // update the grid tiles values - env->pids[prev_grid_idx] = -1; + env->pids[curr_grid_idx] = -1; env->pids[next_grid_idx] = agent->id; agent->r = next_r; agent->c = next_c; @@ -625,9 +667,9 @@ void step_agent(PredPrey *env, int i) { break; } - int facing_tile = env->pids[facing_tile_idx]; - if (facing_tile != -1) { - Agent *other_agent = &env->agents[facing_tile]; + int facing_agent = env->pids[facing_tile_idx]; + if (facing_agent != -1) { + Agent *other_agent = &env->agents[facing_agent]; // Steal food from other agent if (other_agent->held_food > 0) { agent->held_food = other_agent->held_food; @@ -637,13 +679,13 @@ void step_agent(PredPrey *env, int i) { } } - if (env->items[next_grid_idx] == ITEM_FOOD) { + if (env->items[curr_grid_idx] == ITEM_FOOD) { + if (agent->held_food >= MAX_INVENTORY_ITEM) { + return; + } // Pick up food agent->held_food += 1; - if (agent->held_food > MAX_INVENTORY_ITEM) { - agent->held_food = MAX_INVENTORY_ITEM; - } - env->items[next_grid_idx] = EMPTY; + env->items[curr_grid_idx] = EMPTY; env->food_count -= 1; env->agent_logs[i].collects += 1; agent->anim = ANIM_INTERACT; @@ -651,12 +693,13 @@ void step_agent(PredPrey *env, int i) { } if (action == EAT) { - if (agent->held_food > 0) { - agent->held_food -= 1; - add_hp(env, i, HP_REWARD_FOOD); - reward_agent(env, i, env->reward_food); - agent->anim = ANIM_EAT; + if (agent->held_food <= 0) { + return; } + agent->held_food -= 1; + add_hp(env, i, HP_REWARD_FOOD); + reward_agent(env, i, env->reward_food); + agent->anim = ANIM_EAT; } return; } @@ -667,18 +710,24 @@ void c_step(PredPrey *env) { memset(env->rewards, 0, env->num_agents * sizeof(float)); for (int i = 0; i < env->num_agents; i++) { - if (env->agents[i].hp == 0) { + if (env->agents[i].hp <= 0) { spawn_agent(env, i); continue; } step_agent(env, i); remove_hp(env, i, HP_LOSS_PER_STEP); + if ((env->tick - env->agents[i].start_tick) % MAX_TIMESTEPS == 0) { + add_agent_log(env, i); + } } - if (env->tick - env->last_agent_dead_tick >= MAX_TIMESTEPS) { - c_reset(env); - return; - } + // if (env->tick - env->last_agent_dead_tick >= MAX_TIMESTEPS) { + // for (int i = 0; i < env->num_agents; i++) { + // add_agent_log(env, i); + // } + // env->last_agent_dead_tick = env->tick; + // } + spawn_items(env); compute_observations(env); } From 326788a0192af0b52a8b8362f5da8e6d6c09e3b8 Mon Sep 17 00:00:00 2001 From: mx2000 Date: Mon, 3 Nov 2025 20:34:26 +0100 Subject: [PATCH 10/18] add security check in step --- pufferlib/ocean/predprey/predprey.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pufferlib/ocean/predprey/predprey.h b/pufferlib/ocean/predprey/predprey.h index ccd475b77..388f19a49 100644 --- a/pufferlib/ocean/predprey/predprey.h +++ b/pufferlib/ocean/predprey/predprey.h @@ -716,7 +716,7 @@ void c_step(PredPrey *env) { } step_agent(env, i); remove_hp(env, i, HP_LOSS_PER_STEP); - if ((env->tick - env->agents[i].start_tick) % MAX_TIMESTEPS == 0) { + if ((env->tick - env->agents[i].start_tick) % MAX_TIMESTEPS == 0 && env->agents[i].hp > 0) { add_agent_log(env, i); } } From b598e7a57bc67782e44c18e9e84356ec154d2e34 Mon Sep 17 00:00:00 2001 From: mx2000 Date: Mon, 3 Nov 2025 20:40:57 +0100 Subject: [PATCH 11/18] update predprey conf --- pufferlib/config/ocean/predprey.ini | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/pufferlib/config/ocean/predprey.ini b/pufferlib/config/ocean/predprey.ini index c38e64fa7..ea15d60c6 100644 --- a/pufferlib/config/ocean/predprey.ini +++ b/pufferlib/config/ocean/predprey.ini @@ -10,10 +10,28 @@ num_envs = 4 [env] num_envs = 64 vision = 3 -num_agents = 8 +num_agents = 4 report_interval = 1 -food_base_spawn_rate = 1e-3 +food_base_spawn_rate = 1e-1 +reward_food = 0 [train] -total_timesteps = 150_000_000 -checkpoint_interval = 50 +total_timesteps = 100_000_000 +checkpoint_interval = 100 +adam_beta1 = 0.9 +adam_beta2 = 0.999 +adam_eps = 1e-8 +clip_coef = 0.2 +ent_coef = 0.01 +gae_lambda = 0.95 +gamma = 0.98 +learning_rate = 0.01 +max_grad_norm = 1.5 +max_minibatch_size = 32768 +minibatch_size = 32768 +prio_alpha = 0.85 +prio_beta0 = 0.85 +vf_clip_coef = 0.2 +vf_coef = 2 +vtrace_c_clip = 1 +vtrace_rho_clip = 1 \ No newline at end of file From ad1b04f4105a42a0648997c9e0a07faa975e0918 Mon Sep 17 00:00:00 2001 From: mx2000 Date: Mon, 3 Nov 2025 22:25:18 +0100 Subject: [PATCH 12/18] fix obs --- pufferlib/ocean/predprey/predprey.h | 17 +++++++++++------ pufferlib/ocean/predprey/predprey.py | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/pufferlib/ocean/predprey/predprey.h b/pufferlib/ocean/predprey/predprey.h index 388f19a49..48f05d1aa 100644 --- a/pufferlib/ocean/predprey/predprey.h +++ b/pufferlib/ocean/predprey/predprey.h @@ -13,7 +13,6 @@ #define MAX_TIMESTEPS 1000 // If no agent died by then, we reset -#define EMPTY 0 // Tiles #define TILE_DIRT 0 @@ -22,6 +21,7 @@ #define TILE_HOUSE 3 // Items +#define EMPTY 0 #define ITEM_FOOD 10 #define ITEM_WOOD 13 #define ITEM_BED 8 @@ -35,7 +35,7 @@ #define ANIM_EAT 2 -#define MAX_CELL_OBS 3 // Maximum number of info per cell in observations +#define MAX_CELL_OBS 5 // Maximum number of info per cell in observations #define LOG_BUFFER_SIZE 8192 #define SET_BIT(arr, i) (arr[(i) / 8] |= (1 << ((i) % 8))) @@ -408,8 +408,12 @@ void compute_observations(PredPrey *env) { unsigned char item_idx = env->items[grid_idx]; short entity_id = env->pids[grid_idx]; - // First obs is items if any - env->observations[obs_idx++] = item_idx; + // First obs is terrain + env->observations[obs_idx++] = (float)env->terrain[grid_idx]; + // Second is item + env->observations[obs_idx++] = (float)item_idx; + // Thirs is entity id + env->observations[obs_idx++] = (float)entity_id; float hp_norm = 0.0f; float food_norm = 0.0f; if (entity_id != -1) { @@ -689,6 +693,7 @@ void step_agent(PredPrey *env, int i) { env->food_count -= 1; env->agent_logs[i].collects += 1; agent->anim = ANIM_INTERACT; + reward_agent(env, i, 0.1f); } } @@ -713,9 +718,9 @@ void c_step(PredPrey *env) { if (env->agents[i].hp <= 0) { spawn_agent(env, i); continue; - } + } step_agent(env, i); - remove_hp(env, i, HP_LOSS_PER_STEP); + remove_hp(env, i, HP_LOSS_PER_STEP); if ((env->tick - env->agents[i].start_tick) % MAX_TIMESTEPS == 0 && env->agents[i].hp > 0) { add_agent_log(env, i); } diff --git a/pufferlib/ocean/predprey/predprey.py b/pufferlib/ocean/predprey/predprey.py index 04b411914..696fceb3f 100644 --- a/pufferlib/ocean/predprey/predprey.py +++ b/pufferlib/ocean/predprey/predprey.py @@ -18,7 +18,7 @@ def __init__(self, buf=None, seed=0, ): - obs_shape = ((2*vision+1)*(2*vision+1)*3)+1 + obs_shape = ((2*vision+1)*(2*vision+1)*5)+1 self.single_observation_space = gymnasium.spaces.Box(low=0, high=255, shape=(obs_shape,), dtype=np.float32) self.single_action_space = gymnasium.spaces.Discrete(7) self.render_mode = render_mode From 2dd5c66a106bc499a23e096e7505d19b7c8df92d Mon Sep 17 00:00:00 2001 From: mx2000 Date: Mon, 3 Nov 2025 22:26:58 +0100 Subject: [PATCH 13/18] rm collect reward --- pufferlib/ocean/predprey/predprey.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pufferlib/ocean/predprey/predprey.h b/pufferlib/ocean/predprey/predprey.h index 48f05d1aa..8863d9bca 100644 --- a/pufferlib/ocean/predprey/predprey.h +++ b/pufferlib/ocean/predprey/predprey.h @@ -693,7 +693,7 @@ void step_agent(PredPrey *env, int i) { env->food_count -= 1; env->agent_logs[i].collects += 1; agent->anim = ANIM_INTERACT; - reward_agent(env, i, 0.1f); + // reward_agent(env, i, 0.1f); } } From 4283bf322cebaa236547c3c1c26561540ffc3d2e Mon Sep 17 00:00:00 2001 From: mx2000 Date: Tue, 4 Nov 2025 14:11:32 +0100 Subject: [PATCH 14/18] add randomization on start and teleportation --- pufferlib/ocean/predprey/predprey.h | 35 ++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/pufferlib/ocean/predprey/predprey.h b/pufferlib/ocean/predprey/predprey.h index 8863d9bca..ae31cf4fc 100644 --- a/pufferlib/ocean/predprey/predprey.h +++ b/pufferlib/ocean/predprey/predprey.h @@ -412,7 +412,7 @@ void compute_observations(PredPrey *env) { env->observations[obs_idx++] = (float)env->terrain[grid_idx]; // Second is item env->observations[obs_idx++] = (float)item_idx; - // Thirs is entity id + // Thirds is entity id env->observations[obs_idx++] = (float)entity_id; float hp_norm = 0.0f; float food_norm = 0.0f; @@ -547,8 +547,9 @@ void spawn_agent(PredPrey *env, int agent_id){ // Spawn only in the house area int adr = 0; - for (int i = 0; i < env->biome_idxs.house_count; i++) { - adr = env->biome_idxs.house_idx[i]; + bool allocated = false; + while (!allocated){ + adr = env->biome_idxs.house_idx[rand() % env->biome_idxs.house_count]; if (is_obstacle(env, adr)){ continue; } @@ -556,7 +557,7 @@ void spawn_agent(PredPrey *env, int agent_id){ int c = adr % env->width; agent->r = r; agent->c = c; - break; + allocated = true; } // bool allocated = false; @@ -574,6 +575,29 @@ void spawn_agent(PredPrey *env, int agent_id){ env->pids[adr] = agent->id; env->agent_logs[agent_id] = (Log){0}; } + +void teleport_rnd(PredPrey *env, int agent_id){ + // Teleport an agent to a random free tile on the map + Agent *agent = &env->agents[agent_id]; + int old_idx = flat_idx(env, agent->r, agent->c); + + int adr = 0; + bool allocated = false; + while (!allocated){ + adr = rand() % (env->width * env->height); + if (is_obstacle(env, adr)){ + continue; + } + int r = adr / env->width; + int c = adr % env->width; + agent->r = r; + agent->c = c; + allocated = true; + } + assert(env->pids[adr] == -1); + env->pids[old_idx] = -1; + env->pids[adr] = agent->id; +} void c_reset(PredPrey *env) { env->tick = 0; @@ -693,7 +717,7 @@ void step_agent(PredPrey *env, int i) { env->food_count -= 1; env->agent_logs[i].collects += 1; agent->anim = ANIM_INTERACT; - // reward_agent(env, i, 0.1f); + // reward_agent(env, i, 0.05f); } } @@ -723,6 +747,7 @@ void c_step(PredPrey *env) { remove_hp(env, i, HP_LOSS_PER_STEP); if ((env->tick - env->agents[i].start_tick) % MAX_TIMESTEPS == 0 && env->agents[i].hp > 0) { add_agent_log(env, i); + teleport_rnd(env, i); } } From 0a8e134f11bfb24f42d670ced3bdc1ffab02ea4a Mon Sep 17 00:00:00 2001 From: mx2000 Date: Fri, 7 Nov 2025 06:09:54 +0100 Subject: [PATCH 15/18] add reward parameters for sweep --- pufferlib/config/ocean/predprey.ini | 110 ++++++++++++++++++++++----- pufferlib/ocean/predprey/binding.c | 8 +- pufferlib/ocean/predprey/predprey.c | 9 ++- pufferlib/ocean/predprey/predprey.h | 91 ++++++++++++---------- pufferlib/ocean/predprey/predprey.py | 17 ++++- 5 files changed, 172 insertions(+), 63 deletions(-) diff --git a/pufferlib/config/ocean/predprey.ini b/pufferlib/config/ocean/predprey.ini index ea15d60c6..d008eec6d 100644 --- a/pufferlib/config/ocean/predprey.ini +++ b/pufferlib/config/ocean/predprey.ini @@ -5,33 +5,107 @@ rnn_name = Recurrent [vec] -num_envs = 4 +num_envs = 8 [env] num_envs = 64 vision = 3 num_agents = 4 report_interval = 1 +reward_death_scale = 1.0 +reward_eat = 0 +reward_collect = 0 +timestep_reward = 0 +reward_steal = 0 +hp_reward_scale = 0 +held_food_reward_scale = 0 food_base_spawn_rate = 1e-1 -reward_food = 0 [train] total_timesteps = 100_000_000 checkpoint_interval = 100 -adam_beta1 = 0.9 -adam_beta2 = 0.999 -adam_eps = 1e-8 -clip_coef = 0.2 -ent_coef = 0.01 -gae_lambda = 0.95 -gamma = 0.98 -learning_rate = 0.01 -max_grad_norm = 1.5 +adam_beta1 = 0.9925640021442416 +adam_beta2 = 0.9 +adam_eps = 6.225983651908837e-10 +bptt_horizon = 32 +clip_coef = 1 +ent_coef = 0.000999567018772538 +gae_lambda = 0.9948939854010467 +gamma = 0.9997469057538332 +learning_rate = 0.008574057351505564 +max_grad_norm = 1.8944338753964156 max_minibatch_size = 32768 -minibatch_size = 32768 -prio_alpha = 0.85 -prio_beta0 = 0.85 -vf_clip_coef = 0.2 -vf_coef = 2 -vtrace_c_clip = 1 -vtrace_rho_clip = 1 \ No newline at end of file +minibatch_size = 65536 +prio_alpha = 0.9328200510590207 +prio_beta0 = 0.39879635697457694 +vf_clip_coef = 0.9894773751752602 +vf_coef = 0.6935921910790133 +vtrace_c_clip = 5 +vtrace_rho_clip = 4.6674443397379175 + + +[sweep] +method = Protein +metric = score +goal = maximize +downsample = 5 +use_gpu = True +prune_pareto = True + +[sweep.env.reward_death_scale] +distribution = uniform +min = 0.0 +max = 1.0 +mean = 1.0 +scale = auto + +[sweep.env.reward_eat] +distribution = uniform +min = -1.0 +max = 1.0 +mean = 0.0 +scale = auto + +[sweep.env.reward_collect] +distribution = uniform +min = -1.0 +max = 1.0 +mean = 0.0 +scale = auto + +[sweep.env.timestep_reward] +distribution = uniform +min = -1.0 +max = 1.0 +mean = 0.0 +scale = auto + + +[sweep.env.reward_steal] +distribution = uniform +min = -1.0 +max = 1.0 +mean = 0.0 +scale = auto + + +[sweep.env.hp_reward_scale] +distribution = uniform +min = 0.0 +max = 1.0 +mean = 0.0 +scale = auto + +[sweep.env.held_food_reward_scale] +distribution = uniform +min = 0.0 +max = 1.0 +mean = 0.0 +scale = auto + +[sweep.train.total_timesteps] +distribution = log_normal +min = 3e7 +max = 1e10 +mean = 2e8 +scale = time \ No newline at end of file diff --git a/pufferlib/ocean/predprey/binding.c b/pufferlib/ocean/predprey/binding.c index 32ec4e650..179c1d42c 100644 --- a/pufferlib/ocean/predprey/binding.c +++ b/pufferlib/ocean/predprey/binding.c @@ -8,7 +8,13 @@ static int my_init(Env* env, PyObject* args, PyObject* kwargs) { env->height = unpack(kwargs, "height"); env->num_agents = unpack(kwargs, "num_agents"); env->vision = unpack(kwargs, "vision"); - env->reward_food = unpack(kwargs, "reward_food"); + env->reward_death_scale = unpack(kwargs, "reward_death_scale"); + env->reward_eat = unpack(kwargs, "reward_eat"); + env->reward_collect = unpack(kwargs, "reward_collect"); + env->timestep_reward = unpack(kwargs, "timestep_reward"); + env->reward_steal = unpack(kwargs, "reward_steal"); + env->hp_reward_scale = unpack(kwargs, "hp_reward_scale"); + env->held_food_reward_scale = unpack(kwargs, "held_food_reward_scale"); env->food_base_spawn_rate = unpack(kwargs, "food_base_spawn_rate"); init_cenv(env); return 0; diff --git a/pufferlib/ocean/predprey/predprey.c b/pufferlib/ocean/predprey/predprey.c index 545d04a57..d393905eb 100644 --- a/pufferlib/ocean/predprey/predprey.c +++ b/pufferlib/ocean/predprey/predprey.c @@ -5,12 +5,19 @@ #include "predprey.h" int main() { + srand(43); PredPrey env = { .num_agents = 4, .width = 32, .height = 32, .vision = 3, - .reward_food = 0.0f, + .reward_death_scale = 1.0f, + .reward_eat = 0.0f, + .reward_collect = 0.0f, + .timestep_reward = 0.0f, + .reward_steal = 0.0f, + .hp_reward_scale = 0.0f, + .held_food_reward_scale = 0.0f, .food_base_spawn_rate = 1e-1, }; allocate_cenv(&env); diff --git a/pufferlib/ocean/predprey/predprey.h b/pufferlib/ocean/predprey/predprey.h index ae31cf4fc..1955e5e58 100644 --- a/pufferlib/ocean/predprey/predprey.h +++ b/pufferlib/ocean/predprey/predprey.h @@ -11,7 +11,7 @@ #include "terrain.h" -#define MAX_TIMESTEPS 1000 // If no agent died by then, we reset +#define MAX_TIMESTEPS 2000 // If no agent died by then, we reset // Tiles @@ -51,6 +51,7 @@ #define HP_REWARD_FOOD 20 #define HP_LOSS_PER_STEP 1 #define MAX_HP 100 +#define START_HP 80 #define DOWN 0 #define UP 1 @@ -135,7 +136,13 @@ struct PredPrey { int tick; int last_agent_dead_tick; - float reward_food; + float reward_death_scale; + float reward_eat; + float reward_collect; + float timestep_reward; + float reward_steal; + float hp_reward_scale; + float held_food_reward_scale; float *observations; int *actions; @@ -188,7 +195,7 @@ void init_biome_idx(PredPrey *env) { void add_log(PredPrey *env, Log *log) { //TODO fix perf calculation - env->log.perf = fmaxf(0, log->score/MAX_TIMESTEPS); + env->log.perf += fmaxf(0, log->score/MAX_TIMESTEPS); env->log.steals += log->steals; env->log.episode_return += log->episode_return; env->log.score += log->score; @@ -204,12 +211,12 @@ void add_agent_log(PredPrey *env, int agent_id) { env->agent_logs[agent_id].collects /= time_alive; add_log(env, &env->agent_logs[agent_id]); - //I don't fully reset because the agent might not be dead yet - //So I still need to keep track of collect & steal counts - //episode_returns will accumulate over life - //score will be overwritten next time - env->agent_logs[agent_id].steals *= time_alive; - env->agent_logs[agent_id].collects *= time_alive; + // //I don't fully reset because the agent might not be dead yet + // //So I still need to keep track of collect & steal counts + // //episode_returns will accumulate over life + // //score will be overwritten next time + // env->agent_logs[agent_id].steals *= time_alive; + // env->agent_logs[agent_id].collects *= time_alive; } void init_cenv(PredPrey *env) { @@ -445,12 +452,17 @@ void remove_agent(PredPrey *env, int agent_id) { void add_hp(PredPrey *env, int agent_id, float hp) { Agent *agent = &env->agents[agent_id]; + if (agent->hp == 0) { + return; + } agent->hp += hp; if (agent->hp > MAX_HP) { agent->hp = MAX_HP; } else if (agent->hp <= 0) { agent->hp = 0; - reward_agent(env, agent_id, REWARD_DEATH); + int time_alive = env->tick - agent->start_tick; + float reward = (((float)time_alive-START_HP) / (float)MAX_TIMESTEPS) * env->reward_death_scale; + reward_agent(env, agent_id, reward); env->terminals[agent->id] = 1; add_agent_log(env, agent_id); remove_agent(env, agent_id); @@ -541,7 +553,7 @@ void make_grid_from_scratch(PredPrey *env){ void spawn_agent(PredPrey *env, int agent_id){ Agent *agent = &env->agents[agent_id]; agent->id = agent_id; - agent->hp = 100; + agent->hp = START_HP; agent->start_tick = env->tick; agent->held_food = 0; @@ -559,18 +571,6 @@ void spawn_agent(PredPrey *env, int agent_id){ agent->c = c; allocated = true; } - - // bool allocated = false; - // while (!allocated) { - // adr = rand() % (env->height * env->width); - // if (!is_obstacle(env, adr)) { - // int r = adr / env->width; - // int c = adr % env->width; - // agent->r = r; - // agent->c = c; - // allocated = true; - // } - // } assert(env->pids[adr] == -1); env->pids[adr] = agent->id; env->agent_logs[agent_id] = (Log){0}; @@ -607,8 +607,12 @@ void c_reset(PredPrey *env) { env->log = (Log){0}; memset(env->items, EMPTY, env->width * env->height * sizeof(unsigned char)); - // Carrefull here but -1 works with memset - memset(env->pids, -1, env->width * env->height * sizeof(short)); + for (int r = 0; r < env->height; r++){ + for (int c = 0; c < env->width; c++){ + int grid_idx = flat_idx(env, r, c); + env->pids[grid_idx] = -1; + } + } for (int i = 0; i < env->num_agents; i++) { spawn_agent(env, i); @@ -628,6 +632,11 @@ void step_agent(PredPrey *env, int i) { Agent *agent = &env->agents[i]; + reward_agent(env, i, env->timestep_reward); + float reward_hp = (agent->hp / (float)MAX_HP) * env->hp_reward_scale; + reward_agent(env, i, reward_hp); + float reward_food = (agent->held_food / (float)MAX_INVENTORY_ITEM) * env->held_food_reward_scale; + int action = env->actions[i]; agent->anim = ANIM_IDLE; @@ -704,6 +713,7 @@ void step_agent(PredPrey *env, int i) { other_agent->held_food = 0; env->agent_logs[i].steals += 1; agent->anim = ANIM_INTERACT; + reward_agent(env, i, env->reward_steal); } } @@ -717,7 +727,7 @@ void step_agent(PredPrey *env, int i) { env->food_count -= 1; env->agent_logs[i].collects += 1; agent->anim = ANIM_INTERACT; - // reward_agent(env, i, 0.05f); + reward_agent(env, i, env->reward_collect); } } @@ -727,7 +737,7 @@ void step_agent(PredPrey *env, int i) { } agent->held_food -= 1; add_hp(env, i, HP_REWARD_FOOD); - reward_agent(env, i, env->reward_food); + reward_agent(env, i, env->reward_eat); agent->anim = ANIM_EAT; } return; @@ -737,26 +747,27 @@ void c_step(PredPrey *env) { env->tick++; memset(env->rewards, 0, env->num_agents * sizeof(float)); + memset(env->terminals, 0, env->num_agents * sizeof(unsigned char)); for (int i = 0; i < env->num_agents; i++) { - if (env->agents[i].hp <= 0) { - spawn_agent(env, i); - continue; - } step_agent(env, i); remove_hp(env, i, HP_LOSS_PER_STEP); - if ((env->tick - env->agents[i].start_tick) % MAX_TIMESTEPS == 0 && env->agents[i].hp > 0) { + + // If agent survived long enough, reward and reset agent. + if ((env->tick - env->agents[i].start_tick) >= MAX_TIMESTEPS && env->agents[i].hp > 0) { + env->terminals[i] = 1; + reward_agent(env, i, env->reward_death_scale); add_agent_log(env, i); - teleport_rnd(env, i); + spawn_agent(env, i); + continue; } - } - // if (env->tick - env->last_agent_dead_tick >= MAX_TIMESTEPS) { - // for (int i = 0; i < env->num_agents; i++) { - // add_agent_log(env, i); - // } - // env->last_agent_dead_tick = env->tick; - // } + // Immediate respawn if died + if (env->agents[i].hp <= 0) { + spawn_agent(env, i); + continue; + } + } spawn_items(env); compute_observations(env); diff --git a/pufferlib/ocean/predprey/predprey.py b/pufferlib/ocean/predprey/predprey.py index 696fceb3f..691575d16 100644 --- a/pufferlib/ocean/predprey/predprey.py +++ b/pufferlib/ocean/predprey/predprey.py @@ -12,8 +12,13 @@ def __init__(self, num_agents=8, vision=3, food_base_spawn_rate=1e-3, - reward_food=0.0, - report_interval=1, + reward_death_scale = 1.0, + reward_eat = 0, + reward_collect = 0, + timestep_reward = 0, + reward_steal = 0, + hp_reward_scale = 0, + held_food_reward_scale = 0, report_interval=1, render_mode=None, buf=None, seed=0, @@ -42,7 +47,13 @@ def __init__(self, height=height, num_agents=num_agents, vision=vision, - reward_food=reward_food, + reward_death_scale = reward_death_scale, + reward_eat = reward_eat, + reward_collect = reward_collect, + timestep_reward = timestep_reward, + reward_steal = reward_steal, + hp_reward_scale = hp_reward_scale, + held_food_reward_scale = held_food_reward_scale, food_base_spawn_rate=food_base_spawn_rate, ) c_envs.append(env_id) From 0fb60677f20099cd61280c460a5a1aad108bdda9 Mon Sep 17 00:00:00 2001 From: mx2000 Date: Sun, 9 Nov 2025 11:42:17 +0100 Subject: [PATCH 16/18] use best sweeps in conf --- pufferlib/config/ocean/predprey.ini | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/pufferlib/config/ocean/predprey.ini b/pufferlib/config/ocean/predprey.ini index d008eec6d..0f6b505f6 100644 --- a/pufferlib/config/ocean/predprey.ini +++ b/pufferlib/config/ocean/predprey.ini @@ -12,13 +12,13 @@ num_envs = 64 vision = 3 num_agents = 4 report_interval = 1 -reward_death_scale = 1.0 -reward_eat = 0 -reward_collect = 0 -timestep_reward = 0 -reward_steal = 0 -hp_reward_scale = 0 -held_food_reward_scale = 0 +reward_death_scale = 0.14320154190448353 +reward_eat = 0.6301939255961027 +reward_collect = 1 +timestep_reward = -0.001012632066429986 +reward_steal = -0.4586085627124764 +hp_reward_scale = 0.07674633247055918 +held_food_reward_scale = 0.2643837513970884 food_base_spawn_rate = 1e-1 [train] @@ -27,21 +27,21 @@ checkpoint_interval = 100 adam_beta1 = 0.9925640021442416 adam_beta2 = 0.9 adam_eps = 6.225983651908837e-10 -bptt_horizon = 32 +bptt_horizon = 64 clip_coef = 1 ent_coef = 0.000999567018772538 gae_lambda = 0.9948939854010467 gamma = 0.9997469057538332 -learning_rate = 0.008574057351505564 +learning_rate = 0.002574057351505564 max_grad_norm = 1.8944338753964156 max_minibatch_size = 32768 minibatch_size = 65536 prio_alpha = 0.9328200510590207 -prio_beta0 = 0.39879635697457694 -vf_clip_coef = 0.9894773751752602 +prio_beta0 = 0.9225942853355249 +vf_clip_coef = 0.1 vf_coef = 0.6935921910790133 -vtrace_c_clip = 5 -vtrace_rho_clip = 4.6674443397379175 +vtrace_c_clip = 2.819851610841173 +vtrace_rho_clip = 5 [sweep] From d4efa13382fc0ee04deabbef89b5ef1be289acbe Mon Sep 17 00:00:00 2001 From: mx2000 Date: Fri, 21 Nov 2025 09:27:53 +0100 Subject: [PATCH 17/18] upgrade predprey to new version --- pufferlib/ocean/predprey/binding.c | 4 +- pufferlib/ocean/predprey/predprey.c | 70 ++- pufferlib/ocean/predprey/predprey.h | 866 +++++++++++++++++++------- pufferlib/ocean/predprey/predprey.py | 13 +- pufferlib/ocean/predprey/terrain.h | 64 +- pufferlib/resources/harvest/items.png | Bin 0 -> 8372 bytes pufferlib/resources/harvest/tiles.png | Bin 0 -> 1261 bytes 7 files changed, 733 insertions(+), 284 deletions(-) create mode 100644 pufferlib/resources/harvest/items.png create mode 100644 pufferlib/resources/harvest/tiles.png diff --git a/pufferlib/ocean/predprey/binding.c b/pufferlib/ocean/predprey/binding.c index 179c1d42c..e577f7adc 100644 --- a/pufferlib/ocean/predprey/binding.c +++ b/pufferlib/ocean/predprey/binding.c @@ -12,10 +12,10 @@ static int my_init(Env* env, PyObject* args, PyObject* kwargs) { env->reward_eat = unpack(kwargs, "reward_eat"); env->reward_collect = unpack(kwargs, "reward_collect"); env->timestep_reward = unpack(kwargs, "timestep_reward"); - env->reward_steal = unpack(kwargs, "reward_steal"); env->hp_reward_scale = unpack(kwargs, "hp_reward_scale"); env->held_food_reward_scale = unpack(kwargs, "held_food_reward_scale"); - env->food_base_spawn_rate = unpack(kwargs, "food_base_spawn_rate"); + env->reward_fireplace_lit = unpack(kwargs, "reward_fireplace_lit"); + env->reward_store_chest = unpack(kwargs, "reward_store_chest"); init_cenv(env); return 0; } diff --git a/pufferlib/ocean/predprey/predprey.c b/pufferlib/ocean/predprey/predprey.c index d393905eb..9b6428210 100644 --- a/pufferlib/ocean/predprey/predprey.c +++ b/pufferlib/ocean/predprey/predprey.c @@ -15,10 +15,8 @@ int main() { .reward_eat = 0.0f, .reward_collect = 0.0f, .timestep_reward = 0.0f, - .reward_steal = 0.0f, .hp_reward_scale = 0.0f, .held_food_reward_scale = 0.0f, - .food_base_spawn_rate = 1e-1, }; allocate_cenv(&env); c_reset(&env); @@ -63,10 +61,78 @@ int main() { } free_CEnv(&env); + close_renderer(env.client); return 0; } +///////////////////// +// Reset stress test +///////////////////// +// int main() { +// srand(43); +// PredPrey env = { +// .num_agents = 4, +// .width = 32, +// .height = 32, +// .vision = 3, +// .reward_death_scale = 1.0f, +// .reward_eat = 0.0f, +// .reward_collect = 0.0f, +// .timestep_reward = 0.0f, +// .reward_steal = 0.0f, +// .hp_reward_scale = 0.0f, +// .held_food_reward_scale = 0.0f, +// .food_base_spawn_rate = 1e-1, +// }; +// for (int i = 0; i < 1000; i++) { +// allocate_cenv(&env); +// c_reset(&env); +// c_render(&env); + +// // Weights* weights = load_weights("resources/cpr/cpr_weights.bin", 139270); +// // int logit_sizes[] = {5}; +// // LinearLSTM* net = make_linearlstm(weights, env.num_agents, 49, logit_sizes, 1); +// for (int i = 0; i < 10; i++) { + +// for (int i = 0; i < env.num_agents; i++) { +// env.actions[i] = rand() % 7; +// } + +// // User can take control of the first puffer +// if (IsKeyDown(KEY_LEFT_SHIFT)) { +// sleep(1); +// env.actions[0] = NO_MOVE; +// if (IsKeyDown(KEY_UP) || IsKeyDown(KEY_W)) +// env.actions[0] = UP; +// if (IsKeyDown(KEY_DOWN) || IsKeyDown(KEY_S)) +// env.actions[0] = DOWN; +// if (IsKeyDown(KEY_LEFT) || IsKeyDown(KEY_A)) +// env.actions[0] = LEFT; +// if (IsKeyDown(KEY_RIGHT) || IsKeyDown(KEY_D)) +// env.actions[0] = RIGHT; +// if (IsKeyDown(KEY_C)) +// env.actions[0] = INTERACT; +// if (IsKeyDown(KEY_E)) +// env.actions[0] = EAT; + +// printf("Getting user input %d\n", env.actions[0]); +// } else { +// // for (int i = 0; i < env.num_agents*49; i++) { +// // net->obs[i] = env.observations[i]; +// // } +// // forward_linearlstm(net, net->obs, env.actions); +// } + +// c_step(&env); +// c_render(&env); + +// } +// close_renderer(env.client); +// free_CEnv(&env); +// } +// return 0; +// } //////////////// // For profile diff --git a/pufferlib/ocean/predprey/predprey.h b/pufferlib/ocean/predprey/predprey.h index 1955e5e58..5ac86cc9a 100644 --- a/pufferlib/ocean/predprey/predprey.h +++ b/pufferlib/ocean/predprey/predprey.h @@ -11,20 +11,33 @@ #include "terrain.h" -#define MAX_TIMESTEPS 2000 // If no agent died by then, we reset +// Time +#define TICK_PER_HOUR 4 //20 +#define HOURS_PER_DAY 4 //24 +#define DAY_PER_MONTH 3 //5 +#define MONTHS_PER_YEAR 4 //4 +#define TICK_PER_DAY (TICK_PER_HOUR * HOURS_PER_DAY) +#define TICK_PER_MONTH (TICK_PER_DAY * DAY_PER_MONTH) +#define TICK_PER_YEAR (TICK_PER_MONTH * MONTHS_PER_YEAR) + +#define MAX_TIMESTEPS (TICK_PER_YEAR*10) //2000 // Tiles -#define TILE_DIRT 0 -#define TILE_WATER 4 -#define TILE_GRASS 8 -#define TILE_HOUSE 3 +#define TILE_SOIL 0 +#define TILE_FLOOR_WOOD 1 +#define TILE_WATER 2 +#define TILE_GRASS 3 +// #define TILE_WATER 4 +// #define TILE_GRASS 8 // Items #define EMPTY 0 -#define ITEM_FOOD 10 -#define ITEM_WOOD 13 -#define ITEM_BED 8 +#define ITEM_WOOD 1 +#define ITEM_FOOD 2 +#define ITEM_CHEST 3 +#define ITEM_FIREPLACE_LIT 4 +#define ITEM_FIREPLACE 5 // Entities #define ENTITY_AGENT 0 @@ -48,11 +61,17 @@ #define LOG_SCORE_REWARD_DEATH -1 #define MAX_INVENTORY_ITEM 100 +#define MAX_CHEST_CAPACITY 1000 +#define MAX_COLDNESS 100 +#define MAX_FIRE_TIME 10 #define HP_REWARD_FOOD 20 -#define HP_LOSS_PER_STEP 1 +#define HP_LOSS_PER_HOUR 2 +#define COLDNESS_LOSS_PER_HOUR 2 +#define HP_LOSS_COLD 10 #define MAX_HP 100 #define START_HP 80 +// Actions #define DOWN 0 #define UP 1 #define RIGHT 2 @@ -61,8 +80,13 @@ #define INTERACT 5 #define EAT 6 -#define SPRITE_SIZE 128 -#define TILE_SIZE 64 +// Spawn rates +#define FOOD_SPAWN_RATE 0.1f +#define WOOD_SPAWN_RATE 0.1f + +#define SPRITE_SIZE_ENTITY 128 +#define TILE_SIZE_ENV 64 +#define SPRITE_SIZE 64 #define HEALTH_BAR_WIDTH 48 #define HEALTH_BAR_HEIGHT 6 @@ -83,10 +107,12 @@ struct Agent { int c; int id; int direction; - int held_food; + int food_amt; + int wood_amt; float hp; int start_tick; unsigned char anim; + unsigned char coldness; }; // typedef struct FoodList FoodList; @@ -140,9 +166,10 @@ struct PredPrey { float reward_eat; float reward_collect; float timestep_reward; - float reward_steal; float hp_reward_scale; float held_food_reward_scale; + float reward_fireplace_lit; + float reward_store_chest; float *observations; int *actions; @@ -157,15 +184,20 @@ struct PredPrey { Log* agent_logs; // FoodList *foods; - float food_base_spawn_rate; float max_food; int food_count; + float max_wood; + int wood_count; unsigned char *terrain; // Array of terrain types, size width*height unsigned char *items; // Array of item types, size width*height short *pids; // Array of entity idx, size width*height Biome_idx biome_idxs; + + int chest_food_amt; + bool is_fireplace_lit; + int fire_time_remaining; }; void init_biome_idx(PredPrey *env) { @@ -184,9 +216,9 @@ void init_biome_idx(PredPrey *env) { unsigned char tile = env->terrain[grid_idx]; if (tile == TILE_GRASS) { env->biome_idxs.grass_idx[env->biome_idxs.grass_count++] = grid_idx; - } else if (tile == TILE_DIRT) { + } else if (tile == TILE_SOIL) { env->biome_idxs.dirt_idx[env->biome_idxs.dirt_count++] = grid_idx; - } else if (tile == TILE_HOUSE) { + } else if (tile == TILE_FLOOR_WOOD) { env->biome_idxs.house_idx[env->biome_idxs.house_count++] = grid_idx; } } @@ -219,19 +251,94 @@ void add_agent_log(PredPrey *env, int agent_id) { // env->agent_logs[agent_id].collects *= time_alive; } +void save_terrain_to_file(PredPrey *env, const char *filename) { + char filepath[1024]; + char dir[512]; + strncpy(dir, __FILE__, sizeof(dir) - 1); + char *last_slash = strrchr(dir, '/'); + if (last_slash) *last_slash = '\0'; + snprintf(filepath, sizeof(filepath), "%s/%s", dir, filename); + FILE *file = fopen(filepath, "w"); + if (!file) { + perror("Failed to open file"); + return; + } + fprintf(file, "#ifndef H\n#define H\n\n"); + fprintf(file, "#define HEIGHT %d\n", env->height); + fprintf(file, "#define WIDTH %d\n\n", env->width); + fprintf(file, "static const unsigned char terrain[HEIGHT][WIDTH] = {\n"); + + for (int r = 0; r < env->height; r++) { + fprintf(file, " {"); + for (int c = 0; c < env->width; c++) { + unsigned char val = env->terrain[r * env->width + c]; + fprintf(file, "0x%02X%s", val, (c == env->width - 1) ? "" : ", "); + } + fprintf(file, "}%s\n", (r == env->height - 1) ? "" : ","); + } + fprintf(file, "};\n\n#endif // H\n"); + fclose(file); +} + +void make_grid_from_scratch(PredPrey *env){ + // top walling + for (int r = 0; r < env->vision; r++) { + memset(env->terrain + (r * env->width), TILE_WATER, + env->width * sizeof(env->terrain[0])); + } + // left side walling + for (int r = 0; r < env->height; r++) { + memset(env->terrain + (r * env->width), TILE_WATER, + env->vision * sizeof(env->terrain[0])); + } + // bottom walling + for (int r = env->height - env->vision; r < env->height; r++) { + memset(env->terrain + (r * env->width), TILE_WATER, + env->width * sizeof(env->terrain[0])); + } + + // right side walling + for (int r = 0; r < env->height; r++) { + memset(env->terrain + (r * env->width) + (env->width - env->vision), TILE_WATER, + env->vision * sizeof(env->terrain[0])); + } + + // Calculate dimensions + int inner_width = env->width - (2 * env->vision); + int inner_height = env->height - (2 * env->vision); + int house_size = inner_height / 3; + int field_width = inner_width - house_size; + + // Fill inner terrain + for (int r = env->vision; r < env->height - env->vision; r++) { + int row_offset = r * env->width + env->vision; // row offset in global grid + int row_in_inner = r - env->vision; // row index in inner area reference + + if (row_in_inner >= inner_height - house_size) { + // Bottom rows: HOUSE on left, SOIL on right + memset(env->terrain + row_offset, TILE_FLOOR_WOOD, house_size * sizeof(env->terrain[0])); + memset(env->terrain + row_offset + house_size, TILE_SOIL, field_width * sizeof(env->terrain[0])); + } else if (row_in_inner == inner_height - house_size - 1) { + // One row of Water between house and grass + memset(env->terrain + row_offset, TILE_WATER, inner_width * sizeof(env->terrain[0])); + // With three tiles of GRASS on the left + memset(env->terrain + row_offset, TILE_GRASS, 3 * sizeof(env->terrain[0])); + } else { + // Top rows: all GRASS + memset(env->terrain + row_offset, TILE_GRASS, inner_width * sizeof(env->terrain[0])); + } + } + + save_terrain_to_file(env, "terrain.h"); +} + void init_cenv(PredPrey *env) { env->agents = (Agent *)calloc(env->num_agents, sizeof(Agent)); env->vision_window = 2 * env->vision + 1; - env->obs_size = (env->vision_window * env->vision_window) * MAX_CELL_OBS + 1; + env->obs_size = (env->vision_window * env->vision_window) * MAX_CELL_OBS + 5; // env->foods = allocate_foodlist(env->width * env->height); env->agent_logs = (Log *)calloc(env->num_agents, sizeof(Log)); env->masks = (unsigned char *)calloc(env->num_agents, sizeof(unsigned char)); - // Arbitrarly set max food to a proportion of available tiles - env->max_food = 0.55 * ( - (env->width * env->height) - ( - env->vision*env->width*2 + - env->vision*2*(env->height - 2*env->vision) - ) - env->num_agents); env->terrain = (unsigned char *)calloc(env->width * env->height, sizeof(unsigned char)); env->items = (unsigned char *)calloc(env->width * env->height, sizeof(unsigned char)); env->pids = (short *)calloc(env->width * env->height, sizeof(short)); @@ -239,11 +346,15 @@ void init_cenv(PredPrey *env) { // make_grid_from_scratch(env); memcpy(env->terrain, terrain, env->width * env->height * sizeof(unsigned char)); init_biome_idx(env); + + // Arbitrarly set max food to a proportion of available tiles + env->max_food = 0.9 * env->biome_idxs.dirt_count; + env->max_wood = 0.5 * env->biome_idxs.grass_count; } void allocate_cenv(PredPrey *env) { // Called by C stuff - int obs_size = ((2 * env->vision + 1) * (2 * env->vision + 1)) * MAX_CELL_OBS + 1; + int obs_size = ((2 * env->vision + 1) * (2 * env->vision + 1)) * MAX_CELL_OBS + 5; env->observations = (float *)calloc(env->num_agents * obs_size, sizeof(float)); env->actions = (int *)calloc(env->num_agents, sizeof(unsigned int)); @@ -263,17 +374,18 @@ void free_biome(PredPrey *env) { void c_close(PredPrey *env) { free(env->agents); // free_foodlist(env->foods); - free(env->masks); free(env->agent_logs); free(env->terrain); free(env->items); free(env->pids); free_biome(env); + env->client = NULL; } void free_CEnv(PredPrey *env) { free(env->observations); free(env->actions); + free(env->masks); free(env->rewards); free(env->terminals); free(env->truncations); @@ -281,6 +393,18 @@ void free_CEnv(PredPrey *env) { } int flat_idx(PredPrey *env, int r, int c) { return r * env->width + c; } +int hour_of_day(PredPrey *env) { + int tick_in_day = env->tick % TICK_PER_DAY; + return tick_in_day / TICK_PER_HOUR; +} +int day_of_month(PredPrey *env) { + int tick_in_month = env->tick % TICK_PER_MONTH; + return tick_in_month / TICK_PER_DAY; +} +int month_of_year(PredPrey *env) { + int tick_in_year = env->tick % TICK_PER_YEAR; + return tick_in_year / TICK_PER_MONTH; +} void reward_agent(PredPrey *env, int agent_id, float reward) { // Simple helper function which loggs as well @@ -305,13 +429,53 @@ void init_foods(PredPrey *env) { // Fill dirt area with food for (int i = 0; i < env->biome_idxs.dirt_count; i++) { int grid_idx = env->biome_idxs.dirt_idx[i]; - if (env->items[grid_idx] == EMPTY) { + if (env->items[grid_idx] == EMPTY && + rand() / (double)RAND_MAX < 0.2 && + env->food_count < env->max_food + ) { env->items[grid_idx] = ITEM_FOOD; env->food_count += 1; } } } +void init_woods(PredPrey *env) { + // Fill grass area with wood + for (int i = 0; i < env->biome_idxs.grass_count; i++) { + int grid_idx = env->biome_idxs.grass_idx[i]; + if (env->items[grid_idx] == EMPTY && + rand() / (double)RAND_MAX < 0.3 && + env->wood_count < env->max_wood + ) { + env->items[grid_idx] = ITEM_WOOD; + env->wood_count += 1; + } + } +} + +void init_items(PredPrey *env) { + init_foods(env); + // Randomly place fireplace and chest in house area + bool allocated_fireplace = false; + while (!allocated_fireplace) { + int rand_idx = rand() % env->biome_idxs.house_count; + int grid_idx = env->biome_idxs.house_idx[rand_idx]; + if (env->items[grid_idx] == EMPTY) { + env->items[grid_idx] = ITEM_FIREPLACE; + allocated_fireplace = true; + } + } + bool allocated_chest = false; + while (!allocated_chest) { + int rand_idx = rand() % env->biome_idxs.house_count; + int grid_idx = env->biome_idxs.house_idx[rand_idx]; + if (env->items[grid_idx] == EMPTY) { + env->items[grid_idx] = ITEM_CHEST; + allocated_chest = true; + } + } + init_woods(env); +} // void spawn_foods_organic(PredPrey *env) { // // After each step, check existing foods and spawns new food in the // // neighborhood Iterates over food_list for efficiency instead of the entire @@ -330,7 +494,7 @@ void init_foods(PredPrey *env) { // for (int ri = 0; ri < 3; ri++) { // for (int ci = 0; ci < 3; ci++) { // int neighboor_idx = flat_idx(env, (r + ri), (c + ci)); -// if (env->terrain[neighboor_idx] != TILE_DIRT && env->items[neighboor_idx] != 0) { +// if (env->terrain[neighboor_idx] != TILE_SOIL && env->items[neighboor_idx] != 0) { // continue; // } // switch (env->items[idx]) { @@ -375,11 +539,17 @@ bool spawn_food_random(PredPrey *env){ void regrow_food(PredPrey *env){ // Regrow food in all dirt tiles that do not have food already with some probability + + // Regrow only if we are in the first half of the year + if (month_of_year(env) >= MONTHS_PER_YEAR / 2){ + return; + } + for (int i = 0; i < env->biome_idxs.dirt_count; i++) { int grid_idx = env->biome_idxs.dirt_idx[i]; if ( env->items[grid_idx] == EMPTY && - rand() / (double)RAND_MAX < env->food_base_spawn_rate && + rand() / (double)RAND_MAX < FOOD_SPAWN_RATE && env->food_count < env->max_food ) { env->items[grid_idx] = ITEM_FOOD; @@ -388,9 +558,27 @@ void regrow_food(PredPrey *env){ } } +void regrow_wood(PredPrey *env){ + // Wood regrow only in the second part of the year + if (month_of_year(env) < MONTHS_PER_YEAR / 2){ + return; + } + // Regrow wood in all grass tiles that do not have wood already with some probability + for (int i = 0; i < env->biome_idxs.grass_count; i++) { + int grid_idx = env->biome_idxs.grass_idx[i]; + if (env->items[grid_idx] == EMPTY && + rand() / (double)RAND_MAX < WOOD_SPAWN_RATE && + env->wood_count < env->max_wood + ) { + env->items[grid_idx] = ITEM_WOOD; + env->wood_count += 1; + } + } +} void spawn_items(PredPrey *env) { // Currently items are only spawning every step in their corresponding BIOME regrow_food(env); + regrow_wood(env); // if (rand() / (double)RAND_MAX < env->food_base_spawn_rate) { // spawn_food_random(env); // } @@ -426,7 +614,7 @@ void compute_observations(PredPrey *env) { if (entity_id != -1) { Agent *grid_agent = &env->agents[entity_id]; hp_norm = grid_agent->hp / (float)MAX_HP; - food_norm = grid_agent->held_food / (float)MAX_INVENTORY_ITEM; + food_norm = grid_agent->food_amt / (float)MAX_INVENTORY_ITEM; } env->observations[obs_idx++] = hp_norm; @@ -436,6 +624,10 @@ void compute_observations(PredPrey *env) { } //Agent also get its direction env->observations[obs_idx++] = agent->direction; + env->observations[obs_idx++] = (float)env->is_fireplace_lit; + env->observations[obs_idx++] = (float)env->fire_time_remaining/(float)MAX_FIRE_TIME; + env->observations[obs_idx++] = (float)env->chest_food_amt/(float)MAX_CHEST_CAPACITY; + env->observations[obs_idx++] = (float)agent->coldness/(float)MAX_COLDNESS; } } @@ -474,88 +666,14 @@ void remove_hp(PredPrey *env, int agent_id, float hp) { add_hp(env, agent_id, -hp); } -void save_terrain_to_file(PredPrey *env, const char *filename) { - char filepath[512]; - char dir[512]; - strncpy(dir, __FILE__, sizeof(dir) - 1); - char *last_slash = strrchr(dir, '/'); - if (last_slash) *last_slash = '\0'; - snprintf(filepath, sizeof(filepath), "%s/%s", dir, filename); - FILE *file = fopen(filepath, "w"); - if (!file) { - perror("Failed to open file"); - return; - } - fprintf(file, "#ifndef H\n#define H\n\n"); - fprintf(file, "#define HEIGHT %d\n", env->height); - fprintf(file, "#define WIDTH %d\n\n", env->width); - fprintf(file, "static const unsigned char terrain[HEIGHT][WIDTH] = {\n"); - - for (int r = 0; r < env->height; r++) { - fprintf(file, " {"); - for (int c = 0; c < env->width; c++) { - unsigned char val = env->terrain[r * env->width + c]; - fprintf(file, "0x%02X%s", val, (c == env->width - 1) ? "" : ", "); - } - fprintf(file, "}%s\n", (r == env->height - 1) ? "" : ","); - } - fprintf(file, "};\n\n#endif // H\n"); - fclose(file); -} - -void make_grid_from_scratch(PredPrey *env){ - // top walling - for (int r = 0; r < env->vision; r++) { - memset(env->terrain + (r * env->width), TILE_WATER, - env->width * sizeof(env->terrain[0])); - } - // left side walling - for (int r = 0; r < env->height; r++) { - memset(env->terrain + (r * env->width), TILE_WATER, - env->vision * sizeof(env->terrain[0])); - } - // bottom walling - for (int r = env->height - env->vision; r < env->height; r++) { - memset(env->terrain + (r * env->width), TILE_WATER, - env->width * sizeof(env->terrain[0])); - } - - // right side walling - for (int r = 0; r < env->height; r++) { - memset(env->terrain + (r * env->width) + (env->width - env->vision), TILE_WATER, - env->vision * sizeof(env->terrain[0])); - } - - // Calculate dimensions - int inner_width = env->width - (2 * env->vision); - int inner_height = env->height - (2 * env->vision); - int house_size = inner_height / 3; - int field_width = inner_width - house_size; - - // Fill inner terrain - for (int r = env->vision; r < env->height - env->vision; r++) { - int row_offset = r * env->width + env->vision; // row offset in global grid - int row_in_inner = r - env->vision; // row index in inner area reference - - if (row_in_inner >= inner_height - house_size) { - // Bottom rows: HOUSE on left, DIRT on right - memset(env->terrain + row_offset, TILE_HOUSE, house_size * sizeof(env->terrain[0])); - memset(env->terrain + row_offset + house_size, TILE_DIRT, field_width * sizeof(env->terrain[0])); - } else { - // Top rows: all GRASS - memset(env->terrain + row_offset, TILE_GRASS, inner_width * sizeof(env->terrain[0])); - } - } - - save_terrain_to_file(env, "terrain.h"); -} - void spawn_agent(PredPrey *env, int agent_id){ Agent *agent = &env->agents[agent_id]; agent->id = agent_id; agent->hp = START_HP; + agent->coldness = 0; agent->start_tick = env->tick; - agent->held_food = 0; + agent->food_amt = 0; + agent->wood_amt = 0; // Spawn only in the house area int adr = 0; @@ -619,7 +737,8 @@ void c_reset(PredPrey *env) { } env->food_count = 0; - init_foods(env); + env->wood_count = 0; + init_items(env); memset(env->observations, 0, env->num_agents * env->obs_size * sizeof(float)); memset(env->terminals, 0, env->num_agents * sizeof(unsigned char)); @@ -628,119 +747,210 @@ void c_reset(PredPrey *env) { compute_observations(env); } -void step_agent(PredPrey *env, int i) { - - Agent *agent = &env->agents[i]; +typedef void (*InteractFn)(PredPrey*, int); - reward_agent(env, i, env->timestep_reward); - float reward_hp = (agent->hp / (float)MAX_HP) * env->hp_reward_scale; - reward_agent(env, i, reward_hp); - float reward_food = (agent->held_food / (float)MAX_INVENTORY_ITEM) * env->held_food_reward_scale; - - int action = env->actions[i]; - agent->anim = ANIM_IDLE; - - ///////////////////////////////// - // Movement - //////////////////////////////// - int dr = 0; - int dc = 0; - - switch (action) { - case UP: - dr = -1; - agent->direction = UP; - break; - case DOWN: - dr = 1; - agent->direction = DOWN; - break; - case LEFT: - dc = -1; - agent->direction = LEFT; - break; - case RIGHT: - dc = 1; - agent->direction = RIGHT; - break; - case NO_MOVE: +void interact_nothing(PredPrey* env, int agent_id){ + return; +}; +void interact_food(PredPrey* env, int agent_id){ + Agent* agent = &env->agents[agent_id]; + int curr_grid_idx = flat_idx(env, agent->r, agent->c); + if (agent->food_amt >= MAX_INVENTORY_ITEM) { return; } - // Get next row and column - int next_r = agent->r + dr; - int next_c = agent->c + dc; + // Pick up food + agent->food_amt += 1; + env->items[curr_grid_idx] = EMPTY; + env->food_count -= 1; + env->agent_logs[agent_id].collects += 1; + agent->anim = ANIM_INTERACT; + reward_agent(env, agent_id, env->reward_collect); +}; +void interact_wood(PredPrey* env, int agent_id){ + Agent* agent = &env->agents[agent_id]; int curr_grid_idx = flat_idx(env, agent->r, agent->c); - int next_grid_idx = flat_idx(env, next_r, next_c); - if (is_obstacle(env, next_grid_idx)) { - next_grid_idx = curr_grid_idx; - next_r = agent->r; - next_c = agent->c; - } - // update the grid tiles values - env->pids[curr_grid_idx] = -1; - env->pids[next_grid_idx] = agent->id; - agent->r = next_r; - agent->c = next_c; - - - ///////////////////////////////// - // Interaction / Eating - //////////////////////////////// - if (action == INTERACT) { - int facing_tile_idx = 0; - switch (agent->direction) { - case UP: - facing_tile_idx = flat_idx(env, agent->r - 1, agent->c); - break; - case DOWN: - facing_tile_idx = flat_idx(env, agent->r + 1, agent->c); - break; - case LEFT: - facing_tile_idx = flat_idx(env, agent->r, agent->c - 1); - break; - case RIGHT: - facing_tile_idx = flat_idx(env, agent->r, agent->c + 1); - break; - } - - int facing_agent = env->pids[facing_tile_idx]; - if (facing_agent != -1) { - Agent *other_agent = &env->agents[facing_agent]; - // Steal food from other agent - if (other_agent->held_food > 0) { - agent->held_food = other_agent->held_food; - other_agent->held_food = 0; - env->agent_logs[i].steals += 1; - agent->anim = ANIM_INTERACT; - reward_agent(env, i, env->reward_steal); - } - } + if (agent->wood_amt >= MAX_INVENTORY_ITEM) { + return; + } + // Pick up wood + agent->wood_amt += 1; + env->items[curr_grid_idx] = EMPTY; + env->wood_count -= 1; + env->agent_logs[agent_id].collects += 1; + agent->anim = ANIM_INTERACT; + reward_agent(env, agent_id, env->reward_collect); +}; - if (env->items[curr_grid_idx] == ITEM_FOOD) { - if (agent->held_food >= MAX_INVENTORY_ITEM) { - return; - } - // Pick up food - agent->held_food += 1; - env->items[curr_grid_idx] = EMPTY; - env->food_count -= 1; - env->agent_logs[i].collects += 1; - agent->anim = ANIM_INTERACT; - reward_agent(env, i, env->reward_collect); +void interact_chest(PredPrey* env, int agent_id){ + Agent* agent = &env->agents[agent_id]; + // If agent has food, deposit all in chest + if (agent->food_amt > 0) { + env->chest_food_amt = fmin( + env->chest_food_amt + agent->food_amt, + MAX_CHEST_CAPACITY + ); + agent->food_amt = 0; + reward_agent(env, agent_id, env->reward_store_chest); + } else { + // If agent has no food, withdraw one from chest + if (env->chest_food_amt <= 0) { + return; } + agent->food_amt += 1; + env->chest_food_amt -= 1; } + agent->anim = ANIM_INTERACT; + return; +}; + +int facing_delta_row[4] = { 1, -1, 0, 0 }; +int facing_delta_col[4] = { 0, 0, 1, -1 }; +void interact_agent(PredPrey* env, int agent_id){ + // Remove stealing ability for now + return; + // Agent* agent = &env->agents[agent_id]; + // int dr = facing_delta_row[agent->direction]; + // int dc = facing_delta_col[agent->direction]; + // int facing_tile_idx = flat_idx(env, agent->r + dr, agent->c + dc); - if (action == EAT) { - if (agent->held_food <= 0) { + // int facing_agent = env->pids[facing_tile_idx]; + // if (facing_agent != -1) { + // Agent *other_agent = &env->agents[facing_agent]; + // // Steal food from other agent + // if (other_agent->food_amt > 0) { + // agent->food_amt += 1; + // other_agent->food_amt -= 1; + // env->agent_logs[agent_id].steals += 1; + // agent->anim = ANIM_INTERACT; + // reward_agent(env, agent_id, env->reward_steal); + // } + // } + +}; + +void interact_fireplace(PredPrey* env, int agent_id){ + Agent* agent = &env->agents[agent_id]; + // If agent has wood, light the fireplace + if (agent->wood_amt <= 0) { + return; + } + agent->wood_amt -= 1; + env->is_fireplace_lit = true; + env->fire_time_remaining += MAX_FIRE_TIME; + agent->anim = ANIM_INTERACT; + reward_agent(env, agent_id, env->reward_fireplace_lit); +}; + +InteractFn interaction_fn[] = { + [EMPTY] = interact_nothing, + [ITEM_FOOD] = interact_food, + [ITEM_WOOD] = interact_wood, + [ITEM_CHEST] = interact_chest, + [ITEM_FIREPLACE] = interact_fireplace, +}; + +void handle_eat(PredPrey* env, int agent_id){ + Agent* agent = &env->agents[agent_id]; + if (agent->food_amt <= 0){ + return; + } + agent->food_amt -= 1; + add_hp(env, agent_id, HP_REWARD_FOOD); + agent->anim = ANIM_EAT; +}; + +void update_coldness(PredPrey* env, int agent_id){ + Agent* agent = &env->agents[agent_id]; + int pos_idx = flat_idx(env, agent->r, agent->c); + bool protected = (env->terrain[pos_idx] == TILE_FLOOR_WOOD && env->is_fireplace_lit); + + if (!protected){ + agent->coldness++; + } + + if (agent->coldness >= MAX_COLDNESS){ + remove_hp(env, agent->id, HP_LOSS_COLD); + return; + } + + if (protected){ + agent->coldness = fmax(0, agent->coldness - COLDNESS_LOSS_PER_HOUR); + } +}; + +void move_agent(PredPrey* env, Agent* agent, int nr, int nc){ + int curr_idx = flat_idx(env, agent->r, agent->c); + int new_idx = flat_idx(env, nr, nc); + + env->pids[curr_idx] = -1; + env->pids[new_idx] = agent->id; + + agent->r = nr; + agent->c = nc; +}; + +bool is_valid_move(PredPrey* env, int nr, int nc){ + if (nr < 0 || nr >= env->height || nc < 0 || nc >= env->width){ + return false; + } + int new_idx = flat_idx(env, nr, nc); + if (is_obstacle(env, new_idx)){ + return false; + } + return true; +} + +int delta_row[7] = { 1, -1, 0, 0, 0, 0, 0 }; +int delta_col[7] = { 0, 0, 1, -1, 0, 0, 0 }; +void update_movement(PredPrey* env, int agent_id){ + Agent* agent = &env->agents[agent_id]; + int action = env->actions[agent_id]; + + int dr = delta_row[action]; + int dc = delta_col[action]; + + int nr = agent->r + dr; + int nc = agent->c + dc; + + if (dr == 0 && dc == 0){ + return; + } + + agent->direction = action; + + if (!is_valid_move(env, nr, nc)) return; - } - agent->held_food -= 1; - add_hp(env, i, HP_REWARD_FOOD); - reward_agent(env, i, env->reward_eat); - agent->anim = ANIM_EAT; + + move_agent(env, agent, nr, nc); +} + +void apply_base_rewards(PredPrey* env, int agent_id){ + Agent* agent = &env->agents[agent_id]; + reward_agent(env, agent_id, env->timestep_reward); + float reward_hp = (agent->hp / (float)MAX_HP) * env->hp_reward_scale; + reward_agent(env, agent_id, reward_hp); + float reward_food = (agent->food_amt / (float)MAX_INVENTORY_ITEM) * env->held_food_reward_scale; + reward_agent(env, agent_id, reward_food); +} + +void step_agent(PredPrey *env, int i) { + Agent *a = &env->agents[i]; + a->anim = ANIM_IDLE; + + apply_base_rewards(env, i); + update_movement(env, i); + + if (env->actions[i] == INTERACT){ + int tile_idx = flat_idx(env, a->r, a->c); + interaction_fn[env->items[tile_idx]](env, i); } - return; + + if (env->actions[i] == EAT){ + handle_eat(env, i); + } + + update_coldness(env, i); } void c_step(PredPrey *env) { @@ -749,12 +959,23 @@ void c_step(PredPrey *env) { memset(env->rewards, 0, env->num_agents * sizeof(float)); memset(env->terminals, 0, env->num_agents * sizeof(unsigned char)); + if (env->is_fireplace_lit) { + env->fire_time_remaining -= 1; + if (env->fire_time_remaining <= 0) { + env->is_fireplace_lit = false; + } + } for (int i = 0; i < env->num_agents; i++) { step_agent(env, i); - remove_hp(env, i, HP_LOSS_PER_STEP); + + if (env->tick % TICK_PER_HOUR == 0) { + // Hourly HP decay + remove_hp(env, i, HP_LOSS_PER_HOUR); + } // If agent survived long enough, reward and reset agent. if ((env->tick - env->agents[i].start_tick) >= MAX_TIMESTEPS && env->agents[i].hp > 0) { + remove_agent(env, i); env->terminals[i] = 1; reward_agent(env, i, env->reward_death_scale); add_agent_log(env, i); @@ -772,7 +993,99 @@ void c_step(PredPrey *env) { spawn_items(env); compute_observations(env); } - +////////////////////////////////////////////////////////////////// +// Sprites & Animations +////////////////////////////////////////////////////////////////// +typedef struct SpriteInfo SpriteInfo; +struct SpriteInfo { + int src_x, src_y; // top-left position in sprite sheet + int width, height; // dimensions of the sprite + int offset_x, offset_y; // offset to add to the env position when rendering +}; +SpriteInfo SPRITES_TILES[4] = { + (SpriteInfo){ // TILE_SOIL + .src_x = 0, + .src_y = 0, + .width = SPRITE_SIZE, + .height = SPRITE_SIZE, + .offset_x = 0, + .offset_y = 0, + }, + (SpriteInfo){ // TILE_FLOOR_WOOD + .src_x = 0, + .src_y = SPRITE_SIZE, + .width = SPRITE_SIZE, + .height = SPRITE_SIZE, + .offset_x = 0, + .offset_y = 0, + }, + (SpriteInfo){ // TILE_WATER + .src_x = 0, + .src_y = 2 * SPRITE_SIZE, + .width = SPRITE_SIZE, + .height = SPRITE_SIZE, + .offset_x = 0, + .offset_y = 0, + }, + (SpriteInfo){ // TILE_GRASS + .src_x = 0, + .src_y = 3 * SPRITE_SIZE, + .width = SPRITE_SIZE, + .height = SPRITE_SIZE, + .offset_x = 0, + .offset_y = 0, + }, +}; +SpriteInfo SPRITE_ITEMS[6] = { + (SpriteInfo){ // EMPTY + .src_x = 0, + .src_y = 0, + .width = 0, + .height = 0, + .offset_x = 0, + .offset_y = 0, + }, + (SpriteInfo){ // ITEM_WOOD + .src_x = 0, + .src_y = SPRITE_SIZE, + .width = SPRITE_SIZE, + .height = SPRITE_SIZE, + .offset_x = 0, + .offset_y = 0, + }, + (SpriteInfo){ // ITEM_FOOD + .src_x = 0, + .src_y = 2 * SPRITE_SIZE, + .width = SPRITE_SIZE, + .height = SPRITE_SIZE, + .offset_x = 0, + .offset_y = 0, + }, + (SpriteInfo){ // ITEM_CHEST + .src_x = 0, + .src_y = 3 * SPRITE_SIZE, + .width = SPRITE_SIZE, + .height = SPRITE_SIZE, + .offset_x = 0, + .offset_y = 0, + }, + (SpriteInfo){ // ITEM_FIREPLACE_LIT + .src_x = 0, + .src_y = 4 * SPRITE_SIZE, + .width = 2 * SPRITE_SIZE, + .height = 3 * SPRITE_SIZE, + .offset_x = - (2 * SPRITE_SIZE) / 2 + 32, + .offset_y = - 2 * SPRITE_SIZE, + }, + (SpriteInfo){ // ITEM_FIREPLACE + .src_x = 0, + .src_y = 7 * SPRITE_SIZE, + .width = 2 * SPRITE_SIZE, + .height = 3 * SPRITE_SIZE, + .offset_x = - (2 * SPRITE_SIZE) / 2 + 32, + .offset_y = - 2 * SPRITE_SIZE, + }, +}; // Simplified animations to just be poses (1 frame only) typedef struct Animation Animation; struct Animation { @@ -812,7 +1125,7 @@ Renderer *init_renderer(int width, int height) { renderer->width = width; renderer->height = height; - InitWindow(width * TILE_SIZE, height * TILE_SIZE, "Predator Prey"); + InitWindow(width * TILE_SIZE_ENV, height * TILE_SIZE_ENV, "Predator Prey"); SetTargetFPS(10); for (int i = 0; i < 10; i++) { @@ -822,29 +1135,65 @@ Renderer *init_renderer(int width, int height) { renderer->agents[3][i] = LoadTexture(TextFormat("resources/nmmo3/earth_%d.png", i)); renderer->agents[4][i] = LoadTexture(TextFormat("resources/nmmo3/air_%d.png", i)); } - renderer->tiles = LoadTexture("resources/nmmo3/merged_sheet.png"); - renderer->items = LoadTexture("resources/nmmo3/items_condensed.png"); + renderer->tiles = LoadTexture("resources/harvest/tiles.png"); + renderer->items = LoadTexture("resources/harvest/items.png"); renderer->font = LoadFont("resources/nmmo3/ManaSeedBody.ttf"); return renderer; } void close_renderer(Renderer *renderer) { + UnloadTexture(renderer->tiles); + UnloadTexture(renderer->items); + for (int i = 0; i < 5; i++) { + for (int j = 0; j <10; j++) { + UnloadTexture(renderer->agents[i][j]); + } + } + UnloadFont(renderer->font); CloseWindow(); free(renderer); } -void draw_health_bar(int bar_x, int bar_y, int health, int max_health) { +void draw_ui_bar(int bar_x, int bar_y, int health, int max_health, Color bar_color) { DrawRectangle(bar_x, bar_y, HEALTH_BAR_WIDTH, HEALTH_BAR_HEIGHT, RED); DrawRectangle(bar_x, bar_y, HEALTH_BAR_WIDTH * health / max_health, - HEALTH_BAR_HEIGHT, GREEN); + HEALTH_BAR_HEIGHT, bar_color); DrawRectangleLines(bar_x, bar_y, HEALTH_BAR_WIDTH, HEALTH_BAR_HEIGHT, BLACK); } +void draw_time_info(PredPrey *env, Renderer *renderer) { + int hour = hour_of_day(env); + int day = day_of_month(env); + int month = month_of_year(env); + + char time_text[64]; + snprintf(time_text, sizeof(time_text), "Time: %02d:00 Day: %02d Month: %02d", hour, day, month); + + DrawTextEx(renderer->font, time_text, (Vector2){10, 10}, 50, 1, BLACK); +} + +void draw_chest_info(PredPrey *env, Renderer *renderer) { + char chest_text[64]; + snprintf(chest_text, sizeof(chest_text), "Chest Food: %d / %d", env->chest_food_amt, MAX_CHEST_CAPACITY); + + DrawTextEx(renderer->font, chest_text, (Vector2){10, 70}, 30, 1, BLACK); +} +void draw_fireplace_info(PredPrey *env, Renderer *renderer) { + char fireplace_text[64]; + if (env->is_fireplace_lit) { + snprintf(fireplace_text, sizeof(fireplace_text), "Fireplace is lit! Time remaining: %d", env->fire_time_remaining); + } else { + snprintf(fireplace_text, sizeof(fireplace_text), "Fireplace is not lit."); + } + + DrawTextEx(renderer->font, fireplace_text, (Vector2){10, 100}, 30, 1, BLACK); +} + void c_render(PredPrey *env) { if (env->client == NULL) { env->client = init_renderer(env->width, env->height); @@ -858,66 +1207,96 @@ void c_render(PredPrey *env) { BeginDrawing(); ClearBackground(BLANK); + // Draw terrain for (int r = 0; r < env->height; r++) { for (int c = 0; c < env->width; c++) { int adr = flat_idx(env, r, c); int terrain_type = env->terrain[adr]; - int item_type = env->items[adr]; - int entity_id = env->pids[adr]; - + SpriteInfo terrain_info = SPRITES_TILES[terrain_type]; Vector2 pos = { - .x = c * TILE_SIZE, - .y = r * TILE_SIZE, + .x = c * TILE_SIZE_ENV + terrain_info.offset_x, + .y = r * TILE_SIZE_ENV + terrain_info.offset_y, }; - // Drawing terrain Rectangle source_rect = { - .x = 0, - .y = terrain_type * TILE_SIZE, - .width = TILE_SIZE, - .height = TILE_SIZE + .x = terrain_info.src_x, + .y = terrain_info.src_y, + .width = terrain_info.width, + .height = terrain_info.height }; DrawTextureRec(renderer->tiles, source_rect, pos, WHITE); + } + } - // Drawing items - if (item_type != 0) { + // Draw items + for (int r = 0; r < env->height; r++) { + for (int c = 0; c < env->width; c++) { + int adr = flat_idx(env, r, c); + int item_type = env->items[adr]; + + // TODO: change data structure to avoid this ugly + if (item_type == ITEM_FIREPLACE && env->is_fireplace_lit) { + item_type = ITEM_FIREPLACE_LIT; + } + + SpriteInfo item_info = SPRITE_ITEMS[item_type]; + Vector2 pos = { + .x = c * TILE_SIZE_ENV + item_info.offset_x, + .y = r * TILE_SIZE_ENV + item_info.offset_y, + }; + + if (item_type != EMPTY) { Rectangle source_rect = { - .x = 4 * TILE_SIZE, - .y = item_type * TILE_SIZE, - .width = TILE_SIZE, - .height = TILE_SIZE + .x = item_info.src_x, + .y = item_info.src_y, + .width = item_info.width, + .height = item_info.height }; DrawTextureRec(renderer->items, source_rect, pos, WHITE); } - + } + } + + // Draw entities + for (int r = 0; r < env->height; r++) { + for (int c = 0; c < env->width; c++) { + int adr = flat_idx(env, r, c); + int entity_id = env->pids[adr]; + + Vector2 pos = { + .x = c * TILE_SIZE_ENV, + .y = r * TILE_SIZE_ENV, + }; if (entity_id != -1) { Agent *agent = &env->agents[entity_id]; Animation animation = ANIMATIONS[agent->anim]; - int starting_sprite_y = (env->agents[entity_id].direction) * SPRITE_SIZE; - int x_pos = (c - 0.5f)*TILE_SIZE; - int y_pos = (r - 0.5f)*TILE_SIZE; + int starting_sprite_y = (env->agents[entity_id].direction) * SPRITE_SIZE_ENTITY; + int x_pos = (c - 0.5f)*TILE_SIZE_ENV; + int y_pos = (r - 0.5f)*TILE_SIZE_ENV; Vector2 pos = { .x = x_pos, .y = y_pos, }; Rectangle source_rect = { - .x = animation.x * SPRITE_SIZE, + .x = animation.x * SPRITE_SIZE_ENTITY, .y = starting_sprite_y, - .width = SPRITE_SIZE, - .height = SPRITE_SIZE + .width = SPRITE_SIZE_ENTITY, + .height = SPRITE_SIZE_ENTITY }; DrawTextureRec(renderer->agents[entity_id%5][entity_id%10], source_rect, pos, WHITE); // Draw HP bar - int bar_x = x_pos + TILE_SIZE - HEALTH_BAR_WIDTH/2; + int bar_x = x_pos + TILE_SIZE_ENV - HEALTH_BAR_WIDTH/2; int bar_y = y_pos; - draw_health_bar(bar_x, bar_y, agent->hp, MAX_HP); + draw_ui_bar(bar_x, bar_y, agent->hp, MAX_HP, GREEN); + // Draw Coldness bar + draw_ui_bar(bar_x, bar_y + 10, MAX_COLDNESS - agent->coldness, MAX_COLDNESS, BLUE); // Food Number in inventory char* txt; Color color; - txt = (char*) TextFormat("%d: F: %d", entity_id, agent->held_food); + txt = (char*) TextFormat("%d: F: %d | W: %d", entity_id, agent->food_amt, agent->wood_amt); color = GREEN; Vector2 text_pos = {.x = bar_x, .y = bar_y - 20}; @@ -926,5 +1305,8 @@ void c_render(PredPrey *env) { } } } + draw_time_info(env, renderer); + draw_chest_info(env, renderer); + draw_fireplace_info(env, renderer); EndDrawing(); } diff --git a/pufferlib/ocean/predprey/predprey.py b/pufferlib/ocean/predprey/predprey.py index 691575d16..5ad91d871 100644 --- a/pufferlib/ocean/predprey/predprey.py +++ b/pufferlib/ocean/predprey/predprey.py @@ -11,19 +11,20 @@ def __init__(self, height=32, num_agents=8, vision=3, - food_base_spawn_rate=1e-3, reward_death_scale = 1.0, reward_eat = 0, reward_collect = 0, timestep_reward = 0, - reward_steal = 0, hp_reward_scale = 0, - held_food_reward_scale = 0, report_interval=1, + held_food_reward_scale = 0, + reward_fireplace_lit = 0, + reward_store_chest = 0, + report_interval=1, render_mode=None, buf=None, seed=0, ): - obs_shape = ((2*vision+1)*(2*vision+1)*5)+1 + obs_shape = ((2*vision+1)*(2*vision+1)*5)+5 self.single_observation_space = gymnasium.spaces.Box(low=0, high=255, shape=(obs_shape,), dtype=np.float32) self.single_action_space = gymnasium.spaces.Discrete(7) self.render_mode = render_mode @@ -51,10 +52,10 @@ def __init__(self, reward_eat = reward_eat, reward_collect = reward_collect, timestep_reward = timestep_reward, - reward_steal = reward_steal, hp_reward_scale = hp_reward_scale, held_food_reward_scale = held_food_reward_scale, - food_base_spawn_rate=food_base_spawn_rate, + reward_fireplace_lit = reward_fireplace_lit, + reward_store_chest = reward_store_chest, ) c_envs.append(env_id) diff --git a/pufferlib/ocean/predprey/terrain.h b/pufferlib/ocean/predprey/terrain.h index 89909d80c..0f5cf987f 100644 --- a/pufferlib/ocean/predprey/terrain.h +++ b/pufferlib/ocean/predprey/terrain.h @@ -5,38 +5,38 @@ #define WIDTH 32 static const unsigned char terrain[HEIGHT][WIDTH] = { - {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04}, - {0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04} + {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}, + {0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02} }; #endif // H diff --git a/pufferlib/resources/harvest/items.png b/pufferlib/resources/harvest/items.png new file mode 100644 index 0000000000000000000000000000000000000000..37a3fdbef3e0c8dc7acd5ba165c4f2180edacd22 GIT binary patch literal 8372 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 Date: Fri, 21 Nov 2025 09:38:11 +0100 Subject: [PATCH 18/18] update init --- pufferlib/config/ocean/predprey.ini | 49 ++++------------------------- 1 file changed, 6 insertions(+), 43 deletions(-) diff --git a/pufferlib/config/ocean/predprey.ini b/pufferlib/config/ocean/predprey.ini index 0f6b505f6..8bd99da67 100644 --- a/pufferlib/config/ocean/predprey.ini +++ b/pufferlib/config/ocean/predprey.ini @@ -16,10 +16,10 @@ reward_death_scale = 0.14320154190448353 reward_eat = 0.6301939255961027 reward_collect = 1 timestep_reward = -0.001012632066429986 -reward_steal = -0.4586085627124764 hp_reward_scale = 0.07674633247055918 held_food_reward_scale = 0.2643837513970884 -food_base_spawn_rate = 1e-1 +reward_fireplace_lit = 0.7 +reward_store_chest = 0.5 [train] total_timesteps = 100_000_000 @@ -52,55 +52,18 @@ downsample = 5 use_gpu = True prune_pareto = True -[sweep.env.reward_death_scale] -distribution = uniform -min = 0.0 -max = 1.0 -mean = 1.0 -scale = auto - -[sweep.env.reward_eat] -distribution = uniform -min = -1.0 -max = 1.0 -mean = 0.0 -scale = auto - -[sweep.env.reward_collect] -distribution = uniform -min = -1.0 -max = 1.0 -mean = 0.0 -scale = auto - -[sweep.env.timestep_reward] +[sweep.env.reward_fireplace_lit] distribution = uniform min = -1.0 max = 1.0 -mean = 0.0 +mean = 0.5 scale = auto - -[sweep.env.reward_steal] +[sweep.env.reward_store_chest] distribution = uniform min = -1.0 max = 1.0 -mean = 0.0 -scale = auto - - -[sweep.env.hp_reward_scale] -distribution = uniform -min = 0.0 -max = 1.0 -mean = 0.0 -scale = auto - -[sweep.env.held_food_reward_scale] -distribution = uniform -min = 0.0 -max = 1.0 -mean = 0.0 +mean = 0.5 scale = auto [sweep.train.total_timesteps]