CS494/594 -- Networked Games

Jian Huang --- Fall, 2009


Professor: Jian Huang

Teaching Assistant: Jingyuan Wang

Course Resources

Class: TR 9:40AM - 10:55AM, Claxton 206.


Textbook

The recommended text book is "Pro OGRE 3D Programming", Gregory Junker, Apress, 2009. ISBN 1-59059-710-9. The following are a few reference books that may be of value.


About This Course

Now that you are sitting in this class, you are likely quite serious about a career involving fast rates of user-interaction coupled with pretty pictures and engaging sound effects. The user side of the perspective is very enjoyable, however, the developer's view is challenging and often stressful, especially when looming deadlines are constantly coming up. In this profession, you truly need to produce high quality software consistently and efficiently. But how do we define "high quality"?

There are many great features that can be tied to the notion of "high quality". Those include re-useable, reliable, efficient, scalable, and so on. But those are just the ends, not the means. A qualified developer would need to be a shrewd thinker powerd by a whole range of specialized knowledge, skills and, more importantly, proven ways of practice. Additionally, in this field, working hard has more to do with kindled undertakings of the agony and stress to do the right things and doing them right than with spending long unproductive hours and pulling all-nighters in result. Let's keep that in mind. Of course this is not saying you won't be a little sleep deprived. :-)

A key right thing is designing the software. There are many philosophys on this subject. However, without asking about the true meanings of those commonly shared phrases, most of those are not very helpful at all. Let's review some examples of those.

We should all write modular code. Right? We all know this. But this is merely an empty statement without considering the following:

It is just painful to always ask such hard questions for just a two word phrase "modular code"!? Isn't it? But now we are getting somewhere. Let's continute.

If interface is the sole way of connecting modules, interface is then very very very important. But what quality should be embodied in an interface design? What about transparency, expressiveness, and configurability? Have you ever referred to the literature of design pattern for reference? ... Well, you get the picture.

Many of these materials have been weaven into our curriculum. Yes, the very courses you took over the past several years. Go back and think hard what you have learned. Take up some additional reading, if necessary. For this course, I would like to assume that you are not totally foreign to these subjects. Note here though, knowledge combined with skill still fall short without the support of a good way of practice. Do you have one?

To sum up, a vital concept here is designing programs to be connected with other programs. For this overarching goal, we always need to devise an elegant solution while under immense pressure of time and constantly evolving user requirements.


Tasks

In this course, we use networked games as a killer app to practice our trade :-). For a detailed list of what we will do this semester, please consult the main page of