Unity guide
Unity to Godot, a concept map and a rebuild order that works
What moves as files, what you rewrite, how every core Unity idea maps to Godot 4, what the Asset Store licence actually says, and the order that keeps the game playable the whole way.
The short answer
Moving a game from Unity to Godot is a rebuild, not a conversion. No converter produces a working game, because scenes, prefabs, components and Animator graphs are Unity formats and your C# is written against the UnityEngine API. Your models, textures, audio, data and design all carry over, and your C# becomes the spec. Map each Unity concept to its Godot equivalent, check your Asset Store licences, then rebuild the controller, one level, the core loop, the UI and the content, in that order.
Search for a Unity to Godot converter and you will find tools that move meshes, materials and object placement. That is useful, but it is not a port. The part of your game that makes it your game, the MonoBehaviours, the Animator logic and the tuning in them, does not run in Godot. It has to be rebuilt, and the good news is that you already have the most precise spec possible, your own code.
Most Unity concepts have a close Godot equivalent, and the table on this page covers the ones you will use every day. The two shifts that take longest are thinking in nodes instead of components, and using signals and await where you used events and coroutines. Once those click, most Unity developers find the rest familiar.
This guide is written for a working Unity project you want to move. If you are happy in Unity and only want to ship, the guide to selling Unity games on Steam covers that path instead, and staying is a perfectly good choice.
What it does
Art and audio move as files
Godot 4 imports glTF 2.0 (recommended), FBX through the built-in ufbx importer since 4.3, Blender files, OBJ and Collada, plus standard image and audio formats.
Your C# becomes the spec
Unity C# does not compile against Godot, but it records every speed, cooldown and rule. C# is available in Godot's .NET editor and in Summer's desktop editor, or you can rewrite in GDScript.
Scenes and prefabs are rebuilt
.unity scenes, .prefab files and .unitypackage archives are Unity formats. A prefab becomes a Godot scene you instance, rebuilt by hand or by an agent.
Licences are checked first
The standard Asset Store EULA does not name an engine, but Restricted Assets, packages with their own EULA and anything built on UnityEngine code need a separate look.
Behaviour is rewritten
MonoBehaviours, Animator controllers, Timeline sequences, input bindings and physics settings are recreated in Godot terms, using the old values as targets.
How it works
- 1
Step 1: Audit the project
List every script, every third-party package and its licence, and every asset you made yourself. Mark what is your own source art, what came from the Asset Store and what is Unity-only code such as editor tools and shaders.
- 2
Step 2: Export the source assets
Use your original source files where you have them. Otherwise export meshes and animation from Unity with the FBX Exporter package, and copy textures and audio as they are.
- 3
Step 3: Rebuild the player controller
Recreate the controller in Godot with the exact values from your C# (speed, acceleration, gravity, jump height, coyote time) and compare it side by side with the Unity build until it feels the same.
- 4
Step 4: Rebuild one representative level
Import the level's assets, rebuild its layout as a Godot scene, and add collision. This proves your import settings, scale and lighting before you repeat them fifty times.
- 5
Step 5: Rebuild the core loop and saves
Port the systems the loop needs, such as enemies, pickups, scoring and save data, one at a time, and playtest after each one.
- 6
Step 6: Rebuild the UI, then the content
Menus and HUD go in Control nodes. Only then bring over the remaining levels and content, which is fast once every system already exists.
Two ways to run it
In Studio, or from the agent you already use
In Summer Studio
Studio fills the gaps a port leaves, for example replacement models for Asset Store packs you cannot move, sprites, sound effects, music and voice lines, all as standard files in the same library the desktop engine uses.
Open Summer StudioFrom Claude, Cursor or Codex via MCP
In Summer, or from Claude Code, Cursor or Codex through the Summer MCP, the agent reads your old C# as the spec, writes the Godot scene and script, runs the game and checks state with summer_game_probe. You still review each system against the Unity build.
Example prompt for your agent
Read reference/unity/PlayerController.cs and rebuild it as a CharacterBody3D player in this Summer project with the same speeds, gravity, jump height and coyote time, then run the game and report how the jump compares.Set up the Summer MCP
| Tool | Moves | Does not move | Versions |
|---|---|---|---|
| Unity To Godot Exporter by Relative Games (paid, Gumroad) | Static meshes, placement, decals, skinned meshes, terrain with trees and details, materials (Shader Graph becomes a visual shader) | Code, cloth, particle emitters, fully custom shaders, ECS components, animations | Unity 2021.3 or newer, Godot 4.4 or later |
| Unity FBX Exporter (Unity package) | Geometry, lights, cameras and animation from GameObjects or Timeline, as FBX | Scripts, prefab logic, Animator state machines | Unity package, supported editors listed in its docs |
| UnityGLTF (Khronos, open source, MIT) | glTF 2.0 export and import from the editor or at runtime | Scripts and gameplay | Unity 2021.3 or newer |
Sources: GameFromScratch, Unity to Godot exporter (Relative Games)
| Unity | Godot 4 | Notes |
|---|---|---|
| GameObject | Node | Every object in a scene is a node with a type, such as Node3D, Sprite2D or CharacterBody3D |
| Component | Child node or script | Behaviour lives in the script on a node, and features like collision are child nodes |
| Prefab | Scene (PackedScene) | Any scene can be instanced inside another, and instantiate() creates it at runtime |
| Scene (.unity) | Scene (.tscn) | A level is just a larger scene |
| MonoBehaviour | Script attached to a node | GDScript or C# |
| Awake and Start | _init and _ready | _ready runs once the node and its children are in the tree |
| Update | _process(delta) | Every frame |
| FixedUpdate | _physics_process(delta) | Fixed rate, 60 times per second by default |
| ScriptableObject | Resource | A class_name script extending Resource with @export fields, saved as .tres |
| Coroutine and yield | await | await a signal or another coroutine, for example a Timer's timeout |
| UnityEvent and C# events | Signals | Godot's observer pattern, connected in the editor or in code |
| Animator | AnimationTree with AnimationPlayer | State machines and blend trees, with clips in the AnimationPlayer |
| Rigidbody and Collider | RigidBody3D or CharacterBody3D with CollisionShape3D | Use CharacterBody3D and move_and_slide() for most player controllers |
| Canvas and UI | Control nodes | Containers handle layout |
| Instantiate and Destroy | instantiate() plus add_child(), and queue_free() | queue_free() removes a node at the end of the frame |
Examples
Prompts that work, and what comes back
Prompts and checklists for the first week of a Unity to Godot move. Each prompt works with the built-in agent or through the MCP.
Licence audit
Prompt
For every package in Assets and Packages, note the source (my own, Asset Store, other), whether it is art, audio, code or a shader, and whether it has its own EULA or is marked as a Restricted Asset.
What you get
A list of what can move, what must be replaced and what needs a second look.
Controller rebuild
Prompt
Read reference/unity/PlayerController.cs and rebuild it as a CharacterBody3D with the same values. Expose every tuning value with @export.
What you get
A Godot controller with the old numbers, ready to compare side by side.
Prefab to scene
Prompt
Rebuild the Enemy prefab from reference/unity/Enemy.prefab.txt and Enemy.cs as an enemy scene with a CharacterBody3D root, collision, the imported mesh and a script with the same states.
What you get
A reusable enemy scene you can instance in any level.
ScriptableObject to Resource
Prompt
Turn reference/unity/WeaponData.cs into a WeaponData Resource with the same fields, and create .tres files for the sword, bow and staff with their old values.
What you get
Data assets you can edit in the Inspector, as in Unity.
Coroutine to await
Prompt
Rewrite the Spawner coroutine from reference/unity/Spawner.cs with await and a Timer, keeping the same wave timings.
What you get
The same spawning behaviour with Godot's coroutine model.
Unity to Godot converters and exporters, what they actually move
The tools sold as a Unity to Godot converter or exporter work on the data side, such as meshes, materials, textures and where objects sit in a scene. That can save days on a large level. What no tool can carry is behaviour. Your MonoBehaviours call UnityEngine APIs that do not exist in Godot, your Animator controllers are a Unity format, and your physics tuning depends on Unity's physics settings. One example is Relative Games' Unity To Godot Exporter, a paid Unity plugin for Unity 2021.3 or newer and Godot 4.4 or later. It exports static meshes, placement, decals, skinned meshes, terrain with trees and details, and materials, converting Shader Graph to visual shaders. By its own description it does not touch code and leaves cloth, particle emitters, fully custom shaders, ECS components and animations behind.
So plan the move as two jobs. Moving content is mostly file work and import settings. Rebuilding behaviour is programming, and it is where the time goes. Treat any tool as help with the first job, never as a replacement for the second.
The concept map, and the two shifts that matter
The table above covers the everyday mappings. Two of them change how you design. The first is nodes. In Unity you add components to a GameObject. In Godot you build a small tree of nodes, where a CharacterBody3D has a CollisionShape3D and a MeshInstance3D as children, and the script sits on the root. A Godot scene is both a level and a prefab, so the reusable enemy you built as a prefab becomes an enemy scene you instance.
The second is signals and await. Signals are Godot's observer pattern, messages a node emits when something happens that other nodes connect to. Where you wrote a coroutine with yield, you write await, for example `await get_tree().create_timer(0.5).timeout`, and any function that uses await becomes a coroutine itself. ScriptableObjects map to custom Resources, which serialize automatically and show up in the Inspector.
C# in Godot 4, and where it stops
C# works in Godot 4 through the .NET build of the editor. Godot's own documentation states that C# projects cannot currently be exported to the web, and that Android and iOS support has been available since Godot 4.2 but is experimental. For a desktop game on Steam or itch.io, C# is a solid choice and the shortest path from Unity.
GDScript is the other option. It is what most Godot examples and tutorials use and it needs no separate build step. Many teams keep C# for heavy systems and use GDScript for glue. In Summer, C# is available in the desktop editor, and desktop builds for Windows and macOS are the release path.
Asset Store licences, read the actual text
A common claim is that Asset Store purchases only work inside Unity. The standard Asset Store EULA does not say that. Section 2.2.1 licenses a non-restricted asset to be incorporated, with substantial original content, into an electronic application as an embedded component that is not a substantial portion of the product. It does not name an engine.
Three cases still need care. Restricted Assets carry their own terms in the materials that come with them, and some packages are governed by a separate provider EULA, so check each one. Code assets, editor extensions and shaders are written for Unity and will not run in Godot whatever the licence says. And section 2.2.1.1(g) prohibits using Asset Store assets to train or feed AI models without the provider's or Unity's consent, so do not use store art as a reference image for a generator.
Rebuild in an order that keeps the game playable
Rebuild the player controller first, then one representative level, then the core loop, then the UI, then the content. Each step gives you something you can play and compare with the Unity build, which is the only reliable way to know the port feels right.
Copy numbers, not intentions. Open the Unity script next to the Godot one and match every value, then play both builds back to back. Check the physics tick rate in both projects, since Unity's fixed timestep and Godot's 60 physics ticks per second may not match, and check the result by feel as well as by number.
Where Summer helps
Summer is a desktop engine for macOS and Windows that is compatible with Godot 4 workflows, with an agent built in. Put your old C# in the project folder and ask the agent to rebuild one system at a time with the original as the spec. It writes the scene and the GDScript, runs the game and reports problems, and you compare the result with the Unity build.
There is no automatic Unity importer in Summer, and the agent does not replace your judgment on feel. What it removes is the blank project, so you spend the time correcting and tuning instead of retyping.
Where to take your game next
Port it to make money
A rebuilt Unity game usually goes to Steam and itch.io as a desktop build. Steam charges a 100 USD Steam Direct fee per game, recouped after 1,000 USD in revenue, and keeps 30% of revenue up to 10 million USD. itch.io lets you set its share. Summer exports Windows and macOS builds for both.
How to make money from indie gamesRelease it on Summer Games
Summer Games is a new store for games made with Summer. It is launching soon. A Unity game becomes a candidate once it is rebuilt in Summer, reviewed, and playable as a single-player game first.
See Summer Games (launching soon)Grow it
A port is a second launch. Refresh the capsule art from your characters, cut a new gameplay trailer, and tell the players who wishlisted or bought the Unity version what changed.
How to market an indie gameRemake it in Summer
Start from the template closest to your game, give the agent your C# and design notes as the spec, rebuild one system at a time and playtest each one in the engine. Keep your tuning values and the assets you own.
Remake your game in SummerFrequently asked questions
Is there a Unity to Godot converter?
Not one that produces a working game. Tools such as Relative Games' Unity To Godot Exporter move meshes, placement, terrain and materials, but by their own description leave code, animations and particles behind. MonoBehaviours, Animator controllers and physics tuning are rebuilt.
Is there a Unity to Godot cheat sheet?
Yes, the table on this page. In short, GameObject to Node, Prefab to scene, MonoBehaviour to a script on a node, Start to _ready, Update to _process, FixedUpdate to _physics_process, ScriptableObject to Resource, coroutines to await, UnityEvent to signals and Animator to AnimationTree.
Can I keep using C# in Godot?
Yes, with the .NET build of the editor. C# projects cannot currently export to the web, and Android and iOS support is experimental since Godot 4.2. For desktop games it works well, and C# is available in Summer's desktop editor too.
Can I use my Unity Asset Store assets in Godot?
Often yes for art and audio. The standard Asset Store EULA licenses assets for use in an electronic application and does not name an engine. Check Restricted Assets and packages with their own EULA separately, and remember code and editor tools will not run outside Unity.
How long does moving a Unity game to Godot take?
It depends on how much custom code the game has. A player controller and one level usually take days, and a shipped game takes weeks to months, with UI and content taking more time than the core systems. The first level tells you the real number.
Does Summer import Unity projects?
No. Summer does not read .unity scenes, prefabs or .unitypackage files. Its agent can rebuild systems from your C# as the spec, and it imports your models, textures and audio as normal files.
Related tools and guides
Sources
- GameFromScratch, Unity to Godot exporter by Relative Games
- KhronosGroup/UnityGLTF (MIT)
- Godot docs, Resources and PackedScene
- Godot docs, Idle and physics processing
- Godot docs, GDScript reference (awaiting signals or coroutines)
- Godot docs, Using signals
- Godot docs, Using AnimationTree
- Godot docs, C# basics (platform support)
- Godot docs, Available 3D formats
- Unity Asset Store Terms of Service and EULA (sections 2.2.1, 2.2.1.1, 2.9)
- Unity FBX Exporter package
- Steamworks, Steam Direct fee
- Steamworks, New revenue share tiers (2018)
- itch.io, Accepting payments and getting paid
Make your game. Grow your game.
Even if it is built in another engine.
Free to download for macOS (Apple silicon) and Windows.