Jag vill ställa frågan om du vill bli en grym programmerare på att göra spel och sen arbeta med detta, eller om du vill göra spel på fritiden för att det är kul? Hade du velat arbeta som programmerare hade du nog inte frågat om nybörjarböcker, så jag antar att du vill programmera för det är skoj att göra spel vilket det verkligen kan vara!
Jag har läst spelprogrammering i fyra år, och har kandidatexamen i det, och håller på med min masterexamen just nu. Vill du verkligen bli en grym spelprogrammerare måste du börja så hårt från början och lära dig så mycket annan skit att det är inte kul på något sätt. Så håll det på en rolig nivå istället! Då vet jag helt rätt sak för dig... C# och XNA! Du kan ladda ner C# Express gratis och XNA lika så, väldigt fördelaktigt.
Jag är väldigt bra i C++ eftersom jag läst och arbetat med spel en längre tid i det språket. Det finns dock ingen som helst anledning att göra spel i C++ samt OpenGL/DirectX där du får kämpa för att ens få en fyrkant på skärmen (för att inte tala om att få en modell renderad). Med två rader kod får du fram en modell med XNA, när jag skrev en egen modellrenderare för tre år sen tog den runt 150kB. Frågan är om du vill få resultat eller om du bara gillar att programmera? Jag tyckte inte det var tråkigt att göra en modellrenderare, men efter flera veckors slit är man ju inte det minsta närmare ett spel.
I ett projektarbete det tredje året bestämde vi oss för att göra ett spel helt från grunden. Vi var åtta programmerare och spenderade tio veckor på det. Med facit i hand självklart idiotiskt, vi borde i alla fall använt Orge eller någon tredjehandsrenderare. Vi lyckades få ett snyggt techdemo och det är ett ganska imponerande resultat om man vet arbetet som ligger bakom det hela, men det är inte mycket till ett spel. Man tvingas spendera tid på delar i ett projekt du kan få gratis i XNA. Visst nu lärde vi oss något på vägen, men med 2100kB ren kod hade man kunnat förvänta sig mer.
http://www.youtube.com/watch?v=ITmjNdE-EFo
Med XNA behöver du ingen dyr bok, du kan läsa det mesta du behöver veta på XNA's hemsida och det finns ett forum där folk gärna svarar på frågor. Det är lätt att komma igång och du håller din spelprogrammering på den nivån där du fortfarande lyckas få resultat på skärmen.
Detta har varit helt off topic, men jag ville bara göra ett försök att få dig på rätt spår. Nu on topic, och förhoppningsvis är detta inte längre något intressant för jag rekommenderar verkligen XNA helhjärtat.
Personligen började jag med OpenGL Game Grogramming, vilket är en bra bok för att starta från början och nå hela vägen fram till ett litet litet spel. Du kan komplettera den boken med t.ex. Focus on 3D Models och Focus on 3D Terrain Programming (sistnämnda är för övrigt en grym bok, oavsett om du planerar att programmera i XNA eller skriva allt från grunden). Beginning Direct3D Game Programming från samma serie om du vill köra DX, men jag har bara bläddrat i den boken. Personligen tycker jag OpenGL är att föredra om du planerat att koda allt på så låg nivå. Böckerna är gamla, men fortfarande relevanta som nybörjare, medelbra programmerare, och även de som är bättre än så (du kommer aldrig växa ifrån dem - om du gör det är du på en helt annan nivå och har således massa pengar att spendera på massa böcker). Game Programming Gems är en mycket bra serie böcker som jag rekommenderar allihop (finns många böcker i serien, GPG 1, 2 osv), men nu börjar vi snacka massa pengar här tyvärr för de är dyra. Vill du verkligen programmera spel måste du ha en bok om linjär algebra också om du inte redan är grym i det. OpenGL Game Grogramming är så snäll att den går igenom det viktigaste i av linjär algebra i början, och jag kommer inte ihåg men antar att Direct3D Game Programming borde göra det också (dock skadar det inte med en separat bok om linjär algebra).
Du kommer märka vilken fördel det är att vara grym i C++ när du går över till C#, som jag personligen tycker du ska göra. Har du fler frågor så ställ dem gärna.
Oh by the way, ju mer man programmerar spel ju mindre spelar man. Det är ett underbart sätt att totalt sluta spela spel på - att gå en spelprogrammeringslinje. Jag känner inte en enda människa som spelar WoW. Imaging that!