NationStates Jolt Archive


Programmers?

Ferrous Oxide
18-03-2008, 15:26
Just wanna put a question to any programmers on the board. I'm in my second year of school doing programming (you might not call me a programmer, but I make programs, so nyah), and I want to do games dev. The course is pretty horrific; it's 95% crap, 5% coding. They're trying a set us all up to be leaders, whereas I am not a leader; I am a sheep. I am a cog in the system.

Anyway, one my teachers informed the class that in terms of games programming, we already possess the skill set to create games; anything we don't know can be looked up. I only know Java, VB and some ActionScript, but I think he was implying that if we had the same skills in C++, we'd be set. Now, is he serious, or is he giving me, as I suspect, a crock of shit?
Yootopia
18-03-2008, 15:33
You'd be pretty well set, aye, although you do need a fair amount of background in C++ from what one of the actual programmer types in a game I'm working on is telling me.
Ferrous Oxide
18-03-2008, 15:36
You'd be pretty well set, aye, although you do need a fair amount of background in C++ from what one of the actual programmer types in a game I'm working on is telling me.

Keep in mind that while I said I KNOW those languages, I might not know as much as it seems I do. I know all the common syntax and stuff like that.
Yootopia
18-03-2008, 15:37
Keep in mind that while I said I KNOW those languages, I might not know as much as it seems I do. I know all the common syntax and stuff like that.
Get practising and I'm sure you'll be fine pretty sharpish, I'd not worry overmuch about it.
Guibou
18-03-2008, 16:03
You're totally wrong if you think what's not coding is crap. Of course, there's part of it that's crap, but it's all very well worth knowing.

Anyways, just because you want to be a game dev doesn't mean you don't need anything else than vast "coding" knowledge. You need to know what happens with it, etc, at the very least.
No-Bugs Ho-Bot
18-03-2008, 16:12
Ferrous Oxide, poor dear, which retarded uncle persuaded you that programming (and in particular games programming) was the way to get rich and famous?

Drop out, and learn to surf. Learn the ways of love. At least, try to have some fun. Programming isn't for you. It's for people who enjoy it.

</retarded half-uncle>
New Genoa
18-03-2008, 16:29
I'm in my first year of Computer science and I think too much is being spent on syntax rather than general problem solving concepts or strategies to learn a language properly (the java documentation is huge, how do you people learn it so fast?...not to mention all the hardware concepts that I think go hand in hand with coding)...I think I may be fucked.

Plus all the math. I mean, I was looking at quake 3 source to get an idea of what "real world" programming looks, and you can bet your ass there were neat things like vector cross products, dot products, pythagorean theorem, trigonometry, etc etc

Anyway, what I'm thinking of doing is starting out with C. I mean C is pretty low-level for a high level language, so I figure it only gets easier from there. :3
Neo Bretonnia
18-03-2008, 16:46
You've been fed a steaming crock of boiling shit.

First of all, the actual programming language is less important than your own personal knowledge and understanding of concepts and how things go together (Encompassed as part of that 95% you call crap.)

I can program competently in Java, C, C++, C#, VB6, VBA, VB.NET, J#, COBOL, SQL, MYSQL, PL/SQL etc etc etc etc.... None of which makes me a great programmer of games.

If you mean to get into the professional world of game development you're going to have to learn and understand the software life cycle, development environments, technologies and objects some of which are proprietary to your prospective employer. You'll need to know their conventions. You'll need to specialize. (You think the same team that does the 3D mapping handles the database and interface?) You'll need years of experience because as it is gaming companies have a razor thin profit margin due to competition.

Gaming software is far and away the most complet form of computer applications. They demand the most in terms of system resources. If you think any schmoe off the street can waltz in and be good enough to program for someone like id or Sega then you, my friend, are in for a surprise. When we first get out of school we know how to build a tower with Legos in terms of complexity. Knowing how to streamline your algorithms and make your process efficient takes experience and additional learning. That's critical in an application like a game.

I don't mean to discourage you. if you want to do this, then by all means full throttle. just be ready because designing games is some of the most challenging work in this field.

/soapbox
Anarcosyndiclic Peons
18-03-2008, 17:07
It's possible to begin developing games after just one year of computer science. Granted, my first year was focused exclusively on game development in Java, but I've done quite a bit for just one person working on a project. The key is to just find a good engine because otherwise you'll spend most of your time working on the GUI and other little structural details.

What Neo Bretonnia said about learning to streamline your code is extremely important. A few extra if statements may not seem like a big deal until you're calling them a several hundred times a frame. Actually, just about everything Neo Bretonnia said is important.
ColaDrinkers
18-03-2008, 18:21
I don't think there is much room for true sheep in the gaming business. You will always need to present your work and ideas to the people you work with. I listened to a lecture with Harvey Smith the other day, and he stressed that you should take every opportunity you can to speak in front of an audience, because there's no room for shy people in the games business.

As for getting the actual skills to create games and to get a portfolio to help you get hired, game developers I've listened to recommend making your own games and game mods (and finish them, it doesn't look good if you abandon your work before it's completed), and to work with game testing. As Neo Bretonnia said, just because you know a programming language doesn't mean that you can get hired to make a game and be productive straight away.
Ruby City
18-03-2008, 19:10
Yes, you probably do know enough to start learning how to write games or whatever you want.

Instead of knowing a specific programming language you need to know how to design data structures and algorithms and write them down in any language. You don't need to know C++, you need to know the concepts, math, data structures, algorithms and the theory behind those things. So learn the anatomy of 3D graphics, AI or whichever area you're interested in well enough to improve it.

Which languages you already know doesn't matter. You can start writing or reading in a language you've never seen before if you only have good documentation, it's just a new way of writing the same things. When working with a language you've never used before it takes time to adapt to the way of thinking that language is meant for and until then your code will be an ugly result of you fighting against the language instead of following the way of the language. But as soon as you are comfortable with the new language you can do the same things you already do in other languages, just in a different way.

Which libraries you already know doesn't matter. You can use any library you've never seen before by looking at it's documentation and source code. You just need to find a function that does what you want and read how to make it do that. One common total waste of time is to write a function that does the same thing as an existing function some library already provides because you didn't search well enough for functions you don't know of yet.

What matters is how much you love to design better data structures and algorithms and how good you are at finding the specific piece of information you want in a sea of documentation and source code.
Myrmidonisia
18-03-2008, 19:36
Keep in mind that while I said I KNOW those languages, I might not know as much as it seems I do. I know all the common syntax and stuff like that.
Unless you're a real geek and write code instead of dating, you probably know what most people do -- new grads, anyway. If you know the syntax and understand the properties that make OOP different from functional, then all you really need is a project to force you to apply your knowledge. Going to work and having deadlines and a boss accelerates the learning process.
Cypresaria
18-03-2008, 19:47
I'd go along with ruby city too.

Because 2 months into my computer programming course, I was at the same stage of 'why are we designing programs instead of getting on with coding them'

For the simple reason that the design is everything.

How you define a programming problem, how you analyse said problem, how you design code to solve problem and how you test said code so it does solve the problem and not introduce several new ones (are you listening microsoft employees working on vista SP1 ? :upyours:)

The actual language used is irrelevent,in my case it was smalltalk for basic O-O studies, Boland C++ and C for GUI stuff and general solving things like interfacing an RS232 port and talking to said port, and Java for more advanced O-O stuff including multi-threading and concurrency... with a splash of UML for the advanced design.
none of the courses taught any more than a grasp of the language suitable for you to complete said courses.

After you've got a shiny certificate saying you're qualified in programming do you find a job and start at the bottom somewhere. :cool:
Longhaul
18-03-2008, 19:50
the actual programming language is less important than your own personal knowledge and understanding of concepts and how things go together (Encompassed as part of that 95% you call crap.)
Instead of knowing a specific programming language you need to know how to design data structures and algorithms and write them down in any language. You don't need to know C++, you need to know the concepts, math, data structures, algorithms and the theory behind those things. So learn the anatomy of 3D graphics, AI or whichever area you're interested in well enough to improve it.
If you know the syntax and understand the properties that make OOP different from functional, then all you really need is a project to force you to apply your knowledge.
These.

The 'crap' is the important stuff and once all of it becomes second nature to you you'll be set. The design is the important part and once you have a solid, robust design to hand you can code it up in pretty much any language you want - all you need is reference documentation to allow you to work within the vagaries of the various languages. (Yes, I know that last sentence is a bit overly simplistic).

Good luck, btw :)
New Manvir
18-03-2008, 20:06
I took some game design classes and was gonna be one originally, but I dropped out. I hate Math and Science and programming was starting to annoy me...also I did almost no work, and spent most classes just surfing the interwebs :p
Ultraviolent Radiation
18-03-2008, 22:06
A few things to know:

C++ is lower level than Java and the others, so you may not be aware of some of the intricacies involved.

Knowing the syntax is not the same as knowing how to make something good using it. You should look into things like design patterns (or whatever the game equivalent is). They'll be resources on the Internet for a lot of this stuff, so only buy books if you have to.

There is also a difference between being able to achieve a goal in the best way and having a good goal to begin with.
Dagnia
18-03-2008, 22:25
I am not yet really competent in any programming language yet, but I have studied a fair amount of Python. Recently I picked up a book on low-level assembly language. Well over 150 pages through it, the author does not introduce a single processor instruction, rather focussing on detailed descriptions of memory addressing (this might actually be a good thing for those who want to jump into the deep end and learn the difficult things).

I also hope to learn Prolog and Lisp.
Divine Imaginary Fluff
19-03-2008, 02:31
After several years of free time coding, I've become quite good at writing C, and to a smaller extent C++ (almost completely unfamiliar with the STL and using/writing code of its like) - do note that at first (I, like the vast majority, did), you will (comparatively speaking) design and implement like a drunken monkey. I also know x86 (and x86-64 to a smaller extent; not so familiar with it, and have never used SSE) assembly well enough to use it for optimization or write small, simple programs.

I have amassed quite a depth of knowledge (the nature of obsessive interests), but not much breadth. I know PHP well enough to quickly put together a fairly plain site half-decently with it, Perl enough to perform search-and-replaces, and enough to read and largely understand procedural languages in general. But I've not ventured far in *using* other languages much. (unless basic shell-scripting and Makefiles count. also, I confess to having used BASIC languages for a bit before venturing on to C++. and some Java - not quite something I like) Still unfamiliar with functional programming, too.

I'll study plenty, though, in the years to come - both in my freetime, and at university... (hopefully it will have plenty of new things to offer that are described in *depth*. oh well, time will tell...)

Recently I picked up a book on low-level assembly language. Well over 150 pages through it, the author does not introduce a single processor instruction, rather focussing on detailed descriptions of memory addressing (this might actually be a good thing for those who want to jump into the deep end and learn the difficult things).Use Google and you'll find all you need to learn writing basic x86 assembly for yourself. (also, once you've learned the instructions, make sure to study assembly listings from compilers sometime - try to understand what they do, and see how you'd do it different. it's a simple way to learn how to out-optimize a compiler; they do some things perfectly, and some things very stupidly)
UpwardThrust
19-03-2008, 02:37
Just wanna put a question to any programmers on the board. I'm in my second year of school doing programming (you might not call me a programmer, but I make programs, so nyah), and I want to do games dev. The course is pretty horrific; it's 95% crap, 5% coding. They're trying a set us all up to be leaders, whereas I am not a leader; I am a sheep. I am a cog in the system.

Anyway, one my teachers informed the class that in terms of games programming, we already possess the skill set to create games; anything we don't know can be looked up. I only know Java, VB and some ActionScript, but I think he was implying that if we had the same skills in C++, we'd be set. Now, is he serious, or is he giving me, as I suspect, a crock of shit?

The concepts transfer my first 3 courses were in C++ and while there are enough differences in application the concepts it taught as a basis have helped me in VB VBS Java C Python C# PHP and the other handfull of languages I have used over the years

You may not be able to just go out there but it IS worthwhile
Myrmidonisia
19-03-2008, 03:53
Hey. Do job interviews for programmers at big code writing businesses involve quizzes?
UpwardThrust
19-03-2008, 04:15
Hey. Do job interviews for programmers at big code writing businesses involve quizzes?

Some yes ... most I have seen psudocode rather then actual code (or allow you to choose the language)

But I have not applied for them only worked in close conjunction with ... and the ones I have were custom code shops writing one off apps
Silliopolous
19-03-2008, 04:41
I've been doing software development for nearly 15 years, and anyone telling you that a single person is going to go out and just start coding a game worth selling is full of sh*t.

Well, unless you want to sell "Pong 2008!"

In real life - what part of game design do you want to specialize in? Are you a good enough artist to render a believable human figure or environment? A good enough designer to think through all of the game play scenarios and object interactions? A good enough programmer to write the back-end that connects it all together?

There are reasons that most game's credits subdivide the development team into groups. Because people DO specialize in this industry.

As to programming in general, let me just say that I have never, ever, EVER worked on a large scale project where at any point anyone said "sheesh - we spent WAY to much time on planning/requirements gathering/detailed design specifications/etc that turned out to be wasted time" The project I'm on now is a data warehouse where we spent 16 months in design before touching a line of code besides a couple of proofs-of-concepts for how to handle some specific issues. And we still keep running into gotchas once we started dealing with the real source data, and tuning for production volumes with source tables in excess of 1 billion rows in some instances.

Just jump in and start coding?

In the real world, that spells project failure.

But that doesn't mean that you should start out by developing a small, simple game start to finish just to start to get a handle on the complexities involved in the steps required along the way.

Because you will learn a ton by trying that - way more than from a narrowly defined class assignment. So, in that respect, yes - dive in. Just expect to make a complete mess of it, and treat it as a learning experience and to focus you better on which aspects of it wind up being most enjoyable.
Ferrous Oxide
19-03-2008, 08:04
When did I EVER say that design was part of the crap? I considered that part of coding. I should have said "development" instead of coding.

The crap is rubbish like project management; allocating time and money and organising people. I don't want to do that! I wasn't somebody else to give me the tools and the time limit, and tell me what to do. I'm a cog in the system!

Ahh screw this, I'm gonna drop out and do machine repairs and upgrades.
Ruby City
19-03-2008, 16:19
The crap is rubbish like project management; allocating time and money and organising people. I don't want to do that! I wasn't somebody else to give me the tools and the time limit, and tell me what to do. I'm a cog in the system!

Ahh screw this, I'm gonna drop out and do machine repairs and upgrades.
As Silliopolous said team members specialize, everyone doesn't do a bit of everything. It's easy to avoid doing the economy and management bits, just specialize in something else instead.

In education there is always some subjects that are not what you personally want to know. Just get good grades on them and then forget about it.

To sit and wait for someone to tell you what to do doesn't work in IT. You'll have to actively stay informed of what needs to be done and then do it. For example I currently work as a support technician doing mostly repairs and upgrades and my boss never has time to tell me what to do. I have to keep track of what needs to be repaired, who needs help and what questions need to be answered and what has already been done by other support guys all by myself since nobody else has time to plan my work for me. But on the other hand I can focus entirely on my job to fix computer problems while ignoring the other stuff like economy and management so I'm happy anyway.