Computer Science major - but will it teach me about game engines and industry usages?

<p>I'm majoring in CIS at UPenn, but looking through the courses, there are none that teach about game engines and specific game design. I understand a lot of games are programmed in C++, but what about using things like Unity and Unreal? Isn't it important to learn those sorts of things as well? </p>

<p>Also, how will I learn about the hardware implementation behind the games? (i.e. the console, the controller, etc) Who trains me/How do I train myself for such a thing?</p>

<p>Games have to:</p>

<ul>
<li>Use efficient algorithms.</li>
<li>Interact with the operating system.</li>
<li>Communicate over the network.</li>
<li>Store and retrieve data in their databases.</li>
<li>Provide security against cheating.</li>
<li>Be properly developed and tested (software engineering).</li>
<li>Handle graphics.</li>
<li>Have artificial intelligence for non-player actors.</li>
</ul>

<p>In other words, the typical computer science course offerings should cover the topics a game developer needs to know to get a head start in the industry. You may want to add some art and physics courses for out-of-major courses.</p>

<p>For the hardware, look to electronics and computer architecture courses in the electrical engineering and computer engineering subjects.</p>

<p>CS is not a special curriculum such as “game development”. You can study and you get to study things that are universal to all kinds of software, not particularly games.</p>

<p>If you’re only in it for games, then you might consider a game programming, “real-time interactive simulation” or media technology or such curriculum. Although these may be found under the CS curriculum as well.</p>

<p>Learning game development tools is a waste of time just as courses that only aim to teach specific technologies are. Learn something, if you need to learn it, but it’s not the tools, it’s what you do with them, which in many cases requires more than just knowing the tools. That’s to say good software development practices, good understanding of the relevant algorithms, good grasp of the relevant mathematics and good ideas.</p>

<p>As ucbalumnus mentioned, a Computer Science major will give you the knowledge on where to start developing games. However, making the additional step on studying graphics engines and game development libraries, i.e. even developing them on your own, is something that only comes with practice outside of the classroom. But, of course, there are a bunch of game development programs that “supposedly” make you ready for the industry. The only thing is that these “industries” are not typically expecting people to know how to develop games in the first place - notice that there is a large gap between academics and an actual job. </p>

<p>I’d suggest to get an internship at a gaming company, i.e. Zynga, Activision, or whatever is out there. That way you’re not only enhancing your knowledge about developing games, but your resume and experience as a programmer (e.g. algorithms, software engineering, databases, etc.).</p>

<p>Most game development jobs require proficiency in specific game engines, Unity or… similar. If your CS major does not offer courses in the most popular game engines/software, you can teach yourself and start prototyping your own games. Does your university have a MEGA chapter or other game design club? These often provide organized game jams where you can form teams and spend intensive time working on prototypes using the software. </p>

<p>As mentioned above, your CS curriculum will be extremely valuable, but to gain entry into the game industry today, most top companies certainly will expect you to know their software/engines since so many applicants have that experience. But you can do-it-yourself.</p>

<p>I think it depends on the school. For example, UGA has a Beginners Game Programming Course, an Intermediate Game Programming Course and a CUDA programming course. I assume in the game programming courses they use engines like Unity and maybe even Unreal (though I doubt it) and in the CUDA programming they obviously focus on getting the most out of the graphic cards. Just look at the school’s courses.</p>