|
I have always been a strong believer in mastering the fundamentals - irrespective of the branch of knowledge. In the area of programming, the fundamentals are those of Computer Science: algorithms, data structures, efficient and performant programming techniques, knowledge of program representation, compiler and virtual machine expertise etc.,
However the above are dry subjects which dont immediately lend themselves to easy study: perseverance is needed and that is not a quality that most people, especially me, possess in abundance. Hnece I have been searching for a way to bring all these concepts together while working on a fun and practical application. Game Programming seems to be the answer.
In order to write a good 2D or 3D fast action game all of the above concepts need to be applied and mastered. A very good expertise in the implementation language is needed for creating compelling games. While most of the games out there in the market today are written in C++, primarily because they are targetted at a WinTel platform and C++ was the main game in town for this environment: that is no longer the case now.
However Java is catching up fast, and there are games written in Java now that are both single and multi-player. Thanks to advances in VM technology, the old complaint about Java not being fast enough for networked fast action games is a thing of the past.
In addition to being fun to "test", the game development process itself teaches us a lot about how to program well. I recently completed a 2D Fast action vertical scroller game adapted from Dave Roberts book. While the game was implemented using a combination of C and Assembler, I am now engaged in my second game project wherein I am planning to use Java. I write games for a single client - my 9 year old son. But the secondary reason for writing games is from a pedagogical perspective: It helps me understand and teach concepts that are otherwise too boring to grasp.
I think a semester course in game programming should be a mandatory part of every CS course. It shouldnt be treated as a specialization but instead as a fundamental skill.