Search Unity

  1. Unity 6 Preview is now available. To find out what's new, have a look at our Unity 6 Preview blog post.
    Dismiss Notice
  2. Unity is excited to announce that we will be collaborating with TheXPlace for a summer game jam from June 13 - June 19. Learn more.
    Dismiss Notice
  3. Dismiss Notice

Question What engine should use?

Discussion in 'General Discussion' started by felb312, May 22, 2024.

  1. felb312

    felb312

    Joined:
    Dec 13, 2023
    Posts:
    1
    Hello, I'm new to this, I recently started studying video game development and I had a question.

    I should learn Godot engine or Unity.

    I'm leaning towards Godot because of my PC specs: Intel Core I-7 6700, AMD Radeon HD 5450, 8GB RAM.

    Could you help me answer this question?

    Thank you so much

    Edit: Sorry, I got confused about the category :( I think that I was in General Discussion
     
  2. mgear

    mgear

    Joined:
    Aug 3, 2010
    Posts:
    9,546
    you can use anything that you like and fits your project.. : )

    what kind of game it will be and what platforms you want to publish?
    do you know some programming languages already, or you want to do visual scripting?
    do you want to get jobs in game dev or this is hobby project?

    can also try both engines (and theres many other 2d engines too) and see what feels good.
     
    Ryiah likes this.
  3. SunnySunshine

    SunnySunshine

    Joined:
    May 18, 2009
    Posts:
    994
    They're both free to download and try out, so why not give both of them a whirl to see what works for you?
     
  4. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,307
    If power to weight ratio is a concern I recommend a Wankel engine.
     
    Unifikation and MitchStan like this.
  5. MitchStan

    MitchStan

    Joined:
    Feb 26, 2007
    Posts:
    577
    Will that run under Linux?
     
  6. PanthenEye

    PanthenEye

    Joined:
    Oct 14, 2013
    Posts:
    2,139
    Asking in engine specific forums will get you biased information. My personal opinion, is that Godot is undercooked and will approach general usability of mainstream engines in about a year or two if it stays on the current trajectory. But it's probably good enough for learning.

    If you want to find work then Unity/Unreal are your only options. Available work for any other engine is miniscule in comparison and I don't see that changing in the short to mid term.
     
    SunnySunshine and Ryiah like this.
  7. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,683
    Upgrading memory is a trivial process and older memory is dirt cheap. You shouldn't let that hold you back. An 8GB module of DDR4-2400 is typically around $10 on eBay. You likely have a single 8GB module so you should be able to go to 16GB with one stick.

    If you don't know for certain just take a picture of the inside of your computer and upload it. If you can include a picture of the memory module already in there so that I can match them as close as possible.
     
    Last edited: May 23, 2024
  8. ShilohGames

    ShilohGames

    Joined:
    Mar 24, 2014
    Posts:
    3,030
    I would recommend trying both Godot and Unity. Given your current computer specs, I would also recommend focusing on building a small 2D game instead of a large 3D game. I agree with the recommendation to upgrade from 8GB to 16GB of RAM. That would be cheap and would help a lot.

    Your graphics card might be another limiting factor. It it from 2010 and only has 1GB of VRAM. When you test your game inside the editor, you will need a more powerful computer than what the game will need to run after you build it for other people to play.

    What operating system are you running? Is it at least Windows 7 or newer? Is it 64 bit?

    Here are the Unity system requirements:
    https://docs.unity3d.com/Manual/system-requirements.html

    Here are the Godot system requirements:
    https://docs.godotengine.org/en/stable/about/system_requirements.html
     
    Ryiah likes this.
  9. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,683
    I didn't even think to check Godot's system requirements. According to them you need a Radeon R5 (Kaveri) which is four years newer than the HD 5450. A quick search came up with someone else that had tried to run Godot on an HD 5450 and while Godot 3 worked Godot 4 wouldn't start due to a lack of Vulkan support.

    https://www.reddit.com/r/godot/comments/12n9ivz/new_pc_built_godot_4_does_not_start_but_version_3/

    With that in mind I recommend replacing the GPU too. Here are some example cards that support Vulkan.

    https://www.ebay.com/itm/185973566684 - RX 430 2GB for $12
    https://www.ebay.com/itm/315375977643 - RX 550 4GB for $40
    https://www.ebay.com/itm/186453118542 - RX 580 8GB for $75 (requires a PCIe power connector)
     
    Last edited: May 23, 2024
    ShilohGames likes this.
  10. kdgalla

    kdgalla

    Joined:
    Mar 15, 2013
    Posts:
    4,697
    If your goal is to make a 2D game, I also recommend Game Maker. It's pretty limited, but probably the best engine for low-res NES-style games.
     
  11. impheris

    impheris

    Joined:
    Dec 30, 2009
    Posts:
    1,730
    People would say "use the one that fits your needs" but in this case, i don't agree...
    If you know you are going to make games just for hobby, forever, then use Unity, the editor is nice, and has good tools imo (the older ones)...
    If you want to dedicate to the game dev industry and want a solid future in this industry, stay away from unity because, sadly, this company is not what you are looking for (at least not right now) and you need a good company with a good future, i would say go with godot or any other game engine but READ THEIR LICENSE AND PRICING FIRST...

    Check this video where the guy is talking about 25 game engines:
     
  12. PanthenEye

    PanthenEye

    Joined:
    Oct 14, 2013
    Posts:
    2,139
    Future what ifs are not relevant right now. Most work available is still in Unity and it's not changing anytime soon. Godot won't have meaningful industry prospects for many years unless you found your own Godot based studio.
     
    mgear likes this.
  13. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,683
    I mean if you're going to stay away from it your only other option is Unreal Engine. Good luck running that on a 10+ year old computer. Unity will at least load on a potato (which I have to say is kinda hilarious when Godot apparently won't).
     
  14. Peter77

    Peter77

    QA Jesus

    Joined:
    Jun 12, 2013
    Posts:
    6,640
    marcoantap likes this.
  15. neginfinity

    neginfinity

    Joined:
    Jan 27, 2013
    Posts:
    13,642
    To reach those numbers you typically need to render an empty screen. In 2000s an application that does nothing except clearing the window via D3D acceleratiion, with vsync off could easily reach in ballpark of 1200 fps, except those frames displayed nothing useful. You could also achieve higher "framerate", by rendering nothing and simply polling main loop.

    So this sounds a lot like a lie. Also note the "Get Early Access" button. If they're talking about "resvolutionary new technology", the expectation is that this tech does not work in many cases. See atomontage, for example.

    Also, they have no free tier, personal license does not give access to C++ API and tier comparison implies that if you have more than 10 employees, the pricing is "contact us", as you need enterprise.
     
  16. impheris

    impheris

    Joined:
    Dec 30, 2009
    Posts:
    1,730
    there are a lot of alternative (and u know the other engine i'm using) even if those alternatives are harder or lacks some features (which is my case right now), i prefer those over Unity right now without any doubt...

    Also, even if "Most work available is still in Unity" i still have my opinion about unity and my own perspective, because they already showed that they don't care about it... i'm also very stubborn :p so yeah... For me unity is not a trusted company but as i always say: i'm really hope i'm wrong, time will tell...

    Edit: also the other engine i'm using runs on my +10yo laptop and is even faster than Unity, at least 2 times faster... :p you can try it if you want or you can read this:

    https://developer.unigine.com/
     
    Last edited: May 26, 2024
    Unifikation likes this.
  17. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,307
  18. tleylan

    tleylan

    Joined:
    Jun 17, 2020
    Posts:
    692
    You wrote that you are new to this which I will suggest is like writing "I want to be a professional race car driver should I go with a Ferrari or a McLaren?" How about neither or both?

    I'm not a game developer but I was a professional software developer for decades (4 if we are counting) and learned multiple languages, frameworks, technologies, operating systems, etc. Tooling changes but fundamentals generally don't. So my recommendation isn't to learn an editor but to learn the craft.

    So pick an engine that will work on your computer (of course) but consider that Unity is at a minimum easy to get started with, available, priced right (aka free for most). You don't have to stay with it. You don't have to use it exclusively or forever. You don't learn music by choosing a brand of guitar.
     
  19. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,683
    The "instanced geoemetry" is just GameObjects. On my system (5950X, 64GB RAM, 3070) I get 45 FPS (~24ms).

    Code (csharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4. using System;
    5.  
    6. public class BoxInstancer : MonoBehaviour
    7. {
    8.     private GameObject[] boxes;
    9.  
    10.     void Start () {
    11.  
    12.         int count = 32;
    13.         Array.Resize(ref boxes,count*count*count);
    14.         int n=0;
    15.  
    16.         var box = new GameObject();
    17.  
    18.         box.AddComponent<MeshFilter>();
    19.         box.AddComponent<MeshRenderer>();
    20.  
    21.         Vector3[] vertices = {
    22.             new Vector3 (-0.5f, -0.5f, -0.5f),
    23.             new Vector3 (0.5f, -0.5f, -0.5f),
    24.             new Vector3 (0.5f, 0.5f, -0.5f),
    25.             new Vector3 (-0.5f, 0.5f, -0.5f),
    26.             new Vector3 (-0.5f, 0.5f, 0.5f),
    27.             new Vector3 (0.5f, 0.5f, 0.5f),
    28.             new Vector3 (0.5f, -0.5f, 0.5f),
    29.             new Vector3 (-0.5f, -0.5f, 0.5f),
    30.         };
    31.  
    32.         int[] triangles = {
    33.             0, 2, 1, //face front
    34.             0, 3, 2,
    35.             2, 3, 4, //face top
    36.             2, 4, 5,
    37.             1, 2, 5, //face right
    38.             1, 5, 6,
    39.             0, 7, 4, //face left
    40.             0, 4, 3,
    41.             5, 4, 7, //face back
    42.             5, 7, 6,
    43.             0, 6, 7, //face bottom
    44.             0, 1, 6
    45.         };
    46.  
    47.         Mesh mesh = box.GetComponent<MeshFilter> ().mesh;
    48.         mesh.Clear ();
    49.         mesh.vertices = vertices;
    50.         mesh.triangles = triangles;
    51.         mesh.Optimize ();
    52.         mesh.RecalculateNormals ();
    53.         n++;
    54.  
    55.         for (int x = 1; x <= count; x++)
    56.         {
    57.             for (int y = 1; y <= count; y++)
    58.             {
    59.                 for (int z = 1; z <= count; z++)
    60.                 {
    61.                     boxes[n] = Instantiate(box);      
    62.                     boxes[n].transform.position = new Vector3((x-(count/2+1))*2, (y-(count/2+1))*2, (z-(count/2+1))*2);
    63.                     n++;
    64.                 }
    65.             }
    66.         }
    67.  
    68.         box.SetActive(false);
    69.     }
    70. }

    GPT-4o's first attempt at optimization pushed performance to 144 FPS (~6.5ms).

    Code (csharp):
    1. using System.Collections.Generic;
    2. using UnityEngine;
    3.  
    4. public class BoxInstancer : MonoBehaviour
    5. {
    6.     private Mesh boxMesh;
    7.     private Material boxMaterial;
    8.     private List<Matrix4x4> matrices = new List<Matrix4x4>();
    9.     private const int count = 32;
    10.  
    11.     void Start()
    12.     {
    13.         CreateBoxMesh();
    14.  
    15.         boxMaterial = new Material(Shader.Find("Standard"));
    16.         boxMaterial.enableInstancing = true;
    17.  
    18.         for (int x = 0; x < count; x++)
    19.         {
    20.             for (int y = 0; y < count; y++)
    21.             {
    22.                 for (int z = 0; z < count; z++)
    23.                 {
    24.                     Vector3 position = new Vector3(
    25.                         (x - (count / 2f)) * 2,
    26.                         (y - (count / 2f)) * 2,
    27.                         (z - (count / 2f)) * 2
    28.                     );
    29.                     matrices.Add(Matrix4x4.TRS(position, Quaternion.identity, Vector3.one));
    30.                 }
    31.             }
    32.         }
    33.     }
    34.  
    35.     void CreateBoxMesh()
    36.     {
    37.         boxMesh = new Mesh();
    38.  
    39.         Vector3[] vertices = {
    40.             new Vector3(-0.5f, -0.5f, -0.5f),
    41.             new Vector3(0.5f, -0.5f, -0.5f),
    42.             new Vector3(0.5f, 0.5f, -0.5f),
    43.             new Vector3(-0.5f, 0.5f, -0.5f),
    44.             new Vector3(-0.5f, 0.5f, 0.5f),
    45.             new Vector3(0.5f, 0.5f, 0.5f),
    46.             new Vector3(0.5f, -0.5f, 0.5f),
    47.             new Vector3(-0.5f, -0.5f, 0.5f),
    48.         };
    49.  
    50.         int[] triangles = {
    51.             0, 2, 1, // face front
    52.             0, 3, 2,
    53.             2, 3, 4, // face top
    54.             2, 4, 5,
    55.             1, 2, 5, // face right
    56.             1, 5, 6,
    57.             0, 7, 4, // face left
    58.             0, 4, 3,
    59.             5, 4, 7, // face back
    60.             5, 7, 6,
    61.             0, 6, 7, // face bottom
    62.             0, 1, 6
    63.         };
    64.  
    65.         boxMesh.vertices = vertices;
    66.         boxMesh.triangles = triangles;
    67.         boxMesh.RecalculateNormals();
    68.     }
    69.  
    70.     void Update()
    71.     {
    72.         const int instanceCountPerBatch = 1023;
    73.         int totalInstances = matrices.Count;
    74.  
    75.         for (int i = 0; i < totalInstances; i += instanceCountPerBatch)
    76.         {
    77.             int batchSize = Mathf.Min(instanceCountPerBatch, totalInstances - i);
    78.             Matrix4x4[] batchMatrices = matrices.GetRange(i, batchSize).ToArray();
    79.             Graphics.DrawMeshInstanced(boxMesh, 0, boxMaterial, batchMatrices);
    80.         }
    81.     }
    82. }

    Between that and using a release of Unity that is no longer supported by the Oculus SDK I can only imagine it's deliberately deceptive though I suppose it's possible they're just straight up incompetent.
     
    Last edited: May 26, 2024
    mgear likes this.
  20. AcidArrow

    AcidArrow

    Joined:
    May 20, 2010
    Posts:
    11,988
    I don't think Unity is a good engine to learn the craft, after a certain point you spend most of the time adjusting and work around Unity specific arbitrary features. Maybe all the engines are like that, but I certainly believe Unity has too much of it.

    I mean, that still is a lot less than the claimed 1200fps for Ultra engine.

    Look, I find their graphs bullshit and obnoxious too, but I'm also fairly certain Unity has a ton of low hanging performance fruit they have not been going after for many years now.

    Because they have been creating the next version of the Unity feature-set and with the expectation that the new feature set must be better and faster than the old one, it wouldn't help if you kept raising the performance bar with the old features, plus they mysteriously keep introducing performance and feature regressions to the "legacy" features with every Unity release.
     
    Unifikation likes this.
  21. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,307
    If you can't trust their Unity benchmarks, why would you trust their own?
     
    Ryiah likes this.
  22. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,683
    Unreal Engine has some of this too but in a different way: it expects you to do things its way only which may clash with every other engine out there because who needs a coordinate system that anyone else uses, right? You'll also walk away from it knowing that you won't even have half the features in any other engine.
     
  23. AcidArrow

    AcidArrow

    Joined:
    May 20, 2010
    Posts:
    11,988
    I can't trust their benchmarks and I don't.

    But, I can believe that a new more modern engine can easily outperform (at least the GameObject based) Unity if that is one of their goals. I don't know if that applies to Ultra (and actually, today is the first time I've heard of Ultra, I have no opinion or agenda for or against them apart from their landing page seeming obnoxious)
    I don't disagree.

    (although specifically, the coordinate system is a non issue for me, I already use Modo, Blender and Unity and those three already use 3 different systems between them)

    But the hope is, and I won't really learn this until I finish and publish a game in Unreal, that the Unreal features work well enough that I won't need to do as much deep dives to work around them.

    So, at least in theory, I could spend more time on game design or other things that matter more as opposed to guessing why a Timeline corrupts itself if I add a new track to it (that's how I spent my Saturday by the way).

    (and my main disagreement is mainly with the "learn the craft" advice. It seems to me that it's mostly a thing you can really do after you know the tool well enough so it can get out of the way enough for you to focus on what you want to achieve and not how to achieve it. In any case, I'm guessing all modern engines are probably bad at this, but for Unity specifically, I know is very bad at this)
     
    Last edited: May 26, 2024
    Unifikation and Ryiah like this.
  24. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,683
    I just spent a few minutes skimming through the very sparse documentation and blog posts. It's not an engine in the way that we would normally consider the definition. It's a framework with a level editor, and a main loop that the user defines which means you can cut out most of the crap that would slow down a project.

    So it's an apples to oranges comparison benchmark.

    https://github.com/UltraEngine/Benchmarks/blob/main/Project Files/Ultra Engine/Source/Instanced Geometry.cpp

    Another problem I didn't notice until I looked at the code above is that it's made to run at 720p. It's a VR-focused game engine but they're benchmarking at a resolution no headset will ever be run at. Meanwhile I normally run output at 4K.

    Here's a build using the corrected resolution, URP instead of BRP, pulling the mesh from a prefab: 672 FPS.

    upload_2024-5-26_12-31-56.png
     
    Last edited: May 26, 2024
  25. Lurking-Ninja

    Lurking-Ninja

    Joined:
    Jan 5, 2024
    Posts:
    549
    FYI:

    Someone just released a scene to JSON tool on the asset store which gathers all the assets the scene uses and put them into a JSON file. Quasi exporting the Unity scene in a Unity project into a JSON.
    The same person released a plugin for Unigine to import said JSON and the assets from the aforementioned Unity project into Unigine.

    Rudimentary and all, but it works.
     
    marcoantap, Unifikation and Ryiah like this.
  26. impheris

    impheris

    Joined:
    Dec 30, 2009
    Posts:
    1,730
    it works pretty well, i already tried, it has some time released
     
  27. dogzerx2

    dogzerx2

    Joined:
    Dec 27, 2009
    Posts:
    3,977
    Godot:
    I haven't tried Godot but skimming through it does look like it has that simple workflow magic, based on nested nodes, which is not unlike Unity's GameObject + component workflow. It's also super appealing that it's open source, and if you make a game with it, it's absolutely and entirely yours.

    Unity:
    Unity being more widely used might help you if you want to join teams of other people to work with/for, chances of people using Unity being bigger. You also have the Asset store which may have handy resources. And for all its flaws Unity is a more mature engine and this may be the difference between getting stuck half-way through a project or having the solution laid out for you.

    Good news is both engines are free to try, and both have very good communities to ask questions.
     
    SunnySunshine and Ryiah like this.
  28. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,683
    Brackeys' new tutorials are really good too.



    Unless you're looking for code though this isn't an actual advantage for Unity as the default asset store license agreement doesn't lock assets to Unity. You can buy meshes, textures, music, sound, etc from the store and use them in Godot.
     
    dogzerx2 likes this.
  29. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,307
    Sure, but it's also a pain in the ass because you need to have the entire editor installed just to use the store to get those assets in the first place.
     
  30. Ryiah

    Ryiah

    Joined:
    Oct 11, 2012
    Posts:
    21,683
    True, and now the conspiracy theorist in me wonders if they made it do that to force you to subscribe to download your assets if you're over the threshold. :p
     
  31. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,307
    The pragmatist in me makes me think it was probably just the easiest way to ensure assets got imported into the projects when the asset store was first introduced and they're too lazy to change it.