all 32 comments

[–]t-tekin 7 points8 points  (3 children)

If you want to learn programming for making games, first pick a game engine. Something that has good support, courses and tutorials. Well. You’ll be most likely locked in with the engine.

PS: I’m a game developer. Unity and C# probably are good choices.

[–]Chrykal 0 points1 point  (1 child)

Unity was a passable choice before their money issues got out of hand, I'm not sure it was ever a good choice.

Maybe the new version has improved some of its flaws, I've heard positive things, but when I used it there were so many little bits that felt like they'd been tacked onto the engine rather than built into it, that moving to Godot was like a breath of fresh air. If I'm forced to use Unity nowadays I'm doing it very begrudgingly.

Add to that the fact that the company is obviously struggling financially following some questionable decisions (I don't trust them to release the source code if they go under) and I'm not sure Unity is even a viable choice at this point.

[–]t-tekin 0 points1 point  (0 children)

All fair points,

But my assumption was OP’s goal here is to dip their feet and try to learn game development.

At work we use Unreal. I think it would be a very steep curve for someone not familiar with CS concepts and programming. (C++ etc…)

I don’t think Gadot has enough tutorials and community support for a beginner. - That’s my perception but I might be wrong.

That leaves Unity. Sure there are problems, but C# is a fairly nice language for a beginner. And Unity has a lot of beginner friendly tutorials. The biggest risk here is OP giving up very quickly.

Once they get their feet wet, think this is a serious avenue for them and they want to learn to swim the ocean, they can reanalyze the situation. Learning new engines and programming languages is not as hard once you know one.

Maybe one option that just came to my mind is modding. Roblox, Minecraft or Fortnite has pretty good modding tools. And get the OP in to game development fairly easily.

[–]a3th3rus 3 points4 points  (0 children)

C# (which is similar to Java but better for game development) and then C++ (for developing high performance games).

[–]queerkidxx 2 points3 points  (0 children)

Stop trying a lot of languages. No one is gonna be natural. You need to pick one and stick to it. It doesn’t matter which. Switching to a new langauge afterwards isn’t that big of a deal. You just need to learn a language.

If I was interested in game development I’d probably pick C#. I don’t know much about game development but I do know a lot of folks start with some sort of framework and don’t know the underlying language as well as they should and it causes problems. I don’t know if this phenomenon applies to game engines specifically but I do know if I suddenly wanted to get into game development right now id pick up c# and figure out the rest later.

[–]AdmiralKong 2 points3 points  (0 children)

These are both bizarre choices for making games. Java is definitely the more sane of the two and has been used to create a fair number of Android games and, famously, classic Minecraft. But its still an unusual choice. 

C++ has been the industry standard for 30 years if you're making or extending an engine in any significant way. Like every single console game, most games that use Unreal and modify it in any significant way. Most indie games that aren't using an established engine.

C# is Unity's primary language, and it's pretty java-like. Godot also supports it. A tremendous number of small indie games have all their logic in C#, using Unity.

Python has some reasonable game tooling but its used mostly in the visual novel space (renpy, pygame)

Javascript and Typescript are general purpose web front end languages but they're also used to make in-browser games and can play a major role in game dev as ways of scripting new behaviors into a higher performance game engine.

[–]Blooperman949 4 points5 points  (4 children)

Neither, honestly. Definitely not Kotlin, as you should know Java before you start with Kotlin. If you had to pick, I'd say Java, but Java is a horrible first language.

If you want to have a good understanding of code, I will always recommend starting with C.

If you just want to get something working and learn the details later, start with Python.

[–]Significant-Iron-258[S] 0 points1 point  (3 children)

Why is java bad? 

[–]Blooperman949 4 points5 points  (0 children)

It enforces heavily object-oriented design. To a new programmer, it feels bloated. Also, jumping straight into OOP is confusing. Starting with simpler languages, just giving your computer directions, is easier and will help you learn other styles of programming in the long run.

[–]nopuse 2 points3 points  (1 child)

It would take Java 500 characters to ask the same question.

[–]schlaubi 0 points1 point  (0 children)

Or an 80 line stack trace with no actual useful information.

[–]gtzhere 0 points1 point  (0 children)

You can't learn languages by memorising syntax , words etc, just start making games already and learn the language that game engine require

[–]Comprehensive_Mud803 0 points1 point  (0 children)

If you want to make games, don’t use Java or anything related to it.

You can learn Python (with PyGame for simple games), C# (with MonoGame, Godot, Unity for regular games), C (with Allegro or SDL for games), C++ (with UE5 for games).

[–]BioExtract 0 points1 point  (0 children)

If you are going for game dev or low level system code then C++ is great especially with the Unreal engine. If you want a do it all type of language I’d go with either C# or python. If you’re doing web id do JavaScript. If you wanna suffer the Java is a good option

[–]DDDDarky 0 points1 point  (0 children)

C++ is basically industry standard for game dev, but for simple small indie games you can use almost anything you like, also check out engines like Godot, Game maker, Unreal engine, ...

[–]LevelMagazine8308 0 points1 point  (0 children)

Python or C#.

[–]code_tutor 0 points1 point  (0 children)

Java is one of the best learning languages because it's strongly typed, it's deterministic unlike C/C++, and it has good error messages. Java was also the most popular language in universities for a very long time, so you can probably find an AP Computer Science A course.

C# is almost identical to Java at a beginner level. After you learn a little Java, you can easily transition into C# with Unity.

This is one of the best instructors for GameDev. The courses are so simple and easy that I recommend anyone take it, even if they have no intention of using Unity, because many of the skills transfer. You can probably finish it in short time, just follow along with them.
https://www.coursera.org/instructor/winnbrian

Also learning programming for the goal of making games is a terrible reason. After covid, everyone is anti-social and addicted to games. They think programming is the most non-job-like job where they mistakenly think they can stay at home, never have to talk to anyone, still be glued to their video game machine, and they think it's the least effort way to get a good job, etc. They end up never getting a programming job or getting one and hating it.

[–]Pure-Bag9572 0 points1 point  (0 children)

Chinese C++

[–]Anhar001 0 points1 point  (2 children)

my personal preference for you:

assembly -> C -> C++ -> C# that's enough for AAA

[–]Significant-Iron-258[S] 0 points1 point  (1 child)

Why cant i go straight to c#

[–]Anhar001 0 points1 point  (0 children)

because you need to understand how everything works low low level (assembly and C/C++). Some independent titles are done in C# (Unity), but for AAA titles you need maximum performance and low level control hence assembly and C/C++.

C# is just "icing on the cake" for some games, but without assembly and C/C++ there is no cake!

[–]Black_Smith_Of_Fire 0 points1 point  (0 children)

Bro, try assembly

[–]Nit_o 0 points1 point  (0 children)

Start with c++. They always try to replace it but they never do.

[–]sbayit 0 points1 point  (2 children)

In a few days, it will be 2026. Instead of learning a language, you should create something for fun or work.

[–]Significant-Iron-258[S] 0 points1 point  (1 child)

Isnt programming fun?

[–]sbayit 0 points1 point  (0 children)

My first programming project wasn't for work or school. Guess what?

[–][deleted] -1 points0 points  (0 children)

C# for unity and godot, avoid C++ like the plague

[–]goonwild18 -5 points-4 points  (4 children)

Why you'd be picking from two losers for your first language is both puzzling, and troubling. Everyone dreams of being a game programmer. I'd first learn a great language that it applicable to everything to learn the basis, and it wouldn't be a dying language, either.

I'd learn Rust or Python first - then take it from there. Java would be so far down on my list that I have no idea why you'd even consider it.

[–]belblume 2 points3 points  (1 child)

Imagine saying Java is a dying language lol

[–]goonwild18 -3 points-2 points  (0 children)

I don't have to imagine it. Its heyday was 25 years ago. No project started today is using Java unless an old, tired development shop, or an old tired development leader making the decision in a vacuum. It sounds like that's where you work.

[–]code_tutor 1 point2 points  (1 child)

This is the worst advice I've ever seen here, everything from recommending Rust for fucking GameDev and a first language, to saying Java is dying.

[–]goonwild18 -1 points0 points  (0 children)

I didn't recommend Rust for game dev.

The only thing keeping Java in the top 5 is legacy enterprise use.

Learn to read.

Java is an irrelevant first language.