-
Notifications
You must be signed in to change notification settings - Fork 20
Migrating from 2025 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.
- 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.
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.
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 |
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]).
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(); |
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; |
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!" { ... } |
Actions no longer use the deprecated declaration syntax. Actions are always declared at the top of the species block in GAML 2026-06.
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; |
| Before | After |
|---|---|
list of: int |
list<int> |
list of: my_species |
list<my_species> |
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) { ... } |
The value facet on variable declarations is now update.
| Before | After |
|---|---|
int my_var value: 10 |
int my_var update: 10 |
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.
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
|
The image layer has been renamed to picture.
| Before | After |
|---|---|
layer image |
layer picture |
image file: "bg.png" |
picture "bg.png" |
| Before | After |
|---|---|
do action: my_action; |
do my_action(); |
| 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 |
The destination variable has been removed from the moving skill. Use destination: facet on goto or wander actions.
| Old | New |
|---|---|
max_speed |
speed_max |
actual_speed |
current_speed |
acceleration |
speed_acceleration |
| 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 |
-
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)
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" |
The layout facet on Permanent is now a standalone layout statement.
| 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
|
| Old facet | New facet |
|---|---|
position |
location |
spot_angle |
angle |
color |
intensity |
draw_light |
show |
update |
dynamic |
See Manipulate lights.
All camera facets (camera_pos, camera_location, camera_target, etc.) are now handled by the camera statement.
| Old | New |
|---|---|
type: "json" |
format: "json" |
with: [a, b] |
attributes: [a, b] |
Restore now uses the restore statement instead of a model loading action.
See Save and restore Simulations.
-
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()
- 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
- 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.
- Installation and Launching
- Workspace, Projects and Models
- Editing Models
- Running Experiments
- Running Headless
- Preferences
- Troubleshooting
- Introduction
- Manipulate basic Species
- Global Species
- Defining Advanced Species
- Defining GUI Experiment
- Classes and Objects
- Exploring Models
- Optimizing Models
- Multi-Paradigm Modeling
- Manipulate OSM Data
- Cleaning OSM Data
- Diffusion
- Using Database
- Using Dataframes
- Using FIPA ACL
- Using BDI with BEN
- Using Driving Skill
- Manipulate dates
- Manipulate lights
- Using comodel
- Save and restore Simulations
- Using network
- Writing Unit Tests
- Ensure model's reproducibility
- Going further with extensions
- Built-in Species
- Built-in Skills
- Built-in Architecture
- Statements
- Data Type
- File Type
- Stats Extension
- Sound Extension
- BDI Extension
- FIPA Skill
- Expressions
- Exhaustive list of GAMA Keywords
- Installing the development version
- Developing Extensions
- Introduction to GAMA Java API
- Using GAMA flags
- Creating a release of GAMA
- Documentation generation
- Predator Prey
- Road Traffic
- Incremental Model
- Luneray's flu
- BDI Agents
- Forager RL
- SIR Analysis
- 3D Model