Curriculum - GP
- Theoretical programming (40 YH-points)
- Programming i C++ (40 YH-points)
- Object oriented programming and design (25 YH-points)
- Linear algebra with a focus on 3D-math (20 YH-points)
- Data structures and algorithm (20 YH-points)
- Design patterns for games (15 YH-points)
- Game oriented data structures and algorithms (20 YH-points)
- Development processes for software (20 YH-points)
- Software development (30 YH points)
- Game art programming (30 YH points)
- Network programming (20 YH points)
- Artificial intelligence (25 YH points)
- Tool development (15 YH points)
- Shader programming (15 YH points)
- Game scripting, implementation and design (20 YH points)
- Game concept implementation (45 YH points)
- LiA (150 YH-points)
The curriculum description is at the moment only posted i Swedish.
Programmering i C++ (40 YH-points)
Den här kursen är en grundkurs i C++ programmering. Under kursen får de studerande en genomgång av syntax för styrsatser och minneshantering. Begrepp som: klasser och objektorientering behandlas liksom pekare och pekararitmetik. Objektorienterad design med hjälp av arv, abstrakta klasser och polymorphism är delar som tas upp, liksom programmering med STL. Man går också igenom templates och operatoröverlagring. Under kursen körs kontinuerligt laborationer som bygger på varandra för
att skapa ett enkelt spel med hjälp av ett tillhandahållet 2d Framework.
Kursmål: Kursens mål är att de studerande ska få lära sig att jobba objektorienterat och lära sig C++.
Teoretisk programmering (40 YH-points)
Denna kurs fokuserar på hur man tänker som en programmerare: ”Hur
överför jag mitt mänskliga tänkade till en dator?”, ”Hur förklarar jag vad jag vill ha gjort?”. ”Hur konkretiserar jag mina tankar till en form som kan implementeras?”. Gängse metoder för att lösa problem som recursion, sökning och struktur behandlas. De studerande tränar logik och systematiska tillvägagångssätt.
Laborationer genomförs både på papper med flödesscheman men även på slutet i C++. Denna kurs studeras parallellt med kursen i C++ för att ge även den som inte tidigare programmerat en solid grund att stå på. Kursen innehåller även moment av teambuilding.
Kursmål: Kursens mål är att studenterna lär sig att tänka som programmerare och skaffar sig förståelse för teoretisk programmering.
Objektorienterad programmering och design (25 YH-points)
Kursen ger en fördjupad insyn i praktisk tillämpning av objektorienterad
programmering och design. De studerande ska efter kursen kunna arbeta med objektorienterade komponenter i ett större system. Kunskaperna de ska ha tillägnat sig är Objektorienterad analys, Objektorienterad design och Design patterns.
Kursens mål: Kursens mål är att de studerande ska kunna omsätta problem till objektorienterade lösningar.
Linjär algebra med fokus på 3D-matematik (20 YH-points)
En grundläggande kurs i linjär algebra med tydligt fokus på hur 3D-matematik appliceras i spel. Målet med kursen är att ge förståelse för 3D-matematik för att den studerande ska kunna jobba på ett projekt som använder sig av 3D,. Kursen inleds med grundläggande begrepp som vektorer, matriser och plan, med fokus på linjens ekvation och planets ekvation och hur dessa kan användas för att skapa de allra flesta intersectionkoder som behövs i spel idag. Vi går även igenom Dot och Crossprodukten och diskuterar praktiska användningsområden för dem i 3D-matematik, matriser för att skapa hierarkier av objekt och att flytta punkter mellan olika tredimensionella rum.
Kursens mål: Kursens mål är att ge de studerande en förståelse för 3D-matematik som kan omsättas i 3D-projekt ute i arbetslivet.
Datastrukturer och algoritmer (20 YH-points)
Denna kurs går igenom vanligt använda datastrukturer såsom länkade listor, Arrayer, träd, grafer och Hashtabeller. De studerande kommer att lära sig olika användningsområden för datastrukturer samt göra praktiska laborationer. Genomgång sker även av de vanligaste algoritmerna, framförallt med fokusering på Sökning och Sortering.
Kursens mål: Kursens mål är att ge de studerande en förståelse för hur man använder datastrukturer och algoritmer.
Design mönster för spelutveckling (15 YH-points)
Kursen går igenom en mängd olika standardproblem när det gäller designmönster i spelutveckling och lösningar som används för att hantera dem.
Kursens mål: Målet är att eleven ska kunna navigera igenom vardagsproblem inom spelprogrammering utan att återuppfinna hjulet varje gång. Istället skall studenterna kunna återanvända kunskap och lösningar som personer har skapat tidigare. Det vill säga att man använder och bygger vidare på designmönster som gjorts innan istället för att bygga nytt och lösa sina egna problem.
Spelorienterade datastrukturer och algoritmer (20 YH-points)
Genomgång av praktiska datastrukturer som används mycket i spelutveckling, med fokus på spatial dividering. Exempel på detta är datastrukturer som Ocr Tree, quad Tree BSP, tee, K-D Tree och griddar, som används frekvent. Andra spelspecifika optimerade strukturer som growing arrays och hashar kommer också täckas in under kursen. Vanliga spelalgoritmer som time splicing, A*, Lazy evaluation, optimerade strukturer för kollisionsdetektion kommer också att ingå. De studerande uppmanas att under kursens laborationer börja bygga på strukturer som senare kommer att bli ramverket för grupparbeten som följer.
Kursens mål: Kursens mål är att de studerande ska få en förståelse för hur praktiska datastrukturer används i spelutveckling.
Utvecklingsprocesser för mjukvara (30 YH points)
Kursen fokuserar på att lära ut olika utvecklingsprocesser. Fokus i kursen kommer att vara att lära ut de olika Agile utvecklingsprocesserna som XP, SCRUM, Crystal clear o dyl. Detta för att de studerande ska få en god grund att stå på när det gäller processmetodik när de går ut på LIA. Kursen är väldigt viktig för att förbereda de studerande på den arbetsmetod som kommer att användas under resten av utbildningen då de kommer att arbeta i grupper tillsammans med studerande från inriktningen Spelgrafiker på laborationerna. Meningen är att kursen ska förbereda båda grupperna, spelprogrammerare och spelgrafiker, att jobba ihop på liknande sätt som man gör ute på spelföretag.
Kursens mål: Kursens mål är att studenterna ska få en förståelse för hur utvecklingsprocesser har skett i historien samt ge dem de mest effektiva metoder man använder idag. Målet är att studenterna ska omsätta detta i samarbete med spelgrafikerna för att skapa en så verklighetstrogen spelutvecklingssituation som möjligt.
Applicerad mjukvaruutveckling (6p)
Kursen kommer att lära den studerande hur kompilatorn fungerar och hur den analyserar koden samt vad den gör med koden beroende på hur den är skriven. Genomgångar ges i praktisk kunskap om hur datorn arbetar på den lägsta nivån. Detta för att ge förståelse för effekten av den skrivna koden och hur den ska matas in för att det ska exekveras så snabbt som möjligt. Kursen kommer att täcka vanliga optimeringstekniker och snedsteg som t.ex. cachemissar. Kursen ska ge en rättvis bild av hur prestandamedveten programmering bör utföras. Praktiska laborationer med inriktning på att skriva nya moduler och optimera en existerande kodbas kommer att ingå. Vi går även igenom hur man kan ”profila” sin kod både med industristandardverktyg och att skriva sin egen ”profilingkod” samt hur dessa kan användas för att söka efter flaskhalsar.
Kursen kommer också att gå igenom den viktigaste färdigheten för verklig mjukvaruutveckling: att ”debugga”. Genomgångar av metoder och tillvägagångssätt för att leta ”buggar” kommer att gås igenom exempelvis hur man bör tänka då man jagar en ”bugg”, standardmetodiker som ”divide and conquer”, hur man strukturerar programkod för att göra den enkel att ”debugga”, hur man sätter sig in i en ny kodbas och lär sig förstå den till en nivå som krävs för att kunna börja fixa ”buggar”(något som är nödvändigt att kunna särskilt som nyanställd på ett företag). Kursen kommer att innehålla praktiska laborationer i debuggning i verkliga system.
Kursens mål: Kursens mål är att studenterna ska få en tydlig förståelse i hur kompilatorn fungerar och hur den analyserar koden samt vad den gör med koden beroende på hur den är skriven. Studenten ska efter kursen ha en förståelse för vikten av” debugging” samt hur man tillämpar det.
Applicerad grafikprogrammering (30 YH points)
Under denna kurs bör de studerande kunna bygga sitt eget spelramverk. Genomgång i grunderna i att jobba med DirectX under Windows. Man får sätta upp ”meddelandeloopar” och hantera ”Windowsmeddelanden”. Kursen kommer framförallt att fokusera på att sätta upp D3D, lära ut rendering av objekt, jobba med texturer och hur man utnyttjar ”vertexbuffrar” fullt ut, lite om HLSL samt multipass tekniker.
Kursens mål: Kursens mål är att studenten ska få en grundläggande förståelse för 3D-programmering.
Applicerad nätverksprogrammering (20 YH points)
Denna kurs handlar om nätverksprogrammering i C++. De studerande bör lära sig att kommunicera med TCP/IP och UDP protokollen med hjälp av sockets (winsock). Kursen går igenom hur protokollen fungerar och hur de används i spel, som t.ex. TCP/IP ”callbackfunktioner”, hur ”neagle-algoritmen” fungerar och till vad och hur de bör använda blockerande ”sockets”. De studerande bör efter kunna diskutera skillnaderna mellan ”stateless” och ”statefull” protokoll och hur de undersöka bandbreddsbegränsningar och hanterar dem. Under kursens laborationer fortsätter de studerande att bygga på det ramverk som de sedan kommer att använda för sitt slutprojekt.
Kursens mål: Kursens mål är att studenten ska få en förståelse för nätverksprogrammering för att kunna applicera den i ett spel.
Applicerad articifiell intelligens (25 YH points)
Denna kurs kommer täcka upp traditionella AI tekniker och hur de appliceras i spel. Man kommer att gå igenom olika metoder att generera grafen för A* som ”Point of visibility” och ”Navigation meshes” och ”hierakisk pathfinding”. De studerande bör även tillgodose sig en fullgod förståelse av ”fuzzy logic”, ”state maskiner”, ”neurala” nätverk och ”genetiska algoritmer”. Genomgång av ”scriptning” och hur man designar en lätt använd ”script interface”. Under kursens laborationer fortsätter de studerande att bygga på det ramverk som de sedan kommer att använda för sitt slutprojekt.
Kursens mål: Kursens mål är att studenten ska få förståelse för AI och hur den appliceras.
Verktygsutveckling (15 YH points)
I branschen läggs idag mer och mer tid på att utveckla de verktyg som tillåter designers och artister att trycka fram spelet till max. Detta är tyvärr ett förbisett område i många kurser. Den här kursen inkluderar: GUI design, hur man bygger ett användarvänligt GUI som artisterna kan jobba med, data formats design, Hur man bygger upp formaten som verktyget jobbar med så att det är flexibelt och enkelt att lägga till och ta bort nya strukturer, verktygsdatabasdesign och verktygsarkitektur så att de studerande senare kan undvika de vanligaste misstagen.
Kursens mål: Målet med denna kurs är att ge en introduktion till verktygsutveckling.
Shaderprogrammering (15 YH points)
Shaderprogrammering är en avancerad grafikprogrammeringskurs som går ner på djupet av shaderprogrammering med HSL. Vid slutet av denna kurs bör den studerande bemästra de vanliga tekniker som ”bump”, ”mapping”, ”parallax-mapping”, ”soft-shadows”, ”bloom” osv. De ska också vara tillräckligt insatta i syntaxen och i de tekniska möjligheterna med HSL för att vara kapabla att uppfinna sina egna shaders.
Denna kurs innehåller praktiska laborationer där den studerande får en existerande shader med uppdraget att lägga till viss funktionalitet för att visa att han/hon förstår den. Detta kommer att kunna direkt integreras i elevernas ramverk och gå vidare till Spelgrafikerna som jobbar på slutprojektets grafik.
Kursens mål: Kursens mål är att Spelprogrammerarna ska få en djup kunskap i grafikprogrammering och shaderprogrammering med HSL.
Spelscriptning, implementation och design (20 YH points)
I moderna spel är scriptning och gränssnittet till scriptspråket en stor del av vad som driver spelet och händelserna framåt. Under denna kurs fördjupar sig studenterna i kunskaperna kring detta och de studerande får ta del av var och hur man ska integrera ett scriptspråk i ett spel för bästa effekt. Vi lär oss om möjligheterna bakom dynamisk scriptning och hur man strukturerar en spelmotor för att maximera effekten av att ha ett scriptspråk.
Under laborationerna i denna kurs byggs den slutgiltiga delen av eleverna ramverk och de bör sedan vara redo för den faktiska Implementationsfasen av Spelkonceptet.
Kursens mål: Kursens mål är att studenten ska få förståelse för scripting och att gränssnittet till scriptspråket för spelet framåt samt hur man integrerar scriptspråket i spelet för att få bästa effekt.
Spelutvecklingsprojekt (45 YH points)
I denna kurs omsätter de studerande allt de lärt sig till ett praktiskt skarpt projekt. Anledningen till projektet är att de studerande ska lära sig arbeta tillsammans som ett lag under verklighetstrogna omständigheter samt att de ska få ett praktiskt projekt att visa upp för sitt LiA-företag och när de senare söker arbete.
Kursens mål: Målet med denna kurs är att de studerande ska få använda all den kunskap de fått under utbildningen och omsätta det till ett spel, både i programmering och med hjälp av den samarbetsmetodik The Game Assembly har tillhandahållit.
LiA (150 YH-points)