Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
devilmouse
Mar 26, 2004

It's just like real life.

My old boss, now VC posted:

To my former co-workers at Zynga. If you are laid off, consider your severance "seed funding" for no equity & go build great things!

It really is a great way to start a business!

Adbot
ADBOT LOVES YOU

Shalinor
Jun 10, 2002

Can I buy you a rootbeer?

devilmouse posted:

It really is a great way to start a business!
Seconded. Assuming you have a side something up to the point where you can hit the ground running, severance is super great as seed capital.

Frown Town
Sep 10, 2009

does not even lift
SWAG SWAG SWAG YOLO

devilmouse posted:

It really is a great way to start a business!

Yep :)

Or just to chill out and re-evaluate what you want out of life. I decided I could work for another studio and feel fine; the next time I get laid off, I'm founding my own startup (not necessarily in games).

Sion
Oct 16, 2004

"I'm the boss of space. That's plenty."
Just saw the news about Zynga and the note that was sent out by the CEO.

In a note to employees, CEO Mark Pincus described this as a “proactive” move that will “offer our teams the runway they need to take risks and develop these breakthrough new social experiences” on mobile and touchscreen devices.

What a loving load of management wonk speak to get let go with. Good luck to anyone formerly at Zynga out there that's reading.

poemdexter
Feb 18, 2005

Hooray Indie Games!

College Slice
There was a recent IGDA event where some people in industry did a Q&A session followed by portfolio reviews and sample interview questions so I packed up my laptop with my portfolio and headed over. The Q&A session was very cool with several Gearbox guys from different departments as well as some other industry veterans answering questions from college kids about portfolios and the best way to make contacts and break into industry.

After the Q&A, the event broke up into several groups depending on area of expertise (developers, artists, musicians, etc) to do the portfolio reviews. There was about 8 developers that weren't reviewers in a small room and we began. I went first excited to get some good feedback about my portfolio. I showed them my website and they asked if I had anything playable and I showed them my Unity project. The whole thing lasted about 45 seconds before they stopped me and wanted me to condense everything into a 20 second elevator pitch. They went on to explain that elevator pitches are important for getting follow up meetings which get interviews. I told them I just wanted some feedback on my portfolio and they said "Well, no one in our industry uses C# so you might want to try something else."

After one other guy showed off his portfolio/elevator pitch, we went to white board for interview questions. They were all pretty deep math questions and I struggled since I just use vectors for simple things in 2D games. Towards the end, they said the only reason they knew this stuff is because they used it everyday and if they took a month off, they'd have to relearn all of it.

The whole thing was a clusterfuck and I really felt like it was a waste of my time to have some industry veterans tell me what I already knew which is that "No, you cannot work at Gearbox with your current portfolio." I'm not even interested in AAA shops and would much rather do mobile or indie.

Sorry about the long story, but I just needed to vent because my expectations were greatly different than what actually happened and I got 0 value out of the whole ordeal which is frustrating. I'm really hoping I can get some solid, self taught knowledge so I can really put myself out there and try to get my foot in the door in 2014.

Shalinor
Jun 10, 2002

Can I buy you a rootbeer?

poemdexter posted:

Sorry about the long story, but I just needed to vent because my expectations were greatly different than what actually happened and I got 0 value out of the whole ordeal which is frustrating. I'm really hoping I can get some solid, self taught knowledge so I can really put myself out there and try to get my foot in the door in 2014.
If it makes you feel any better, what they gave you is well-meant advice that doesn't really apply beyond what they know - which is massive budget AAA games made by top tier studios. They're right in that you should have some C++ knowledge, but if you know C#, it shouldn't take you long at all to make a simple "yep I know that" proof of such in demo form. They're wrong in that tons and tons of mobile studios use C# or Java everyday, and would be happy to hire you with your portfolio as is.

(and they don't know that because everyone in core tech assumes C# is some lesser pidgin language until they're forced to use it - like I was - and that goes double for Unity 3D's worthiness as an engine)

I mean Gearbox might not hire me right now either. They're a high profile console studio, and here I sit with a history in PC MMOs and mobile games. I'd at the very least have to make a solid C++ graphics demo to prove I still had those chops, because what they say is very true. You only know the stuff you do in the industry because you use it every day. Stop, and while it's easy to relearn, you'll get caught flat footed in any reasonable interview.

EDIT: VV I basically also agree with that. I'm just trying to be nice and understanding and maybe the dude was having a bad day or something :ohdear:

Shalinor fucked around with this message at 21:21 on Jun 3, 2013

Slurps Mad Rips
Jan 25, 2009

Bwaltow!

poemdexter posted:

"Well, no one in our industry uses C# so you might want to try something else."

By "industry", did they mean the one where they take someone else's intellectual property and take a huge diarrhea dump on it while trying to pass the
blame or are they talking about the game industry where a game written in C# won a poo poo ton of awards, has been ported to nearly every platform under the sun (in no short order: windows, ios, android, linux, mac os x, xbox 360, and google chrome of all things), and is one of the best games to come out in the past few years, assuming you take the reviews for granted? (Bastion). Did they mean the industry where Wasteland 2 and countless other games are being developed in Unity? Or the one where The Sims 3 used Mono?

That industry? The one we're in. Right now? Or did the (super blanket and horribly incorrect) statement of "No one uses C#" mean "I and my coworkers do not use C# because we write UnrealScript all day which is a combination of Java, Visual Basic, and the torn remains of what one might assume is Eva Braun's tampon, and and sometimes C++ (which we don't fully know or understand as long it "works on my machine") and therefore we think that you might not be able to hit the ground running with our current workflow".

I'm going to go ahead and say it's the latter.

fake edit:

I missed this part.

quote:

The whole thing was a clusterfuck and I really felt like it was a waste of my time to have some industry veterans tell me what I already knew which is that "No, you cannot work at Gearbox with your current portfolio." I'm not even interested in AAA shops and would much rather do mobile or indie.

People with a portfolio less than yours have gotten internships at Blizzard, and jobs at Obsidian and well golly gee they are still working in the industry. I wouldn't worry too much. You may not get in with what you think you'll get in with.

emoticon
May 8, 2007
;)
^^ I suspect that because he was asked math questions beyond "what is a vector and do you know how to use them?", he wasn't talking to a bunch of level designers who only use UnrealScript all day


Everything they said (except for elevator pitches needed to get followups) is true if you want to be hired as a programmer at a AAA studio (or even a non-AAA console studio).
However, what they said doesn't apply if you want to be a programmer at an indie/casual/mobile studio or if you want to be a scripter at a AAA studio.

In other words, you're not necessarily as screwed as you think you are.

emoticon fucked around with this message at 21:33 on Jun 3, 2013

Gearman
Dec 6, 2011

poemdexter posted:

Sorry about the long story, but I just needed to vent because my expectations were greatly different than what actually happened and I got 0 value out of the whole ordeal which is frustrating. I'm really hoping I can get some solid, self taught knowledge so I can really put myself out there and try to get my foot in the door in 2014.

Sorry to hear about your poor experience. However, there are some positives, and a few good lessons that can be taken from your experience:

  • Tailor your portfolio to the studio you're applying to. Make it very clear that you have skills that will apply to the kinds of games that they develop.
  • Keep it short and sweet. This is the "elevator pitch", but it also applies to your portfolio and, to some degree, your personal projects. I'm already violating this rule by adding more than one sentence here.
  • Seek advice from people that are doing the kind of work that you want to do. Gearbox has very different needs than an indie studio.
  • You really should learn, or at least be comfortable coding in, C++ if you're making games.This will give you a lot of flexibility within the industry.
  • You now have interview experience. This is invaluable.

Comrade Flynn
Jun 1, 2003

Man. I had a source (outside of Zynga) tell me about these layoffs 2 months ago and I thought they were full of poo poo until now. They even got the percentage right.

poemdexter
Feb 18, 2005

Hooray Indie Games!

College Slice
Thanks for all the words. I really want to get more familiar with Unity as it's becoming more and more popular in the area I'm in. I'm already on my second employer and very familiar with the interviewing side of things as well as the elevator pitch concept since as a consultant, I'm expected to be able to explain what my company does as a way to engage potential clients. I really wish some more indie or mobile people showed up as the whole thing was dominated by the Gearbox guys. And I don't want to say they were bad either, since the Q&A portion was awesome. Everyone probably had expectations messed up and it felt like the portfolio review/example interview questions was more of a pre-interview screen for Gearbox itself which is not what I wanted at all.

Gearman posted:

Sorry to hear about your poor experience. However, there are some positives, and a few good lessons that can be taken from your experience:

I already do this for every employer I had but it's still great advice for anyone.


emoticon posted:

^^ I suspect that because he was asked math questions beyond "what is a vector and do you know how to use them?", he wasn't talking to a bunch of level designers who only use UnrealScript all day

The questions were a lot of dot product of vectors questions that I haven't seen since 300 level math in college. I do use a lot of normalization and other basic math stuff since it's need for trajectory math, but the one that really screwed me up was this:

Given a player position (point), monster position (point), and monster facing direction (vector), how can you tell that the player is in the quadrant behind the monster to do double damage from a backstab. The answer involved dot products of vectors and followed up with the quadrant shrinking from 90 degrees to 45 degrees behind the monster. It's honestly not something I've done before in any of my personal projects, and barely remember the concepts from college. I was pretty much a fish out of water and could only try to reason it out loud.


SAHChandler posted:

By "industry", did they mean the one where they take someone else's intellectual property and take a huge diarrhea dump on it while trying to pass the
blame...

This was probably the worst part of the night since instead of giving constructive feedback on how I had my portfolio set up, they just saw the pictures and C# and hand waved it as not really pertinent to review. The irony of the situation was during the Q&A portion they stressed how important it was to not be a dick to people since the games industry in some areas is tight knit and you don't want to burn bridges and you never know who will be interviewing you at your next shop.

Zizi
Jan 7, 2010

poemdexter posted:

The questions were a lot of dot product of vectors questions that I haven't seen since 300 level math in college. I do use a lot of normalization and other basic math stuff since it's need for trajectory math, but the one that really screwed me up was this:

Given a player position (point), monster position (point), and monster facing direction (vector), how can you tell that the player is in the quadrant behind the monster to do double damage from a backstab. The answer involved dot products of vectors and followed up with the quadrant shrinking from 90 degrees to 45 degrees behind the monster. It's honestly not something I've done before in any of my personal projects, and barely remember the concepts from college. I was pretty much a fish out of water and could only try to reason it out loud.

To be fair, Dot and cross products are very important/useful for game logic, among other things. This question specifically is pretty fundamental to a lot of things that crop up in games-- relative positioning, tracking, steering, whether something is in an entity's line of sight, etc. I don't agree with a lot of what the Gearbox guys said, but if you don't know how to handle this question, it's worth learning-- you can find tons of uses for this kind of vector math in all sorts of games.

EDIT: I started out actually explaining the answer, but it got long and maybe a little off-topic for the thread. If you want some help working it out, I suppose you could toss me a PM or bring it up in Making Games.

Zizi fucked around with this message at 22:52 on Jun 3, 2013

poemdexter
Feb 18, 2005

Hooray Indie Games!

College Slice

Zizi posted:

To be fair, Dot and cross products are very important/useful for game logic, among other things. This question specifically is pretty fundamental to a lot of things that crop up in games-- relative positioning, tracking, steering, whether something is in an entity's line of sight, etc. I don't agree with a lot of what the Gearbox guys said, but if you don't know how to handle this question, it's worth learning-- you can find tons of uses for this kind of vector math in all sorts of games.

Oh I totally agree. We discussed a billion ways this is used and it's definitely something I want to relearn.

emoticon
May 8, 2007
;)
^^^ I mentioned earlier that almost all game programming books spend an absurd amount of their pages on basic 3D math, which is a waste for readers who already know the stuff, but it's a boon for newbies since you can pick up nearly any book and get enough of a primer to pass most math tests they might give you for an entry position.

poemdexter posted:

The questions were a lot of dot product of vectors questions that I haven't seen since 300 level math in college. I do use a lot of normalization and other basic math stuff since it's need for trajectory math, but the one that really screwed me up was this:

Given a player position (point), monster position (point), and monster facing direction (vector), how can you tell that the player is in the quadrant behind the monster to do double damage from a backstab. The answer involved dot products of vectors and followed up with the quadrant shrinking from 90 degrees to 45 degrees behind the monster. It's honestly not something I've done before in any of my personal projects, and barely remember the concepts from college. I was pretty much a fish out of water and could only try to reason it out loud.

I'm sure you looked it up after the interview, but a normalized dot product is cosine of the angle between the two vectors, so if it's less than 0, the player is in the half-space behind the monster.

Henry Scorpio
Mar 20, 2006

Maybe it just collapsed on its own?
Sadly I think you were just interacting with someone that didn't know what they are talking about. There are 150+ C# projects included with UE3 source. This includes the build tool ( the code that Mr. we don't use C# likely uses every day to make all his builds ), portions of editor, all the console support libraries ( ie. remote controlling your PS3s, and 360s ), the memory profiler, the game performance profiler, the list goes on. Unless they have thrown all that away ( in which case why not roll your own engine? ), whoever said they don't use C# just doesn't have a big picture of how UE3 works.

Jan
Feb 27, 2008

The disruptive powers of excessive national fecundity may have played a greater part in bursting the bonds of convention than either the power of ideas or the errors of autocracy.

Henry Scorpio posted:

Sadly I think you were just interacting with someone that didn't know what they are talking about. There are 150+ C# projects included with UE3 source. This includes the build tool ( the code that Mr. we don't use C# likely uses every day to make all his builds ), portions of editor, all the console support libraries ( ie. remote controlling your PS3s, and 360s ), the memory profiler, the game performance profiler, the list goes on. Unless they have thrown all that away ( in which case why not roll your own engine? ), whoever said they don't use C# just doesn't have a big picture of how UE3 works.

Uh, considering the guy was showing a Unity game as his portfolio, I'm pretty sure he wanted to ask about game development, not tool development. While a good tool programmer is invaluable, tools programming is absolutely not the same thing as game development. :psyduck:

Henry Scorpio
Mar 20, 2006

Maybe it just collapsed on its own?
I think we'll have to agree to disagree that tool development is not a part of a software engineer's expected roles. If you are building game play systems, you absolutely have to think about how your content creators are going to interact with your systems. That often means extending the tools to accommodate the game.

Either way, to say that C# isn't a part of the industry is ridiculous.

The Oid
Jul 15, 2004

Chibber of worlds
Generally speaking in AAA, tool development is done by tools programmers and not the same people that program the game. Even then, most if not all, tool programmers have a strong grasp of C++.

C# is used extensively for tools in AAA, but not very much for development of the actual game itself.

The Oid fucked around with this message at 00:38 on Jun 4, 2013

poemdexter
Feb 18, 2005

Hooray Indie Games!

College Slice

The Oid posted:

Generally speaking in AAA, tool development is done by tools programmers and not the same people that program the game. Even then, most if not all, tool programmers have a strong grasp of C++.

This is very true. Half the reviewers I talked to were tools programmers.

Paniolo
Oct 9, 2007

Heads will roll.
C# has a lot of use the industry but even if you were interviewing for a tools job at my company C++ would be an absolute requirement. At the risk of sounding like a language bigot, someone who is proficient in C++ can pick up an acceptable level of C# very quickly, but I would never trust someone solely proficient in C# to work in a C++ codebase. (That's not to say I'd hire someone without C# experience to write tools as their primary job, but I'd reasonably expect someone could reach a tolerable standard of C# proficiency on the job, which isn't really true for C++.) There's also the issue of not wanting to hire someone who can only work on tools, when at various points in the project it's helpful to be able to reallocate engineering resources to fill needs. Also, even tools are rarely purely C#; there's typically a lot of interop with C++ code, and getting that interop right (and debugging it) is one of the most challenging aspects of tools programming.

Poemdexter, it sounds like the biggest problem you had is that you simply asked the wrong people for feedback. Something made in Unity just isn't going to be impressive in a portfolio for a AAA client engineering job, and the kind of math questions they were asking you were extremely basic compared to what you'd likely get in an actual interview loop. If that's not the kind of career you want to pursue then you should just realize that there was just a mismatch in expectations and move on.

Honestly it sounds like you might be more interested in a career as a designer (leaning towards the technical side) than an engineer. A Unity portfolio would be great for that sort of job.

edit: also something to consider specifically regarding Unreal Engine and C++ is that UE4 is supposedly dropping UnrealScript in favor of hotpatchable C++. Also, with support for XNA dropping but indie support on next-gen consoles looking better every day, it really seems like C++'s importance in the industry is somehow growing, rather than shrinking like everyone thought it would. Of course, I'm somewhat console focused here, and mobile/social is a vastly different story.

Paniolo fucked around with this message at 01:16 on Jun 4, 2013

Henry Scorpio
Mar 20, 2006

Maybe it just collapsed on its own?
Ok - yeah, I can see how that might be a company culture or resources thing - and if you have enough resources to have tools engineers that service each discipline you might never need to touch tools code.

I guess my experience has been pretty different. I've worked with 3 AAA 3rd party developers so far that all ran with their own tech ( as well as licencing techs here and there for specific projects ), with engineering teams that might be considered somewhat small ( 10-30 engineers ) for a AAA studio.

In those situations tools engineers served an architect role - building the tool frameworks ( doing the Document Object Model stuff, writing the glue code for data fields, making widgets, working with MFC/Codejock/WxWidgets/WPF, etc. ), while the specialists in other disciplines filled out their specific areas of the tools ( animation engineers the animation tools, cinema engineer the cinema tools, game play engineers the game logic tools and prefab/archetype/template/object definition tools, rendering engineers built brush editing / mesh editing tools, etc. ). It was the same story using UE3 and LithTech, where the stock engine and tools required work by each team to facilitate their needs.

The Oid
Jul 15, 2004

Chibber of worlds
I would tend to agree. While there are C# programmers out there who could learn C++ on the job, that's a big gamble for a company to take.

There are a lot of people who are capable of grasping higher level languages, but just can't grasp the low level concepts needed for a good understanding of C++, or would take far too long to learn it. Some peoples brains just explode when introduced to pointers for example.

Shalinor
Jun 10, 2002

Can I buy you a rootbeer?

The Oid posted:

I would tend to agree. While there are C# programmers out there who could learn C++ on the job, that's a big gamble for a company to take.

There are a lot of people who are capable of grasping higher level languages, but just can't grasp the low level concepts needed for a good understanding of C++, or would take far too long to learn it. Some peoples brains just explode when introduced to pointers for example.
Eeeh. See, I don't buy this. There isn't some great divide between C++ and C#.

The big one (and practically speaking, the only one relevant for gamedev) is pointers / memory management. That's kind of "it," and I ran into plenty of C++ engineers whose understanding of memory management was already vague at best. Yes, there are a lot of other differences internal to C#, but in terms of writing C++ as though you were still writing C#, memory management/pointers is the one stumbling block.

I don't think someone with a vague grasp of C# could use C++ all that well, but I do think that in the realms of what gameplay programmers do, they're mostly interchangeable. EDIT: I should say Jr Gameplay Programmers. I'm thinking purely of "I am looking at hiring a Jr Gameplay Programmer that knows C#, and expecting that his/her basic knowledge of C++ will prove sufficient base to build on" here, which is the context the discussion started with.

Shalinor fucked around with this message at 01:29 on Jun 4, 2013

emoticon
May 8, 2007
;)
^^^ You're absolutely right, and someone who is aiming to be a junior gameplay programmer probably doesn't need more than a year or two of C++ experience to be good at his or her job. But the gotcha is that if someone applies to the programming department (in a console or AAA PC studio), most of the interviewers will be senior programmers, and they won't know how to ask questions appropriate to the experience level of the interviewee.

Paniolo posted:

At the risk of sounding like a language bigot, someone who is proficient in C++ can pick up an acceptable level of C# very quickly, but I would never trust someone solely proficient in C# to work in a C++ codebase. (That's not to say I'd hire someone without C# experience to write tools as their primary job, but I'd reasonably expect someone could reach a tolerable standard of C# proficiency on the job, which isn't really true for C++.)

I agree with this, and I don't think you're a language bigot. C++ is an old lovely poorly-designed low-ish level language, so there are a lot of REALLY stupid gotchas that I wouldn't expect someone who's programmed only in C# (or even someone who has less than a few years of C++ experience) to know.

emoticon fucked around with this message at 01:47 on Jun 4, 2013

Jan
Feb 27, 2008

The disruptive powers of excessive national fecundity may have played a greater part in bursting the bonds of convention than either the power of ideas or the errors of autocracy.

Henry Scorpio posted:

I think we'll have to agree to disagree that tool development is not a part of a software engineer's expected roles.

We were discussing C# within the scope of Gearbox, a large AAA game studio. As I'm sure you're already aware, AAA studios tend to pigeonhole their programmers into specialties with very little overlap. This is especially true of tools, as you could consider them part of the back end, never to reach the players. At every studio I've been at so far, tools programmers barely touched the engine, let alone the actual game. Hell, on our last project, our tools programmer didn't work on the engine, just collaborated with the engine/generalist one to get things up and running. So it's a very safe assertion to say that someone holding any position other than "Tools Programmer" won't develop tools.


Henry Scorpio posted:

If you are building game play systems, you absolutely have to think about how your content creators are going to interact with your systems. That often means extending the tools to accommodate the game.

I don't know what kind of bizarro world you live in that gameplay developers have to worry about the way data is exposed. Engine and tools programmers will determine how data is provided to game designers, whether it be plain old text files or fancier UIs. Engine and tools programmers will work on the plugins required to export from Maya, Max, Photoshop and other art tools. The guys coding gameplay systems won't ever work on those plugins, if they even have them installed at all.

And, still in the context of AAA games, pretty much all engines are in C++/C, even Unity. The latter has the special exception of providing C# as a development language, but it remains C++. So it's a safe guess to say you won't be doing any C# as a gameplay programmer in these places.

Which brings us to the salient point:

Henry Scorpio posted:

Either way, to say that C# isn't a part of the industry is ridiculous.

I haven't said that. The Gearbox guys might have implied it, but given everything I've mentioned above, then it's a pretty reasonable assertion to say "C# is not relevant to AAA games (not tools) development". By the sounds of it, poemdexter just came across a bunch of douchebags who refuse to acknowledge any games development other than AAA.

C# is still an awesome language, and I've learned more about getting into AAA by concocting my own game engine in XNA than I have in any class. We used XNA to prototype some games back when I was at Threewave. I'm disappointed that the language doesn't have a bigger place in the industry, but the old habits of C++ and working as "close to the machine" as possible are hard to get rid of.

Edit: I'd written this 2 hours ago without posting, and a bunch more people have replied since with equally good points. C++ is an extremely capricious language with its share of quirks... But I'll say that C# is equally quirky in some ways. Trying to control memory allocations requires some fairly in-depth knowledge of the CLR. For instance, boxing a value type causes allocations. Many iterators will cause allocations. Manipulating objects through as interfaces will cause allocations in some cases. It's not a big deal considering the garbage collector runs pretty fast on Windows, but it was an important thing to look out for when deploying an XNA game to Xbox 360, because GC collections caused noticeable hitches with sufficient memory fragmentation.

So yeah, C# isn't the magic language people are making it out to be -- if anything, the managed resources hide quite a few important details.

Jan fucked around with this message at 02:19 on Jun 4, 2013

Comrade Flynn
Jun 1, 2003

Oh, and I think I missed the length in industry discussion. I'm 31 and have been in gaming for 3 years, and am head of publishing for a decent sized company. Networking really can't be overvalued. It's what got me into the industry and what got me promoted fairly rapidly. Also picking a booming industry (mobile) vs. a declining industry (console) which was a calculated decision on my part. I also decided early on to switch from the production side of things and go to the business side of things.

Henry Scorpio
Mar 20, 2006

Maybe it just collapsed on its own?

Jan posted:

... But I'll say that C# is equally quirky in some ways. Trying to control memory allocations requires some fairly in-depth knowledge of the CLR. For instance, boxing a value type causes allocations. Many iterators will cause allocations. Manipulating objects through as interfaces will cause allocations in some cases. It's not a big deal considering the garbage collector runs pretty fast on Windows, but it was an important thing to look out for when deploying an XNA game to Xbox 360, because GC collections caused noticeable hitches with sufficient memory fragmentation.

I had the same exact experience working on an XNA 360 project on the side. There were libraries for XNA that just created mountains of garbage, as well as some not so obvious C# features like the ones you mentioned, and event / string operations. Likewise, I remember the 360 GC was pretty primitive at first, so it collected frequently and took forever when it did. Microsoft claims to have made it better with XNA 4.0, but by that time I had already moved on to Unity3d as my go-to tech for home projects and prototyping.

wasabimilkshake
Aug 21, 2007

North Carolina votes yes.

Shalinor posted:

Eeeh. See, I don't buy this. There isn't some great divide between C++ and C#.

The big one (and practically speaking, the only one relevant for gamedev) is pointers / memory management. That's kind of "it," and I ran into plenty of C++ engineers whose understanding of memory management was already vague at best. Yes, there are a lot of other differences internal to C#, but in terms of writing C++ as though you were still writing C#, memory management/pointers is the one stumbling block.

I feel lucky that C++ was my first language, so I had the opposite problem when I first used C#. I was very perplexed that I had to new everything, and that there didn't seem to be a way to explicitly delete things. (Another consequence is that languages without separate header and implementation files feel wrong and dirty to me.)

But aside from memory management, what about templates? A lot of "modern C++" requires an understanding of templates and how they're specialized and instantiated. Are these so-called "modern C++" features relevant for game development? Litmus test: is boost commonly used in games? Is C++11 being widely adopted among developers targeting PC and consoles? Are smart pointers scoffed at for their perceived performance drawbacks? Are RAII and CRTP and RVO familiar terms to every game programmer? What percentage of game programmers follow Alexei Alexandrescu on twitter?

Anyway, speaking of tools...

The Oid posted:

Generally speaking in AAA, tool development is done by tools programmers and not the same people that program the game. Even then, most if not all, tool programmers have a strong grasp of C++.

I've worked on a few games, but for an animation/VFX production studio that did some cutscenes and trailers under contract. Recently, I was politely turned down for a technical art position at a AAA developer after taking their test. Parts of it ("write a tool in Python") were a cinch and a lot of fun, but the rest of it involved doing things that at my studio were traditionally handled by Character TDs and Lighting/Effects TDs. In the same system of job titles, I was a Pipeline TD -- a guy who writes tools and automates stuff, particularly in DCC apps like Maya.

To wit: I can't rig a character worth a drat! The thought of painting skin weights makes me a little nauseous, but I'd be thrilled to write a tool that made painting skin weights easier and more efficient.

Anyway, failing that test made me realize that I need to seriously refocus my job search. I haven't been sitting on my hands for the past two years -- I've learned and improved a lot, just in a way that's seen me drift further away from a "technical artist" role. As I've spent the past year writing stuff in C++, I've become a much more competent programmer. I really enjoy making things that allow artists to work more efficiently, but I have basically zero interest in creating any art/animation myself and would much rather concern myself with creating well-designed, well-written software. Basically, I'm thinking that I'm barking up the wrong tree by applying for Tech Art jobs, and that I should instead apply as a Tools Programmer wherever I can.

This is my website -- http://awforsythe.com/ -- any feedback? If I were an artist or a designer (as I originally marketed myself), I'd obviously have a showy, multimedia-rich showcase of previous work. Do I need that as a programmer? For the record, this is what I work on now, but there's no obvious way to show what work went into it without going into tedious technical details that would break confidentiality anyway.

DancingMachine
Aug 12, 2004

He's a dancing machine!
Yeah, wasabi, you sounds like a tools programmer. Did you self-teach C++? Seems unlikely they're teaching that in the BFA program you graduated from. :) Your resume doesn't indicate where you worked on those game titles, as it only lists your current company.

emoticon
May 8, 2007
;)

wasabimilkshake posted:

But aside from memory management, what about templates? A lot of "modern C++" requires an understanding of templates and how they're specialized and instantiated. Are these so-called "modern C++" features relevant for game development? Litmus test: is boost commonly used in games? Is C++11 being widely adopted among developers targeting PC and consoles? Are smart pointers scoffed at for their perceived performance drawbacks? Are RAII and CRTP and RVO familiar terms to every game programmer? What percentage of game programmers follow Alexei Alexandrescu on twitter?

I don't follow him on twitter, but I recognize the last name. He wrote Modern C++ (something), a book with a lot of template-based design patterns, right?

edit: Yep, that's the guy. As for how many game programmers use "modern" features (other than some basic templates here and there), I don't think very many. Some studios do use boost (generally to bind functions) and I'm sure scripting language engines use generic programming patterns, but the idea is to make your game engine less confusing, more transparent, and easier to debug. Performance and maintainability generally trumps fancy polymorphism tricks.

emoticon fucked around with this message at 07:23 on Jun 4, 2013

FreakyZoid
Nov 28, 2002

poemdexter posted:

Given a player position (point), monster position (point), and monster facing direction (vector), how can you tell that the player is in the quadrant behind the monster to do double damage from a backstab. The answer involved dot products of vectors and followed up with the quadrant shrinking from 90 degrees to 45 degrees behind the monster. It's honestly not something I've done before in any of my personal projects, and barely remember the concepts from college. I was pretty much a fish out of water and could only try to reason it out loud.
I used this in a personal project about 2 years ago and can't even remember it now. But the real unspoken answer is "I'd google it". You're only going to write the "what angle is this thing from that thing's facing" function once per project anyway.

wasabimilkshake
Aug 21, 2007

North Carolina votes yes.

DancingMachine posted:

Did you self-teach C++? Seems unlikely they're teaching that in the BFA program you graduated from. :)
It certainly took a lot of self-teaching (and on-the-job experience) to become proficient enough to confidently apply for programming jobs, but I actually do owe the initial interest in C++ to my time at SCAD. When I was there we had a great professor who earned a CS degree in the 80s and made his subsequent living as a game programmer. His two classes were mostly an attempt to familiarize artists with programming, but they were very fun and well-presented, and for me they kindled an interest that's never gone away. Since then I've learned from online courses (Harvard's CS50 is excellent; also Stanford's CS106/7 and some Coursera stuff more recently), books, and tens of thousands of lines of code written professionally without any sort of technical supervision.

Oh, and spending a month or two one summer to participate in SA GameDev was an immeasurably educational experience, I tell you what :D

Those titles on the resume (plus one other game canceled / in limbo) were all at the same company. Thanks; I'll try to make that clearer the next time I revise my resume.

emoticon posted:

I don't follow him on twitter, but I recognize the last name. He wrote Modern C++ (something), a book with a lot of template-based design patterns, right?

Yeah, he's the foremost expert on C++ templates and template metaprogramming, and he's also involved with the design of D.

Keeping up with the state of the art in C++ and following/reading people like Alexandrescu, Sutter, Meyers, Lavavej, and Stroustrup has been instrumental in helping me shift from a naive understanding of C++ as C with some extra features (or else Java with some low-level semantics) to understanding its power and flexibility as a continually evolving modern language of its own.

emoticon posted:

...the idea is to make your game engine less confusing, more transparent, and easier to debug. Performance and maintainability generally trumps fancy polymorphism tricks.

There have been times when I've used some arguably obtuse and overly fancy template tricks, but it's been in service of performance and maintainability (compile-time polymorphism means less decision-making at runtime and less code repeated). I can definitely see the downsides that limit the cases where such esoteric chicanery is occasioned, but I'm hopeful that those downsides will be increasingly diminished as useful new features like variadic templates (C++11) and concepts (C++14, maybe) become standardized and adopted.

...geez, there's a game development thread in SHSC/COBOL that I feel like I should probably read more often.

Sigma-X
Jun 17, 2005

FreakyZoid posted:

I used this in a personal project about 2 years ago and can't even remember it now. But the real unspoken answer is "I'd google it". You're only going to write the "what angle is this thing from that thing's facing" function once per project anyway.

Yeah but isn't "figure out relationships in 3D" like 3d game programming 101? I'm an artist but all of my programmer friends have pretty much made it sound like they use 3d math on the daily for everything.

Henry Scorpio
Mar 20, 2006

Maybe it just collapsed on its own?
The RAII concept and a discussion of the different flavors of smart pointer are definitely part of my interview question rotation. Definitely seen a fair share of smart pointer scoffing.

Paniolo
Oct 9, 2007

Heads will roll.
I have to disagree that the difference between C++ and C# is malloc and pointers. The biggest practical difference between the two is that in C# you have an entire ecosystem of data types, containers and algorithms that you pretty much take for granted and are strongly encouraged to do so by the language, the tools and the community. In C++, the combination of a lack of a completely comprehensive standard library (and the fact that STL and boost aren't frequently used in game development) and the fact that you can implement whatever low-level constructs you want in the language itself means there's a much higher awareness of the implementation details of the data structures and algorithms you use, as well as where in memory everything lives, and what its lifespan is. The "great divide" is whether any of this is at least in the back of your mind when you're writing code, as opposed to being able to take everything for granted. (And sort of having to, since because the fundamental types in the CLR are actually written in C++ for perf, you're really unlikely to be able to do any better even if you have an algorithm better suited to a particular use case.)

It's not even really a language thing, except in the sense that someone who has only ever worked in managed languages is much less likely to have that awareness. For example, if asked to use a linked list in an interview, someone might just write LinkedList<T> in C# or std::list<T> in C++, while a better answer would be to use an intrusive list or an array of indexes to give the iteration complexity of a linked list without the allocation overhead. I don't think it's a stretch to say that someone with only managed language experience is likely to trend towards the former.

wasabimilkshake posted:

But aside from memory management, what about templates? A lot of "modern C++" requires an understanding of templates and how they're specialized and instantiated. Are these so-called "modern C++" features relevant for game development? Litmus test: is boost commonly used in games? Is C++11 being widely adopted among developers targeting PC and consoles? Are smart pointers scoffed at for their perceived performance drawbacks? Are RAII and CRTP and RVO familiar terms to every game programmer? What percentage of game programmers follow Alexei Alexandrescu on twitter?

Templates are used fairly extensively nowadays. Boost isn't too popular for a variety of reasons - compilation times, difficulty for templates to cross DLL boundaries, and a lot of its modules don't play nicely with console memory management. C++11 features will be much more popular once the 360/PS3 stop being targeted away due to compiler support. I'd guess RAII, CRTP and RVO are things most, if not all, the programmers I work with are familiar with. Smart pointers and RAII would be more popular if games had more resources that had simple ownership models, but in practice it seems like things are usually too complex (threading can really complicate ownership rules, for example) or simple (don't want to bother to destruct, just flag the memory as free) for those idioms.

Slurps Mad Rips
Jan 25, 2009

Bwaltow!

wasabimilkshake posted:

Keeping up with the state of the art in C++ and following/reading people like Alexandrescu, Sutter, Meyers, Lavavej, and Stroustrup has been instrumental in helping me shift from a naive understanding of C++ as C with some extra features (or else Java with some low-level semantics) to understanding its power and flexibility as a continually evolving modern language of its own.


There have been times when I've used some arguably obtuse and overly fancy template tricks, but it's been in service of performance and maintainability (compile-time polymorphism means less decision-making at runtime and less code repeated). I can definitely see the downsides that limit the cases where such esoteric chicanery is occasioned, but I'm hopeful that those downsides will be increasingly diminished as useful new features like variadic templates (C++11) and concepts (C++14, maybe) become standardized and adopted.

Concepts Lite made it into C++14. Some people aren't too happy about it, but then I also recall a few people being upset that the export keyword was deprecated, so whatever. Also std::optional is in, which is good. As is make_unique. And generic lambdas, which is just the best news. There's a ton of super great stuff in C++11 and I hope more people move towards it. One style change that's been super useful is that I no longer construct objects with parentheses. Ever. It's pretty great. I think the hardest part of getting people to move to C++11 is going to be making them understand rvalue references, and all the implications that come with them (and these implications are awesome). My only concern is that someone is going to look at them, not try to understand them, then write them off and then put a small note in their company's coding standard to never use the drat thing, and then continue to complain about copy constructors in their code or something silly. :(

Henry Scorpio posted:

The RAII concept and a discussion of the different flavors of smart pointer are definitely part of my interview question rotation. Definitely seen a fair share of smart pointer scoffing.

You are a good person.

GeeCee
Dec 16, 2004

:scotland::glomp:

"You're going to be...amazing."
Another major company layoff (Zynga I mean), another bunch of people I read on FB and Twitter essentially blaming the laid off staff for not seeing it coming.

Goddammit I hate people at times. :sweatdrop:

Hughlander
May 11, 2005

wasabimilkshake posted:

I feel lucky that C++ was my first language, so I had the opposite problem when I first used C#. I was very perplexed that I had to new everything, and that there didn't seem to be a way to explicitly delete things. (Another consequence is that languages without separate header and implementation files feel wrong and dirty to me.)

But aside from memory management, what about templates? A lot of "modern C++" requires an understanding of templates and how they're specialized and instantiated. Are these so-called "modern C++" features relevant for game development? Litmus test: is boost commonly used in games? Is C++11 being widely adopted among developers targeting PC and consoles? Are smart pointers scoffed at for their perceived performance drawbacks? Are RAII and CRTP and RVO familiar terms to every game programmer? What percentage of game programmers follow Alexei Alexandrescu on twitter?

Anyway, speaking of tools...

That will vary from place to place. For years in console development questions on RVO were my normal litmus test for someone who is actually a 7-8 in C++ vs someone who just self-rates themselves there. At my current mobile dev house we don't use boost but we do use full C++ 11. Shared pointers, lambdas, initializer lists, nullptr, static_assert pretty much anything you can imagine. The ironic thing of course is that proper C++11 (or rather C++14) is much closer to C# than not as the recommendation is to never manage memory directly and never call operator new.

Shalinor
Jun 10, 2002

Can I buy you a rootbeer?
Fair enough. I suppose I am assuming that a C# person would just pick all that up as they worked with the C++ codebase you dumped them into the shallow end of. That may not be a good assumption.

Approaching C# from C++, it all just kinda makes sense, so I'd assumed the same'd be true the other way for what Jr's had to touch of the language. I suppose I am indeed taking a lot for granted.

wasabimilkshake posted:

But aside from memory management, what about templates? A lot of "modern C++" requires an understanding of templates and how they're specialized and instantiated. Are these so-called "modern C++" features relevant for game development? Litmus test: is boost commonly used in games? Is C++11 being widely adopted among developers targeting PC and consoles? Are smart pointers scoffed at for their perceived performance drawbacks? Are RAII and CRTP and RVO familiar terms to every game programmer? What percentage of game programmers follow Alexei Alexandrescu on twitter?
I've never touched C++11, let alone newer. That's always struck me as "a thing to do if the studio actually uses it," since none I've worked with so far has done anything with it. I've never used boost, no clue what RAII and CRTP and RVO are, etc. Though I'll google shortly.

EDIT: Dude, CRTP is so cool. Definitely need to find time for a fun C++ side project.

That said - C# doesn't do templates? Seriously? EDIT: oh, I see. It kinda does, Generics, but what you can do with them is extremely limited by comparison.

Shalinor fucked around with this message at 15:58 on Jun 4, 2013

Adbot
ADBOT LOVES YOU

Rupert Buttermilk
Apr 15, 2007

🚣RowboatMan: ❄️Freezing time🕰️ is an old P.I. 🥧trick...

Applied (again, first time was in November) for a sound designer position with a company in Montreal. Did that on Friday. Yesterday, I see a position open up for a sound tester. Messaged one of the recruiters via LinkedIn (I have them all as connections) asking whether or not I should re-apply for the tester position, even though I primarily am interested in the sound designer position. In actuality, at this point, I don't care, I just want my foot in the door with this company. I really sent her the message so she could see how interested I am in working with them, and perhaps it would maybe make my submission stand out (because I'm not just contacting them via their normal job application email address), even though I've provided a demo reel that I think is pretty good.

Here's hoping. Don't really want to be at this boring-yet-extremely-busy job that has nothing creative about it. :negative:

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply