Migrating from GAMA 2025-06 to 2026-06
This page lists all breaking changes and deprecations between GAMA 2025-06 and 2026-06, with guidance on how to update your models.
For a complete list of all changes, see the Changelog.
Before You Start​
- Back up your models before applying any changes.
- Use the auto-upgrade tool included in GAMA 2026-06 — it will automatically fix most syntax changes (diffuse, transition,
with:pairs, arrow braces,doparentheses, display/experiment names, etc.). It ships in thegaml.grammarplugin and can be run from the command line on a directory of models:java gaml.grammar.transition.GamlFileProcessor <root> [--dry-run](with--dry-run, changes are only previewed, no file is written). - Read the full Changelog — Major changes from 1.9.3 to 2026-0 covers everything listed here plus additional improvements.
GAML Language Changes​
diffuse statement​
The diffuse statement no longer accepts the var: facet.
| Before (2025-06) | After (2026-06) |
|---|---|
diffuse var: my_variable amount: 0.1 | diffuse my_variable amount: 0.1 |
See Diffusion.
transition statement​
The transition statement no longer accepts to: or from:.
| Before | After |
|---|---|
transition to: my_action | transition my_action |
transition from: my_action | transition my_action |
with: pairs syntax​
The with: facet no longer uses square brackets [] and double colons ::. Use parentheses () and single colons :.
| Before | After |
|---|---|
create foo with: [size::2, color::red] | create foo with: (size: 2, color: red) |
Note: the with: modifier in the global section follows the same rule. Nested [...] list expressions inside the argument list are untouched: with: [values::[1, 2]] becomes with: (values: [1, 2]).
do and invoke statements​
Parameter-less action calls now require an explicit (empty) argument list.
| Before | After |
|---|---|
do my_action; | do my_action(); |
The returns facet of do is removed. Call the action as an expression and assign directly.
| Before | After |
|---|---|
do some_action returns: result; | result <- some_action(); |
Arrow (->) expressions — braces removed​
The outer curly braces around the body of -> expressions are no longer valid.
| Before | After |
|---|---|
int my_var -> { cycle * 2 }; | int my_var -> cycle * 2; |
Display and experiment names — explicit title:​
The name right after display or experiment must now be a valid identifier (no spaces or special characters); the human-readable label goes in the title: facet.
| Before | After |
|---|---|
display "3 Simulations" { ... } | display _3_Simulations title: "3 Simulations" { ... } |
experiment "Hello World!" { ... } | experiment Hello_World title: "Hello World!" { ... } |
action declaration​
Actions no longer use the deprecated declaration syntax. Actions are always declared at the top of the species block in GAML 2026-06.
let and set statements​
Let-variables now behave differently at the scope level. They are fully local and do not propagate to other agents.
The let ... type: ... and set forms are replaced by plain typed declarations and assignments:
| Before | After |
|---|---|
let x type: int value: 5; | int x <- 5; |
set x value: 5; (or set x <- 5;) | x <- 5; |
list of: type syntax​
| Before | After |
|---|---|
list of: int | list<int> |
list of: my_species | list<my_species> |
arg statements in action bodies​
Arguments are no longer declared with arg statements inside the action body; declare them in the action signature.
| Before | After |
|---|---|
int my_action { arg x type: int default: 1; ... } | int my_action (int x <- 1) { ... } |
value → update​
The value facet on variable declarations is now update.
| Before | After |
|---|---|
int my_var value: 10 | int my_var update: 10 |
save and restore​
The save_simulation() action has been removed. The Save statement now uses format: instead of type:, and attributes: instead of with:.
| Before | After |
|---|---|
save_simulation() | save format: "json" |
save to: "file.sim" type: "json" | save to: "file.sim" format: "json" |
save to: "file.sim" with: [a, b] | save to: "file.sim" attributes: [a, b] |
See Save and restore Simulations for examples with save / restore.
Statement & Display Changes​
Display facets​
See Defining Displays Generalities.
| Deprecated | Replacement |
|---|---|
refresh_every | use refresh: every(n) |
focus | use camera default target: the_agent; in layer definitions (not available in Java2D) |
synchronized | now a property of output, not per-view |
scale | always displayed, facet removed |
draw_env | use axes |
ambient_light, diffuse_light, draw_diffuse_light | use light statement |
camera_pos, camera_location, etc. | use camera statement |
rotate | removed |
draw_as_dem, dem | use elevation |
lines | use border |
image → picture​
The image layer has been renamed to picture.
| Before | After |
|---|---|
layer image | layer picture |
image file: "bg.png" | picture "bg.png" |
do → action call without colon​
| Before | After |
|---|---|
do action: my_action; | do my_action(); |
Skill Changes​
| Old name (deprecated) | New name | Notes |
|---|---|---|
skill_advanced_driving / advanced_driving | driving | Using Driving Skill |
skill_road | road_skill | Using Driving Skill |
skill_road_node | intersection | Using Driving Skill |
communicating | fipa | Using FIPA ACL |
Moving skill: destination removed​
The destination variable has been removed from the moving skill. Use destination: facet on goto or wander actions.
Driving skill variable renames​
| Old | New |
|---|---|
max_speed | speed_max |
actual_speed | current_speed |
acceleration | speed_acceleration |
GAMA Operators​
| Old operator | New operator |
|---|---|
with_optimizer_type (graph, string) | with_shortestpath_algorithm (graph, string) |
as_json_string | to_json |
is_clockwise, change_clockwise (geometry) | removed (all geometries now clockwise) |
user_input | user_input_dialog |
Grid Operator Changes​
buffer(shape, map)→buffer(shape, distance, number_of_segments)enlarged_by(shape, map)→enlarged_by(shape, distance, number_of_segments, end_cap)+for shapes and maps →+with added parameters(shape, distance, number_of_segments, end_cap)
Charts & Layout​
Chart layer font facets​
Font size and style facets have been merged.
| Old | New |
|---|---|
tick_font_size, tick_font_style | tick_font: "12px Bold" |
label_font_size, label_font_style | label_font: "12px Bold" |
legend_font_size, legend_font_style | legend_font: "12px Bold" |
title_font_size, title_font_style | title_font: "12px Bold" |
Layout​
The layout facet on Permanent is now a standalone layout statement.
Variable Facet Changes​
| Old facet | New facet |
|---|---|
value: 10 on variable | update: 10 |
size, fill_with on container | matrix_with(size, fill_with) or list_with(size, fill_with) |
category, parameter on variable | use parameter statement and category facet on experiment |
Lights / Camera​
Light statement​
| Old facet | New facet |
|---|---|
position | location |
spot_angle | angle |
color | intensity |
draw_light | show |
update | dynamic |
See Manipulate lights.
Camera​
All camera facets (camera_pos, camera_location, camera_target, etc.) are now handled by the camera statement.
Save/Restore​
Save facet changes​
| Old | New |
|---|---|
type: "json" | format: "json" |
with: [a, b] | attributes: [a, b] |
Restore changes​
Restore now uses the restore statement instead of a model loading action.
See Save and restore Simulations.
Checklists​
Quick checklist (most common changes)​
-
diffuse var: X→diffuse X -
transition to: X→transition X -
with: [a::1]→with: (a: 1) -
do X;→do X();(parameter-less calls need parentheses) -
-> { expr }→-> expr(arrow braces removed) -
display "My Title"→display My_Title title: "My Title"(same forexperiment) -
save_simulation()→save format: "json" -
type:→format:on save/restore -
with:(save) →attributes: -
imagelayer →picturelayer -
skill_advanced_driving→driving -
skill_road→road_skill -
skill_road_node→intersection -
communicating→fipa -
value:→update:on variable declarations -
do action: X→do X() -
do X returns: v→v <- X()
Complete change checklist​
- diffuse: remove
var:facet - transition: remove
to:/from:keywords - with: pairs: replace
[]with()and::with: - image → picture: rename all image layers
- do/invoke: remove
action:keyword, removereturns:facet, add()to parameter-less calls - arrow expressions: remove braces around
->bodies - display/experiment names: use identifiers, move labels to
title: - let/set: replace with typed declarations and plain assignments
- list of: T: replace with
list<T> - arg statements: move action arguments into the signature
- save/restore: use
format:andattributes:, removesave_simulation() - value → update: replace
value:facet withupdate: - save type: replace
type:withformat:on save statement - save with: replace
with:withattributes:on save statement - skills: rename skill declarations
-
advanced_driving→driving -
skill_road→road_skill -
skill_road_node→intersection -
communicating→fipa
-
- moving skill: remove
destinationvariable references - driving skill: rename variables (
max_speed→speed_max, etc.) - fipa skill: replace
sendwithstart_conversation - database skill: replace
timeStampwithgama.machine_time - grid context: replace
neighbourswithneighbors - operators: update deprecated operator names
-
with_optimizer_type→with_shortestpath_algorithm -
as_json_string→to_json -
user_input→user_input_dialog - remove
is_clockwise,change_clockwise
-
- display facets: update deprecated facets
-
refresh_every→refresh: every(n) -
focus→camerain layer -
camera_*→camerastatement -
light_*→lightstatement -
draw_as_dem→elevation -
lines→border -
empty→wireframe -
bitmap→perspectiveon draw -
rounded→squircleon draw - chart font facets → merged into
tick_font,label_font, etc. -
Permanentlayout/toolbar tabs →layoutstatement -
Solvevariable renames →steps_size - image layer
file/matrix→ direct orfield/mesh
-
- variable facets: replace
value:withupdate: - let variables: review scope behavior
- Matrix variable: use
matrix_with()/list_with()instead ofsize/fill_withfacets
Notes​
- Models created in GAMA 2026-06 are not compatible with GAMA 2025-06.
- The auto-upgrade tool can fix most syntax changes but may not handle semantic changes (e.g., skill renames, operator name changes).
- For the full list of changes from GAMA 1.9.3 → 2026-06 and beyond, see the Changelog.