Different game engines

So, i’d like to start a conversation about pros and cons of game engines or other related things.
(dunno, is it legal? I guess so, if you didn’t like it, lol)

I tried Godot 3.6 and didn’t like it, though:

Pros:

  1. Scripts changes in real time, edit and see result instantly in debug build.
    (Upd: that includes making changes to things in 3D tab, especially if they are sleeping, though getting your character out of bounds/under floor will be problematic)
  2. Debug build is launching fast.
  3. I like the left side of interface, also its responsive?
  4. The feel of a toy.
  5. Built-in IDE (A con at the same time)

Cons:

  1. No simultaneous editor + game mode (won’t see the running game inside editor)
  2. Bunch of problems with hierarchy, no prefabs.
  3. Lots of crutches (even the “scene” that can act like prefab is it)
  4. No multiple scripts on one object
  5. Built-in IDE still worse than VS Code/Studio
  6. The right side/inspector is worse
  7. I hate pythonish, i guess GDScript is even worse than it.
  8. GPT doesn’t know 4.0+ versions, no easy dive in to there

A little Q. from that, does Unity modified or project that doesn’t reload for 5+ seconds each script change exist?
(I know there are hot-reloads addons, they’re not ultimate pill, still full needed in some cases)

I think many indie-people would love version of unity that is quick, even if its cutted to only the ability to make 2D games/platformers.

UPD 09.12.24.
So i spent 4 days and about 21 hours on this GDScript mess, and i must say, oh boy there is zero pros if it is 3D, not 2D or some platformer, it was hell, hell on earth.
If someone will ever try, try mono version with C#. There is no proper Format Document even with extension for VSCode, no extension for Visual Studio either. (Indents, Johny, they are on the trees!)
Also my VSCode is flickering like crazy even after installing new one on top of old. (If you want to know my progress it is KinematicCharacter and RigidCharacter scripts and pick and throw with gyroscope) UPD. After that VSCode again reset my hot-keys in VS, god damnit Microsoft!

P.S
Those people who said GDScript is easy and is the way to do it in Godot are crazy or made only 2D platformers, problems can arise at any time.

I find that the requirements for a game determine what engine I’ll use. For example:

  • Unreal: AAA game, large budget, multiplayer, openworld, realistic graphics, new features.
  • Unity: Indie game, mobile game, consistent, rapid prototyping, easy to extend.
  • Godot: 2d game, mod support, lightweight. You can freely modify and distribute the Godot editor.

Overall, I’d say Unreal is probably the best value for money (especially for larger teams). I just prefer c# over c++ and blueprints. I find it interesting when I see comments about 5 second compile times in Unity. I remember when I was first trying Unreal. I had a decent computer and just updating the code with a newline would require about 90 seconds to compile each time.

Unity does everything I need for most projects. My only real complaint would be with management and the runtime fee drama but that seems to have settled now.

Btw, i heard there’s some next step in unreal 5 called, that they made after hot-reload: “real time editing” or something. I guess it works like godot now, though do you see in unreal editor your character movement in game window? idk.

So that 90 sec are off the line now, i guess even in 4th version and in 5th it is like godot?
(except it doesn’t allow you add new things at runtime, new will remain in editor only)
P.S.
I like the C# more too.

1 Like

I can’t parse out this question. Can you rephrase it, maybe?

Unity has a play-mode that will run whatever scene you have loaded. Sometimes it takes a little bit of compile time, but it’s a much faster way to preview what you’re working on than making a full build. If you make changes in a script you’ll need to stop play mode and start it again, but you don’t need to rebuild the entire project.

Also, you can change variables and settings in the inspector while play-mode is running and they will change in real-time. That way you can instantly see the affect they have on your game. When you do this, the changes you make reset when you exit play-mode, so you don’t have to worry about screwing everything up.

I’m talking about domain reload that take place when you change anything in scripts or create new scripts/rename them/moving to different folder.

About what you described, i know.

I meant about special versions of Unity, that work faster, like i heard there was “Tiny Unity” project, though this one was about size.

Btw with fastscript or other hot-reload addons for Unity you don’t have to stop and launch again, though not all changes applies and that disturbs sometimes. Maybe i should just remember what is not able to hot-reload than stepping on a rake every time, when i did the unable to hot-reload thing.

No ultimative solution, but there are a few options to know:

  • Disable domain and scene reload here: Unity - Manual: Code and scene reload on entering Play mode
    It requires some attention when coding, namely objects in the scene should reset their static variables somewhere like in the awake or start method (or just generally not use static variables).
    This does reduce the loading time notably but Unity still does something with every single script in the project when a change occured.

  • The hot-reload frameworks which you already mentioned. Have only given them little try myself though as it quickly put my project in a “strange” unclear state.

  • As kdgalla hinted, one can have a globally accessible singleton with a handful of dummy variables which y can just use any time from anywhere to do tweaking when you do not want to introduce serializable variables right away.
    Of course that’s only applicable for numeric tweaks, not for actual semantic code changes. It does cover a surprisingly large amount of usecases though.

  • Wait till later in 2025 It should be be very exciting in this regard.
    Unity 7.0 is said to bring Core CLR which at least theoretically helps greatly with this problem because it finally allows to properly treat code separately from each other.
    CoreCLR and .NET Modernization - Unite 2024