⚜ SteamCozy

Home / News / Icaria

Update 1.0.10

Icaria · Community Announcements · July 31, 2026

Read the original on Steam ↗

Converting Visual Scripts to Text Scripts

If you create a script with the block based editor you can now convert it to a text script. We've been working over the last few weeks adding new features to the text scripting to support a variety of edge cases and lesser used features in the visual language but the conversion is still not perfect.

Because the visual language is more limited it has a bunch of contextual nuances that are... awkward in a more general expression evaluator. As an example, if you use an expression like

goto \[Quarry].nearest.highpoint

On a crane, the return the result will always be within the range the crane can reach. We've preserved that behavior in the text script evaluator despite the fact that, in the text scripting language you can use .highpoint in many contexts other than a goto command. Similarly, if you use the same command on a drone it will immediately go to the highest point in the beacon but, if the high point changes while the drone is in flight, it will reevaluate the expression and change to a new high point.

In each of these cases the behavior is not what you'd expect from a more general purpose language where typically the same code would execute the same way on any entity and each expression would be evaluated only once. The text scripting is meant to feel more like programming in a general purpose language while still maintaining some of these core ease-of-use features from the drag and drop programming. At the same time, there are fundamental differences between how the visual and text evaluators work that mean that sometimes the behavior of the conversion won't perfectly match.

External Editor Integration

Icaria now has a REST API designed to support external editors. It is not enabled by default but you can turn it on by putting -port=8080 in the Launch Options on Steam. We decided that opening a port on the game by default might have unintended side-effects so we've put it under your control.

The API looks looks like this: http://localhost:8080/roles returns a JSON response that looks like this:

{

"Entities": \[

{

"Name": "Surveyor",

"Key": "surveyor",

"Roles": \[

{

"Name": "Trees",

"UriName": "Trees",

"Actions": \[

{

"Name": "visit maples",

"UriName": "visit%20maples",

"TextMode": true

},

{

"Name": "recharge",

"UriName": "recharge",

"TextMode": true

}

],

"Version": 0

}

]

}

]

}

You can address any action with a URL formed like so http://localhost:8080/role/surveyor/Trees/visit%20maples The "Key" and "UriName" fields the JSON are used to form the request URL; this URL supports the GET, PUT, and DELETE methods so you can get the current text of the script, push updates with a PUT, and DELETE them. Using PUT for a new role not currently in the save will create that role. The "Version" key is an internal value that is incremented every time the role is changed; you can use that to decide if you need to pull an update from the game.

We now have #icaria-modding channel on our discord with a few folks developing mods. Let us know if you are interested. We'll be developing this API more in the future.

Patch Notes

Text Scripting

Icaria MORE ON STEAMCOZYIcaria 94.6% positive · 37 reviews Price tracking · player charts · similar games →