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

Welcome to our forums. These forums were active from 2003-2014. We have now decided to close them down, but will leave them here as an archive.

Remember you can send us feedback, news, jobs and content ideas by clicking here.

If you're really stuck for time, email news@gamedevelopers.ie.

You can also follow us on Twitter @gamedev_ie 

 

 

This topic contains 32 replies, has 9 voices, and was last updated by  peter_b 11 years, 9 months ago.

  • Author
    Posts
  • #4765

    skooter500
    Participant

    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

    omen
    Participant

    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

    lk_
    Participant

    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

    peter_b
    Participant

    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
    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

    lk_
    Participant

    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

    omen
    Participant

    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

    Idora
    Participant

    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

    peter_b
    Participant

    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

    skooter500
    Participant

    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

    Skyclad
    Participant

    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

    skooter500
    Participant

    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

    omen
    Participant

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

  • #27157

    peter_b
    Participant

    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

    omen
    Participant

    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

    skooter500
    Participant

    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

    peter_b
    Participant

    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
    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

    Pete
    Participant

    Sounds like you left at just the right time Aphra!

  • #27373

    omen
    Participant

    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

    skooter500
    Participant

    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

    peter_b
    Participant

    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

    omen
    Participant

    Bet you could write it without STL even faster :)

  • #27475

    skooter500
    Participant

    Possibly,

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

  • #27477

    omen
    Participant

    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

    skooter500
    Participant

    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

    omen
    Participant

    “A star”?

  • #27481

    peter_b
    Participant

    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

    skooter500
    Participant

    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

    skooter500
    Participant

    Nice paper peter.

  • #27498

    omen
    Participant

    ?
    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

    hugh
    Participant

    Peter,

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

  • #27533

    peter_b
    Participant

    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 :)

The forum ‘Education, Training and Jobs’ is closed to new topics and replies.