Skip to content

Instantly share code, notes, and snippets.

@fguillen
Last active February 1, 2024 10:49
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fguillen/1a1f9f9053e9b663326023b9c22f00c7 to your computer and use it in GitHub Desktop.
Save fguillen/1a1f9f9053e9b663326023b9c22f00c7 to your computer and use it in GitHub Desktop.
My Godot VS Unity compare list

Godot is worst (IMO)

  • No way to disable a node (godotengine/godot-proposals#370) neither in code :? (https://godotengine.org/qa/49696/how-to-disable-enable-a-node?show=49754#a49754)
  • Poorer script editor: No multi-cursor (possibility of integrate with VSCode)
  • No realtime Node/Component values on play mode (only explicit external variables)
  • Separate play window and When pause play mode the game screen is hidden
  • Less reactive editor interface. Drag and drop textures
  • Many tricks in KinematicBody like "is in floor" passing a special value to UP in move_and_slide
  • Using -1 to mean Default :?
  • External variables changes don't get activated until you blur the field
  • Not in-place resource rename (a popup is opened)
  • Multi sprite textures have to be splitted all the time
  • naming confusion between Scene-Scene and Scene-Node
  • Root Nodes have to have a precise class. Instead of a generic object that is being configured through adding Components ala Unity
  • No possible to "deactivate" Nodes in Word tree
  • Shared resources gives a lot of headaches
  • Output window is not filterable
  • Not strong typed and some typo errors only detected in run mode
  • Nor easy way to disable a Node. What is not good for testing/debugging when you want to rid of an annoying Node in the scene temporarily
  • Reassigning node parent is convoluted. You have to remove the child first from the previous parent, then backup the Transform, assign new parent, reset Transform
  • Not possible to open 2 Godot editors at the same time. Very bad for copy paste from old projects. Yes it is possible: https://godotengine.org/qa/8678/open-2-projects-at-the-same-time-on-osx
  • Missing some object initialization callbacks. Like the one after Awake (Start). Godot has _ready() (Awake()) but not the one that is executed after all the other objects have been executed their _ready()
  • Cyclic dependency errors (not well managed when 2 classes reference each other)
  • When click on a reference in the inspector the corresponding Scene Node is not highlighted and I am not sure which one is
  • Modifying the Scene in play mode (Remote mode) it is not as powerful as in Unity. You can not delete Nodes for example :/
  • Particles are much less flexible. I am having issues to randomize color (from a collection), randomize sprite (from a spritesheet)
  • No image type tiled like in here: https://www.youtube.com/watch?v=_-9MrJfbysM Or I haven't found it yet
  • No possible to copy Inspector properties in block from Node to Node (https://www.reddit.com/r/godot/comments/gwgc4d/a_way_to_copy_particular_object_settings_in/)
  • No real private methods/properties. The style guide recommends to use "" prefix. but it doesn't hide the property.. and also this same prefix is used by virtual methods which in fact it makes the "" prefix mean for methods that should be overriden and methods that should not be called :?
  • No previsulization of Assets, like sounds, images
  • Undo not always work when you are manipulating the scene (like with Scale)
  • Animation has a hardcoded duration, and it is not related to its final keyframe. It make tedious to have to adjust the duration to the position of the last keyframe by hand
  • No possible to stretch or squish animations :/
  • No buttons state animations
  • When editing a Scene by Editable Children, the changes can't be uploaded to the original Scene. Making difficult to customize Scene directly on a bigger Scene where it will be integrated. In unity you can upload the changes up
  • When in debug break point the Game window dissapear :/

Can't decide wich is better

  • Buggy: I have to restart Editor to see a export variable in the Inspector
  • Prefabs Variants Vs Inherited Scenes (I am still thinking what is better, maybe neither)

Godot is better (IMO)

  • Better git diff even on changes on internal values
  • More beautiful interface. More integrated
  • Autocomplete for GetComponent thingy
  • Order of the Node into the Scene hierarchy matters for rendering order
  • 10 times easier TileMap system
  • Start play mode much faster (export also faster)
  • Godot QA is better than UnityAnswers (https://godotengine.org/qa/)... not sure: it doesn't allow to upload images
  • More powerful out-of-the-box Nodes (Components), like a better camera, a PathFollow node, ...
  • Better/more complete built-in components/nodes hierarchy tree (buttons, ...)
  • Reload script while the game is running (does it work?)
  • Scenes (Prefabs) can be run on their own
  • Changing a Node (Object) property in the editor shows a tip message in the output console to show how the property is called in the script level
  • Better collision layer configuration separating Layer and Mask
  • Visibility notifier.. yes!! (so sad is not working as expected)
  • You can change Node.scale.x directly and not create a new Vector2 ... yes!
  • Possibility or prioritise the script process order
  • Built-in tween Node (Component), simple, intuitive and easy to use (DoTween is more powerful though)
  • It has official code style guides: https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_styleguide.html
  • Rotate without using Quaternians .. yes!. And optional use of degrees.. yes yes
  • Instant export
  • Very small export build
  • Special built-in workflow to work with Singletons
  • Many built in variable export types, not only number and range
  • UI Theme: to create custom / coherent theme for all your UI elements
  • ParallaxBackground implementation out of the box (https://docs.godotengine.org/en/stable/classes/class_parallaxbackground.html)
  • Default Texture import, so no more: Compression:none, Quality: high. For each imagen
  • AudioBus looks much intuitive than the AudioMixer Unity solution
  • Signals are very easy to implement. They are core of the architecture
  • "Make Unique" short cut make extremely easy to have custom properties in shared resources like Materials
  • On AnimationPlayer when Nodes renamed the Animation keeps track of the name changes
  • _draw() function much more flexible and powerful than DrawGizmos. A part that you have to call _draw() if the variable is modified
  • Hardocoded values in the script are taking in consideration in the editor, and you can reset to hard code value from the editor inspector
  • The input system is understandable... Unity one is totally over-engineering
  • The default drawing order is based on the other in the inspector. Then is easier to configure what is drawn on top of what
  • CustomResources work much better than ScriptableObjects: https://www.youtube.com/watch?v=vzRZjM9MTGw
  • Animator is much much easier to use
  • Game pause based on branches!
  • CanvasItem > Ordering > Y short enable: easy way to put sprites on top of others depending on their Y value
  • Animations values can be changed in code: https://docs.godotengine.org/en/stable/classes/class_animation.html#class-animation-method-track-set-key-value
  • Easier and more intuitive Volume tools. Including root functions to convert linear_to_db
  • Animations can have all the callback keyframes you want. In Unity there were only one. In Godot you can call any function in a Script on a keyframe.
  • Tweens are native in Godot. And they are more simpler and intuitive. DoTween looks more powerful but I haven't missed anything from DoTween so far.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment