Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
03ca817
port current osrs colosseum and inferno onto upstream 5c
valtterivalo Aug 6, 2026
59f90b7
port protein sweep observation resume onto 5c
valtterivalo Aug 6, 2026
0be691a
compact Inferno policy observations
valtterivalo Aug 11, 2026
bc66bc7
reuse OSRS mask and run-path classification
valtterivalo Aug 11, 2026
f548d77
preserve fallback chase routing
valtterivalo Aug 11, 2026
0d70f07
validate cached chase steps
valtterivalo Aug 11, 2026
342a9a1
Design shared OSRS runtime optimization
valtterivalo Aug 11, 2026
cce6522
Optimize shared OSRS attack routing
valtterivalo Aug 11, 2026
475787f
Restore in-range attack chase fast path
valtterivalo Aug 11, 2026
a1d905d
Add immutable OSRS arena topology
valtterivalo Aug 11, 2026
8fd9feb
Fix OSRS arena topology contracts
valtterivalo Aug 11, 2026
4c2c5f9
Unify OSRS encounter routing
valtterivalo Aug 11, 2026
d2622f4
Unify OSRS encounter routing
valtterivalo Aug 11, 2026
8d05bba
Record OSRS route verification
valtterivalo Aug 11, 2026
fb57113
Correct OSRS route verification report
valtterivalo Aug 11, 2026
f8c2dbc
Preserve OSRS route overlap and tie semantics
valtterivalo Aug 11, 2026
10b183c
Use shared topology in Inferno
valtterivalo Aug 12, 2026
1e59a53
Fix Inferno topology LOS ownership
valtterivalo Aug 12, 2026
a506c5a
Finalize Inferno context ownership
valtterivalo Aug 12, 2026
2e90426
Use shared topology in Colosseum
valtterivalo Aug 12, 2026
27ca8f3
Fix Colosseum topology test contexts
valtterivalo Aug 12, 2026
ce233cf
Reduce Colosseum topology query overhead
valtterivalo Aug 12, 2026
979a2f9
Document Colosseum topology validation
valtterivalo Aug 12, 2026
848b777
Use shared topology in Zulrah and NH PvP
valtterivalo Aug 12, 2026
3c37e3d
Unify OSRS item metadata
valtterivalo Aug 12, 2026
563dded
Fix canonical item metadata call sites
valtterivalo Aug 12, 2026
b05d5b9
Hash canonical inventory semantics
valtterivalo Aug 12, 2026
4f88a1c
Pass Inferno lab topology context
valtterivalo Aug 12, 2026
9a15176
Define Colosseum consolidation contract
valtterivalo Aug 12, 2026
ac2f7e2
Plan Colosseum consolidation
valtterivalo Aug 12, 2026
0763de2
Fix OSRS asset archive checksum
valtterivalo Aug 12, 2026
5e30201
Restore honest Sol laser observations
valtterivalo Aug 12, 2026
36f71db
Model Manticore activation and charge
valtterivalo Aug 12, 2026
4698671
Make Colosseum thralls automatic
valtterivalo Aug 12, 2026
d82b15c
Explode Volatility on corpse removal
valtterivalo Aug 12, 2026
074ac1b
Finalize consolidated Colosseum contract
valtterivalo Aug 12, 2026
8be1f2e
Preserve Volatility during wave cleanup
valtterivalo Aug 12, 2026
7941262
Remove internal planning artifacts
valtterivalo Aug 12, 2026
95bd516
optimize and validate OSRS environments
valtterivalo Aug 13, 2026
8722073
Promote Colosseum sweep winner
valtterivalo Aug 15, 2026
84d6c66
Speed up Colosseum environment
valtterivalo Aug 14, 2026
7ef746c
Restore Colosseum winner value clip
valtterivalo Aug 15, 2026
4e31b3c
Promote compact Inferno and Zulrah policies
valtterivalo Aug 15, 2026
bd03e4c
Merge OSRS environments onto current 5.0
valtterivalo Aug 16, 2026
c112924
Narrow OSRS PR scope
valtterivalo Aug 15, 2026
1b477f3
Simplify OSRS simulator implementation
valtterivalo Aug 15, 2026
ffea50c
Fix blowpipe loaded dart bonuses
valtterivalo Aug 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 10 additions & 6 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,14 @@ fi
PLATFORM="$(uname -s)"
if [ "$PLATFORM" = "Linux" ]; then
RAYLIB_NAME='raylib-5.5_linux_amd64'
OMP_FLAGS=(-fopenmp)
OMP_LIB=-lomp5
SANITIZE_FLAGS=(-fsanitize=address,undefined,bounds,pointer-overflow,leak -fno-omit-frame-pointer)
STANDALONE_LDFLAGS=(-lGL)
else
RAYLIB_NAME='raylib-5.5_macos'
OMP_PREFIX="$(brew --prefix libomp)"
OMP_FLAGS=(-Xclang -fopenmp -I"$OMP_PREFIX/include" -L"$OMP_PREFIX/lib" -lomp)
OMP_LIB=-lomp
SANITIZE_FLAGS=()
STANDALONE_LDFLAGS=(-framework Cocoa -framework IOKit -framework CoreVideo -framework OpenGL)
Expand Down Expand Up @@ -198,10 +201,11 @@ USER_OUTPUT_NAME=${OUTPUT_NAME-}
OUTPUT_NAME=${OUTPUT_NAME:-$ENV}
SRC_FILE=${SRC_FILE:-$SRC_DIR/$ENV.c}

# Standalone environment build
# -mavx2 enables AVX2 intrinsics (__m256, _mm256_*) which drive.h and
# src/pufferenv.h use directly. x86_64 only — strip if porting to ARM/Apple Silicon.
SIMD_FLAGS=(-mavx2 -mfma)
if [ "$(uname -m)" = "x86_64" ]; then
SIMD_FLAGS=(-mavx2 -mfma)
else
SIMD_FLAGS=()
fi
if [ -n "$DEBUG" ] || [ "$MODE" = "local" ]; then
CLANG_OPT=(-g -O0 "${CLANG_WARN[@]}" "${SANITIZE_FLAGS[@]}" "${SIMD_FLAGS[@]}")
NVCC_OPT="-O0 -g"
Expand All @@ -219,7 +223,7 @@ if [ "$MODE" = "local" ] || [ "$MODE" = "fast" ]; then
"${LINK_ARCHIVES[@]}"
"${EXTRA_LDFLAGS[@]}"
"${STANDALONE_LDFLAGS[@]}"
-lm -lpthread -fopenmp
-lm -lpthread "${OMP_FLAGS[@]}"
-DPLATFORM_DESKTOP
"${EXTRA_CFLAGS[@]}"
)
Expand Down Expand Up @@ -297,7 +301,7 @@ elif [ "$MODE" = "cpu" ]; then
"${LINK_ARCHIVES[@]}" \
"${EXTRA_LDFLAGS[@]}" \
"${STANDALONE_LDFLAGS[@]}" \
-lm -lpthread -fopenmp \
-lm -lpthread "${OMP_FLAGS[@]}" \
-o "build/cpu_${ENV}"
echo "Built: ./build/cpu_${ENV}"
exit 0
Expand Down
185 changes: 128 additions & 57 deletions config/osrs_colosseum.ini
Original file line number Diff line number Diff line change
@@ -1,96 +1,90 @@
# OSRS Fortis Colosseum encounter.

[base]
env_name = osrs_colosseum
async = 0

[env]
start_wave = 1
damage_reward_coeff = 0.01
wave_clear_bonus = 0.9480448239932152
win_bonus = 0.6761689252871952
death_penalty_coeff = 1.0
timeout_penalty = 0.42966922179495604
damage_reward_coeff = 0.0058004423
wave_clear_bonus = 0.0414097905
win_bonus = 0.444149673
death_penalty_coeff = 0.884283066
timeout_penalty = 0.176490664
farm_safe_damage_cap = 1
farm_cap_waves = 4
boss_damage_reward_coeff = 0.0
boss_phase_bonus = 0.930438578582552
argmax_gear_reward_coeff = 0.003360076095091039
offensive_boost_reward_coeff = 0.01150336488068926
boss_phase_bonus = 0.242805392
loadout_profile_mode = 2
beginner_loadout_fraction = 0.5
step_out_forecast_obs_enabled = 1
threat_field_obs_enabled = 1
forecast_horizon = 4
mask_inventory_heads = 0
prayer_oracle_mode = 0
late_start_state_mode = 2
late_start_supply_fraction_per_wave = 0.07
bis_gear_oracle_mode = 0
invuln_mode = 0
laser_obs_mode = 1
episode_max_ticks_override = 0
remove_brews = 0
prayer_switch_fail_prob = 0.0
player_damage_received_scale = 1.0
damage_scale_anneal_start = 1.0
damage_scale_anneal_ticks = 0
classic_curriculum_mode = 1
curriculum_num_tiers = 3
curriculum_wave_1 = 4
curriculum_frac_1 = 0.07367961709476761
curriculum_wave_2 = 8
curriculum_frac_2 = 0.03234710556986353
curriculum_num_tiers = 4
curriculum_wave_1 = 9
curriculum_frac_1 = 0.0324260853
curriculum_wave_2 = 5
curriculum_frac_2 = 0.0615721829
curriculum_wave_3 = 12
curriculum_frac_3 = 0.009776253765422502
curriculum_frac_3 = 0.16289182
curriculum_wave_4 = 6
curriculum_frac_4 = 0.399915189

[vec]
total_agents = 8192
num_buffers = 8
num_threads = 32
action_mask_size = 452
gpu_env = 0
action_mask_size = 456

[policy]
hidden_size = 2048
hidden_size = 256
num_layers = 2
expansion_factor = 1

[train]
total_timesteps = 143245903
horizon = 16
min_lr_ratio = 0.32764059472071716
learning_rate = 0.0003724286337024778
momentum = 0.999
ent_coef = 1e-07
gamma = 0.9999997409988988
gae_lambda = 0.41662511987289663
vtrace_rho_clip = 2.0739707238638987
vtrace_c_clip = 3.444175403341336
prio_alpha = 0.2617270145386202
prio_beta0 = 0.0
clip_coef = 0.07092591964303953
vf_coef = 5.0
vf_clip_coef = 0.0001
max_grad_norm = 2.5111866624698655
replay_ratio = 2.0
minibatch_size = 4096
total_timesteps = 438300800
horizon = 32
min_lr_ratio = 0.142049164
learning_rate = 0.000879242609
momentum = 0.98627466
ent_coef = 1.41506653e-05
gamma = 0.999796748
gae_lambda = 0.985211074
vtrace_rho_clip = 1.65516651
vtrace_c_clip = 0.573781013
prio_alpha = 0.625232637
prio_beta0 = 0
clip_coef = 0.109649725
vf_coef = 4.73808718
vf_clip_coef = 1.99999999e-06
max_grad_norm = 6.63626146
replay_ratio = 4.28185177

[sweep]
max_suggestion_cost = 1200
max_runs = 400
gpus = 1
early_stop_quantile = 0.25

[sweep.train.total_timesteps]
distribution = log_normal
min = 10_000_000
max = 2_000_000_000
scale = time

[sweep.env.damage_reward_coeff]
distribution = log_normal
min = 0.00001
max = 0.010
scale = auto

[sweep.env.wave_clear_bonus]
distribution = uniform
min = 0.0
max = 0.010
max = 1.0
scale = auto

[sweep.env.win_bonus]
Expand All @@ -117,26 +111,103 @@ min = 0.0
max = 1.0
scale = auto

[sweep.env.argmax_gear_reward_coeff]
[sweep.train.vf_coef]
max = 24.0

[sweep.train.vf_clip_coef]
min = 0
max = 1.0

[sweep.policy.hidden_size]
min = 64
max = 512

[sweep.policy.num_layers]
distribution = int_uniform
max = 4

[sweep.train.horizon]
min = 8
max = 128

[sweep.train.learning_rate]
min = 0.00003
max = 0.004

[sweep.train.ent_coef]
min = 0.00000001
max = 0.002

[sweep.train.gamma]
min = 0.995
max = 0.99997

[sweep.train.gae_lambda]
min = 0.05
max = 0.999

[sweep.train.min_lr_ratio]
distribution = uniform
min = 0.0
max = 0.05
max = 0.9
scale = auto

[sweep.env.offensive_boost_reward_coeff]
[sweep.train.clip_coef]
min = 0.001
max = 0.12

[sweep.train.max_grad_norm]
min = 0.3
max = 8.0

[sweep.train.replay_ratio]
min = 1.5
max = 6.0

[sweep.env.curriculum_frac_1]
distribution = uniform
min = 0.0
max = 0.05
max = 0.30
scale = auto

[sweep.train.vf_coef]
[sweep.env.curriculum_frac_2]
distribution = uniform
min = 0.1
max = 8.0
min = 0.0
max = 0.30
scale = auto

[sweep.train.vf_clip_coef]
[sweep.env.curriculum_frac_3]
distribution = uniform
min = 0.0001
max = 1.0
min = 0.0
max = 0.40
scale = auto

[sweep.env.curriculum_frac_4]
distribution = uniform
min = 0.0
max = 0.40
scale = auto

[sweep.env.curriculum_wave_1]
distribution = int_uniform
min = 1
max = 12
scale = auto

[sweep.env.curriculum_wave_2]
distribution = int_uniform
min = 1
max = 12
scale = auto

[sweep.env.curriculum_wave_3]
distribution = int_uniform
min = 1
max = 12
scale = auto

[sweep.env.curriculum_wave_4]
distribution = int_uniform
min = 1
max = 12
scale = auto
Loading