AI Terrain
Terrain authoring — create terrains, sculpt and sample heights, manage layers, paint textures, scatter trees/details, and stitch neighbours.
At a glance
What the agent can do with it
Adds no MCP tools: it contributes an RQL module with the terrain source, the terrain.heights, terrain.heightStats, terrain.heightAt functions and adapters for Terrain, TerrainData, TreePrototype, DetailPrototype. That powers 4 capabilities the agent reaches through rql-query / rql-mutate. How RQL works →
- Create terrains
Create a Terrain with its TerrainData asset, set its size and heightmap resolution, and stitch neighbouring tiles together.
terrain | call Create("Island", "Assets/Terrain/Island.asset", 257, "(500, 120, 500)") - Sculpt & sample heights
Raise or flatten regions, write a whole height grid, and sample heights or height statistics anywhere.
objects | get components | where $ is Terrain | call SetHeights(0.6, 100, 100, 32, 32) - Paint texture layers
Create TerrainLayer assets, add or remove layers, and paint them onto areas of the terrain.
objects | get components | where $ is Terrain | call PaintLayer(1, 1.0, 0, 0, 64, 64) - Trees & details
Add tree and detail prototypes, scatter trees randomly or at exact points, and clear them.
objects | get components | where $ is Terrain | call PlaceTrees(0, 200, 0.1, 0.1, 0.5, 0.5)
Install
Requires the base plugin com.ivanmurzak.unity.mcp. After installing, the RQL module loads with the package — the agent sees it in rql-schema.
openupm add com.ivanmurzak.unity.mcp.terrainWhen to ask the AI for it
Ask for landscape and open-world ground — hills, painted texture layers, scattered foliage.
Example prompts
Copy-pasteable first requests. Start with one, verify it in the editor, then build up.
Create a 500×500 terrain and raise a gentle hill in the centre.Add a grass and a rock terrain layer, then paint rock onto the steep slopes.