00:00
00:00
Newgrounds Background Image Theme

Someone gifted MetalSlayer69 supporter status!

We need you on the team, too.

Support Newgrounds and get tons of perks for just $2.99!

Create a Free Account and then..

Become a Supporter!

Porting From Unity to Godot, Need Tool Recommendations

368 Views | 4 Replies
New Topic Respond to this Topic

Well, I've said it before and I'll say it again, I'm not currently at any risk of meeting the thresholds of Unity's new Runtime fee, but it's such a scummy move that I figure they'll find a way to scam smaller devs eventually; I want out.


I'm sitting on a small mountain of 2D assets and sprite animations from the last game I worked on, I think I'm looking at dozens of hours of work if I have to redo it all by hand. I've been looking for tutorials and tools to make life easier, but so far the only tools I've seen on the art side is for exporting 3D Unity assets as FBX.


Does anyone know of a tool that could export animations (2D sprites using Unity's animation tool) to Godot, or any other tool that speeds up the porting process? I could use all the help I can get.


Just to make sure: is the issue that you no longer have the source images (either a series of images like hero_walk_0.png, hero_walk_1.png, hero_walk_2.png, hero_slash.png or as a spritesheet of hero_animations.png) and need to extract them from Unity? (I could find sprites from my old Unity game Cat's Eye on my hard drive in the Unity project's directory \Documents\Unity\CatsEye\Assets\Sprites.) Or that you'd like to export Unity's GameObjects with all of their associated info about how the sprites are arranged in different animations that the object could play and import them as Nodes in Godot (which I don't think is doable)?


If you have the source images then yeah making 100 different characters using the usual procedure for animated sprites with AnimatedSprite nodes would be tedious, but most of it involves doing things that seem like they just have to be done to make the game work: making names for and dragging images in for each of the different animations that it might show like idle, walking, slashing etc, setting properties like FPS rates for each of them, and writing code to switch between states at appropriate times.


My newsfeed has random GameDev tips & tricks


At 9/16/23 10:31 AM, 3p0ch wrote: Just to make sure: is the issue that you no longer have the source images (either a series of images like hero_walk_0.png, hero_walk_1.png, hero_walk_2.png, hero_slash.png or as a spritesheet of hero_animations.png) and need to extract them from Unity? (I could find sprites from my old Unity game Cat's Eye on my hard drive in the Unity project's directory \Documents\Unity\CatsEye\Assets\Sprites.) Or that you'd like to export Unity's GameObjects with all of their associated info about how the sprites are arranged in different animations that the object could play and import them as Nodes in Godot (which I don't think is doable)?

If you have the source images then yeah making 100 different characters using the usual procedure for animated sprites with AnimatedSprite nodes would be tedious, but most of it involves doing things that seem like they just have to be done to make the game work: making names for and dragging images in for each of the different animations that it might show like idle, walking, slashing etc, setting properties like FPS rates for each of them, and writing code to switch between states at appropriate times.


There's no issue with the source images. Every sprite sheet and source art is backed up on git and a healthy multitude of hard drives.


The issue is what you guessed: Godot and Unity each have sprite animation infrastructure with many similarities, but I've been unable to find a tool that can export a unity sprite animation to a format that Godot can read as one of its own. The process for making one is similar, naming and grouping into trees follows essentially the same structure, so I'm just throwing a Hail Mary here hoping there's a tool that'll save me from doing everything by hand again.


I suspect that such a tool doesn't exist, but if you haven't already then maybe try asking at the Godot Q&A.


If not, and if most of the GameObjects have similar structure and the same set of animations where the only thing that changes is the root filename for the animation frames, then in principle it would be possible to write a script extending AnimatedSprite that would load all of the animation frames in for you so you just need to specify a location to look to load all of those frames. But in practice, I worry that such an approach could cause performance issues since it would need to run load() instead of preload() statements a lot of times whenever a character gets instantiated. Probably better to bite the bullet and set up AnimatedSprites manually instead of trying to get fancy with code unless it would be a truly herculean task.


My newsfeed has random GameDev tips & tricks


At 9/16/23 05:41 PM, 3p0ch wrote: I suspect that such a tool doesn't exist, but if you haven't already then maybe try asking at the Godot Q&A.

If not, and if most of the GameObjects have similar structure and the same set of animations where the only thing that changes is the root filename for the animation frames, then in principle it would be possible to write a script extending AnimatedSprite that would load all of the animation frames in for you so you just need to specify a location to look to load all of those frames. But in practice, I worry that such an approach could cause performance issues since it would need to run load() instead of preload() statements a lot of times whenever a character gets instantiated. Probably better to bite the bullet and set up AnimatedSprites manually instead of trying to get fancy with code unless it would be a truly herculean task.


Q&A is pretty sparse at the moment, and I feel like there's a more elegant solution that wouldn't cause performance issues down the line, but that could just be magical thinking since I'm out of my depth there. Bullet-biting might just be the thing to do for now


That said, I wouldn't be too surprised if a tool like that crops up in the coming weeks or months if there's really a mass exodus of Unity users. I can't be the only one facing the monotony of porting from one engine to another right now, and I bet I've got less on my plate than a lot of the people in the same boat. I won't wait around for it, but I'll keep looking.


I guess that makes this an open call for any tool that makes any part of the porting process easier, since it's all been pretty hard to find, so far.