The Art and Science of Computer Game Design

November 8, 2006

For anyone that enjoys playing computer games, a career and computer game design would be a dream come true. What could possibly the more enjoyable and rewording then designing your own computer game and actually being paid for it? Some designers are paid very, very well indeed. Every fan of computer games has no doubt at least occasionally fantasized having a career in computer game design, as a gamer myself, I have thought about how cool that would be myself.

If you are dreaming of a job in the computer game design industry, the good news is it’s a huge industry and there are loads of jobs available and it pays remarkably well if you should happen to come up with a hot seller. The bad news is that it is very difficult to learn the requisite programming skills that are required. Getting a degree in computer science is a solid beginning, but there’s nothing easy about achieving that either. Of the six friends I had in college that were computer science majors, only one of them has the fortitude to see it through and actually get a degree. It is a grueling major filled with advanced mathematics classes and tedious programming exercises. You really have to be smart, and you really have to be motivated.

If these things sound like something you could handle that a computer game design career may be something you could do. You will definitely need a deep abiding affection for computer games, but that’s pretty obvious isn’t it? My college friend that got his computer science degree is currently working for a well knowing game design company, and absolutely loves it. He will tell you though, that it is nowhere near the fun and games that he first imagined it would be.

Computer games today have absolutely huge amounts of complex code and can take years to complete. In the infancy of the game industry, computer game design teams often consisted of just a few people. Nowadays, a lot of the games have many different production teams all working simultaneously on a project, with each working in their own field of expertise.

For the really skilled programmers, there is no limit to what you can achieve. Experienced programmers with a proven track record under their belts can not only command a large salary but can have a lot of creative input over the direction of the game.

There are some other job in the computer game design industry and programming does not interest you. Generally, programmers are the most sought after, but good graphic artists and writers can be attractive employees to say game design producers. They may not be paid as well, but they most certainly still make an excellent living in the ever burgeoning industry of computer game design.

Morgan Hamilton offers expert advice and great tips regarding all aspects concerning games. Get the information you are seeking now by visiting Computer Game Design

Good Book: MUD Game Programming (Game Development)


Five Tips for Effective Object-oriented Programming in C++

November 8, 2006

Spurgeon’s Law says that 90% of everything is crap. This certainly holds true in the world of software development, and especially when it comes to object-orientation and C++ programming. This is largely due to the pervasiveness and complexity of C++; it’s one of the most commonly used object-oriented languages, and yet few people know how to use it effectively. Couple this with the fact that few programmers truly grasp the object-oriented programming philosophy and you have an instant recipe for sloppy code. Volumes can be—and have been—written on how to develop proper object-oriented software designs using C++. Obviously, there won’t be space in this article for a truly thorough discussion; however, I would like to present a few quick, simple and effective tips for developing robust C++ software.

1. Work on the class designs first before deciding on the precise sequence of operations. Many programmers fancy themselves as doing object-oriented programming, but in reality, they use structured programming with some external object-oriented trappings. Ideally, one should first select a set of software objects that provide a logical abstraction of the software, then work on the sequence of operations. (This is by no means an absolute rule though, as the process of developing this sequence often reveals ways in which the object design can be refined.)

2. Think in terms of design patterns. Design patterns allow someone to draw on years of problem-solving experience within the computer science community. Instead of reinventing the wheel, why not just pick one off the shelf?

3. Use ‘const’ objects and ‘const’ functions whenever possible. If you know that an object’s data is never supposed to be modified, then declare the object to be ‘const’. This will prevent you—or worse, a naïve colleague–from accidentally modifying its state later on. Of course, one should also declare the appropriate member functions to be ‘const’ as well, to properly enforce this rule.

4. Avoid using public ‘get’ and ‘set’ member functions. Getters and setters are not inherently bad; however, they are often a sign of poor software abstraction. ‘Get’ and ‘set’ functions implicitly force the user to think in terms of the object’s internal data (i.e. whatever these functions are getting or setting), and such details should ideally be hidden from the object’s user. Getters and setters have their place, but please use them sparingly.

5. Avoid double indirection. C programmers are forced to work with pointers, and so they are used to having pointers to pointers throughout their code. This can often lead to confusing code, due to the all-too-familiar problems of NULL references and pointer arithmetic. In contrast, C++ programmers are under no such constraints, due to the built-in support for variable references in C++; that is, one can always use references to pointers instead, which makes the code much easier to understand. (Hint: If a C++ programmer uses double indirection, that’s a clear sign that he’s still thinking like an inexperienced C hack!)

About the author:

V. B. Velasco Jr., Ph.D. has worked as an electrical and software engineer for more than a decade. He currently works for a biotech firm that provides cryopreserved PBMCs, ELISPOT analyzers and ELISPOT expertise.

Good Book: C++ How to Program (5th Edition) (How to Program)