Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

CharlieY

macrumors newbie
Original poster
Jun 20, 2011
11
4
I am planning to study to be a game programmer and truth be told, course overview seems to point the PC being a wiser choice right now, considering C# is a major part of the course.

But thing is, the company I will work for (actually a friends startup) plans to be mobile game centric, which means Java and Swift will be used most often.

Any idea whether getting a mac (or rather, a Macbook Air plugged in to an external monitor) be a terrible idea?

Just in case anyone's curious, the course I will take is from CG Spectrum, Introduction to Game Programming:

Any info will be greatly appreciated. :)
 
Programming C# won't be a problem, Swift is obviously compatible, and Java is platform-agnostic by default (though, uh, do you really want to code in Java?) and you've already solved the issue of trying to code on a tiny laptop screen. It's probably more a matter of the hardware when it comes to things like compiling or working in 3D.
 
  • Like
Reactions: Basic75
Macbook Air seems to be the sane choice. The M1 CPU is very adequate for programming, and while the GPU isn't that powerful, it's very efficient and should be good enough for anything that goes in a mobile game.
As I understand it, you still don't know whether gamedev is something you'll enjoy, so I would advise against wasting more money on a machine you might not need. If it turns out to be your thing, you can always get a beefier machine when you need it, hopefully paid for by your employer.

Generally the Air (even the M1) is a capable dev machine, it's quite powerful, power efficient, and most open-source programming-related tooling works on it just fine.

I'm a web developer (I can do a bit of 3D modeling and some 2D gamedev in Godot though), I use an M1 Air in clamshell mode with a 43" 4K screen, and so far it's been a 10/10 experience.
 
I wrote many a game (nothing released, just fun stuff for me) on my MacBook Air 12-ish years ago. A small group isn't going to be making some giant triple A title with bleeding edge graphics. Small screens can be an issue sometimes (I wrote a few C++ and OpenGL apps on an original eeePC while traveling so I understand) but if you use the windowing features (Stage Manager in the next version of macOS, Mission Control in the current version) things are easier.

Personally for school I think the Air is a perfect machine because it's small/light enough to lug around to class, relatively affordable compared to other Macs, and way more powerful than people realize. I used to run Unity, Maya, ZBrush, Xcode, Modo, Houdini, and many others I'm probably forgetting on mine.

And as another poster mentioned...Java? Uh... Personally I would pick an engine (Unity, Godot, etc) and focus on the language of that engine because the engine will build to multiple platforms.

That being said, it sounds like you guys are brand new to game development so let me offer some advice in that regard:

-DO NOT I REPEAT DO NOT get caught up in tech arguments (x language is better than y, x engine is better than y). You can argue all day but if you're not releasing a game the argument is doing you no good. Lots of beginners (not saying you just in general) will be like "I need to use Unreal but instead of Blue Prints I'm going to roll my own solution in C++" ... yet these people can't make Tetris or Pong. If you don't know the fundamentals/basics no engine is going to make your game better. Make games, not arguments.

And on the topic of engines: For engines, I used to love Unity but have switched to Godot recently, I just like it way better. Your milage may vary. The engine really isn't important unless you're a AAA studio, finishing the game is.

-Don't expect school to teach you and don't wait to learn. I learned how to make games in high school with a book on game development in C. My school had no computer classes I just learned on my own (this was the mid-90s). If you wait for the school to teach you what you need to know you'll be failing to get a job by the time you leave because your peers dove in in their spare time and made stuff rather than wait.

-Start small. I can't stress the importance of this. A small, polished game will teach you infinitely more than a large unfinished project. And by small I mean MICRO. Your first game should be something moving a dot on the screen to a goal. Too many people follow guides/tutorials and then end up lost when it comes to making their own projects because they were busy following a recipe instead of learning to cook.

-With programming: You will get stuck, you will think you're terrible at it, you'll want to give up. This is literally part of programming and doesn't really go away, you just get better at dealing with it. Many times things will click when you skip over them and learn a different concept. It takes time and practice and writing code is a skill so you have to do it to get good at it.
 
-Start small. I can't stress the importance of this. A small, polished game will teach you infinitely more than a large unfinished project. And by small I mean MICRO.

Many, many years ago (much longer than I care to admit), a manager at the company where I worked as a contract programmer tossed a copy of Visual Basic on my desk and said, "Here. Learn this. Fast." I wrote a tic-tac-toe game and gave it away for free to others on the same project. We all played with it as a stress reliever. I still have a copy of it somewhere in some drawer... Point being it was fun and it was enough to get my feet wet and start prototyping some real stuff.
 
I wrote many a game (nothing released, just fun stuff for me) on my MacBook Air 12-ish years ago. A small group isn't going to be making some giant triple A title with bleeding edge graphics. Small screens can be an issue sometimes (I wrote a few C++ and OpenGL apps on an original eeePC while traveling so I understand) but if you use the windowing features (Stage Manager in the next version of macOS, Mission Control in the current version) things are easier.

Personally for school I think the Air is a perfect machine because it's small/light enough to lug around to class, relatively affordable compared to other Macs, and way more powerful than people realize. I used to run Unity, Maya, ZBrush, Xcode, Modo, Houdini, and many others I'm probably forgetting on mine.

And as another poster mentioned...Java? Uh... Personally I would pick an engine (Unity, Godot, etc) and focus on the language of that engine because the engine will build to multiple platforms.

That being said, it sounds like you guys are brand new to game development so let me offer some advice in that regard:

-DO NOT I REPEAT DO NOT get caught up in tech arguments (x language is better than y, x engine is better than y). You can argue all day but if you're not releasing a game the argument is doing you no good. Lots of beginners (not saying you just in general) will be like "I need to use Unreal but instead of Blue Prints I'm going to roll my own solution in C++" ... yet these people can't make Tetris or Pong. If you don't know the fundamentals/basics no engine is going to make your game better. Make games, not arguments.

And on the topic of engines: For engines, I used to love Unity but have switched to Godot recently, I just like it way better. Your milage may vary. The engine really isn't important unless you're a AAA studio, finishing the game is.

-Don't expect school to teach you and don't wait to learn. I learned how to make games in high school with a book on game development in C. My school had no computer classes I just learned on my own (this was the mid-90s). If you wait for the school to teach you what you need to know you'll be failing to get a job by the time you leave because your peers dove in in their spare time and made stuff rather than wait.

-Start small. I can't stress the importance of this. A small, polished game will teach you infinitely more than a large unfinished project. And by small I mean MICRO. Your first game should be something moving a dot on the screen to a goal. Too many people follow guides/tutorials and then end up lost when it comes to making their own projects because they were busy following a recipe instead of learning to cook.

-With programming: You will get stuck, you will think you're terrible at it, you'll want to give up. This is literally part of programming and doesn't really go away, you just get better at dealing with it. Many times things will click when you skip over them and learn a different concept. It takes time and practice and writing code is a skill so you have to do it to get good at it.

Thanks so much for the great insights Chrono! Will make sure to remember that.

Say, I hear people saying learning C# and .NET first is more important before touching Unity. Do you say there is any truth in that? Thinking about buying a book to learn the fundamentals (or rather back on track) first before I spend top dollar on courses?

This is the book I'm interested in:

I know the level of programming and game development I will be doing for the next two years won't nearly bottleneck even a M1 Macbook Air, but what I am more worried about, is that the course might teach me using PC only tools.

I am actually pretty well off and can easily spend the money on a upper tier MBP, but fact is, only the screen size is benefits my productivity. Being a 40 year old whose eyesight will only get worse from here (don't laugh), it's actually a decent plus. What makes me hesitant about it is spending $2500 on the 16-inch? I quite frankly don't need the power yet and the M2 Pro/Max models (nevermind the standard 15" Macbook that is quite frankly the perfect fit for me) is coming out mid-late 2023. Decisions decisions. :/
 
As an Amazon Associate we earn from qualifying purchases.
I am planning to study to be a game programmer and truth be told, course overview seems to point the PC being a wiser choice right now, considering C# is a major part of the course.

But thing is, the company I will work for (actually a friends startup) plans to be mobile game centric, which means Java and Swift will be used most often.

Any idea whether getting a mac (or rather, a Macbook Air plugged in to an external monitor) be a terrible idea?

Just in case anyone's curious, the course I will take is from CG Spectrum, Introduction to Game Programming:

Any info will be greatly appreciated. :)
Not a programmer but have taken courses at schools like the one you linked for modeling/animation.

It has been my experience that these schools don't actually teach you anything that you couldn't already do on your own. The "success stories" are individuals who came into the program with a fair amount of skill/knowledge who merely honed their portfolios while attempting to land a job. The rest just end up getting a piece of paper and often never actually find work in the business.

I agree that learning a specific language and getting married to it is a mistake. Programming languages change all the time and you are expected to keep pace with those changes. My Dad was a programmer and throughout his career he had to continually learn new programming languages because each employer used something different or changed their platforms.

If you do go to this school, go into it with the notion that it is doing nothing for you and that you are going to be doing everything you can to be better than the very top 1%. The job market in gaming/entertainment is like trying to get a job in acting. Very few actually succeed, and the ones who do, stand out ahead of their peers by a huge margin.

Ultimately the person who is responsible for educating you is you. You only get out of it what you put into it. Schools like these are more about getting your tuition than about actually preparing you for a career. I kid you not. I agree with Chrono1081... don't try to catch the football before it has even been thrown. You have a lot of work ahead of you and the prize is getting that dream job but you're going to have to put your time in the trenches to get there. I worked in 3D for many years... it's not all that glamorous as it sounds. It's a lot of hard work. Sometimes it doesn't even pay well. You either love it or you don't... it can really be a love / hate relationship at times. Playing video games may be fun, but the actual creation of them is not nearly as entertaining to some. Programming is programming... be it for games or for some accounting firm. It's code. You got to love the code because that is what you will be doing day in and day out.

Good luck in your endeavors.
 
Say, I hear people saying learning C# and .NET first is more important before touching Unity. Do you say there is any truth in that? Thinking about buying a book to learn the fundamentals (or rather back on track) first before I spend top dollar on courses?

There is absolutely 100% truth in that (the C# part, .Net can be considered it's own thing, focus on learning the C# language). Language first vs engine first is a big contentious issue in the gamedev world but it's the people actually making games that suggest language first, the enthusiasts who like the idea of making games clamor about engine first.

The problem with the "learn to program while using an engine" approach is that you're never getting a real foundation, you're getting a foundation with respect to how the code operates within the engine, and those are very different things. This causes issues when people who learned while using an engine try and break away from tutorials and do their own thing. They never get the skills to "think like a developer" and end up getting lost when trying to implement their own ideas.

You don't have to spend years leaning C#, but I would suggest learning C# on it's own for a month or two until you're comfortable with the following:

Data Types
Variables
Conditionals (if/else, switch)
Loops
Functions
Structs
Classes
Pointers

Once you're comfortable with the concepts of the above (and can write simple command line code) *then* dive into the game engine. It will be a very different world at first but it's a much easier to navigate world when you have the fundamentals.

You also have to be sure to practice and write code and don't stop learning C# just at that list. That list just gives you enough to start diving into the game engine and you will have a LOT to learn in the game engine.

One more thing, don't rush your learning. If you rush it, you'll forget it. Take your time on each concept and when you think you got it, take a break and look at it again the next day before starting something new. If you get stuck on a concept, try another one and come back to it. Sometimes learning something else makes the thing you were stuck on click.

Also don't try and memorize everything, just know where to find it. Muscle memory will form with your most used language features but don't get hung up trying to remember things like every possible string manipulation function. That's not realistic (and is why developer documentation exists, so you don't have to memorize it). Looking up documentation is a huge part of development so get used to it, especially when you start working in Unity.
 
  • Like
Reactions: MacCheetah3
Don't expect school to teach you
If you do go to this school, go into it with the notion that it is doing nothing for you

I do not agree with this as stated. Instead, I would warn schooling, at best, can give someone the fundamentals. Similarly, tasks rarely go by the book. So, as mentioned in at least one earlier reply, you can’t simply parrot what you’ve been shown.

-Start small. I can't stress the importance of this. A small, polished game will teach you infinitely more than a large unfinished project. And by small I mean MICRO. Your first game should be something moving a dot on the screen to a goal. Too many people follow guides/tutorials and then end up lost when it comes to making their own projects because they were busy following a recipe instead of learning to cook.
This mentality can also help when moving to larger outfits (i.e., when working in a team, each person is typically responsible for mastering just one of the the parts/components).

One more thing, don't rush your learning. If you rush it, you'll forget it. Take your time on each concept and when you think you got it, take a break and look at it again the next day before starting something new. If you get stuck on a concept, try another one and come back to it. Sometimes learning something else makes the thing you were stuck on click.
Solid advice for any task/project.

I’ve had many instances following those breaks in which I laughed and thought while looking at my work, “What was I thinking? Why didn’t I just do it this way?” I had made a multi-line mess in the process of solving problems but now realized the best solution only required a line or two.


Anyway, back to the original subject.

I know the level of programming and game development I will be doing for the next two years won't nearly bottleneck even a M1 Macbook Air, but what I am more worried about, is that the course might teach me using PC only tools.
In my experience, this is true. I would suggest staying as close to their required/recommended tools/resources if you do choose to follow a course.

I chose to purchase a mid-range PC laptop solely for classwork. However, I had classmates that used their MacBook Pros and VMs. Actually, even if you had a Windows PC, my instructors suggested we use a VM per course for ease: backup/recovery/snapshot, easy cleanup when the course is over, etc.

With that said, an M1 MBA probably would be okay. As an alternate, perhaps do a search for recent Intel MBPs possibly on the cheap/affordable to dual boot. Lastly, a reminder:

As I understand it, you still don't know whether gamedev is something you'll enjoy, so I would advise against wasting more money on a machine you might not need. If it turns out to be your thing, you can always get a beefier machine when you need it, hopefully paid for by your employer.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.