Domain: gamedev.net
Stories and comments across the archive that link to gamedev.net.
Comments · 206
-
Re:So what does it do?
It's a thinner layer on top of your graphics hardware than DX 9, 10, 11, OpenGL 4.5 and below are. It's the cross-platform equivalent of DirectX 12. It'll be used a lot on mobile, mostly because it's a lot more efficient than OpenGL and therefore will be able to do the same work with less battery power, in theory at least. It's a lot more friendly to multicore CPUs than OpenGL. It's got an interesting "layered" architecture, very useful for developers. It's far, far easier to develop a driver for than previous APIs, so hopefully it'll improve competition, at least in the mobile space. All in all it's about time.
If you want the low-down on what was wrong with graphics drivers, read this eye-opening account from someone who worked a while at NVIDIA. -
Re:They don't need to be up there
Unless there's some monkey business going on in the drivers (hey, it's been known to happen), I'd be very sceptical that pairing two different manufacturers cards gives better performance than pairing two of the same manufacturer, all else being equal.
-
Re: 4 in a row
You can easily build those lessons around how to represent a chess board with 64 squares in code. This can be as simple as an array or complex as move generation.
-
Er, no.
In the linux driver you have a steaming pile of crap that barely works at all.
Not true - in fact, Nvidia's Linux driver is quite good. The issue is that 'important' games get special attention from the graphics companies, who special-case things in their drivers - replacing whole shaders, etc. That doesn't happen in Linux. It winds up being necessary because OpenGL has grown so complex that it's incredibly hard to write fast code for it.
Vuikan is liable to change that considerably - a much lower-level API, that engines can interface with more directly and consistently. The drivers won't have be huge tangles of special-case code, and will be much simpler to implement on multiple operating systems because they are called upon to do far less.
-
Re:These results don't make much sense
It's not just the number of API calls, it's all the things that go on in the driver. Things like shader recompiles to match new hardware state, mutexes and blocks on resource use, resource use tracking to make sure the next call doesn't interfere with the previous one and so on. There's a huge amount of bloat in drivers at the moment and it all contributes to the relative lack of efficiency. There's a fantastic post here at gamedev on the subject
-
Re:respectfully disagree
Making something free turns it into shit quality
Most commercial software is shit, it's just better at hiding that fact. For one example see : videogames
"Many years ago, I briefly worked at NVIDIA on the DirectX driver team (internship). This is Vista era, when a lot of people were busy with the DX10 transition, the hardware transition, and the OS/driver model transition. My job was to get games that were broken on Vista, dismantle them from the driver level, and figure out why they were broken. While I am not at all an expert on driver matters (and actually sucked at my job, to be honest), I did learn a lot about what games look like from the perspective of a driver and kernel.
The first lesson is: Nearly every game ships broken. We're talking major AAA titles from vendors who are everyday names in the industry. In some cases, we're talking about blatant violations of API rules - one D3D9 game never even called BeginFrame/EndFrame. Some are mistakes or oversights - one shipped bad shaders that heavily impacted performance on NV drivers. These things were day to day occurrences that went into a bug tracker. Then somebody would go in, find out what the game screwed up, and patch the driver to deal with it. There are lots of optional patches already in the driver that are simply toggled on or off as per-game settings, and then hacks that are more specific to games - up to and including total replacement of the shipping shaders with custom versions by the driver team. Ever wondered why nearly every major game release is accompanied by a matching driver release from AMD and/or NVIDIA? There you go."
http://www.gamedev.net/topic/666419-what-are-your-opinions-on-dx12vulkanmantle/#entry5215019
-
Actually...
-
Re:Very nice
Learning Modern 3D Graphics Programming , a work-in-progress textbook that's been slowly appearing online over the past two years (sections I-IV are now complete, V and VI still being written).
Actually that tutorial tends to swipe all the OpenGL stuff behind a framework and talks about graphics programming in generic terms. Otherwise it's still very high-quality and useful.
My personal favorite is Anton Gerdelan's OpenGL Tutorials. I find more practical OpenGL recipes from that one. Good also for the basic stuff to get shaders and textures going.
In general I have found OpenGL programming incredibly complex. Same seems to apply for DirectX. They are cool APIs but the learning curve is high. On the other hand, you get high performance and they are like "clay", meaning that you can accurately describe what you want, allowing for a lot of flexibility.
I still have a place in my heart for the old crusty, hacky NeHe tutorials. I wish there was something as straightforward for today's newbie graphics programmers, like me. The fixed function hardware is kind of thing of the past.
-
Re:Horrible mess
The SKYPE API was a HORRIBLE MESS, I bet at Microsoft they did not want to touch it, just let it die.
Good point. MS would never create anything so
... oh wait.http://www.gamedev.net/topic/289219-api-basics/
"The WINDOWS API is technically referred to as Win32, and is a HORRIBLE MESS
..."Never mind, move along, nothing to see
... -
Re:like anything else..
I said I can do the math, what I was not sure of was whether I understand what was behind it all.
The debate here does not change that, and you have not even touched on the argument between vector and quaternions yet and whether gimbal lock is a difficult or trivial problem.
For examples of this debate see http://www.gamedev.net/topic/25314-why-diana-grubers-wrong-about-quats/ and http://www.gamedev.net/page/resources/_/technical/math-and-physics/do-we-really-need-quaternions-r1199
Hint the real problem here is not working out a simplified 2D version with sin and cos and symbols, the real problem is coding this to handle how to display moving 3D objects (defined by arrays of floats) as seen by a virtual moving camera.
Saying the "same principle is used for 3D" is hand waving in the context of the subject of "is math hard"
-
Re:like anything else..
I said I can do the math, what I was not sure of was whether I understand what was behind it all.
The debate here does not change that, and you have not even touched on the argument between vector and quaternions yet and whether gimbal lock is a difficult or trivial problem.
For examples of this debate see http://www.gamedev.net/topic/25314-why-diana-grubers-wrong-about-quats/ and http://www.gamedev.net/page/resources/_/technical/math-and-physics/do-we-really-need-quaternions-r1199
Hint the real problem here is not working out a simplified 2D version with sin and cos and symbols, the real problem is coding this to handle how to display moving 3D objects (defined by arrays of floats) as seen by a virtual moving camera.
Saying the "same principle is used for 3D" is hand waving in the context of the subject of "is math hard"
-
Re:doing it wrong
+1
Tell him to write a game. One per week would be a good start. It doesn't have to be releasable, just written. Something simple, like tic tac toe, or solitaire would be a start. Then progress to things that require collision detection and crude 2d physics and animation.
For good graphics, learn OpenGL.
There's a massive quantity of tutorials at NeHe Productions.
With OpenGL being used on tablets and web interfaces, it's the way to get an edge.For bad graphics, take a look at Dwarf Fortress.
Even with text-only graphics that game brings in tens of thousands per year.Read Programming Pearls and Beautiful Code for unique ideas for approaching a problem. Take a look at the Fast Inverse Square Root for a good example of combining bit-level hacking with Calculus.
Nvidia made the GPU Gems series available online. It has advanced concepts, but is currently down. Subsurface scattering is an amazing effect, as is Navier-Stokes simulations.
MIT has a course on algorithms with video lectures.
If none of that piques his interest, then he shouldn't be a programmer.
-
Re:Anonymous Coward's Top Five Predictions For 201
At Gamedev.net someone also just started a discussion Predictions About the Future of Gaming .
-
Free Introduction to programming
The lessons are easy to follow, easy to write, very well written and provide a solid base of programming. And no book is required to purchase.
Trust me, he will enjoy getting into something that shows results quickly.
-
From someone who has a 6 year old
I'm posting this as someone who has a 6 year old (Who loves riding his bike, climbing trees and has wanted to be a scientist when he grows up since 4). I'm a C.S. person who worked in mainframes for years before converting to the dark side of management. My wife is an engineer.
For the circuitry aspect, get them "Snap Circuits" (Linky). It's fun to do with them, and teaches the basics of electricity and circuitry.
The computer, I gave him my old laptop (I always buy laptops with full keyboards AND the 10-key pad. I hate small keyboards, I have big hands.). I let him watch while I build computers (A hobby I do for friends / family), and explain what I'm doing. I don't feel he has the coordination to build it himself yet.
Emulators. I love emulators. Especially the old Mac emulators (Basilisk II, Mini vMac, SheepShaver). DosBox. This gives him a feel for "old computer" handling, and teaches him how to look up error codes and solve problems. When he solves things, the reward is playing old computer games (Wizardry, *Macintosh* Dark Castle, Lemmings, etc.). He really gets a kick out of doing that. It also teaches him how to mount and dismount drives without corrupting images. What that previous sentence means, and what happens when a disk image is corrupted.
Since his computer is a laptop, it's easier to take to different places, load in the car for long trips, etc. Since it's my old laptop, I don't mind if he breaks it (Although he's been warned that's his only computer for "A long time", so take care of it).
The computer is running Windows XP simply because Windows is the OS his school uses. I don't want to confuse him too badly. The main "TV Computer" (My HTPC) runs Linux. He uses that for some things, so he is exposed to Linux.
I want to get him into programming. I suggest finding online tutorials to go with compilers (Nehe is my preferred tutorial), but he isn't quite ready for that. He will be programming before 10.
Like I said earlier, every kid is different, so go with what works for your kiddo. Good Luck.
-
Re:Can I learn how to program the GPU from the sou
How about just doing some tutorials? Those ones are pretty old of course, but they're what I used when I was messing around with 3D graphics as a teenager.
-
Re:AAA games?
Anti Aircraft Artillery? American Automobile Association LR03 1.5v batteries ? Amateur Athletics Association ? Abdominal Aortic Aneurysm ?
and so on.
I remember playing games based on the first of those (Ack Ack gunner) about 30 years ago
I read TFA, and the term is not defined. Maybe the gamespot.com audience for the article would be expected to know it, but not all Slashdotters are gamers, so, yeah, a little help in the summary might be in order.
So I googled it, not expecting to get lucky on the first try, but I did. The first result actually answered the question, I think. It's a "big budget" game. Or maybe it reflects big sales. Or maybe a game of particularly high quality. Still not sure, and still not clear on the etymology of "AAA", maybe it's like a bond rating? Like that makes it any clearer.
-
Re:Microsoft should know...
Microsoft supports CSS 3D instead. Seriously Microsoft is right about security flaws in OpenCL and WebGL as skeptical as I am.
I read stories here on slashdot with computer scientist publishing articles saying how bad OpenCL is from a security stand point. No user priveldges at all in using the GPU.
If only drivers did not contain scripts, trusted, and untrusted code in a demonic bastion could we trust them. Check this out, when a null hits a texture load api? A simple Javascript could root the system easily using webGL and read your ram just like that example above printed out the contents of the users VRam as a texture.
Another example of hardware acceleration with security gone wrong is flash. It seems the new flaws of security are graphics related. We need a new graphics API, frankly Intel, Nvidia, and ATI have shitty and horrible drivers no matter what the platform is. Even my ATI 5750 can not render the stupid aquarium right with Firefox 4 in Windows 7. I admit I am not a hardware expert but it seems the driver model in itself is flawed.
-
Re:required peripherals
I used to hope for something like that myself when I was a teenager, I considered trying to write a racing sim a few times, at least in 2D if not 3D, but that idea ended up falling by the wayside.
Here's a list of good physics engine type tutorials including many links to Brian Beckman's tutorials, they're great if you want to learn more about car handling or simulation.
If you wanted to see some real code that implements realistic car physics then have a look at TORCS
:) -
Re:OpenGL - do they still have that?
Read over this if you want. Seems to be a good discussion of the whole thing. http://www.gamedev.net/community/forums/topic.asp?topic_id=566282
-
Get a CS Degree
Companies will hire depending on who they are looking for. There is some stigma about the trade schools sometimes, and a CS degree will get you to other jobs aswell. While it is a flame-war-able debate, I'd argue on the side of a CS degree over the tradeschools. Trade schools are good, as I work with several people who came from those degrees. But there is a divide on knowelege. Trade school degrees like FullSail give a good overview of the game aspects of programming and design, but they lack some of the more fundemental courses of Computer Science and Mathmatics (like compilers, languages and automata, operating systems, parallel programming, etc.) The CS degrees on the other hand lack a lot of the hands on programming courses focused on game specific technology like Graphics, AI, and Design. Really, the best bet would be trying to get the best of both worlds.
Also, let them know that the pay is lower for the hours worked when compared to other computer programming positions out there in the world. They have to be motivated to make games or they are going to burn out fast. And, yes, the ones who actually want to make games should already be making them. If you start making games/programming when you get into the industry you are 10-15 years behind the people of the same age who were actually motivated to work in their free time.
Point them at good side resources. What are they interested in? Send them to Wii/PSP/PS2/PS3 homebrew sites to learn to hack away on real hardware. Send them to modding communities to make HalfLife 2 mods, or Quake maps, or Starcraft 2 maps. Send them to places like http://www.gamedev.net/ http://aigamedev.com/ http://www.gamasutra.com/ or other high profile programming forums.
Encourage them to do ACM programming contests or topcoder.com programming contests. Get them to learn to solve problems, debug programs, and use source control. Get them to explore stuff other than programming; having a good understanding of art, music, or some other set of game related tallents helps out the team flow.
Even after doing a tonne of programming on the side since forever ago, I still don't feel like I learned enough before becoming a dev. And after two shipped titles, I can say you still have to learn on the way. Technology changes too quickly to ever stop learning. Getting to the goal of being a game developer isn't the end of the road.
-
Re:Valve...
I use to play all the Quakes and some UT in linux, at better FPS than windows 2k. You are crazy to think linux is "hardest to develop for".
When i was a kid i was working on my own ogl game for linux... AS A KID. I can post the sourceforge link if needbe.. but it's embarrassing to look at now, hah. But i relearned it as an adult from: http://nehe.gamedev.net/
Seriously, check out nehe. Look on the left side, down to the OpenGL Basecode section. You can see C#, GLX, Cocoa, and so much more there. You can download each version and compare what's more difficult.
Though i am still a big openGL fan, i have used C#+XNA for some projects. Really need to get back to some c++ though.
I'm curious, what fundamental changes need to be made to linux? Because it's had fantastic games in the past.. equal to the windows versions. Linux has only improved since then.
-
Re:If you can't beat em...
Reminds me of a situation Yann L found himself in (see his post here). For those who don't like clicking links:
We've had a very annoying situation in the past, where someone (we know who he is, but I won't disclose any details for obvious reasons) actually took the detailed explanations about a novel technique a colleague of mine and myself gave on various occasions (presentations, and also from posts on these boards), and tried to file a patent in his own name on them, with the intention to sue us afterwards for patent infringement on 'his' invention. We sued, and won on prior art, but it costed us a lot of money (we won't get anything back from the guy, he doesn't have anything). Both myself and also my company believes that technological innovation should be freely available, and that's why we were always pretty open about it in the past. But if some people try to use this against us with the intend of making a quick buck (some passages from some of my older posts in the GP&T forum were almost quoted 1:1 in this individuals patent application !), then we have to be much more careful about what we say on public platforms. Eventhough a simple post in this forum can classify as prior art (and more so a published paper), it is still upon us to prove it - and that drains on our resources.
It's a real shame - the guy knows his stuff, and every game dev out there would like some more detailed posts on his research. I hate patents more than most, but unfortunately relying on prior art is foolish in this day and age (unless you have an extremely happy looking bank balance!). Save yourself the bother and apply for the patent if you really think it's worth it..... -
Re:can't trust self if microsoft
He was modded troll, but hes right.. sort of.
The problem isnt "windows" .. the problem is "x86 computers."
Accurate timing on the modern PC is ridiculously difficult due to the hardware situation. The original IBM PC and its clones came with Intel's 8253 or 8254 Programmable Interval Timer (PIT) chip and back then it was pretty good. This timer chip had an internal frequency matching the CPU's of the time of 4.77mhz, and ticks were evenly distributed between 4 internal counters, so each counter had 1193181.81818181.... ticks per second. Pretty damn good.
Many of the old-school people might be familiar with the 18.2 ticks per second of the DOS clock. This rate was a direct consequence of configuring one of those counters to emit an interrupt every 65536 ticks, the longest possible interrupt interval due to these chips using 16-bit words.
Anyways, over time many manufacturers stopped using Intel's PIT's and started emulating them with other hardware (such as PMT.) None of these emulations can be configured to tick at exactly the same rate as the Intel PIT, and even among these emulated timers there wasn't any consistency.
To counter the serious problem of accurate timing on the PC, Microsoft and a few other large companies moved to define a new standard named HPET. Many new motherboards will have an HPET timer, but not all of them, and there are some problems with some HPET implementations as well (such as appearing to tick backwards sometimes.)
The issue of accurate timing on PC's has considerable effect on multi-player game developers.
A reference to some of the issues, and some of the attempts to fix them (source code) -
Re:They are both platform agnostic.
How about something from the 25th lesson? http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=25 The implementation of CreateGLWindow() is very windows specific, and from what I've looked at, there doesn't seem to be a tutorial for a Linux/X11 nor a SDL specific implementation, they do have GLUT for OS X and Solaris.. However, actually creating a window and polling for key input is very platform-specific with NeHe's tutorials, which may be why the OP was asking for tutorials specific to Linux.
-
SDL/OpenGL tutorial
Here's a tutorial to get you rolling with OpenGL in SDL under linux. Once you get rolling with that, you can proceed to the NeHe tutorials. http://cone3d.gamedev.net/cgi-bin/index.pl?page=tutorials/ogladv/tut1
-
Re:Have you tried this thing called 'Google'?
Seconded. GLUT is probably the easiest way to get started. If you go to the GLUT page you'll also find a list of OSS alternatives to GLUT (GLUT is free but closed-source) if you'd prefer to use one of those. Although this tutorial makes a reference in the beginning to some MSVC-specific pragmas to set linker options, it's probably pretty good for your purposes on the whole. Finally, there are other forums more specifically geared towards the things you're interested in; e.g. gamedev.net.
-
Re:They are both platform agnostic.
Indeed - basically all NeHe is lacking is a Linux version of http://nehe.gamedev.net/lesson.asp?index=01 , instead of just Windows, Solaris and OS X. The rest of NeHe works fine.
I think a bigger point to watch out for is that some of NeHe's tutorials are quite old, and not that relevant for modern rendering techniques (e.g., immediate mode, display lists).
-
Have you tried this thing called 'Google'?
There are tons of places. Start with NeHe.
-
Re:nevermind the blind -- bring on the androids
the company Second Sight promises to commercialize the implant, aiming for VGA resolution within the decade.
And, if they achieve VGA resolution, you can just get the next upgrade in software!
-
Re:OpenGL and the rant about marketing
OpenGL tutorials are here. Those cover a whole lot more than just triangles and in many languages.
-
OpenGL 3.0 cock-up
I prefer open standards, but unfortunately OpenGL is proof that design by committee doesn't work. There was a lot of negative discussion when infamous OpenGL 3.0 API was released: http://www.gamedev.net/community/forums/topic.asp?topic_id=504547
Also this video is quite a laugh: http://www.youtube.com/watch?v=sddv3d-w5p4
-
Re:OpenGL and the rant about marketing
Just to get you started: http://nehe.gamedev.net/
-
Assembly != OptimizationJust because it is written in assembly doesn't mean it's optimized. Assembly is only useful to implement the most optimized algorithms, otherwise the result is just fast "slow code".
Michael Abrash's Graphics Programming Black Book is a great book to really understand the philosophy behind assembly optimizations.
-
Re:Start here
Gamedev might be a better place to find people to work with - either advertising yourself, or looking for a project to join.
(Just beware of the "I've got a great idea for a MMORPG, it's gonna make millions, who wants to write it for me?" posts.)
-
Dirty Top-Posting Bastard
This is the standard link for the "How do I get into games?" question.
-
You mean like fork()?
-
Re:Good for him.
A detailed post-mortem is always a good thing. I have to say I love reading gamasutra's PM's - I get a much better perspective on the projects I do, if I can occasionally see how other people got through theirs.
I agree wholeheartedly. I usually go to GameDev's collection of post-mortems, which includes links to gamasutra's. The "what went wrong" sections are especially insightful.
-
Preformulated attacks?
The last paragraph of your post appears almost verbatim in a forum post elsewhere.
I would like to know what's going on here - obviously somebody is copying statements around, possibly from some other, earlier source. The same thing happened in this Slashdot post and the same forum I linked to above.
I want to understand what's going on, because it clearly looks fishy.
-
Re:The "experience" meme
[...] Her time has been spent as an executive. She's done budgets, personnel, and signed and vetoed legislation.
Obama has done, oh, none of that. This is why his campaign's statement about her being the mayor of a small rube town was so silly. It allows Palin to say "Well, by all means, lets hear of your impressive credentials as a community organizer". [...]
Read the above, then read this forum post, which contains the exact same words.
Coincidence? Same person? Pre-written sentences from (close to) the McCain campaign? I'm curious...
-
Re:Think Antarctica
The problem with gaming on Linux is it will always be dependent on Wine because of DirectX,which of course means having to play catch up to Microsoft. I had always had hope that eventually OpenGL might catch up and be a serious contender like it was back in the '90s,but since it appears OpenGL is dead as Dixie for gaming,that hope is pretty much dead.
Which means our best bet is a combination of Wine getting "good enough" DX9 and DX10 support,along with Win7 turning out to be a suckfest like Vista so we don't have to worry about DirectX11+. Now the last time I used Wine its DirectX9 was getting pretty good(don't have a DX10 card so I don't know about that) but Microsoft hasn't put out two total stinkers in a row ever. But if Ballmer puts out another slow DRMed mess like Vista then Linux could have a shot,but what would really tip it towards Linux is if someone could come up with a gaming API that is as easy to work with as DirectX. Does anyone know if there is anything cross platform out there besides OpenGL,or will we forever be needing to run DirectX to get our gaming fix? And before someone yells "PS3" there are plenty of us that can't stand consoles. I personally haven't touched one since PS1 and doubt I ever will. I just can't tolerate those stupid inaccurate controllers when compared to my keyboard and mouse. But as always this is my 02c,YMMV
-
Re:Question
The Gamedev.net thread on this is marked with an Angry Red Demon Breathing Fire emoticon - I knew it was bad just by looking at it!
-
Re:Finish the game first
Well indeed, I think it's fine if you have something to contribute, either as the programmer or someone with knowledge of designing educational products. As I say, "write it yourself (or as part of a team you put together)". This shouldn't be confused with people who are just trying to sell ideas - there seems to be a lot of other people (on forums like http://gamedev.net/ at least) thinking that their contribution needs be nothing more than "ideas".
Design can be a tricky one, because even if someone has written a fully fledged design document, it can be hard to know how well it will work until it's implemented, so I imagine it may be hard convincing people to work with you unless you pay them, they're your friends, you have a proven track record of past game design, or you are able to put together a working demo yourself to show people (you say "I can program a bit, but I have no idea how to make anything like a finished product." - that may be enough to attract programmers who can make a finished product, and will separate you from the "I have a great idea!" people).
-
Re:Ideas are cheap.
I entirely agree.
The poster should not be thinking about selling a "video game idea", he should think about selling a "video game". Write the game, then think about selling it, either themselves independently, or to a publisher. Don't expect a publisher to give money to write the game though.
Forums like http://gamedev.net/ will have far more specialised knowledge and experience than Slashdot. But there are also a million other people there going "Hey, I got a great idea for a game!"
-
The visual cortex is huge!
What to teach? Video games and graphics.
In a nutshell: Point him to,
Gamedev.net (The forums are the best I've found anywhere.)
cprogramming.com (Going through the C tutorials is a great, grea way to get started with the language.
Also give him one (or both) of these:
1 - A pointer to the framebuffer.
2 - Nice OpenGL initialization code.
In fact, I'd say that there is almost nothing as rewarding as starting with just a "putpixel(x, y, color)" function and finishing with a 3d cube spinning around. Programming graphics teaches so much: Math [motivation to learn linear algebra! A concrete way to understand parametric functions... and calculus (If you start coding before you take Calc I, you will reinvent Euler integration yourself)... and functions... and recursion/induction... and... well, everything...], abstraction (putpixel is inside drawscanline which is inside drawtriangle which is inside drawmodel which is inside drawbadguys which is inside...), etc, etc, etc. And since it requires speed (you want to run at interactive framerates), it'll motivate efficient algorithms, too.
And -- I should really emphasize this -- people are visual. Nothing taught me math like watching it draw pictures. Concepts that confused my classmates came intuitively to me (me! The kid who couldn't memorize his times tables in third grade! The kid who kept making sign errors! The kid who everyone thought was bad at math! The kid who's now a PhD student in Control Theory!) -- because I'd seen them draw pictures. The visual cortex is a huge part of our brains, and harnessing it does incredible things. So teaching graphics programming is bigger than just teaching graphics programming: It's making connections so that your son can visualize math. And that is huge.
Graphics and games. Give your son a pointer to the framebuffer. The rest will follow.
-
OpenGL
I know that when I was learning how to program, doing video games was what got me really interested, I'm not sure if this site's tutorials are still valid, but http://nehe.gamedev.net/ has a great number of tutorials that may be useful..
-
Re:No ShortCuts !!!
I dunno though, do many teens even like 2D side-scrollers? He probably grew up on Playstation. I was going to say go ahead and get him going on some OpenGL. NeHe's tutorials really make it pretty easy to get into. Of course he's be using C++ so maybe something easier.
Graphics is what got me interested in programming. I remember my high school Pascal classes. Unfortunately they were pretty boring. We did do some simple EGA graphics at one point but that was really the only interesting thing we did in class, though I did end up learning the fundamentals.
Thing was, to do anything cool you had to do all this VGA initialization stuff that was forever out of our reach at that level. Not to mention the computers were pretty obsolete even at that point.
I know there's a lot of (mostly unreasonable) hate around here for Flash, but I'd say get him into Actionscript3. It's really easy to do graphics in without having to setup windows and rendering contexts or getting to know huge APIs. It will introduce him to object oriented programming, but won't involve pointers or memory management or any of the more esoteric aspects of something like C++. Another thing is he can easily share whatever he produces with most anyone else who has a browser. If he is at all into social networking online (all that myspace bullshit) he can make some pretty interesting stuff for his friends' pages. Using Actionscript could also lead him to branching out into other web technologies, something probably more important in today's world than ever. It also has a similar syntax to Java or C++ if he wants to go in that direction. And as far as help and tutorials, there's really one of the richest communities around Flash, being a technology that was practically born in the middle of the blogging phenomenon.
The best thing about Actionscript is how quickly you can put something visual together and how little setup it requires. Graphics is definitely the way to go, and nothing in programming has a more immediate "wow" factor than throwing something pretty up on the screen. -
Re:No ShortCuts !!!
My dad showed me how to do basic text input/output when I was about 8, but while I understood how to use variable to do basic stuff like say "what is your name?", "hello ", I didn't really get going properly until a few years later when I got a BASIC games programming book (Amos BASIC on the Amiga). I'd tried one of those point'n'click programming things before that where you just draw things and plug them into the game, but I didn't do much with it because I wanted to build my own games, not just copy others with different graphics.
I started off writing lots of little random games, like catching fruit dropping from the ceiling in a basket, snowboarding (kind of the opposite of the fruit thing, stuff flowed up from the bottom and you had to avoid it, and my ultimate achievement was a 2D platformer thing where you controlled 2 'orbs' (saved on character animation
:P I had an animation for when they died but not for walking around) who tried to jump on each other's head to kill each other (like Mario and Sonic). I wanted them to be able to react realistically so they accelerated when you held down a key (at first I didn't bother to put a limit on the maximum speed so you could reach some hilarious speeds), experimented with them bouncing off the sides, going through the sides and back onto the screen etc. I think it was my idea to have them bounce off each other, but my dad told me the way to get it physically accurate (basically if 2 balls of equal mass hit each other in a 1D plane they will just swap their velocities, so I swapped their speed on the X axis when they collided, it worked really well :D ). Then I did a high score system, which was a good way to learn about basic sorting algorithms. I just used bubble sort in the end.Around that time my dad showed me how to do a 'Moire' screensaver style app to get me familiar with arrays and loops. I think that kind of thing would be a good early project because it gets you familiar with graphics and loops, and has an impressive looking output.
Another thing I enjoyed a lot and could be a very fun way to get into coding is to start coding up mods for a game he likes - especially if it involves creating doing AI work. AI is a *lot* of fun - it's great to be able to display a 2D image or 3D model on screen, but it's even more fun to see it moving around and reacting to an environment in an intelligent manner
:)One thing about coding in basic is that it does a lot of the work for you (especially things like Amos BASIC which had built in graphical editors for creating sprites and animations to use in your app). I've still never actually written a Windows GUI based program in C (though I've done a DLL for LabVIEW, some basic command line apps, and some experimentation with OpenGL for 3D and 2D graphics - see NeonHelium for some great resources), though I'm sure I could if I needed to. I used to have the mentality that I'd have to write every program from the ground up, but these days there are so many libraries easily available on the net that you don't have to get down to the basics unless you want to. Things like writing a networked app used to seem really daunting to me, but these days writing something like a simple chat client can be done in a few lines of code.
You can teach anyone the basics of how to code, but unless you find projects that they are personally interested in, they aren't going to really get into it. That's kind of stating the obvious, but I don't get all these people who are like "start them on language x/y/z so that they get to know control structures!". The language isn't so important as the actual project they are undertaking, though admittedly basic tends to be very basic. Most languages these days seem to use C style sytax though, so it could be best to start off on one of those so that it's easier to switch between different languages. I really wouldn't recommend starting on FORTRAN as someone suggested above!
-
Re:Do 3D
He could follow the lessons at nehe.gamedev.net for basic to more advanced OpenGL programming.
You can setup the environment for him (makefile, libraries, etc.) such that he can dive into the tutorials one by one and play with colored triangles, up to camera and textures. With each lesson he might need to learn some new concepts (e.g. bitmaps), and how they relate to code.
But make sure that, while an important subject, he doesn't need to find out how to link opengl/glut himself for his first simple programs.
Wanting to make cool graphics was why I started programming as a kid, not reading endless man pages with confusing concepts. -
More Game-mechanic Patent resources
Relevant discussion on EN World: Possible [4e] Rules Patent?
GameDev.net has a campaign to fight the IP claims of Hasbro (Wizards of the Coast is a subsidiary of Hasbro): Why the Hasbro Lawsuit Should Terrify Game Developers And what we can do about it
I'm toying with the idea of a free implementation of 4e to be released in wiki form under a multi-license scheme of CC-SA/FDL/GPL that might also include a fourth license option of OGL so long as it also includes all three other licenses. I will request advice from Technomancer Press, Tom Buscaglia, and some more legally savvy friends before forging ahead on that venture.