What engine should use?

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 :frowning: I think that I was in General Discussion

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.

1 Like

They’re both free to download and try out, so why not give both of them a whirl to see what works for you?

If power to weight ratio is a concern I recommend a Wankel engine.

2 Likes

Will that run under Linux?

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.

2 Likes

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.

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:

Here are the Godot system requirements:

1 Like

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)

1 Like

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.

3 Likes

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:

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.

1 Like

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).

The Unity vs Ultra Engine comparisons are such a slap in the face if true :hushed: Comparisons can be found at https://www.ultraengine.com and https://github.com/UltraEngine/Benchmarks

Screenshot 9855471--1419237--upload_2024-5-26_8-34-31.png

1 Like

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.

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 :stuck_out_tongue: 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… :stuck_out_tongue: you can try it if you want or you can read this:

https://developer.unigine.com/

1 Like

I love benchmarks where they clearly don’t reveal any of their testing conditions for how they got their Unity numbers.

5 Likes

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.

The “instanced geoemetry” is just GameObjects. On my system (5950X, 64GB RAM, 3070) I get 45 FPS (~24ms).

Original

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

public class BoxInstancer : MonoBehaviour
{
    private GameObject[] boxes;

    void Start () {

        int count = 32;
        Array.Resize(ref boxes,count*count*count);
        int n=0;

        var box = new GameObject();
 
        box.AddComponent<MeshFilter>();
        box.AddComponent<MeshRenderer>();

        Vector3[] vertices = {
            new Vector3 (-0.5f, -0.5f, -0.5f),
            new Vector3 (0.5f, -0.5f, -0.5f),
            new Vector3 (0.5f, 0.5f, -0.5f),
            new Vector3 (-0.5f, 0.5f, -0.5f),
            new Vector3 (-0.5f, 0.5f, 0.5f),
            new Vector3 (0.5f, 0.5f, 0.5f),
            new Vector3 (0.5f, -0.5f, 0.5f),
            new Vector3 (-0.5f, -0.5f, 0.5f),
        };

        int[] triangles = {
            0, 2, 1, //face front
            0, 3, 2,
            2, 3, 4, //face top
            2, 4, 5,
            1, 2, 5, //face right
            1, 5, 6,
            0, 7, 4, //face left
            0, 4, 3,
            5, 4, 7, //face back
            5, 7, 6,
            0, 6, 7, //face bottom
            0, 1, 6
        };
 
        Mesh mesh = box.GetComponent<MeshFilter> ().mesh;
        mesh.Clear ();
        mesh.vertices = vertices;
        mesh.triangles = triangles;
        mesh.Optimize ();
        mesh.RecalculateNormals ();
        n++;

        for (int x = 1; x <= count; x++)
        {
            for (int y = 1; y <= count; y++)
            {
                for (int z = 1; z <= count; z++)
                {
                    boxes[n] = Instantiate(box);      
                    boxes[n].transform.position = new Vector3((x-(count/2+1))*2, (y-(count/2+1))*2, (z-(count/2+1))*2);
                    n++;
                }
            }
        }

        box.SetActive(false);
    }
}

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

GPT-4o

using System.Collections.Generic;
using UnityEngine;

public class BoxInstancer : MonoBehaviour
{
    private Mesh boxMesh;
    private Material boxMaterial;
    private List<Matrix4x4> matrices = new List<Matrix4x4>();
    private const int count = 32;

    void Start()
    {
        CreateBoxMesh();

        boxMaterial = new Material(Shader.Find("Standard"));
        boxMaterial.enableInstancing = true;

        for (int x = 0; x < count; x++)
        {
            for (int y = 0; y < count; y++)
            {
                for (int z = 0; z < count; z++)
                {
                    Vector3 position = new Vector3(
                        (x - (count / 2f)) * 2,
                        (y - (count / 2f)) * 2,
                        (z - (count / 2f)) * 2
                    );
                    matrices.Add(Matrix4x4.TRS(position, Quaternion.identity, Vector3.one));
                }
            }
        }
    }

    void CreateBoxMesh()
    {
        boxMesh = new Mesh();

        Vector3[] vertices = {
            new Vector3(-0.5f, -0.5f, -0.5f),
            new Vector3(0.5f, -0.5f, -0.5f),
            new Vector3(0.5f, 0.5f, -0.5f),
            new Vector3(-0.5f, 0.5f, -0.5f),
            new Vector3(-0.5f, 0.5f, 0.5f),
            new Vector3(0.5f, 0.5f, 0.5f),
            new Vector3(0.5f, -0.5f, 0.5f),
            new Vector3(-0.5f, -0.5f, 0.5f),
        };

        int[] triangles = {
            0, 2, 1, // face front
            0, 3, 2,
            2, 3, 4, // face top
            2, 4, 5,
            1, 2, 5, // face right
            1, 5, 6,
            0, 7, 4, // face left
            0, 4, 3,
            5, 4, 7, // face back
            5, 7, 6,
            0, 6, 7, // face bottom
            0, 1, 6
        };

        boxMesh.vertices = vertices;
        boxMesh.triangles = triangles;
        boxMesh.RecalculateNormals();
    }

    void Update()
    {
        const int instanceCountPerBatch = 1023;
        int totalInstances = matrices.Count;

        for (int i = 0; i < totalInstances; i += instanceCountPerBatch)
        {
            int batchSize = Mathf.Min(instanceCountPerBatch, totalInstances - i);
            Matrix4x4[] batchMatrices = matrices.GetRange(i, batchSize).ToArray();
            Graphics.DrawMeshInstanced(boxMesh, 0, boxMaterial, batchMatrices);
        }
    }
}

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.

1 Like

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.

1 Like