Categories
Game Design Game Development

50 Books for Game Developers

50 Books For Everyone In the Game Industry is a compilation by Ernest Adams.

Because I’m a game developer, I naturally gravitate towards books on development; but clearly 3DS Max tutorials and books on Java aren’t appropriate. At the same time, there are relatively few books on the shelves that teach how to create a marketing campaign for a videogame, or how to negotiate with Wal-Mart’s buyers.

In the end I decided to concentrate on the one thing that binds us all together: the games themselves. What I’ve done is to assemble a collection of books that address the following questions:

* What are games (and videogames)?
* What has been the history of video games?
* How are games related to other media, and what might we learn from those media?
* How and why do people play games? And finally, how (in general terms) should we design and build them?

So we won’t find books like “Game Coding Complete” or “The Indie Game Development Survival Guide” on this list, but we will find books that should be useful for anyone involved game development. Whether you are an artist, a programmer, a tester, or a producer, these books should give you greater insight into what makes for a better video game.

It is broken down into twelve topics:
1. Theory
2. Design Practice
3. Writing
4. Graphic Design
5. Music / Audio
6. Online Community
7. The History of Games
8. Sociology
9. People, Projects, and Businesses
10. Other Media and Useful Disciplines
11. Deep Background
12. Inspirations

Among the books listed are “Game Over: Press Start to Continue” by David Sheff, which documents Nintendo’s life from playing card manufacturer to the bringer of life to a dying industry. I found it fascinating when I read it a few years ago. “The Mythical Man-Month” by Fredrick Brooks was suggested to me recently by Larry. “Everything Bad is Good For You” by Steven Johnson has been touted as a good counter-example to the “video games are evil” crowd.

I’ve read some of the books and have more on my wishlist, but I did not know about quite a few of them. Quite a few of his choices are interesting, such as “The Hunt for Red October”. You could do worse than to follow Adams’ suggestions.

Categories
Games General Linux Game Development

Non-Profit for Linux-based Games

I learned that linuX-gamers.org has formed a non-profit organization in Germany, which is where it is located. I’ve found linuX-gamers to be a great source of news about games on the Gnu/Linux platform.

Major parts of our work will involve the support of communication, free exchange of knowledge and the linuX-gamers.net community through the linuX-gamers.net portal. We will care about developement and free distribution of open source software. Furthermore our work will cover organization of and participation in public events to make information available to a broad spectrum of people and to strengthen educational and scientific work on linux gaming related topics.

I don’t know the details of such work, but if it helps to improve the state of game development on Gnu/Linux and increases the number of games we can play, I welcome it. Good luck, everyone at linuX-gamers!

Categories
Game Development Geek / Technical General

Google Code Search

A few months ago, I posted about searching for code. I just learned that Google made an announcement last week about Google Code Search.

I tried it out, but I didn’t find too much more than other code search engines. I was expecting something more, especially in the advanced search section. You can search by license, for instance, but how hard would it be to list compatible licenses, too? For instance, if I look up code under the GPL, wouldn’t it be rather simple to also list similarly licensed code?

I tried looking for a piece of code that I tried to find a few weeks ago. I just wanted to use a Point class to represent a two-dimensional position in space. I figured it would be trivial to write myself, but it would probably be even simpler and less error-prone to find someone else’s well-tested implementation. I actually found that Google’s code search wasn’t returning results as well as other search engines. It was finding all sorts of code that happened to have the word “point” in it.

On the other hand, the engine does support regex, which is really nice. I don’t know how many times I have wanted to search for something with:

 #include\ "sd[a-z]*.h" 

Typing the above actually shows you the source to SDL_image.h, specifically as part of the framework source for the Weird Worlds demo, interestingly enough. Small world, eh?

And of course, being the vain Internet user I am, I decided to do a search for my name. The search engine actually returned results that included the source to a number of my projects! I guess Google does a really good job of crawling websites.

Categories
Game Development General Personal Development

Thousander Club Update: October 9th

For this week’s Thousander Club update:

Game Hours: 203.75 / 1000
Game Ideas: 432 / 1000

Target: 777

I hit 200 hours as of Wednesday morning, which puts me at over 20% of the way towards 1,000 hours!

In the article But Can You Make Pong?, it listed a set of components and features to make a Pong clone. I don’t have a win condition, so the game goes on forever or until you hit ESC or Q to exit the game. I don’t do any fancy work with the graphics or sound. I only used keyboard input, and it is hardcoded to the up and down arrow keys as well as the A and Z keys (although I did provide a configuration file that should be easy to edit to make it work for other keys). The physics are also simple, which means that the ball simply reflects as it hits an object. If it hits a paddle, it reverses the x-component of its direction vector. If it hits a wall, it reverses the y-component. It makes for some interesting bugs if the ball hits the top or bottom of a paddle, though. The scores are prominently at the top, and since the game simply starts and doesn’t end, there is not much of a UI to speak of. There is no computer AI, so you must play both paddles.

Still, even without all of these cool features, Pong is finished. I can add some of these features, or I can move on to a second project. There is the temptation to polish up a Pong clone, to “do it right”, but I think I can always take what I learned, apply it to a second project, and come up with newer features there. I’ll likely write more about this next project this week, but it might just be Asteroids or Space Invaders.

As suggested last week, I am also going to see if I can get this Pong clone submitted as a good example project for people learning how to work with the Kyra Sprite Engine. I will spend some time this week cleaning up the code just for this purpose.

Categories
Game Development Linux Game Development

Programming on Gnu/Linux: We Need Better Tools

I’m relatively new to programming on Gnu/Linux, so forgive me if I seem impertinent, but what the heck is up with some of the tools available? Specifically, I’m talking about GDB and the lack of C++/STL support.

You know what would be nice? If I could look into the contents of a vector or list from the debugger. Maybe even change a value here or there. But no. GDB, which is past v6.0 now, has no support for such constructs. You’ll have to write very complicated print statements if you want to see the value of just one element. Simple views of STL containers are not possible otherwise. People periodically post to the GDB mailing list about this issue, but no one ever responds to them. There are bugs in the GDB bug database that have been there for years with no one assigned to them.

It seems that no one is even talking about adding such features to GDB. There is no real mention of this problem in their errata list, and so I am not even sure if these kinds of features will ever be introduced by the developers.

I did find gdb_stl_utils, but it didn’t seem to work in my initial tests. When trying to view a vector, I got the following:

Vector Element 0: History has not yet reached $1

Is there a better debugger out there? I found Zero, but it has a strange license agreement at this time. Still, it might be worth a look if it can make debugging C++ programs easier.

Are there open source debuggers out there that would allow me to see the data in STL containers without tediously following almost endless pointers? Am I doomed to use std::cout and std::cerr, requiring changes to the source of my code and any libraries that make use of the STL? Is GDB really the state of the art for Gnu/Linux debuggers?

On the plus side, if it gets frustrating enough, I suppose I could always hire a programmer to make the changes to GDB for me. It worked for Evolution, after all.

Categories
Game Design Game Development Games

Indie Game Dev Podcast: Interview with Squashy Software

“YOOOOOOOOOU are listening to the Indie Game Development Podcast Show…” I don’t know why, but I really like that intro.

Anyway, Action posted a new podcast, this time featuring an interview with Anthony Flack of Squashy Software. Anthony is well known as the creator of Platypus and the upcoming Cletus Clay, each utilizing the latest in Clay-Based Graphics Processing.

Especially interesting are Anthony’s thoughts on character and game design.

It is the first part of the interview, which is readily apparent when it cuts off at the end, leaving you wanting more.

Categories
Game Development General Personal Development

Thousander Club Update: October 2nd

For this week’s Thousander Club update:

Game Hours: 197.25 / 1000
Game Ideas: 432 / 1000

Target: 756

On Saturday, I managed to get the basic game of Pong finished. It has two players, a ball, and two walls. The ball will bounce off of the walls and paddles, and it resets to the middle again if it goes out on either side. Now all I have to do is add scoring and sound, and I think anything else would be polish and shine.

Of course, then I have the choice of either polishing what will end up being just another Pong clone or moving onto another project. I don’t want to switch to another project prematurely. I’ve already jumped from one project to another multiple times. There are still a number of things I could implement to really “finish” the game. I could create a simple menu, a pause feature, mouse input, ball spin, and a credits screen. I haven’t made use of fonts or text in a graphical game, so it would actually be a good opportunity to learn what it takes.

On the other hand, the end result will still be Pong. How long will it take to polish it up? Could I better spend that time by adding a second game under my belt? If I go this route, I’m leaning towards working on the original version of Oracle’s Eye again. It’s a relatively original game, and finishing it will result in a game that I can say is mine.

If I had a third hand, I might say that I should try to make another classic game, such as Asteroids or Space Invaders. While I will still end up with a clone in either case, the advantage of picking a clone is that I already know what the game should look and feel like. OE doesn’t have a very specific set of features, and I don’t even know if it will turn out to be fun. Working on the clones might give me better insight into what it takes to make a game as well as what I can do to make my own games more fun.

After I add scoring and sound effects to my Pong clone, I will make my decision. For now, I just want to outline what I’ll be pondering, hoping that you’ll provide at least as much quality advice and feedback as you did last week.

Categories
Games Geek / Technical

LAN PAR-TAY!

I am writing this post from DeLan, the largest and longest LAN party open for students only (although I distinctly remember being at some more intimate parties that lasted two days). It started on Saturday at 3PM and goes until 9AM Sunday. There were a number of firsts for me.

One, this is the first time I have ever paid to be at a LAN party. It was $5 to get in, and another $5 for tournament play. It’s not too much, but it’s still different.

Two, I never played Counter-Strike before. We played in a double-elimination Counter-Strike Source tournament, and my team had one other person who had never played. We played fairly respectably, all things considered, and we were eliminated in the third round. In the first round, I saved the team. We were playing as terrorists, and I decided to take a completely different route compared to my teammates. Well, something happened, and I was the only one left alive. I had to go back, get the bomb, then find an area to prime and set it. Apparently the counter-terrorists thought I was going to go where the rest of my team was heading, so it took them longer to find me. One killed me, but the bomb was set, and my team held our breath as we waited to see if they could disarm it. My heart was actually racing, and then BOOM! We won! High fives, lots of “w00t!”, and general cheers went around to the rag-tag team, Psycho Squad. Yeah, I wasn’t too happy with the name…

Unfortunately, the second and third rounds didn’t go so well for us.

Three, it is the first time I get to try out my new laptop at a LAN party. I bought a Dell Precision M90, which is a desktop replacement more than a laptop. I named her EsmereldaGB. So far I had installed games on it, but I haven’t played any of them yet. There were machines specifically provided for the tournament, so I haven’t had a chance to play on this new machine yet. I will, however, be playing Total Annihilation, which is a game I haven’t played in earnest in a year or two. There are apparently some fans here, too.

Four, I had Bawls for the first time. It’s not bad, but it isn’t as good as Red Bull.

I’m hungry, and my food just arrived.

Oh, and by the way, I finished the basic gameplay of Pong before I left. Today is a good day.

Categories
Game Development Games Linux Game Development

Can You Make Pong?

Since I’ve decided to start with the basics and create a simple Pong clone, I figured I would do some research. I found quite a few tutorials and other articles, but the following is one I wish I would have found months ago: But Can You Make Pong?

Well, there it is. The good old game Pong can be quite a challenge, and certainly not something you finish in a day or two. And this is exactly the reason I believe Pong is the perfect game to test your skills as an all-round developer and/or studio. It’s not overly ambitious, yet it requires a good amount of discipline. Look at it this way: If you can’t finish a simple game of Pong, do you truly think you are ready for the big games?

I have already worked a couple of hours on my Pong clone, and I can see it taking multiple days, and knowing how I seem to like to underestimate myself, probably a couple of weeks or months. Yeesh, that’s a sobering thought: Pong requiring many, many hours to complete.

I’m not too intimidated. I mean, even with my lack of experience, it is just Pong. It’s not even Massively Multiplayer Pong. I just can’t claim to have made such an “easy” game.

I did a bit of research, thinking I could find some simple tutorials. I found some C# ones, which do me no good, but I did find some general Pong physics tips which might come in handy later: ball physics and Pong “physics” .

The gold mine came from the LinuxDevCenter at O’Reilly: Retro Gaming Hacks, Part 1: Clone Pong, Using Only SDL (and Your Brain) by Josh Glover, a contributer to Retro Gaming Hacks. It’s basically a step-by-step tutorial on writing a Pong clone using SDL. I am not too happy with the example code, but it is called a “hack” for a reason. My goal is to implement Pong, but I will use this tutorial as a guide rather than try to mimic the code very closely.

Categories
Game Development Personal Development

Thousander Club Update: September 25th

For this week’s Thousander Club update:

Game Hours: 189 / 1000
Game Ideas: 432 / 1000

Target: 735

While I didn’t work very much, I did start a new project. I am calling it SDL Pong, although it will make use of Kyra. I am going to make a very simple, very specific Pong clone. I am not going to allow myself to overengineer it or to try to create an engine that could make more than what this project needs. I am trying to see what I can use from my existing projects, which should help even more, but the most important thing is that I am working on a known project, so from beginning to end, I should have a good idea of what to do.

I will write more about the project this week.