@bigbadwofl said:@dislekcia: I am not flaunting proficiency in C++ as an edge. I'm referring more to knowledge of how the underlying systems work (Lighting, physics, game loops , etc...)Do you feel that someone who has used a tool all his life vs. someone who started out writing his own engines has the same skill-level and will produce the same results?
@Elyaradine said:"I want to learn C++ and DX11/OGL, because by writing my own tech I'll be an awesome game programmer!" This is about the only path that makes sense.
Developers are stubborn and they will ultimately do whatever they want. Sure we can guide them, but haranguing them on why their ideas are silly will only serve to alienate them.
@hanli said:If that were true, judging by the way opinions are being stuck to in this thread, South African game dev has a long way to go. Turning people away from the forums for help is not a community, its an autocracy. Rather than saying what someone wants to do is stupid, no matter how much you believe it, ask yourself how you can help do it well.
@Blanky said:http://the-witness.net/http://braid-game.com/Both developed in C++, totally awesome games and it is amazing what they have achieved.
@fanie said:If I may add something to hanli’s post that “South African game dev has a long way to go”, yes I completely agree. From my professional experiences in Aviation and other technologies, SA never stood back for any other country in the world. And I don’t see a reason, why countries like the U.S.A and Germany should take the lead in game dev.
Hanli said: Turning people away from the forums for help is not a community, its an autocracy. Rather than saying what someone wants to do is stupid, no matter how much you believe it, ask yourself how you can help do it well.
Blanky said: I think then this discussion should move to a post for discussing the advice to to give to newcomers, and not stay on fanies request.
Blanky said: Though, this will probably turn out to be an infinite philosophical battle, as they tend to be, as peoples experience and opinions vary, and thank goodness for this, not being unique would stifle growth.
Blanky said:Take these people, they do it because they have passion, if they conformed to everyone else, they wouldn't have been so unique and daring, society can have a nasty way of stifling people due to 'society norm'. People can be so much greater than society if they stop limiting themselves to society:
garethf said:Fanie, as someone who started with Pascal, then learned Java and C++ and is now using C#, built 2.5 game engines before he got tired of making tools, moved to Torque then onto Unity, worked for 8 years on building gambling games and other apps professionally and am now 1 month from releasing a commercial game (http://roguemoonstudios.com/systemcrash/) through my own studio, let me just say that it's a perfectly fine path to take, whatever anyone else says.
@AngryMoose said:The ENTIRE old guard of ZA game development is *only* here because they started from scratch and learned C/C++/Java/Pascal/DirectX/OpenGL/etc. To immediately disregard that someone else who is young and new and hungry will simply fail because it was hard and not as easy as other methods is not only hypocritical but also a bit egotistical if you ask me.
@AngryMoose said:So my end of rant advice to any new person starting out who wants to learn game programming?Do what you want to do, with whatever gives you passion and drive, learn your options, and be prepared for a lot of hard work and many years before you are actually good at anything; but don't ever give up.
So who's the old guard then? I'm certainly not part of it if those are the criteria...
Are you really saying that we, as a community, shouldn't learn from our experiences and point people towards the best understanding we have at the moment?
All that needs doing is a single reply giving pros and cons; not a 2 page debate about which way is The Bestest.
@Fanie, it took @GarethF over 8 years to make a commercial game of his own. That is really long. 8 years.
Personally, I feel that doing both at the same time is the best way if you really want to be the strongest game programmer. There are some things that you can only learn by writing core level logic and rendering systems. Writing an optimal scene renderer is going to do nothing but improve how you plan and execute your game system controllers when you're actually making your game. In the same token, waiting years and years to actually learn all of the skills and building blocks of completing a full game while your "engine" is in development is going to keep you behind the curve there.
Dislekcia said:I'm certainly not part of it if those are the criteria... I'm only here because Game Maker (after I'd ignored it for the umpteenth time) finally made doing all the things I had been trying to do before not only possible, but trivial.
GarethF said:The implication I'm reading between those lines is that you think it's got something to do with how long it took to learn the skill
@garethf said:Danny made the point that if C++ knowledge was all that was needed, why aren't we awash in commercial games? Well, that's a straw man argument, for one thing. No one claimed that C++ knowledge was all that was needed. The simple reality is that you need time, money, skills (in multiple disciplines), perseverance and a little luck. You need all 5, in generous quantities. Most people don't have all 5 of those things. Most people are lucky if they have 1.
if only 10% of the computer science students at our universities were interested in making games (and that's super conservative, in my experience - lecturing at universities to comp-sci students - that number is more like 90%) and C++ knowledge was all we needed, we'd have about 100 games coming out every year.
How do you optimise for things like time, money, skills, perseverance or luck?(stuff)
Offering support is great, but giving bad advice is not.
The implication was that you chose a suboptimal avenue (or rather an avenue that certainly would be suboptimal if embarked upon today), an avenue that cost more time and money to get to the same destination. And the allegation was that you then recommended this avenue to someone else.
Yes, back in 2004, when no studios fewer than 20 people were turning a profit, and middleware engines were still in their infancy, learning C++ and trying to make games in it was a solid way to start a game programming career. But just because it worked then, when there weren't significantly better options available, surely doesn't mean we should recommend it now?
how does one's skill-set allow one to work in the industry? You might define that as working at id or epic on their engine then that is the goal, but that isn't South African game development, which is the focus of this forum. And given that he looks at grads from university and their skillsets as an employer! His words are gold for what you need to work in game development in South Africa.
If you are looking for a job and you have c++ and directX experience against someone who has Unity experience I would say that the person with Unity experience will get the job.
Writing shader is cool, but when it comes to games gameplay is king.
What use is a game that looks cool if your jump sucks?
Also really everyone just go an watch that Jon Blow talk. Because it just lays things down, with really great examples, of what you need as a game programmer vs what traditional CS teaches you.
Nice code or knowing a lot of languages deeply or understanding low level workings and even familiarity with the tools we work with are distant concerns next to being able to implement good gameplay quickly and sensibly (like the way Jonathan Blow describes).
I know it's been linked here several times before, but the guys who made World of Goo followed that path, and they managed to become one of the most successful Indie developers right out of University.
GarethF said:Your point would be valid if he he had said "what is the quickest way to become a game developer."
That's nice for them. And the Team Meat dudes became some of the most successful indie devs by building their own custom engine for their games.
@garethf said:You were the only person in this thread who said anything about C++ knowledge being all that was needed. You then proceeded to debate against that stance like it was made by the person you were debating with.
@garethf said:Your point would be valid if he he had said "what is the quickest way to become a game developer."That's not what he asked though. He asked for help learning a specific skillset. In which case, optimizing his path to knowledge involves helping him gain that knowledge.People already gave him the hint that if he just wanted to make games, using tools instead of reinventing the wheel is a quicker, more efficient path. Something I completely agree with.
@garethf said:But after the first 4-5 comments, it turned from a helpful hint to browbeating the guy with your opinion of The One Right Way. It's supposed to be a community for supporting SA game devs and you lot have long since ignored the point where he said "ok, enough now, thanks for the advice, this is the path I want to take, can people just help me with that."
@garethf said:Also, comparing people with dissenting opinions to homeopaths was pretty low. I didn't actually enjoy posting my own credentials, frankly you can't help but come across as a bit pompous, but it seemed like it was either join in the dick-measuring contest or have my opinion dismissed for lacking credibility. It's a bit of a hostile environment you guys are creating here.
@garethf said:It's not bad advice. C++, engine development and knowledge of the graphic APIs are core competencies in the game programmer field. This has not changed.You don't need them to just to go about making games, sure. You can get by with surprisingly little programming knowledge these days, modern tools are pretty great and are only getting better.But they are still very powerful, very useful skills to have, quite in demand across the industry. We are not yet at the point where the tools have replaced the need for that knowledge on a broad scale, even if you're fine without them just tooling around as a hobbiest.... jerbs
@garethf said:Please, don't draw conclusions about my path and what my destination was or is when you know only the barest details of it. :)I also didn't recommend it to him, I said it was "fine" if he wanted to go that path, and he would learn a useful skillset if he did. I'm not the one making arguments about what The One Right Way is, here.
@garethf said:My destination, btw, was being a good game programmer and developer. Not just getting to the point of making games as fast as possible. And I have found those skills very useful throughout my entire career. They got me good jobs, and for my own game dev efforts, I was modifying the Torque engine and creating resources for people who, without the skills to do it, simply floundered when they hit a wall in Torque's capabilities.
@garethf said:Unity only came onto the scene as a viable option recently. I tried it 3 years back, found it wanting at the time, went back to Torque. But they kept improving it to the point where I'm now a convert. It's the engine I recommend.Unity is a great engine, I love using it and I've yet to find myself running up against a wall with it. But, I haven't done anything particularly ambitious with it, yet. so that doesn't mean a whole lot. A 2D card game is pretty simple, as games go.Don't take Unity's dominance in the marketplace without a pinch of salt. The big devs using it often get private deals that give them source code access, so they can make custom changes to the engine to make it fit their product goals better.Repeat after me, like a frakkin mantra : There is no perfect tool.You don't know how to build it yourself, that's completely fine. But understand, there is a difference between invoking the magic that other people create for you, and knowing how to create the magic yourself, as you need it. Some people want the knowledge of the magi.
@garethf said:Outside of hobbiest indie circles, you will struggle to have a game programming career without those skills. They are core competencies across the industry. See the above list. Oh, and studios were turning a profit in teams smaller than 20 before 2004, btw. Check out Spiderweb and Positech.
@garethf said:You're arguing that people shouldn't learn the skills that the entire industry places high stock in because the handful of small developers in SA's tiny game development scene don't currently need them (I think that's a bit of an assumption, but let's pretend you're right)?That's just silliness. Frankly, SA might have a bigger game dev scene if we had more people with these skillsets. You're creating a self-reinforcing paradigm. No one learn the skills because no one is looking for the skills because no one is using the skills because no one learned the skills because no one...South African game development is whatever South African game developers are currently working on, btw. Not just the hiring practices at Free Lives or wherever.
@garethf said:Well of course, if you create a silly either-or example. But the person with both skillsets will trump the person with only one of them. Especially in small teams. The core programmers need to be able to handle whatever shit pops up. Or should be expected to pick it up pretty rapidly. Good luck with that to people who find learning C++ to be some giant obstacle or headache, btw. Jesus, but people are wusses about pointers.If you want to be a good game programmer, develop a broad skillset, you're gonna need it.
@garethf said:And just the other day I was negotiating a freelance local game programmer job which hinged on being able to handle the shader development aspect. I guess there are no jobs for this outdated skillset in SA.*sad tear while staring into the sunset, poignant music in the background*
@garethf said:Oh good grief, enough with the either-or examples now. You should learn how to do both, if you want to develop games.
@garethf said:Have you watched it? He quite clearly says that that he's not saying you don't need to know how to use more advanced techniques, but that you need to know when to use them and when to use something simpler. Because there is always a trade-off in time/effort/returns.He's also quite clearly not advocating against C++ knowledge, or understanding of graphics APIs. You'll notice that both his games are written in C++ and HLSL.Frankly though, that's not a hugely pertinent talk to this conversation. He's completely right, and it's a good talk, but he's talking about working efficiently by avoiding premature or unnecessary optimization, not which skillsets are best to learn for wannabe game developers and what knowledge will be important to know in their future careers as game programmers. That talk was NOT "Jonathan Blow's guide to all the skills you need to know to become a competent game programmer in the industry."You guys are WAY overemphasizing what it takes to learn how and when to just use dumb arrays and simple, single-purpose functions. Blow's talk was, as I said, a good one. But it's something that just comes with experience. Everyone starts off with too much knowledge and enthusiasm for clever tricks and not enough wisdom about when it's appropriate to use that knowledge or those tricks.Like a painter, as you become an expert you naturally learn where you actually need to focus on detail and where you should leave out that detail, where it harms the painting or is just plain unnecessary.Blow is hardly the first computer scientist to point out that premature optimization is bad.
@garethf said:That's nice for them. And the Team Meat dudes became some of the most successful indie devs by building their own custom engine for their games. And Blow became one of the most successful indie devs after decades of industry experience.What do we learn? There is no One Right Way, just different ways that different individuals have had success with. Do what feels like the right fit for you, follow what you're interested in, and find good mentors for that path.
People have been advising that newbies not start with C++, nobody has said ignore it completely.
And even if Fanie's only ambition in C++ is to learn the language to have a comprehensive understanding of programming. That's still a plan more prone to failure.
If C++ is their primary focus, they're probably not that useful.
I was making more games before I devoted a year and a half to C++/OpenGL, and made more games afterwards as well. I had better options in retrospect, but I made a mistake. I'd happily take back that time and money and spend it on learning more game programming and jet skis.
This talk of C++ is a good path is really really unnecessary.
if the ONLY TOOL you know is C++ and DirectX you aren't going to be able to make games
"How do I get into game programming?"
"What should I do to start with C++/DirectX game programming?"
"Do you know about existing game development tools like Game Maker and Unity? They are great and tons of people use them and they let you get past the slow barrier to entry that having to build your own tech creates. You should really give them a try before you go down the long and arduous road of building your own game in C++."
"Awesome! I didn't know about those... they sound great! Thanks for the advice, I'll check them out right away!"
"Thanks, but I really want to learn how to make a game with C++, so I'm going to try that out for now."
The major point here is that nobody has been saying "Don't learn C++!", by all means, do learn it because it's a wonderful tool. Just don't try to learn 3 things that are really hard at the same time when you're just starting out. People don't seem to realise that you need to learn what game engines actually do, how games are a combination of game logic and engine logic (game logic actually being the far more interesting and important part of that, taking up more than 90% of the coding time of most games) and how to use an advanced programming language like C++.That's all people are saying in this thread: Space out your learning. Don't bite off more than you can chew right at the start, which is when you're most likely to do exactly that because you don't have the knowledge to properly estimate what's needed for what you're trying to do (Dunning-Kruger, anyone?)
He now works for a AAA company, which is rad for him, that was his dream, but crappy for South African Development. We lost someone that might have made awesome stuff here if he'd followed a different path.
but that isn't South African game development, which is the focus of this forum
The quicker we can get away from the old way of doing things, and make entering our industry easier, the faster we can grow South African games
This is a South African forum. fanie came here because of an interest in local game dev. Yes that is an assumption, but a reasonable one.
What game programming careers exist in South Africa beyond those?
Turning people away from the forums for help is not a community, its an autocracy. Rather than saying what someone wants to do is stupid, no matter how much you believe it, ask yourself how you can help do it well.
AngryMoose said:I personally got into game development because I wanted to program and I loved games. Programming is what drove me. If it wasn't for the challenges of always wanting to write better, more structured, more optimal, and more complex code, I wouldn't be where I am today.
I don't understand the sudden dislike for getting to the point of making games as fast as possible.
why is being able to make games faster a bad thing?
My pointing out that the status quo of C++ education does not produce a ton of games isn't a straw man argument
If all you needed to understand in order to make games was C++ and some random 3D API (ROFL! Why use APIs, man, that's easy-mode, code your own drivers for 3D hardware and really show you know what's going on) then we'd be absolutely swimming in local games. Every single university computer science department would be churning them out like catholic babies!
If all you needed to understand in order to make games was C++ and some random 3D API
How does the idea that C++ is the only real type of game development language out there help anyone get a broad skillset?
Where does this idea that people can't continue to learn game programming techniques and skills while using tools come from?