Posted by daviangel
on 17 November 2012 - 04:48 AM
Yup definitely can't forget John Carmack May get technical at times, but I really like the tweets where he says he wasted like an hour looking for a typo in code or how bad some of his old code was when he looks back. It give hope for the rest of struggling average programmers if the best of them still struggles and does some stupid things as far as coding goes.
Well unless that hardware has some primitive graphics support built into it like the ps2 you are in for a ton of work. There used to be a linux kit sold that allowed you to do graphics programming for the PS2 but even that was pretty low level i.e. harder than OpenGL, DirectX and at least you had a version of Linux to depend on also. You are probably correct in that you will have to create the graphics libraries yourself and you are most likely going to have to resort to assembly unless your hardware supports something like the PS2 linux kit. Well you can check out Andre Lamothe's website to see how he does it with his custom hardware kits that don't even run any OS. Okay maybe Verilog is not as bad as pure assembler but it's still pretty bad fpga pong Sorry but it looks like you have your work cut out for you as this FPGA programmer says: Windows 3.1 called. It wants its interface back.
p.s. Unless you already have tons of game programming experience I'd say something similar to NES (Nintendo) games, something like mario comes to mind Jumping, avoiding obstacles, simple type of game is being a bit too optimistic
C++ will consume allot of time before you will be able to generate something useful (without major bugs).
That only happens when you scale it up. Hobby games are still doable in C++ without much hassle (if you know what you're doing).
That's the problem. Obviously, the OP is a beginner, and obviously he wouldn't know what he's doing with C++... That's the same for any beginner. Hence why C++ would consume a lot of the beginner's time before he/she even gets a semi-working simple game.
Yup according to one of Stroustroup's latest talks one of the reasons there is so much bad C++ code is: • Bad style is the #1 problem in real-world C++ code – Makes progress relatively easy – Only relatively: bad code breeds more bad code • Lack of focus on style is the #1 problem in C++ teaching – A “quick hack” is usually the quickest short-term solution • Faster than thinking about “design” – “They” typically teach poor style – Many are self-taught • Take advice from – Decades old books – Other novices • Imitate – Other languages – Bad old code
At a minimum IMO: Discrete math covers such a potporrui of stuff you will see in CS that any decent CS program will require it. More Statistics than covered in Discrete. Linear Algebra for graphics and matrix work you will see popup and if you can 2nd course in logic preferablly covering HOL(higher order logic) you will see if you ever mess with Lisp, Haskell, and theorem proving. Abstract algebra if you plan on doing any crypto stuff since a lot of advance number theory is used. Public key cryptography draws on many areas of mathematics, including number theory, abstract algebra, probability, and information theory. numerical analysis if you plan on doing any scientific programming or otherwise work with very large or small numbers, etc where results have to be very precise.
Actually, chaos theory comes into play in numerical analysis: In numerical analysis, the Newton-Raphson method of approximating the roots of a function can lead to chaotic iterations if the function has no real roots
bottom line is that you can never take/have enough mathematics as someone once said I'm sure
Personally, I've bought and read tons of programming books and of course visited tons of websites forums with game tutorials, etc. and I've found in general books to do a better job of showing how to complete a substantial full game from start to finish. Any book showing how to create your own game engine is going to involve quite a bit of work! I'm not saying there aren't any websites that do this but if they do they probably charge money because it takes a substantial amount of time to document and write about all the work it takes to finish a complete game from start to finish as several game programming books I own do. For example: Professional XNA Programming: Building Games for Xbox 360 and Windows with XNA Game Studio 2.0
Game Coding Complete, Fourth Edition
Downside to books is that they get out of date faster so if the book author doesn't update the code you are out of luck whereas online websites usually have more up-to-date code.
Java also has the unfortunate association of accompanying many college's move away from computer science and towards churning out code monkeys. Plus it's heavily associated with Oracle now, and nobody likes Oracle. Plus java has a lot of badly designed bits (datetime, type erasure in generics).
C++ has a very poor reputation. Maybe a better rep for games in certain circles, but in commercial sectors it's relegated to specific environments where nothing else can go or to vital legacy code.
Yup, Oracle I've even moved away from programming in Java since Oracle took over Sun. I mean they even ran off the creator of Java so that should tell you something. Not to mention I primarily program for MacOSX these days and AFAICT JAVA is fubared on that platform. Apple used to ship a Java VM and provide the Java SDK but now they just refer you to OpenJDK. Anyways, before all this fiasco happened I would've said in layman terms as I've said before that the illogical hatred towards Java, since it's actually pretty similar to C# which everyone seems to love, at least early version of C# I programmed in, was because programmers hate being told what to do. That's the thing with Java see it's like having someone looking over your shoulder when you are programming telling you don't do that, it's dangerous, do it this way since it's the safe way to do things whereas C/C++ it's like you are expected to know what you are doing so you are allowed to do whatever you want so if you want to overwrite that piece of memory or go overy the end of an array you must know what you are doing just don't come crying to us why your program doesn't work
But as I heard Stroustroup once said there are languages one complains about i.e. Java, C++, etc and languages no one uses i.e. Lisp... okay this is the original quote: "There are only two kinds of languages: the ones people complain about and the ones nobody uses"-Stroustroup
I say this from a C# point of view where pointers are non existent, not sure if thats relevant. Oh also I read about Wild pointers but they never really explained what a pointer was capable of.
Actually, C# does have pointers. That's what the unsafe keyword is for. But as has already been pretty much covered by everyone else, modern OS's do a pretty good job of isolating your buggy program in userland so that it doesn't do any damage to important things in kernelland. In older versions of Windows you were able to pretty easy reboot the whole OS using some bad assembly or even exhausting the heap memory calling new in a loop or any number of other stupid things. Actually, now that I remember that's probably why Andre Lamothe got such a bad rep around here back in the day.Teach Yourself Game Programming in 21 Days was the first game programming book I ever read and my PC would crash and reboot at least once per chapter going through his book. He loved using pointers, pointers to pointers, assembly to access the vidcard, soundcard directly, etc and one wrong move and KABOOM Then again this was before DirectX and Windows NT.
Nowadays, everything is pretty well locked down but there will always be area's that are vulnerable, graphic cards coming to mind since you are now able to run C++ code on them using things like OpenCL and WebCL. Not long ago there was a lot of talk on the security vulnerabilities in WebCL which should give you an idea of how "undefined behaviour" can take out your computer
p.s. I've been working with some OpenCL code on MacOSX and can't believe how easy it is to render a machine unusable since it's really easy to take over the graphics card so that the OS doesn't even have time to update anything else!
From what you said about math that is your only choice IMO ,since any decent college offering you a Computer Science degree will include lots of math compared to computer information systems degree. For example, I know of plenty of friends/co-workers that even got a masters in computer information systems with no more math than algebra. I mention discrete math to them and they have no clue what I'm talking about sad but true. My school required tons of calculus, discrete math, linear algebra,etc to get my Computer Science degree as most schools do. Those that couldn't handle i.e. pass the required math usually switched to computer information system,which included most web programmers since it didn't require any math at all. I honestly don't see how you can do any serious game programming without as much math as you can take. If you stick to web, business programming I can see how but even then a basic knowledge of discrete math should still be required and reinforce your programming since a ton of the data structures, algorithms can be traced right back to graph theory from discrete.
p.s. Also, I would try giving math another go especially with all the resources available today like Khan Academy, MIT and Standford Itunes University math courses covering everything you ever need. I know it would've made all my math courses a ton easier or it seems like it would've from what I've seen since my book/instructors weren't nearly as good at explaning things.
In Visual Studio 2010, Visual C++ has
shifted to using MSBuild as its build system
so there is a book "inside the Microsoft Build system" that you could check out but as mentioned most of the stuff is available online at MSDN.
Also, they used to have cool code snippets for C++ but I guess that was also too buggy that they took it out
Really, they did ? I did not know about that. Which version had that ?
Visual C++ Code Snippets:The Visual C++ Code Snippets tool lets you insert snippets in your code by using a pop-up menu that contains programming keywords. VB.NET and C# languages have this functionality in Visual Studio 2005.