Hacker News

Favorites Setup
Comment by Animats | original | What to learn to be a graphics programmer
[−]Animats · 2026-07-01 Wed 23:36 UTC · link
Do you want to make games, or do 3D engine programming?

If you want to make games, use an existing engine. Unreal Engine, Unity, Godot, and Bevy are good choices. You'll learn the higher level issues of graphics, not how to push pixels around. The real problem is making it fun.

If you want to do 3D engine programming, be aware that there are too many bad game engines. In Rust land, where I am, there are three failed renderers, one unfinished one, and the one inside the Bevy engine. Those are the major projects. There are many other "I'm going to build a game engine" projects. Building a game engine takes about two years to get to the My First Renderer point. Getting to big, highly detailed, dynamic scenes is a much bigger job. Be aware of the scale difference between the first demo and a useful engine.

If you want a job, be aware that the game industry sucks. Pay is lousy, hours are lousy, jobs end when the project is completed, and, like Hollywood, there's an army of wannabees wanting in. Also, right now, because of the collapse of the Metaverse thing, there's a glut of experienced people.

Then there's mobile. Everything is a cram job. Not enough screen, not enough compute, not enough GPU, not enough battery.

This is why most indy games now are 2D. That's do-able. Often in HTML/JavaScript.

[−]qingcharles · 2026-07-01 Wed 23:53 UTC · link
Agree with almost all of that. Unless you are targeting some obscure or old platform, I don't even know how you'd justify trying to write a 3D engine from scratch in 2026, except as a fun learning experience.

Also, think about tooling. Last time I wrote an engine from scratch, the tooling to support it probably took way more time than the engine did.

[−]charlie90 · 2026-07-02 Thu 00:58 UTC · link
AI changes this a lot.

You can realistically get a featured 3d engine+editor up and running in a couple week with AI, working solo. Probably better than what Godot or even Unity gives you. Also AI is very good at editor/tooling stuff, I've even found it getting better at graphics programming stuff, just telling it to 1-shot implementing gpu occlusion culling, ddgi probes, taa, etc. type of features. Also for stuff like animation, I just told my AI "clone Unreal's animation blueprints" and I have a pretty featured animation system now. "clone Unity's particle system" and it 1-shots it in an hour with the runtime and nice editor tools. With the advantage being you can just implement exactly what you need.

[−]rustystump · 2026-07-02 Thu 02:46 UTC · link
While the sister comment is down voted, they are not necessarily wrong. AI absolutely makes custom 3d engines easier to make because the math is very well understood.

Most games do not need 90% of the features 3d engines have. A simple geometry batcher with a bog standard rendering equation and simple single directional shadow map will go a very long way. I can confirm AI has been able to one shot this for well over a year.

However, dont expect to churn out nanite overnight

[−]qingcharles · 2026-07-02 Thu 03:57 UTC · link
You can definitely get it to make a custom 3D engine easily. I asked Gemini 3.1 Deepthink (or whatever the Ultra version is called) to make me a 3D engine that ran in CGA on 8086 XT in x86 assembler, and it one shot it perfectly with filled polys, backface culling etc.
[−]andai · 2026-07-02 Thu 00:39 UTC · link
Two years? Why does it take two years?
[−]TheSamFischer · 2026-07-02 Thu 00:55 UTC · link
Unless you’ve written one before, it’s the natural learning curve.

You can always generate one using LLM if you don’t care about how it actually works.

[−]dahart · 2026-07-02 Thu 05:45 UTC · link
And if you have written one before, it might take five years. ;)

At least, that was my actual experience at a game studio. The engine team wanted to rewrite the engine but underestimated how much was there, how much was worth keeping, and how much work needed to be done. But that was a long time ago, and the studio’s now on Unreal.

[−]flohofwoe · 2026-07-02 Thu 08:12 UTC · link
> You can always generate one using LLM if you don’t care about how it actually works.

Lol, right.

[−]legends2k · 2026-07-02 Thu 06:34 UTC · link
Two if you're lucky, and work full time on it. More like 5+ plus if you are inexperienced/part time.
[−]flohofwoe · 2026-07-02 Thu 08:05 UTC · link
Because 90% of the work on an engine goes into the tooling (DCC tool exporters, asset pipelines, editor tools, ...), and that is a never ending rabbit hole that's never quite finished.

IME two years sounds about right starting from scratch until getting everything into a usable state. You can start earlier building a game on the in-progress-engine and develop of course (and tbh that's the only sensible way to not develop an entirely useless engine, but you'll also end up with an engine that's mostly only useful for that one game, and progress on the game will be atricious in the first year or so), and of course developing both side by side means spreading the butter even thinner.

In the end though I have seen at least as many game projects fail using Unity compared to using an inhouse engine. The decision to use inhouse tech versus off-the-shelf engine doesn't make or break a game, in the end the problem is always within the team (but the engine is usually blamed first when things went south heh).

[−]opan · 2026-07-02 Thu 01:23 UTC · link
The amount of otherwise decent games that run poorly due to Unity or UE is very unfortunate. I wish people would stop recommending this stuff. I do hope Godot and Bevy are better, but I'm not sure if they are.

To name some games with very bad perf issues that I've played in the last couple years: Core Keeper (Unity), WORMHOLE (Unity, mostly see the lag in endless mode), Crab Champions (UE4, have to use nonsense upscaling stuff that makes the game hideous just to maintain 60fps at 1920x1200).

Meanwhile Terraria, Necesse, and Barony use their own engines and run great, they have aged like wine.

Out of fairness, I'll say Tiny Rogues (Unity) usually ran pretty well from what I recall, though the dev is actually working to move off Unity in the future, so he has clearly found issues with it himself.

I know there is the argument of making a game vs making an engine, and actually getting a game done and shipping it, but when you put out garbage you aren't gonna have a very positive legacy. I think it would be better to take the long way and ensure some level of quality. Games are often played for decades after release and if they are buggy or laggy, people will continue to run into that forever.

[−]patch_dev · 2026-07-02 Thu 02:03 UTC · link
This is a really bad take, sorry.

1. Engine choice is only a factor in performance. If you build an unoptimised game it will run poorly. Doesn't matter if you do it in Unity or your own engine. 2. Terraria, etc did not succeed because they use their own engines. 3. Those bad performance games have bad performance and happen to use an engine, not the other way round. 4. The quality of your game has a lot more to do with effort, care, etc than the engine you choose to use. You can create a buggy piece of crap no matter how you make it 5. Performance alone is a bad reason to roll your own engine. "Existing engines are not performant so you should roll your own" is a very bad piece of advice. 6. Making a good engine is HARD and a lot of effort. There is no guarantee that you produce anything better because you chose that path.

[−]rustystump · 2026-07-02 Thu 02:40 UTC · link
I always argued for custom game engines not for performance but so your game “feels” unique. I can spot a unity or unreal game from miles away. They have a smell if you will that is very hard to escape.

Every game that has a custom engine just feels unique and interesting in a different way. I think this is why people likely push the custom engine. Any game that passes the finish line on a custom engine often has a level of craftsmanship you dont see in standard engines.

Oblivion remake while looking good only works because the underlying logic is the same. I personally do not like the visual feel of the remake as it screams asset pack to me.

[−]patch_dev · 2026-07-02 Thu 05:36 UTC · link
I have to disagree again sorry. I can't speak to being able to "spot a unity or unreal game from miles away," but if you want to make a game, make the damn game not an engine.

I get the feeling there is a serious survivor bias happening here. Individuals who are talented and knowledgable enough to roll their own engine, make it well and quick enough, maintain motivation AND cross the finish line to actually make a game likely make a pretty good game. Now consider all the other people who tried this path and got stuck along the way. Now you're gonna recommend all that complexity and difficulty to someone because you think games should "feel" unique. Like, its just not based in reality sorry.

I think there are 2 reasons to roll your own game engine

1. Making a game isn't your top priority and you're interested in game engines

2. No existing game engine does what you need it to do and you have enough experience/knowledge to know where you're going

If you're decision is based on "I want my game to feel unique", "it might not be performance enough" or some other immaterial and ethereal concept I fear you're gonna be set up for failure.

Noita is a perfect example of when to roll your own. They push the boundaries so much that they absolutely need a custom engine. Path of Exile, another example where their vision REQUIRED a custom game engine.

[−]raincole · 2026-07-02 Thu 05:47 UTC · link
> I can spot a unity or unreal game from miles away. They have a smell if you will that is very hard to escape.

Confirmation bias. Are you saying Hollow Knight, Cities: Skylines and Escape from Tarkov have the same kind of "smell"?

It's as ridiculous as saying that you can spot a SaaS written in Rust from miles away.

[−]lowbuzz · 2026-07-02 Thu 07:37 UTC · link
Yeah, there are some unreal "slop" games, even big ones, that just look like UE5 looks with kinda default settings, but there are also games made with these engines that look nothing like that.
[−]Waterluvian · 2026-07-02 Thu 03:16 UTC · link
Today I discovered, fell in love with, and returned Tainted Grail because it is horribly, terribly optimized. Apparently the PS5 version is so bad that it’s an offense to nature. Which is sad because it’s apparently a phenomenal game.

Though maybe it wouldn’t have even existed if it wasn’t for Unity.

[−]raincole · 2026-07-02 Thu 04:00 UTC · link
> The amount of otherwise decent games that run poorly due to Unity or UE is very unfortunate

The amount is approximately zero. If someone write badly optimized code with Unity they have 200% chance to write badly optimized code with their own engine.

[−]TheRoque · 2026-07-02 Thu 08:09 UTC · link
> The amount of otherwise decent games that run poorly due to Unity or UE is very unfortunate. I wish people would stop recommending this stuff. I do hope Godot and Bevy are better, but I'm not sure if they are.

Games don't run poorly "because of unity or UE", those engines are highly optimized for the graphical fidelity they provide, It's super easy to find examples of games that run flawlessly with these engines (UE5: Arc Raiders, Unity: Arknights Endfield). Seriously, this narrative is ridiculous and needs to stop.

Some games with those engines run poorly because no matter the engine, if the developers don't take the time to optimize their games, the result will be an unoptimized mess. Is Unity engine responsible for the fact that Cities Skyline 2 devs decided to render the full polygons of every individual's teeth no matter the distance ?

I doubt those unoptimized games would do any better and in a shorter time if the studio had to build their own engines, or with any other available engine. Bevy is too barebones to be compared, and Godot is not as capable as Unity/UE.

[−]bmitc · 2026-07-02 Thu 01:55 UTC · link
I want to do something different. I want to make desktop applications that utilize 2d and 3d graphics. These aren't games, and so while game engines can work, they are a heavyweight fit. And this is certainly not game engine programming, although there may need to be a way to program a 2d system rather than relying on the litany of 2d graphics libraries that all have major limitations.
[−]purple-leafy · 2026-07-02 Thu 03:27 UTC · link
I don’t agree necessarily that if you want to make games to use an existing engine in every case. For most cases it’s good advice.

But existing engines are so “general purpose” and full of assumptions about your game. Maybe your game requires different constraints?

Especially for 2D. For instance I’m building a game, powered by my custom game engine, that specifically focuses on performance and compression and no server or database in the loop.

My engine has very specific structure and assumptions about how my games must be structured, to reach pretty extreme performance and compression scenarios based on the constraints I set for myself and my game. (Hackernews post about it soon, I’m hoping next week)

I tried building my browser game so many times previously - first with unity, then godot, then react (lol!) - but having to learn the apis sucked, and the engines were not able to meet my extreme constraints (also attributed to me not being good with the engines). But looking back, I still don’t think what I’ve achieved internally would be possible without a custom ground up engine.

But I’ve learnt so much building my own engine and game.

Especially now with LLMs, I think it’s reasonable for experienced devs to try build their own custom game engines, it’s suddenly in reach for most developers.

[−]raincole · 2026-07-02 Thu 04:06 UTC · link
> This is why most indy games now are 2D. That's do-able. Often in HTML/JavaScript.

Most indie games are definitely not in HTML/JavaScript unless you count vibe coded ones.

[−]Twisol · 2026-07-02 Thu 07:12 UTC · link
I can't speak to "most", but the incredible CrossCode displays the HTML5 shield on startup, so indie games on the web stack do exist and can be amazing.
[−]Negitivefrags · 2026-07-02 Thu 06:54 UTC · link
I am not a fan of this take.

It's possible to not make an engine, or use a 3rd party engine. You just make a game. Use SDL or something. It's honestly easier and more fun. Definately don't use Rust.

It doesn't take two years.

The more you focus on making gameplay, and not making an engine the better. Which sounds like similar advice to "use an existing engine", but it's not, because using existing engines is also a pretty sad time. You can waste just as much time farting around in Unreal as you do making your own engine.

At the end of the day, most people are just not serious about making a game. Using someone elses engine, building from scratch, both will work if you are actually making a game and not just wasting time.

[−]imtringued · 2026-07-02 Thu 07:58 UTC · link
Yeah if someone wants to do 3D engine programming they should consider reviving rend3 [0] instead of starting their own project.

[0] https://github.com/John-Nagle/rend3-hp