Sidan 1 av 4 123 ... SistaSista
Resultat 1 till 10 av 31

Ämne: Datateknik GR (A), Spelprogrammering, 30 hp

  1. #1

    C++ Datateknik GR (A), Spelprogrammering, 30 hp

    Har anmält mig till en spelutbildning på distans på Mittuniversitetet.

    Den är om 30 Hp som man läser under ett år (halvfart) och består av 3 delkurser.
    del1
    del2
    del3

    Någon som har gått och har något att säga om den?
    Någon annan som ska gå den, eller har tittat på den men valt bort av någon anledning?
    Eller någon som bara har någon kommentar på hur ni tycker den verkar?

    Kurslitteraturen är:
    Charles Petzold, Programming Windows, Fifth edition, 157231995X
    Andre LaMothe, Tricks of the windows game programming gurus, SAMS, 2:nd ed., 0-672-32369-9
    Brian Schwab, AI Game Engine Programming, Boston, MA, USA, Charles River Media, 1-58450-344-0

    Någon input på den?

    /Gabriel

  2. #2
    Jag har oxå sökt in till den. Ska även börja på http://programvaruteknik.nu/ till hösten.
    De här är ett spel en student gjort i de kurserna. http://www.youtube.com/watch?v=dmViG5rTl3M

  3. #3
    Vad kul =) Bara hoppas vi kommer in då.
    Får väl reda på det nu i slutet av aprill va?

    Ingen som hade läst den tidigare och har synpunkter?
    Eller för all del någon "veteran" som tycker något om upplägget i utbildningen?

  4. #4
    Administrator TheSpaceMans avatar
    Reg.datum
    maj 2012
    Ort
    Eskilstuna
    Inlägg
    298
    Blog Entries
    1
    Vid en snabb titt verkar innehållet ok.

    Min enda reaktion är att jag fortfarande inte förstår varför utbildningar envisas med Hungarian Notation.
    Men det är ju tekniskt sett en smaksak i slutet.

    Målet med alla utbildningar är ju att sätta en in i grunderna så att man är redo att gå vidare med sin egen aldrig avslutande utbildning inom området.

  5. #5
    Hmm, det är ju alltid svårt att säga nåt om en utbildning när man inte har gått den. Men då jag under flera omgångar varit i en sits där jag behövt rekrytera spelprogrammerare (och speciellt nyutbildade programmerare), så tänkte jag att jag kunde ge lite kommentarer om hur jag bedömer dess innehåll (alltså från synvinkeln "lead programmer" som söker programmerare till sitt team).

    Om utbildningen står det såhär:
    Kurspaketet Spelprogrammering ger dig kunskap om hur du utvecklar tvådimensionella datorspel med fokus på spelflöde och spelrelaterad Artificiell Intelligens (AI). Du kommer att utveckla flera egna spel i projekt. Kurspaketet innehåller kurserna Spelprogrammering i Windows – introduktion, Spelprogrammering i Windows – II samt Spelprogrammering i Windows – III.
    Att man börjar med 2D-spel tycker jag är helt ok, men i en 30-poängs kurs tycker jag man borde ha hunnit till 3D-spel efter iallafall halva tiden (speciellt då det är ett förkunskapskrav på viss programmering). Fokuset på AI känns inte så klockrent (de flesta man intervjuar säger antingen att de vill jobba med grafik eller "AI", men i regel så har de efter sin utbildning en väldigt luddig bild av vad "AI" egentligen är... På de flesta ställen jag jobbat har man inga "AI" programmerare - bara gameplay-programmerare, som även inkluderar det lilla man har med av det akademikerna kallar "AI"). Men på det stora hela låter det ok så långt.

    Men sen... Spelprogrammering i Windows... Alltså, windows-programmering utgör en extremt liten del av det vardagliga arbetet med spel. Och de mer aktade spelutbildningarna brukar ha betydligt mer bredd på plattformar, och det är inte helt ovanligt med utbildningar där studenterna har tillgång till t.ex. PS3 eller liknande. Jag förstår att det kan vara svårt på en distansutbildning, och det kanske inte är så mycket fokus på ren windows-funktionalitet (får se sen när jag tittar närmare på kursplanen och så), men att kurserna heter "- i Windows" är lite oroande.

    Ok, sen till kurslitteraturen.

    Charles Petzold, Programming Windows, Fifth edition, 157231995X
    Alltså... det här är ju ingen dålig bok. När det gäller windows-programmering skulle jag nog klassa den som en av de bättre. Sen kan man ju tycka att sjätte utgåvan skulle vara lämpligare än femte (det är 14 (!) års skillnad mellan dem). Men att ha en sån här textbok för en kurs i spelprogrammering? Det är väldigt förbryllande. 99% av det som boken går igenom är sånt man inte använder i spel, bara i applikationer. Att gå igenom windows-kontroller som checkboxar och listviews etc känns helt ovidkommande. Och nuförtiden använder man ju i regel C# för windows-programmering (vilket också reflekteras i sjätte utgåvan av boken), inte C++. Så det känns som att det mesta i den här boken är sånt man aldrig kommer att ha nytta av när man börjar jobba.

    Andre LaMothe, Tricks of the windows game programming gurus, SAMS, 2:nd ed., 0-672-32369-9
    Oj! Den här var oväntad... Vad ska man säga... även den här boken är gammal, 10 år sen den kom ut. Jag har läst första utgåvan (som kom ut ett par år tidigare), och kan säga att den innehåller många råd som är rent ut sagt dåliga (ett jag specifikt minns är påståendet att i spelprogrammering använder man globala variabler istället för att skicka parametrar till funktioner, typ att man har en global x och y variabel, som man sätter innan man anropar SetPixel(), istället för att ha SetPixel(x,y)). Mer kommentarer kring boken finns här: http://stackoverflow.com/questions/1...book-seriously Det är för mig ganska ofattbart att en modern utbildning skulle välja en 10 år gammal, dålig textbok. Dessutom har den stort fokus på windows-programmering (som GDI och liknande) som helt enkelt inte längre är relevant för spel.

    Brian Schwab, AI Game Engine Programming, Boston, MA, USA, Charles River Media, 1-58450-344-0
    Den här har jag inte läst - från innehållsförteckningen verkar den ganska bra, en grundlig genomgång av AI för spel, för en mängd genrer. Troligen en helt ok som översiktsbok. Men, det är som sagt lite oroande att man väljer att fokusera så mycket på AI, som ändå är en ganska liten del av spelutveckling. Men man får hoppas på att kursen fokuserar mer på Steering behaviours och Obstacle avoidance än på Neural networks och Genetic algorithms...

    Lite snabba kommentarer om lärandemål och innehåll (mina kommentarer i grönt)

    Del 1:
    Lärandemål

    - Du ska i C++ kunna använda dynamisk minneshantering och utnyttja pekare som referenser till dataobjekt och speciellt som funktionsargument MG: Bra
    - Du ska efter avslutad kurs ha grundläggande kunskaper om händelsebaserad programmering, callback-funktioner, hungarian notation och vanliga Windows-datatyper MG: Hungarian notation ska man inte använda. Den är verkligen ute. "Vanliga Windows-datatyper" är ointressant
    - Du ska ha grundläggande kunskaper om Windowsprogrammering (win32) MG: Win32 programmering i c++ är ju nästintill död. Och var aldrig relevant för spel (bortsett från lite uppstarts-kod)
    - Du ska ha grundläggande kunskap om spelstruktur och program med realtidsuppdateringar (ej händelsebaserade) MG: Japp, detta är bra, mer sånt
    - Du ska praktiskt kunna hantera fönster och meddelanden, grundläggande inmatning/utmatning, menyer samt enkla kontroller MG: Igen, ointressant win32-specifikt
    - Du ska ha förståelse för och kunna tillämpa GDI, Graphics Device Interface (ett generellt gränssnitt som applikationer kan använda för att hantera grafik och text), bitmappar, dubbelbuffring och timers MG: GDI används inte för spel
    - Du ska kunna tillämpa kunskaperna för att i ett två-veckors projekt skapa ett enkelt windowsbaserat spel i 2D (exempelvis som Tetris, Snake eller Space Invaders) MG: Alltid bra med praktiska tillämpningar. Bra som arbetsprov också.

    Innehåll

    - strukturer, pekare och funktionsargument mm. i C++ MG: Jättebra, gedigen C++ kunskap är ovärderligt
    - introduktion till spelprogrammering och win32 MG: Spelprogrammering: ja, Win32: nej
    - callback-funktioner, hungarian notation och vanliga Windows-datatyper MG: Som sagt, hungarian och windows-datatyper är slöseri med tid
    - grundläggande Windows, fönster och meddelanden, grundläggande inmatning/utmatning, menyer, kontroller (knappar) MG:Ovidkommande för spelprogrammering
    - GDI-modulen MG: Ovidkommande för spel
    - bitmappar och dubbelbuffring MG: Bra och relevant
    - timers MG: Bra - men det här är ett förvånansvärt komplicerat område, och är bara bra om man går in lite mer på djupet
    - spelloopen och hur den relaterar till händelsebaserade programmeringsmodellen i Windows MG: Bra, samma problematik återkommer i många andra sammanhang
    - vanliga strukturer och upplägg för enkla spel (ändliga automater, grundläggande 2d-grafik, samt kollisionsdetektion) MG: "ändliga automater" - är det finite state machines eller? Men det här är bra grejer, mer sånt!
    - enkelt spelprojekt under två veckor där det även ingår en projektrapport vilken beskriver tillvägagångssätt, problem som uppstått, lösningar och förbättringar som skulle kunna göras MG: Jättebra
    Del 2:
    Lärandemål

    Efter genomgången kurs skall den studerande:

    - Kunna utnyttja C++ för objektorienterad programmering i spelsammanhang.
    MG: Det är bra att kunna objektorientering - men man bör även lära sig om dess nackdelar. Borde även ha innehållit dataorienterad programmering, då det blir mer och mer av ett krav
    - Vara förtrogen med och kunna utnyttja DirectDraw för att skapa animationer och grafik
    MG: DirectDraw är, precis som GDI, också föråldrat och utdöende. Varför slösa studenternas tid på döda teknologier?
    - Skapa spelanpassade algoritmer
    MG: Bra!
    - Utveckla spellogik
    MG: Bra! Detta är mycket mer relevant än generell "AI".
    - Utveckla ett eget spel i ett projekt
    MG:Jättebra.
    Innehåll

    Påbyggnad C++:
    - klasser, objekt och medlemmar, olika typer av arv, kopiering av objekt, överlagring, operatoröverlagring, friends och dynamisk minneshantering
    MG:Bra!
    - klasshierarkier med dynamisk bindning och virtuella funktioner
    MG: Bra!
    - konstruktion av funktions- och klassmallar
    MG: Bra!
    - undantagshantering
    MG:Bra - speciellt om man lär sig varför man INTE ska använda det

    Användning av DirectDraw för:
    MG: Bra tekniker att lära sig, förhoppningsvis är det inte för mycket fokus på DirectDraw API.
    - animationer
    - dubbelbuffring
    - blitter
    - färger och transparens
    - paletthantering
    - klippning av grafik
    - spriteobjekt
    - grafiska användargränssnitt
    - skrollning av grafiska objekt
    - paralaxtekniker
    - tilesystem

    Algoritmer:
    - spelanpassade algoritmer
    MG: Bra!
    - olika respawn tekniker
    MG: förstår inte riktigt vad de menar med "respawn" tekniker... kanske är nåt jag missat bara :P

    Spellogik:
    - kollisionshantering
    MG:Bra!
    - turordnings baserade spelsystem
    MG: Bra

    - Spelprojekt inklusive projektrapport vilken beskriver tillvägagångssätt, problem som uppstått, lösningar och förbättringar som skulle kunna göras
    MG: Jättebra.
    Del 3:
    Lärandemål
    Efter genomgången kurs kan du
    - skriva 2D spel med hjälp av Direct3D
    MG: Man borde ha gått på Direct3D från början - gärna parallellt med OpenGL. Mycket mer relevant än GDI och DDraw
    - utnyttja en skriptmotor, Lua, tillsammans med C++
    MG: Bra! Lua är nästan industristandard. Hoppas bara man inte "fuskar" med LuaBind eller liknande, då missar man mycket bra lärande
    - implementera AI algoritmer anpassade för spel
    MG: Bra om det är "rätt sorts" AI - pathfinding, steering, state machines, behavior trees etc
    - utveckla ett eget spel från idé till implementation
    MG: jättebra - speciellt om ett av spelprojekten är i grupparbetsform
    Innehåll

    Påbyggnad, grafikprogrammering
    -Direct3D för 2D-tillämpningar
    MG: Bra, men borde kompletteras med OpenGL också
    -Optimering, profiling
    MG: Detta borde vara en stor del av kursen - är väldigt viktigt med lågnivåförståelse. Bra att profiling finns med!
    -Introduktion till 3D-grafik i Direct3D
    MG: Bra

    Skriptning
    MG: Bra
    -Introduktion till språket Lua

    -Syntaxjämförelse med C++
    -Datatyper och tabeller
    -Integration i C++

    Spelrelaterad Artificiell intelligens
    -Intelligenta agenter
    -Sökningsalgoritmer
    -Boids flockningsalgoritm

    Projekt, implementation av spel
    Jag gillar skarpt att varje del inkluderar ett spelprojekt. Se till att göra det bra och skriva koden snyggt, så du har nåt att visa vid en framtida intervju.

    Som sammanfatting kan jag säga att det finns en hel del bra och relevanta bitar i kursplanen - men tyvärr dras den ner lite av alla ovidkommande delar, och att man använder föråldrad litteratur. Jag tror säkert att man kan lära sig en hel del på kursen, men för en potentiell arbetsgivare så ser den inte så bra ut. Jag är ganska säker på att jag skulle kunna hitta kandidater som har mycket bättre utbildningar bakom sig, och skulle nog inte se denna kurs som särskilt meriterande.

  6. #6
    Tack för grundligt svar Mattias!

    Jag var också förvånad över den gamla kurslitteraturen och att den är så windowsfokuserad, jag tänkte saxa en del text från ditt svar och skicka till den kursansvarige, om ok, och fråga varför man har valt att utforma kursen så. Kan återkomma med vad han/hon svarade sen.

    Jag kommer som du säger inte lägga så stor vikt på det som är specifikt windows-programmering eller hungarian notations (mer än det som behövs för att klara kursen). det är ju det som är nackdelen med en utbildning kontra lära sig själv man får med sig vissa saker som kan vara onödiga osv. Jag kan redan en hel del om objektorientering och att strukturera kod (i java) så funderar på att köpa en ingående c++bok och lägga lite extra tid på det också.

    Jag hade inte tänkt att gå utbildningen och sedan räkna med att söka jobb som spelprogrammerare, utan ser det mer som att lägga en grund som jag sen bygger vidare på med självstudier/hobbyprojekt. Tycker utbildningar är ett ganska bekvämt sätt att lära sig, man får mycket strukturerat åt sig och mål och deadlines vilket gör att man måste göra uppgifterna. Eftersom jag jobbar (Har precis fått jobb som embedded-programmerare, WOOHOO! =) ) passar en distansutbildning på 50% bra att ta på fritiden.

  7. #7
    Klart det är ok, saxa på du bara :-)

    Och lycka till!

  8. #8
    Jag har fått svar från skolan:

    Hej,
    Jag har pratat med vår lärare Jimmy Hådén och han har skrivit följande svar:


    Tack för dina synpunkter, som jag också håller med om. Vi har i vår gjort en välbehövlig uppdatering av kursplanerna, där bland annat kurslitteraturen bytts ut och äldre tekniker som GDI och DirectDraw strukits. Hungarian Notation är också struken, även om den inte är specifik för Windows så är det inget som rekommenderas att användas idag. Följande litteratur används nu för kurs 1 och 2:

    Jonathan Harbour, Beginning Game Programming, Course Technology PTR
    Jonathan Harbour, Advanced 2D Game Development, Course Technology PTR

    Kurserna är fortfarande inriktade på Win32, där det används för just uppstartskod men också för input via tangentbord och mus och en del andra systemfunktioner som annars behöver anropas från något externt bibliotek. Målet med kurserna är förstås att få en inblick i Win32-programmering, men framförallt att se hur ett spel kan byggas upp. Med den kunskapen är det sedan inte svårt att applicera det på andra bibliotek för till exempel mobiltelefoner.


    Data-orienterad programmering är inget som tas upp i kurserna, men det är absolut något som kan övervägas i framtiden!



    Hälsningar
    Jimmy

  9. #9
    Citat Ursprungligen postat av Mattias Gustavsson Visa inlägg
    - Du ska kunna tillämpa kunskaperna för att i ett två-veckors projekt skapa ett enkelt windowsbaserat spel i 2D (exempelvis som Tetris, Snake eller Space Invaders) MG: Alltid bra med praktiska tillämpningar. Bra som arbetsprov också.
    Är det verkligen värt att visa upp ett Space Invaders för en potentiell arbetsgivare?

    Jag har ofta läst om vikten av arbetsprov, men vilken nivå bör dessa ligga på?
    /Peter Welzien

  10. #10
    Alltså, för en programmerare handlar det inte så mycket om hur bra spel man har gjort - det är kvaliteten på koden som räknas. Det är därför man bör skriva sina skolprojekt ordentligt, lägga ner lite extra tid på att göra koden gedigen, inte bara få den att funka.

    Även som programmerare med över tio års erfarenhet har jag ibland (på senare år) fått skriva just space invaders som arbetsprover inför intervjuer eller som utvärderingsprojekt under provanställning. Självklart väntar man sig ju en något högre kodkvalitet från en mer erfaren programmerare, men principen är detsamma - man frågar efter kod-prov så man kan utvärdera programmeringsstil, och se om kodaren i fråga lyckats undvika vanliga fallgropar.

Bokmärken

Behörigheter för att posta

  • Du får inte posta nya ämnen
  • Du får inte posta svar
  • Du får inte posta bifogade filer
  • Du får inte redigera dina inlägg
  •