Home Forums Education, Training and Jobs Structure of a 1 semester course

Viewing 32 reply threads
  • Author
    Posts
    • #4765
      Anonymous
      Inactive

      Hello there.

      This is my first ever post on gamedevelopers.ie.

      Anyway, I am teaching a one semester course on games programming this year. Its for final year computer science students who should already have programmed C++ for the past 3 years. I am about half way through and things seem to be going well. However, I am interested in receiving peoples thoughts on games programming in education to see basically if people think students are learning useful and relevant things on the course.

      Before the summer of this year, I knew very little about how games are actually programmed and so to teach myself, I developed a simple 3D FPS using DirectX called Dalek World. I used two books to teach myself “Introduction to 3D Game Programming using DirectX 9.0” and “Programming Game AI By Example”. The game I developed is not complete, but it has the elements of a deathmatch style FPS:

      A player controlled camera moving around a textured 3D world
      NPC Enemies that fire projectiles at the player
      Ammunition spawn points

      The approach I use on the course is to guide students to create the game themselves over the 12 weeks of the semester.The toolkit I use is DirectX and Visual Studio .Net (C++)

      In a nutshell, this is the course:

      Refresherer on vectors, matrices and trigonometry
      Using DirectX vector, matrix and trigonometry API’s to solve problems like perception, movement etc.
      Game architecture (a game loop algorithm)
      Introduction to DirectX
      Vetrex buffers and texturing
      Creating a “level loader”
      Creating a moveable camera
      Creating an OO framework for daleks, ammo, the world, the player, walls etc.
      Colision detection (bounding box and sphere)
      Steering behaviours – seek, arrive and follow path
      Graph theory – The A* algorithm
      Perception algorithms (basically intersection of two lines and a FOV check)
      State machines – the state machine design pattern

      So like I say I am about half way through the course and its building up nicely, so that by the end of the course students should know everything I learned in programmibg Dalek World.

      Anyway, the course is quite “low level” requiring students to programming everything in C++. There are advantages and disadvantages in this I suppose. These are the questions I would like to answer:

      Is what I am teaching appropriate and relevant?
      Is the course relevant for the Irish games industy?
      Is the approach correct?
      Am I using an appropriate toolset? In other words should I be using Torque or Quake or something else instead of having students program everything in C++?

      Thanks for your feedback!

      Bryan

    • #27096
      Anonymous
      Inactive

      Is what I am teaching appropriate and relevant?[/quote:5caf7a830e]
      Probably. However, I think you might be teaching a little too specificly. Make sure they know thats the methods you teach aren’t for your dalek game, they can be used in all circumstances. Make sure its not the dalek game you are teaching, but the methods involved.

      Is the course relevant for the Irish games industy?[/quote:5caf7a830e]
      Sure, why not.

      Is the approach correct?[/quote:5caf7a830e]
      Probably. Make sure you set some sort of goal in the course for the students. They should be asked to create a game of their own, hopefully deviating away for your taught dalek game as much as possible to show their adaptibility and understand of the code.

      Am I using an appropriate toolset? In other words should I be using Torque or Quake or something else instead of having students program everything in C++? [/quote:5caf7a830e]
      You could get an engine in, but I think you’d probably spend a lot of your time trying to teach the engine toolset rather than the methodology that you are currently intending to do. In my opinion, I’d make them stick to using C++ and DirectX, they’ll learn more.

      I’m not a lecturer, so don’t quote me on it, but it seems alright to me. one of the goals that was put on me as a games student was to make sure you have a demo by the end of the course that you can show people as that’s what you’re going to be using to try get a job afterwards. Games industry is a bit strange like that, a great cv won’t get you your first job, unless you have a decent demo to show with it.

    • #27100
      Anonymous
      Inactive

      Basically what Omen said. I’m currently working on a demo to hopefully get a job….. so it’s real important to make people aware that the qualifications alone aren’t likely to make it any easier for you to get your first job. As I was told by a very good source you need to “Wow” them.

    • #27101
      Anonymous
      Inactive

      As I was told by a very good source you need to “Wow” them.[/quote:9c92d0b3b5]

      who ever told you that is right in part, not everyone needs to wow them. only the very exceptional student will produce a demo which blows them away, majority of poeples demos are similar. Ability to finish the project, however complicated is worth alot more. Amount of unfinished code submitted is pretty high.

    • #27103
      Aphra K
      Keymaster

      I can’t really comment on teaching programming so Bryan this is just to say hi and to suggest that you could e-mail the contact names in our courses section also to sample people’s opinions..

      us lecturers are sometimes not great at posting!

      oh and come along to the shindig this Friday evening in Mahaffys!

      Aphra.

    • #27106
      Anonymous
      Inactive

      As I was told by a very good source you need to “Wow” them.[/quote:9cadb514da]

      who ever told you that is right in part, not everyone needs to wow them. only the very exceptional student will produce a demo which blows them away, majority of poeples demos are similar. Ability to finish the project, however complicated is worth alot more. Amount of unfinished code submitted is pretty high.[/quote:9cadb514da]

      Dave Perry….

    • #27107
      Anonymous
      Inactive

      oh, and i might be an idea to try make some contacts with art people. programmers are usually bad artists and there’s nothing better than some good art to spruce up a demo :)

    • #27110
      Anonymous
      Inactive

      also read the IGDA’s Curriculum Framework which outlines what ‘should’ be included in game dev courses:-
      http://www.igda.org/academia/curriculum_framework.php

      and as Aphra said if you’re in Dublin this Friday come along to the Shindig and you’ll be sure to have your ear bent with 101 informed opinions!

    • #27116
      Anonymous
      Inactive

      As I was told by a very good source you need to “Wow” them.[/quote:11f6673af2]

      who ever told you that is right in part, not everyone needs to wow them. only the very exceptional student will produce a demo which blows them away, majority of poeples demos are similar. Ability to finish the project, however complicated is worth alot more. Amount of unfinished code submitted is pretty high.[/quote:11f6673af2]

      Dave Perry….[/quote:11f6673af2]

      fair enough. but wowing isnt essential. few people produce work you havent seen before. alot are clones of other games etc. which is fine.

    • #27123
      Anonymous
      Inactive

      Thanks everyone for the feedback.

      I did have a look at the IGDA framework and my course seems to cover the “Game Programming” course they suggest.

      The main points I can gather are:

      Not to make the course Dalek World specific. I try and do that by demoing how the techniques students learn are used in commercial games, such as comparing camera movement in half life vs C&C generals for example and looking at path finding in RTS games.

      Encourage students interested in working in the industry to create a portfolio.

      Based on the feedback, I think I made the right choice in getting students to develop everything in C++/DirectX rather than using an existing toolkit. After all, I want them to understand the algorithms and there are many advantages to developing everything from scratch:

      1. Students learn lots of useful C++, such as templates and the STL
      2. Students learn appreciate the importance of OO
      3. Students learn reusable design patterns as a side effect, such as singletons, observer, state machine etc.
      4. Students don’t have to learn a new class library.

      Anyway, hopefully see you Friday

      Bryan

    • #27124
      Anonymous
      Inactive

      A one semester course is a very short time to be dealing with the topics that are mentioned – to obtain an acceptable understanding of any one of the areas involved that you mentioned would deserve a full year in its own (AI, 3d graphics, windows programming etc). Are any of these skills covered elsewhere during the course?

    • #27127
      Anonymous
      Inactive

      Well students can already program in C++ and understand UML. Students have 4 hours per week for one semester on the course. 2 hours lectures and 2 hours labs.

      I don’t cover AI, windows programming, graphics in great detail as these are covered in other courses. I just cover whats required to get the game together. For example, for graphics, I just explain:

      1. How to draw textured polygons
      2. How to draw a mesh

      For steering, we just do seek, arrive and follow path. For graph traversal, we just do the A* algorithm. For perception, we just do the intersection of 2 2D lines and an FOV calculation. The world is all rectangles, so colision detection is easy. Etc Etc.

      Bryan

    • #27150
      Anonymous
      Inactive

      Students learn lots of useful C++, such as templates and the STL [/quote:cc9d867354]
      STL….*shudder*

    • #27157
      Anonymous
      Inactive

      Students learn lots of useful C++, such as templates and the STL [/quote:39a7593f68]
      STL….*shudder*[/quote:39a7593f68]

      I agree few retail games use STL. We tend to use our own data structure libraries. And recycle our arrays etc. But its something i would like to see being used in games more, would sure as hell make my life a little easier :)

    • #27160
      Anonymous
      Inactive

      Are you serious? STL is horrible and more difficult to debug. There’s a reason companies use their own libraries, cos they’re written better :)

    • #27360
      Anonymous
      Inactive

      Guys,

      I never made it on Friday sorry about that. I fully intended to, but got waylaid in Ryans on Camden St after college. Oh well next time!

      Bryan

    • #27364
      Anonymous
      Inactive

      Are you serious? STL is horrible and more difficult to debug. There’s a reason companies use their own libraries, cos they’re written better :)[/quote:a47aa9321e]

      why would you want to debug stl, if theres a problem 95% of the time its how you used it. STL is generally fairly solid, well tested and debugged by developers.

    • #27369
      Aphra K
      Keymaster

      I was wondering Bryan. There was a good turnout, many pints and I believe a trip to Fibbers (that is where I had to bale out!)..

      no idea what happened after…

      Aphra.

    • #27371
      Anonymous
      Inactive

      Sounds like you left at just the right time Aphra!

    • #27373
      Anonymous
      Inactive

      why would you want to debug stl, if theres a problem 95% of the time its how you used it. STL is generally fairly solid, well tested and debugged by developers.[/quote:fad24f5b1e]
      Problem is when its someone elses code and its written badly. I’ve had bad experiences.

    • #27437
      Anonymous
      Inactive

      I would tend to agree that the STL can be quite useful for games programming. I’ve just writen an implementation of the A* algorithm using the STL priority_queue and map templates. It outperforms Matt Bucklands versions using a variety of different heuristics and IMHO is much easier to understand than the one from his book. It also adds nodes on the fly so unlike Matts it does not require you to pre-generate the graph. Its so good I’m thinking of writing a paper on it :D. Id be happy to share it if anyone is interested in seeing it.

      Bryan

    • #27447
      Anonymous
      Inactive

      I would tend to agree that the STL can be quite useful for games programming. I’ve just writen an implementation of the A* algorithm using the STL priority_queue and map templates. It outperforms Matt Bucklands versions using a variety of different heuristics and IMHO is much easier to understand than the one from his book. It also adds nodes on the fly so unlike Matts it does not require you to pre-generate the graph. Its so good I’m thinking of writing a paper on it :D. Id be happy to share it if anyone is interested in seeing it.

      Bryan[/quote:bd9c162c8d]

      think if you look you should find some papers published in relation to pathfinding and STL.

    • #27474
      Anonymous
      Inactive

      Bet you could write it without STL even faster :)

    • #27475
      Anonymous
      Inactive

      Possibly,

      But it would have taken twice as long to write! :D

    • #27477
      Anonymous
      Inactive

      Ah, but once you’ve written a good equivilent to STL to manage exactly what you want it to do and nothing extra, it’ll be solid re-usable code and twice as fast :)

    • #27478
      Anonymous
      Inactive

      Incidentally and on an unrelated matter. How does one search for A* in google?

      Ive tried:

      A*
      “A*”
      +A+*

      And none of them work :(

    • #27480
      Anonymous
      Inactive

      “A star”?

    • #27481
      Anonymous
      Inactive

      Google searchin with this : A star path finding
      works well.

      Although if you want a provably faster and easier implementation of A* search for Fringe Search.

      I implemented this some time ago in C++, you can download if from here.
      http://student.cs.ucc.ie/~pb2/work.html

    • #27496
      Anonymous
      Inactive

      Damian,

      Thanks for response. Was rather hoping for something a little more insightful. In case you didnt understand my post, google thinks * means the wildcard. I was looking for to make google recognise * as *. Hope thats a little clearer for you.

      Bryan

    • #27497
      Anonymous
      Inactive

      Nice paper peter.

    • #27498
      Anonymous
      Inactive

      ?
      I was suggesting writing “A Star” rather than “A*”. I never put symbols into google, never works well.
      Pete just expanded that to add “path finding”.

      Sorry if you’d already tried that, but you didn’t mention it… Not an expert on AI so wouldn’t know what pages would have tickled your fancy :)

    • #27529
      Anonymous
      Inactive

      Peter,

      Your Decision Trees paper is really good. Great to see this kind of work going on around the country ……

    • #27533
      Anonymous
      Inactive

      Peter,

      Your Decision Trees paper is really good. Great to see this kind of work going on around the country ……[/quote:9492e239a2]

      thanks for the thumbs up hugh. That paper that got me a good few job interviews and ultimately my job at Sega :)

Viewing 32 reply threads
  • The forum ‘Education, Training and Jobs’ is closed to new topics and replies.