|
nice writeup
I knew my way around c, but haven't done anything for a few years now :S. I learned PHP for web related stuff, and Java for my uni stuff (currently taking a class where we're creating a compiler, doing it all in Java). I'm kind of sorry now for abandoning c, and I have never done anything in cpp. While I really do like Java, I have a strong feeling that my skills are deteriorating because Java is so forgivable compared to c :/.
Does anyone know of a good book/website/resource where I can find some good c++ problems arranged by difficulty, going from easy/intermediate to some more complex stuff? I'd really like to pick up on c++ in my spare time.
|
On December 02 2011 19:56 Tobberoth wrote:Show nested quote +On December 02 2011 19:33 Calvin[Deck] wrote:On December 02 2011 18:04 Osmoses wrote:Writing games in the windows console can be fun, but I don't think it teaches you very much about how to do anything else. Knowing memory management is well and good, but modern coding is all about abstraction. I hardly think building a new game engine from scratch is common practice anywhere these days. Why reinvent the wheel when you can just build onto an existing, proven library? As has been already said, game designing is a collaborative effort outside indie studios, and you generally have very little influence yourself. And if you want to make your game, you can't spend your time writing low level memory management code, you'll never see anything close to a finished product. Swallow your pride and use someone else's code, use an API or a finished engine. Your game doesn't need to be cutting edge, minecraft looks like shit but it's still a great game. If you want to make a game and see some real results before you die, try Cocos2D. There are 3D APIs as well, but I haven't tried any. On December 02 2011 17:59 skipgamer wrote: I like this blog post, except for the word hobbyist in the first sentence...
A beginner hobbyist game programmer should not bother learning C, it is not worth the time, and I'd be surprised to hear a professional recommend it either. Better off focusing on learning a language/engine/SDK that has the tools and meets the requirements of whatever type of game you're trying to make.
Sure it may not exactly be "programming" in the eyes of professionals, but there is a big difference between wanting to be a professional game programmer, and wanting to make games as a hobby. You can (and have to) get your hands dirty with coding regardless of what language/engine/SDK you choose if you are going it alone.
6 years as a hobbyist programmer/game developer with the UT2k4 engine (unrealscript), Source engine(c++), Java, Actionscript and the UnrealEngine(unrealscript+actionscript) have taught me this.
If I started by learning C, I wouldn't have had anywhere near the amount of experience I've had... That being said, I've never actually taken a project to completion (the most I could say I have created is a proof of concept), but that's what being a hobbyist is all about right? It's the journey, not the destination. Lol you beat me to it :p I am a professional programmer, and i have the complete opposite opinion. You have to start with the complete basic to get really good at something. If you use flash+actionscript, or some other tool/API, yes you can have a lot if fun, and you will get faster to doing something. But then you will hit a wall, where you want to do something that the tool does not easily provide. And by that point you will need the basic skills of programming, to extend the API you are using, instead of being limited by it. I am not saying that you should not use some high level API, but eventually you need to get into really nasty technical details about some technology, if you have some need in your game, that are pushing the technology a bit. That is why making simple games in ASCII art can improve your skills in programming a lot. While it's true that using extremely top-level stuff will leave you wanting eventually, I disagree that you have to start from the basics to remedy that. Say you're working with Flash and you're making a game. You make a game or two then come up with a great idea which you feel flash is inadequate for. That's the perfect time to go basic, you have experience making games in Flash, so you need to learn what you feel is appropriate. I wouldn't expect someone to jump from making a flash game to making a C++ game, but I would think someone would have more motivation. Learning how to program is, at least IMO, not all that hard. Learning how to properly program a game, an enginge etc, is harder. If you know how to program in python, learning to program in C is not that bad and you will be motivated since you decided to learn C for a good reason, instead of motivating it by "it being basic". I would personally recommend people to start using either C and SDL to make oldschool games were you have a ton of freedom, or XNA to make windows/xbox games. Both give you perfect freedom to make the games you want, yet give you the tools needed to not get stuck, such as audio and graphic frameworks.
It properly also depends on what trigger your interest, if it is the overall game design, or the nitty gritty technical stuff.
There is no reason to do something that is not fun, but if you want to get really good at it fast, i think you need to learn C and basic machine knowledge first.
|
On December 02 2011 20:12 skipgamer wrote:Show nested quote +On December 02 2011 19:33 Calvin[Deck] wrote:On December 02 2011 18:04 Osmoses wrote:Writing games in the windows console can be fun, but I don't think it teaches you very much about how to do anything else. Knowing memory management is well and good, but modern coding is all about abstraction. I hardly think building a new game engine from scratch is common practice anywhere these days. Why reinvent the wheel when you can just build onto an existing, proven library? As has been already said, game designing is a collaborative effort outside indie studios, and you generally have very little influence yourself. And if you want to make your game, you can't spend your time writing low level memory management code, you'll never see anything close to a finished product. Swallow your pride and use someone else's code, use an API or a finished engine. Your game doesn't need to be cutting edge, minecraft looks like shit but it's still a great game. If you want to make a game and see some real results before you die, try Cocos2D. There are 3D APIs as well, but I haven't tried any. On December 02 2011 17:59 skipgamer wrote: I like this blog post, except for the word hobbyist in the first sentence...
A beginner hobbyist game programmer should not bother learning C, it is not worth the time, and I'd be surprised to hear a professional recommend it either. Better off focusing on learning a language/engine/SDK that has the tools and meets the requirements of whatever type of game you're trying to make.
Sure it may not exactly be "programming" in the eyes of professionals, but there is a big difference between wanting to be a professional game programmer, and wanting to make games as a hobby. You can (and have to) get your hands dirty with coding regardless of what language/engine/SDK you choose if you are going it alone.
6 years as a hobbyist programmer/game developer with the UT2k4 engine (unrealscript), Source engine(c++), Java, Actionscript and the UnrealEngine(unrealscript+actionscript) have taught me this.
If I started by learning C, I wouldn't have had anywhere near the amount of experience I've had... That being said, I've never actually taken a project to completion (the most I could say I have created is a proof of concept), but that's what being a hobbyist is all about right? It's the journey, not the destination. Lol you beat me to it :p I am a professional programmer, and i have the complete opposite opinion. You have to start with the complete basic to get really good at something. If you use flash+actionscript, or some other tool/API, yes you can have a lot if fun, and you will get faster to doing something. But then you will hit a wall, where you want to do something that the tool does not easily provide. And by that point you will need the basic skills of programming, to extend the API you are using, instead of being limited by it. I am not saying that you should not use some high level API, but eventually you need to get into really nasty technical details about some technology, if you have some need in your game, that are pushing the technology a bit. That is why making simple games in ASCII art can improve your skills in programming a lot. I don't mean to disagree with you, I'm just interested, don't you think it's appropriate at that point, when you hit that wall, to go out and learn how to get past that wall? edit: had a big long rant here but I deleted it, because it was just that.
Sure, but sometimes that is very hard, if you need to learn some some basic stuff first.
But you are right, sometimes when i hit a wall, i have to solve it by reading a book, or taking a class.
|
I just know a little bit of Java now but I will learn c/c++ next year. I'm also decent when it comes to 3D in Maya. I still have a long way to go and a lot of work ahead of me before I'm good enough to work with creating games though. Good thing they teach me this in school.
|
On December 04 2011 17:52 zhurai wrote: Hmm
What do you think about using UDK and Unity3D and etc for games tho? As a hobby, or designer, great. As a professional programmer, not very great.
|
I didn't see this linked anywhere, but this guy has some sound advice about the games industry (more specifically for game designers not necessaraily programmers). Good luck!
http://www.sloperama.com/advice.html
Also gamedev.net is a great resource with many intelligent people from inside the industry that post there.
Edit: Note that some of these articles were written years ago, but on the whole what he is talking about is still valid.
|
Great effort, I'm sure a lot of aspiring programmers will learn a lot! I have a Computer Science degree, and I work in an IT firm (though I don't do a whole lot of programming there). I did however do quite a bit of programming during my studies, but I've never tried game programming. Do you have any good recommendations for blogs/resources for people that are comfortable with programming, but have no game experience?
|
For programmers i recommend looking up lectures from other universities, for example standford has great lectures on ios development, and an awesome lecture on optimising for openGL by some dude form mgmoco
|
On December 05 2011 06:57 CecilSunkure wrote:Show nested quote +On December 04 2011 17:52 zhurai wrote: Hmm
What do you think about using UDK and Unity3D and etc for games tho? As a hobby, or designer, great. As a professional programmer, not very great. What? Especially Unity3D is quite popular in the "Small Games Business" and UDK is a powerful tool for the Unreal Engine 3 that is used by many big titles and companies such as Ubisoft, EA, DICE, Disney, Sega...
There's still a lot of programming to do even though I agree that both kits take a lot of work away from you. While both have some handy "oneclick-functions" they are just frameworks.
|
On December 05 2011 19:01 MrShankly wrote: For programmers i recommend looking up lectures from other universities, for example standford has great lectures on ios development, and an awesome lecture on optimising for openGL by some dude form mgmoco
Also if I'm not mistaken, MIT puts all their lectures online as well. Also MIT has a system called opencoursecode, where they put everything they did that semester online like lectures, exams, assignments, etc. Definitely worth while if you want to get into programming. My teacher here in canada told me about it.
|
So basically you're just telling people that they need to learn to program, because this article has next to nothing about actually creating a game in the actual industry.
|
On December 06 2011 02:00 Gnaix wrote: So basically you're just telling people that they need to learn to program, because this article has next to nothing about actually creating a game in the actual industry. I didn't say anything about that, because it's not about that...
|
|
If there is anything I learned from game programming it is mostly self taught. If you know where to look you probably don't even need to take classes on it. At least that is how I reflect back on it, but a good place to start if you are using XNA through C# is http://www.riemers.net/
|
On December 02 2011 17:16 Hairy wrote:I went into programming, and was in the games industry for a whopping 18 months. My advice personally to anyone wanting to become a "game designer" is... to stop. Most games DESIGN degrees are actually a sham, and are not teaching the skills that games development studios actually want - make sure your degree course is not one of those. And do you actually know what a game DESIGN job is? How does the menu flow work? What menus will there be? What button presses do what? What button hints will we show on the screen? What happens when we press those buttons? What happens if he presses different buttons? What help text should we display? When should that help text appear? Will that help text have a delay in appearing? How big should that delay be? Will that help text work ok in different languages? Are any of the game UI elements too close to the edge of the screen? (nintendo enforced) Game DESIGN involves solving ALL those questions, and thousands and thousands more, and extensively documenting it. You don't do the art - the art is done by artists. You don't actually make it happen, as that is done by the programmers. You don't think of and make the cool sounds or music, as that is done by the music guys. Your job is to write a document. Every_SINGLE_DETAIL of how EVERYTHING works must be documented exactly. That is what game design is. Very little of it is thinking up what cool weapons you use etc. In fact, you'll be lucky if you have much choice in the matter - a lot of the time you'll be designing a game that fits what the publisher needs/wants (the publisher is the company funding the work on your game), and you will have a strict budget you need to stick to (cool ideas usually take time (and therefore money) to implement). I would also warn that I don't think you'll ever get a job out of university with a game 'designer' degree. Very small indie games companies require someone else already in the team (a programmer/artist) to take on the responsibilities of that role - they can't afford to pay someone just to design. Big companies have the money to hire someone with proven skill and experience, OR they can take someone from their team that they know and trust and have them do the role instead. Why would you hire someone fresh out of university, with no experience or proven track record to do one of the most important jobs? If you want in the games industry, don't aim for games design. Do music, or art, or programming (incidentally, do C++, not C). You can move onto games designer later after you've gained experience in the industry. Show nested quote +On November 20 2011 06:54 Inori wrote: Recently I keep hearing from various sources that game dev is worst position a programmer can go to in terms of work stress. You're forced to work hard for months, constantly doing overtime (even unpaid) because of deadlines and etc. Then you finish it, have a little party and the cycle begins again with next title.
Is this in any way true? Yes. Overtime is almost always unpaid, and it is expected. It is not constant, but you WILL have to do overtime. At my job I did 4 weeks where I was in the office will 9 - 10pm at night, and I didn't see a penny of extra cash. You are constantly working towards the next deadline, and often it is a pretty intense working environment. I don't intend to dissuade people TOO much - there IS still fun to be had. But, realistically, only go into it if you absolutely adore MAKING games (making is very different from playing), and you intend to put in the work required. Only the most dedicated are going to actually make it into the industry, and only the most passionate of those are going to stay there. The games industry is incredibly competitive, so you need to be fantastic. Go and learn some programming like in the opening post in your free time. Go and learn MORE programming. Do projects off your own back, in your own time. If this is sounding too much like hard work... it probably is. Because there are people out there who have the passion to spend almost all of their free time just programming, improving their craft, and practicing to get better. If you can't be at least as good as them you're going to find it difficult. Become a hobbyist game programmer, and if you still ADORE it then go for it. If you just like games, and think working on games will be cool... you need to rethink.
DISCLAIMER: This is all my own personal opinion from my experience as a game designer.
I feel this is pretty close to true and overall a great and informative post, but perhaps a bit too depressing. I agree that you should be wary of those degrees that claim to teach you game design, but I also know that there are some legitimate universities out there offering game design courses. Game Design in and of itself is not necessarily well-defined, and isn't really something you can just learn like programming. It takes a wealth of knowledge from a variety of experiences. You're not calculating an algorithm to run a physics engine as optimally as possible, you're crafting a world that your player will experience.
A game designer's job almost certainly demands tasks like designing menus, buttons, flows, UX flows, and writing tons of detailed docuemnts. However the idea that it is the only thing a game designer does is a bit over the top. This may be true at large game studios, where they hire individuals to work on one specific aspect, but that's only one discipline of game design. The really cool decisions in large companies are often decided by the senior designers. There is also level design, system/mechanics design (combat, experience, multiplayer etc), narrative design, and a slew of other items. Sure you may have an individual who is dedicated to that, but it's the same as having a network programmer vs a physics programmer. They're still game programmers.
If you want to be a game designer I think the best situation to find yourself in early-on is to find a small company to start with. This will offer you the broadest range of skills you will have to develop to be successful. As a game designer at a small company where the development team is 9 people, my job entails level design, system design, QA testing, community management, UI design, UX design, and even some project management. Sometimes I will spend a day designing a new mission for a quest, which maybe include level design, narrative writing, and tutorials. Other times I will be designing a new game mechanic and how it will fit into every other system we have in the game. And there are certainly days where I just interact with the community, receive feedback, criticism, questions, or just play some games.
To be a game designer? There is no set path at the moment. Just teaming up with one or two others and designing games simply for your portfolio is a great idea. You will learn a lot through trial and error, figuring out what works and what doesn't. ALWAYS ask for feedback and be open to criticism -- you are not designing a game just for you to play, but for your audience. As previously mentioned, starting in another discipline like programming can be another gate. You really just have to find and jump at every opportunity.
I personally went to school and graduated with a bachelor's in computer science. My last semester I landed an internship at a new game company one of my good friends was the lead flash programmer for. They had me doing boring, menial tasks at first that slowly expanded. By the end of my internship they liked my work and offered me a job. They said they could not guarantee job security or a lot of pay, since it all depends on the success of the product. EXPECT THIS. Games are not always successful! Plenty of game developers come and go and success is gained and lost. As a side note, I have also not done ANY programming since graduating -- I love game design and fully intend to stay focused in this field.
As for skills I believe are very important as a game designer:
-Write. It is important that you can write, and write well! Other members of your team will be using your documents as their starting point for their work. Which leads to the next point...
-Communication. You MUST be able to communicate your ideas to each different team in your company (programming, art, producers, sound). Each discipline has different ideas, different approaches, it's up to you as the game design to bring it all together.
-Humility. Everyone's opinion matters in way or another. I'm not saying cave-in to every suggestion that is thrown at you, but be sure to really understand and see what they are trying to say. This leads to playtesting and criticism, THESE ARE EXTREMELY IMPORTANT. Iteration cannot be stressed enough.
-Experience. You really can't do much about this one, but experience is key. The more you design, the more you will learn what works and what doesn't. You can learn a LOT from an experienced designer, since they can help to warn you about pitfalls they've already had. Also, you are crafting an experience for your audience. Use what you know to nail this right. Experience will expand your knowledge.
-Any knowledge of any other game developing discipline. It helps to be able to cater your designs with your programmers, art team, sound team, or any other fellow coworker in mind. Now I'm not saying you go around telling your programmer exactly how the physics should be implemented, but it does help for me to know that asking the programmer implement friction and momentum would be quite a chunk of time.
My list is clearly not the end-all, be-all, and I am also not someone who claims to have all knowledge of everything game design. This is my own personal opinion from my time in the games industry as a designer (~2 years). I hope my wall of text was informative and gives you an idea of the work a game designer may do!
|
Great post, really interesting stuff!
|
I'm currently doing a game technology study, we're using C# with the XNA game engine, I'm wondering if it could become a standard in the game industry.
|
You are the man Programmed a bit a few years back and this seems nice to get me motivated and back on track. Thanks!
|
On December 07 2011 05:06 gotMilkshake wrote:You are the man Programmed a bit a few years back and this seems nice to get me motivated and back on track. Thanks! Great! Exactly the type of reason I wrote it in the first place.
On December 06 2011 16:14 Bunkerr wrote: Great post, really interesting stuff! Wonderful to hear!
|
|
|
|
|