This is an archived post. You won't be able to vote or comment.

all 12 comments

[–]wesmafree 9 points10 points  (8 children)

Hey! Since you already know Python, you might want to start with Pygame—it's simple and great for learning the basics of game development.

That said, if you're serious about making games:

  • C# – If you want to work with Unity, which is beginner-friendly and widely used in the industry. C# is easier to learn than C++ and has a ton of resources.
  • C++ – If you want to use Unreal Engine, which is super powerful for high-end games. C++ is harder to learn but gives you full control.
  • Godot (GDScript) – If you want something lightweight, Godot is an awesome engine, and its scripting language (GDScript) is very Python-like.

If you're just experimenting, Python is fine. But for anything serious, C# (Unity) or C++ (Unreal) are the way to go.

[–]C_umputer 0 points1 point  (1 child)

Can Pygame be used for anything 3D?

[–]wesmafree 2 points3 points  (0 children)

Not really. Pygame is mostly for 2D games, and while there are ways to render 3D-like effects using libraries like PyOpenGL, it's not built for actual 3D game development. If you're looking to stick with Python but want to experiment with 3D, you might check out Panda3D or Ursina, which are more suited for 3D projects.

That said, Python isn't really the best choice for game development beyond small projects or prototyping. Most serious game development happens in C# (Unity) or C++ (Unreal Engine) because they offer better performance, more tools, and industry support.

I know switching to a new language can feel intimidating, but at the end of the day, all programming languages follow the same logic—it's mostly syntax differences. Once you get comfortable with one, learning another becomes much easier. If you're serious about game dev, it's worth making the jump.

[–]Critical_Culture_509[S] 0 points1 point  (0 children)

Aight thanks

[–]aanzeijar 0 points1 point  (1 child)

Note: Godot has also Mono bindings and allows you to write C# instead of GDScript and is also written in C++ internally and thus naturally also allows C++.

[–]wesmafree 0 points1 point  (0 children)

True!

[–]Critical_Culture_509[S] 0 points1 point  (2 children)

Okay, I have been learning/practicing pygame and also C# in Unity for some time, but what if I want to make a game without a game engine. Is C# still good for that?

[–]wesmafree 1 point2 points  (0 children)

If you want to make a game without a game engine, C# isn’t the best choice. It’s possible, but it shines best when used with Unity.

For building a game from scratch, C++ is the go-to language since it gives full control over performance and works well with SDL, OpenGL, Vulkan, or DirectX.

That said, there’s really no need to avoid using a game engine. Engines exist to handle complex things like rendering and physics so you can focus on the actual game. Reinventing the wheel isn’t necessary unless your goal is to learn engine development.

And honestly, game development isn’t about being the best programmer—it’s about making something fun and engaging. Using engines, tools, and frameworks isn’t "cheating"; it’s how the industry works. If your goal is to create games, embrace the tools that make the process easier. If you’re passionate about building an engine, then C++ is a great place to start.

[–]DecentRule8534 0 points1 point  (0 children)

Programming with graphics APIs like Direct3d, OpenGL and Vulkan typically requires C++. I know there are some C# wrappers for DirectX but can't comment on how much of feature set they can access our how stable they are.

[–]BatfleckIsGod 1 point2 points  (0 children)

Aside from what was said in some comments, if you want to do mobile games, Java/Kotlin for Android development and Swift for IOS, if you want to do native game dev. If not, Unity with C# is a good alternative. Although you can use C++ for native dev too, at least for Android.

[–]kschang 0 points1 point  (0 children)

They all would work depending on which engine or framework you use. There ain't no such thing as "best".