01Let physics label the data.
The original game simulates different jump times, obstacle sizes, speeds and bird heights. If crouching clears the bird, the teacher labels DUCK. Low birds and cacti receive physics-tested RUN or JUMP labels.
1,200 overlapping-bird examples teach the model to hold the crouch until the bird has passed. Total: 7,200 states.
02Train the decision layers.
LAYA's ModernBERT encoder stays frozen. Decision layers, type embeddings and choice scorer learn from 5,760 examples; 1,440 remain held out. Four training stages refine the same separate checkpoint.
The model sees measured geometry, bird altitude, speed and the dinosaur's posture. It sees only the nearest obstacle.
03Let LAYA play.
TypeScript reads the game state. A local Python worker calls the official LAYA SDK's choice primitive for RUN, JUMP or DUCK. The executor applies that choice, then advances the simulation.
The training teacher is absent during play. No live distance rule corrects decisions. Failed runs restart after one second; play does not update weights.