Migrating From Unity to Different Sport Engines
During the last week we noticed a rising curiosity in instruments that permit migration from Unity to different sport engines. I wish to share some ideas on the technical facets of the migration and suggest a number of approaches to simplify it.
A Unity mission consists of the next conceptual components that want migration:
- Scripts (
MonoBehaviour
lessons and different.cs
recordsdata) - Static Belongings (scenes, prefabs, supplies, sounds, and many others.)
- Plugins
Let’s take into account them one after the other.
Migrating Scripts
Script migration might be the largest problem for the developer. Unity’s engine APIs can’t be simply ported to different platforms. Furthermore, porting scripts requires an understanding of the goal engine’s equal APIs, which could possibly be problematic given a steep studying curve when transferring to a brand new know-how.
Nonetheless, I consider that fashionable LLMs can vastly simplify the migration. LLMs excel at translating language and coding. We will leverage it to make our jobs simpler.
We now have created a Proof of Idea that makes use of ChatGPT 3.5-Turbo mannequin emigrate all mission Unity lessons to GDScript (Godot script) and noticed some passable outcomes (*):
Unity C# | GDScript |
---|---|
public class Participant : MonoBehaviour |
class_name Participant:
|
As you possibly can see, a lot of the names and strategies had been translated appropriately. Nonetheless, guide intervention can be required (for example, InvokeRepeating
was not ported appropriately, Begin()
methodology identify ought to have been _ready()
, and many others.).
Right here is similar code migrated to Unreal Engine (*):
Unity C# | Unreal Engine CPP |
---|---|
public class Participant : MonoBehaviour |
APlayer::APlayer() |
As with the GDScript, LLM was capable of translate general logic moderately effectively, however guide tweaks are required to make it work appropriately.
Migrating to Cocos produces an identical high quality of output, nonetheless, extra work is required to tweak the prompts.
I don’t suppose LLMs can absolutely clear up the script migration drawback. Nonetheless, LLM-generated code can create a baseline that may velocity up the migration course of.
The outcomes above are extremely experimental and we invite everybody to hitch the open supply migration mission, counsel immediate enhancements, tweak C# parsing, and add different vacation spot engines.
Migrating Static Belongings
Migrating static property is one other problem, however I consider that static asset migration might be extremely automated. Nonetheless, a framework emigrate static property will inevitably find yourself complicated. Unity’s asset storage format has been altering throughout editor variations, which signifies that a migration device would have to concentrate on a number of format variations, in addition to potential dependencies, relationships between property, and compatibility points to make sure that the property are migrated appropriately.
Some asset migration instruments are already in place (for example, FBX2glTF for Godot, native FBX Help of Unreal, or FBX Sensible Materials Conversion for Cocos), which supplies a strong basis for static asset migration.
The following space of analysis must be determining how a migration device might help port property. A well-made migration device must be reusable throughout a number of studios and tasks since asset codecs are deterministic (per engine model).
We now have experimented with one of many open supply Godot migration plugins to acquire the next preliminary outcomes:
Unity | Godot |
---|---|
![]() |
![]() |
Migrating Plugins
Over time, the Unity engine has constructed a wealthy ecosystem with tons of of builders contributing plugins, fashions, and instruments. It’s going to take appreciable effort emigrate these instruments to the brand new platforms. Nonetheless, a Unity mission migration device may assist builders port their work to different engines.
At AppLovin, we’ve created Unreal and Godot plugins for our MAX advert answer (with the Cocos MAX plugin arriving quickly), however that’s only a begin. We acknowledge that there are a lot of extra engines to cowl.
Undertaking Imaginative and prescient
The present model of the device is a proof of idea. I wished to display that we will make the most of fashionable LLMs to ease the transition between Unity and different engines and I believe early outcomes are optimistic. It is smart, as a result of basic sport engine constructions are related, however language and APIs can range quite a bit. That is precisely what LLMs are good at: generalizing and translating an concept.
As soon as we implement static asset migration, and enhance LLM prompts, I consider this device has the potential to assist tons of of builders ease the daunting activity of re-writing the whole sport from scratch on a brand new engine.
Whereas an auto-migrated mission is unlikely to work out-of-the-box, the translated enterprise logic, re-imported property, auto-generated feedback, and hints will spare engineers from days of tedious, repetitive, and formulaic migration work.
The primary three engines we might concentrate on are Godot, Cocos, and Unreal.
However we want assist from the neighborhood to get there.
Name to Motion
It’s going to take the developer neighborhood to boost different engines’ ecosystems and it’ll take that neighborhood to create open supply instruments that scale back repetitive migration work.
I consider that collectively we will create viable choices to maneuver past Unity Sport Engine.
Try our migration proof of idea on GitHub. It’s a POC now, however we’re actively engaged on it. Be part of our Discord server for assist, design questions, and subject monitoring.
The mission is launched underneath MIT license, and for those who’d prefer to contribute, you possibly can by:
- Reviewing and bettering ChatGPT prompts for Godot and Unreal
- Including prompts/instruments emigrate to Cocos
- Including static asset migration instruments for Godot, Cocos, and Unreal
- Contributing to an inventory of current plugins that assist migration
- Making this device simple to run for brand spanking new builders throughout Linux, MacOS, and Home windows
- Offering any suggestions on the structure of the device
Try the GitHub Points web page for an inventory of concrete duties that we want assist with!
(*) Code formatting was modified for higher show