-1+1392 
Game Programming

--Please Read--

I'm getting a LOT of people asking me if they can sign up to the class late, and where to find things, and all of that. Yes, you can still sign up, just turn in your homework by the regular deadline. You can find all the lessons and postings so far by just going to the course subreddit.

--Okay, back to the actual description--

This course will cover game programming from an introductory level and continue to an advanced one at a brisk pace. The course is set up to be language-agnostic, although most example code will be in Java.

Lectures
    no lectures added
Prerequisites

The course assumes basic programming competency. Early lessons will be quite easy for anyone, but later lessons will be very difficult for newbies. You should be at least familiar enough with programming to have a preferred language and set up external libraries in that language. There may be lessons that require specific languages; these will be announced at least two weeks in advance to allow you to brush up on those languages.

Syllabus

Class will start September 29th and classes will be weekly from that point onwards. The syllabus given below is highly tentative and will be stretched if I decide a topic needs more time than I've given it, or a student names a topic I should cover that I feel fits in well earlier than what I've listed.

Note with the listed homework that you only need to complete half the assignments for a full grade. Doing every assignment would be impressive, but is not necessary. Do note that some assignments depend on others, so you should probably look ahead before deciding to skip something.

Lesson 1 - Choosing a language and libraries. Introducing the bog-standard game loop. Homework - set up a game loop using any language/library pair besides Java/Java standard library.

Lesson 2 - Entities, object-orientation, collision detection and entity interaction. Homework - make a shmup.

Lesson 3 - Ways to build worlds. Tiles, objects, lines. Homework - make a platformer.

Lesson 4 - Tools programming. Level editors, level loading. Homework - make your platformer have levels.

Lesson 5 - How to make object interaction reasonably speedy. Grids and quad trees. Homework - make your Galaga clone have over 100 enemies on screen.

Lesson 7 - AI and Pathfinding. A*, state machines. Homework - do something where a pathfinder interpets the player input.

Lesson 6 - How to make menus and animation without pulling your hair out. State machines. Homework - make your last game have menus.

Lesson 8 - More pathfinding. Floyd-Warshall algorithm. Homework - Geometry Wars with terrain and pathfinding.

Lesson 9 - Procedural generation. Cellular caves, simplex noise, the Roguelike algorithm. Homework - spice up that Geometry Wars clone

Lesson 10 - Scripting. LUA. Homework - add scripts and a couple Zelda-ish puzzles to any previous project.

Lesson 11 - Physics. Box2D. Homework - do any tank-based puzzle game (Tetris, Puyo) that needs physics

Lesson 12 - Memory management. Mempools in C. Homework - make any game take advantage of a mempool and not blow up

Lesson 13 - Winter break. This lesson will be dangerously close to Christmas so it's something esoteric and the homework is extra-optional. How to program for Java4k. Homework - create a game you will enter in the Java4k competition. There will be a week off after this assignment.

Lesson 14 - Polish. Lerping, particles, camera shake, hit pause, fake lighting, idle animations. Homework - make any previous homework shinier.

Lesson 15 - 3D. Getting a basic scene to render in OpenGL. Homework - make something simple with a 3rd person camera.

Lesson 16 - More 3D. Ray casting, hit checking the mouse. Homework - make something simple with a 1st person camera.

Lesson 17 - 3D Procedural Generation. Simplex noise again. Homework - minecraft clones.

Lesson 18 - Vertex Shaders. Grass and water. Homework - make that minecraft clone prettier.

Lesson 19 - Fragment Shaders. The standard bump/normal/diffuse-specular stack. Homework - make that minecraft clone prettier.

Lesson 20 - Geometry Shaders. Particles and subdivision. Homework - make that minecraft clone even prettier.

Additional information

The course will have weekly graded homeworks. Almost all homeworks will be in the form of games - you are not expected to make completed, polished games, but you are expected to write functioning ones. You can take the class without doing the homeworks, but that, of course, also means no grades.

70% of your grade will be based on completion. You will have to complete at least half of the assignments to get the full 70%. The rest of the grade will be based on "smile points" - you get one each time you turn in homework that does something with the assignment interesting enough to make me smile. I may also give one for suggesting an especially good topic to add to the curriculum or for outstanding class participation. Each point is worth an additional 3% on your grade.

Letter grades will be assigned on a typical American scale. 90-100% is A, 80-89% is B, and so forth. If you get over 100% you can have an A+ or an S at your whim.

Teacher qualifications

I mentored Experimental Game Design at Rensselaer Polytechnic Institute for three years. I also beat Notch at a game programming competition once.

Latest Update

none

Roster
1. adnzzzzZ
2. jtjin
3. flowwolf
4. shpen
5. 16384
6. thesoundofbutthurt
7. Atiran
8. KiNGMONiR
9. fuzzypickles
10. Typicaltool
11. justj736
12. Pilgrim84
13. gullwings13
14. Planktno
15. theheyway
16. leprasmurf
17. retracell
18. CoalabeR
19. yataf
20. Gaznapiro
21. mk32
22. teknobable
23. jthomason4
24. trukin
25. thelinx
26. ilikeloudnoise
27. weros
28. porcupinetr33
29. algrym
30. yamamushi
31. lemoen88
32. nonsensoleum
33. KaiserNiko
34. charksey
35. duffius
36. wojchiech
37. davidoffbeat
38. carloshellin
39. baegolas
40. binaryatrocity
41. mangostache
42. phi
43. wizzla37
44. syathish
45. ultrapenguinx
46. lalocal305
47. herabek
48. Tyaedalis
49. Rubuler
50. sashanas
51. Ravakk
52. FlamingBrad
53. Intrebute
54. Revus
55. Bisonst
56. wwmorbodo
57. FAF00
58. Booray
59. fib
60. vexleir
61. schwede
62. joncui
63. TheMunchdown
64. RussianT34
65. kurasekai
66. Actionjaxon
67. Ideh
68. DrMon
69. Twad
70. chello
71. gloatingfiddle
72. PlasmaNuke
73. tangentstorm
74. MadDrummer
75. nydas
76. ebcube
77. Exterminator_Jeff
78. shotintheface
79. iimsmartii
80. aroberge
81. Diphoration
82. pseri097
83. Pure
84. wromleyCR
85. 64-17-5
86. Kali101
87. pun_on
88. uor70
89. ronan
90. psyphen
91. scottyah
92. alihelmy
93. ThirteenXXXVII
94. solidsnake275
95. orthod0ks
96. switchmod
97. Sam_Penfold
98. Deathwing23
99. mitsuharu
100. Johnny-Stu
101. Crapulam
102. niner
103. Alex2539
104. glados_v2
105. maltmaker
106. Spid3r
107. polnisch_vodka
108. LexAurum
109. timepilot
110. Vaelin
111. Whiteshizzle
112. bfizzle55
113. DarkMetroid
114. sculptedpixels
115. airwolf
116. femme-fatale
117. saucykavan
118. spencergordon
119. artswar
120. emulator3
121. Lordlipp
122. ____-____
123. Lorisidae
124. rjberry
125. kazekh
126. Walizzay
127. lessonplan
128. thesnazzle
129. faykour
130. TurplePurtle
131. Xemerau
132. heash
133. RollForReflex
134. ParaIdioma
135. atubofpudding
136. Stormageddon
137. Sux0rz
138. Bence
139. Thatoneguyyoulike
140. toma
141. pyrsquared
142. ArneZeeHappyElf
143. ostenmaker
144. darkkish
145. legodt
146. jbolduan
147. admrla
148. enb
149. DarkR
150. binaryadder
151. 4dspacewhale
152. jhc142002
153. ArcAde
154. wazzup80
155. chesterdjester
156. Shasta
157. Tankyroo
158. essbuh
159. cloudLight
160. bwochinski
161. jwwest
162. DeadlyBrad42
163. BostonTentacleParty
164. Flymypretties
165. mpsollmann
166. mementor
167. phoez
168. abcdefghijklmno
169. Hamstazilla
170. QuantaStarfire
171. roe-ur-boat
172. deimosthenes
173. MovingDiagonally
174. Qua
175. algor
176. heffaklump
177. maooi
178. FingersMckenzie
179. TheMilkMang
180. Kilo_bytes
181. rafnafaf
182. tsunilly
183. kih10
184. Flunkie
185. cocushio
186. vagrancy
187. Mr_Moe
188. ArchVince
189. breize
190. loneknifer
191. JonTerp
192. pazuzuswings
193. trevegh
194. walesmd
195. Mnemic
196. oeleboele
197. Johnste
198. sievo
199. byny
200. Hondai
201. chellmuth
202. Leffy_
203. rpdmatt
204. Flambe
205. Aeroby
206. timmahh
207. cdepatie
208. firen22
209. brcosm
210. KillTek
211. joss
212. the_nonameguy
213. andr0x
214. opatut
215. Blam
216. migu
217. unclemeow
218. mrcode925
219. zeninja
220. Bobbybobbets
221. cr4ke
222. djayp
223. feembly
224. pit9
225. HalleTheBest
226. supertopher
227. PurpleTengu
228. adamjleonard
229. eyessewnopen
230. aedan
231. BopperBen
232. bluenotesblues
233. thegrinner
234. EvilNorwegian
235. lego6245
236. Flackintosh
237. kniteli
238. TheBlueBomber
239. youlysses
240. Savvy
241. sec_goat
242. Jeraman
243. akz08
244. jawells
245. jdgbolt
246. ElectricGuillotine
247. traeler
248. rohshall
249. indenturedsmile
250. iomi
251. blu3jack
252. cubrex56
253. moebius23
254. onemoretime842
255. kslez
256. Radmobile
257. jmakie
258. callummr
259. PhaZ90771
260. mikeb21
261. Another_Engineer
262. care89
263. Shimmybot
264. szcukg
265. kdmon
266. GeekDownUnder
267. GeekDownUnder
268. krelix
269. RONNCC
270. jnesque
271. orangebot
272. iiiioooo
273. add7
274. ApolloWire
275. daivernon
276. sunburntfish
277. RealityShift
278. reparadocs
279. bobsocool
280. willurd
281. lee890211
282. Woeps
283. kilrizzy
284. Tyrone831
285. dark1knight
286. boogergobbler
287. elletom
288. Art_Vandelay
289. SilentMoose
290. jonurt
291. zecastelo
292. BackslashN
293. mycatpurrs
294. korovian
295. twynsicle
296. brisch
297. flightcrank
298. BarrionuLucas
299. Faber160
300. Rumple_Manskin
301. everblue
302. zafarmukeri
303. cambam47
304. Frietjes_met_toscaanse_saus
305. gregounech
306. longlivetoni
307. st1d
308. dustygenius
309. NetGhost03
310. CJLMan
311. wadadli24
312. maniacstudent
313. aditya.jitta
314. ricoDMT
315. shine_on
316. pridefulpropensity
317. Nyx
318. maximx
319. MrMiyagiSan
320. icelus
321. phasebeta
322. pnapieralski
323. Danimalion
324. mandyrad
325. ratbattle
326. davebrown
327. zz3599
328. shadowkilla
329. Rhyme17
330. ndoss
331. BermudaCake
332. rubenasm
333. luisbg
334. xuomo
335. Sondar
336. jackroberts9
337. PlotCitizen
338. tufyhead
339. Ter0
340. nateshake
341. mlatura
342. spiffai
343. haydenn
344. daelious
345. ThatOneCat
346. spidey1
347. panuvin
348. sabinmash
349. jimjjin
350. skirina
351. mrzero
352. matchai
353. drbanus
354. thunderbeef
355. shirishgoyal
356. Amorphic
357. thor-godofrock
358. Vorian_Atreides
359. nick426
360. Captain-Lightning
361. un3n
362. mrmcfakename
363. tactfulradio
364. partlycloudy
365. necromortalis
366. neofu50
367. tweedelee
368. fairvlad
369. Jimasd
370. aponyforeveryamerican
371. machinefetus
372. kyrugen
373. arcadiex
374. gomson
375. truth1ness
376. Beginner
377. Cucumbis
378. Madzooks
379. wonderwander
380. linkzorCT
381. ohnomellon
382. rboy518
383. Flexcash
384. filigrano
385. JollyGoose
386. Woobr
387. Masterrr
388. tobrien6
389. ducktheory
390. ducktheory
391. neop
392. xOnic