Categories
Game Design Game Development Games

Indie Game Dev Podcast: Interview with Squashy Software, part 2

Speaking of podcasts, Action’s back with a brand new edition of the Indie Game Developer’s Podcast. We return you to the interview with Squashy Software, already in progress. Just like last time, this podcast is almost an hour of Anthony Flack goodness.

Anthony spoke about studying all kinds of games to improve his own, although you can tell he is successful because he answers the question “What’s your favorite game?” with the standard successful game developer answer: “I haven’t played much recently. I’ve been very busy.” B-)

Interesting comments include his views on how he must allow the game to form, almost as a painter or sculptor rather than an engineer. He also offers a few lessons on selling a finished product and prototyping.

Categories
Game Development Games General Personal Development

Dexterity.com Shuts Down, Articles Go Missing

Steve Pavlina announced that he has shut down Dexterity.com, his shareware game development business which he has run for about 12 years.

Unfortunately, he hasn’t transferred his articles on game development practices. Some of his articles have been updated and are in his articles section, but some, such as “Zero Defect Software Development” and “Shareware Amateurs vs Shareware Professionals” are nowhere to be found.

I’ve personally found these articles to be a great resource, and in fact they were the reason why I was inspired to start my own indie game development business. It would be a shame if we could only access them through archive.org or Google’s cache.

EDIT: Some of these articles are in the Association of Software Professionals newsletter archives, available to members only. If No Independent Developers Are 100 Times Smarter Than You, Then Why Do Some Get 100 Times the Results? is a free article.

Categories
Game Development Personal Development

Thousander Club Update: October 30th

For this week’s Thousander Club update:

Game Hours: 211.75 / 1000
Game Ideas: 445 / 1000

Target: 840

I spent a few hours looking into various ways to implement frame-rate independent movement for my Pong clone. Yes, I am still dedicating time to it. I had discussed the topic with William Willing as well as Troy Hepfner of My Game Company. I even looked into my copy of “Game Programming Gems” since I knew it had four interpolation methods described, two of which are frame-rate independent.

William had pointed me to a thread on the Indie Gamer forums discussing the various methods. Some of it was hard to get my head around, but in the end I decided that I would look into interpolating with delta time…

…and sure enough, I checked and found that I had already gone this route before. Over a year ago I was working on Oracle’s Eye and tackled this problem, and I basically came to the same conclusion, which I describe in a previous post. The good news is that I am much more familiar with what is needed, and my solution can be implemented in a much better way. Last time, I think I had done something incorrectly, and the animation wasn’t very smooth anyway.

William had actually gone through the trouble of coding up some implementations for the various methods. I found his code useful to read through, and I think would make a good resource for others. How about it, William? Feel like posting the code? B-)

Categories
Game Development Personal Development

Thousander Club Update: October 23rd

For this week’s Thousander Club update:

Game Hours: 204.75 / 1000
Game Ideas: 445 / 1000

Target: 819

While the numbers don’t look too productive, I did manage to tackle a number of other responsibilities. I was reviewing a game as well as catching up on my finances.

Also, now that I am back from the Schmooze, I am feeling quite motivated to get a finished product as soon as I can. I hope to spend the next couple of days making a basic plan. I haven’t updated my business plan since March, and I want to make some mini-goals for myself in a few other areas in my life.

Categories
Game Development General Linux Game Development

Relative Path to Game Directory on Gnu/Linux

One thing I discovered when trying to run my Pong clone is that I had to change to the same directory as the binary in order to run it. I should be able to just type “sdl-pong” from the command line and have it run without caring which directory is my current working directory. Now, I didn’t hardcode it to use the exact path name for files, so I could move the entire game directory and it could still run just fine. I haven’t made that mistake since I was actively using QBasic almost 10 years ago. B-)

I don’t want to require the user to need to use the command line interface to run the game, so I need to solve this problem. No matter where the user is currently running the game from, the game should run. So what can be done?

Well, luckily, this problem has been solved. I checked, and sure enough, the games I currently have installed do almost the same thing.

The games are launched using a shell script. When you type “darwinia” or “dhlore” or “drod-jtrh-demo”, the thing that you are running is a shell script. In some cases, the path is hardcoded, but the best way is to use the script to find the actual path to the game binary, then run it.

How does one find the path? Sam Lantinga, of Loki Software and libsdl fame, had created a script called FindPath(). Details can be found in this mailing list post.

I don’t know why something so simple and easily solved isn’t more readily available to new developers. I just checked, and “Programming Linux Games” does not seem to use such a script for Penguin Warrior, the example game provided. “Linux Game Programming” mentions path names, but only when talking about the difference between Windows separators (“\”) and everyone else’s separators (“/”).

It took me some time before I found the script online, but now that I know what to look for, it is easy to find.

Unfortunately, I found out that it may be a problem. At least, it isn’t recognized as THE way to do handle the relative path problem. It seems that while the Filesystem Hierarchy Standard mentions using /usr/local/games for your installation directory, there seems to be some contention. Do you use /usr/local/games, or do you use /opt? What files should belong where? Is it even ok to worry about relative pathnames, or should your game assume that the files will be in the standard locations? If you distribute binary-only games, is it safe to ignore some documents because they assume that everything should be distributed as source?

After spending only a couple of days on this topic, I no longer wonder why hardly anyone makes games for Gnu/Linux. Even if you decide to do the actual development of the game, just packaging it up and distributing it is a big hassle. I believe Apple provides developer resources that specify details such as these, as does Microsoft. Until there is a definitive answer as to how to do something, one solution seems as good as another.

Of course, I could do worse than to follow the example of Introversion or Loki.

Categories
Game Development General Personal Development

Thousander Club Update: October 16th

For this week’s Thousander Club update:

Game Hours: 204.75 / 1000
Game Ideas: 435 / 1000

Target: 798

I managed to add a few more ideas to my list, but I spent the week either working long hours at my day job or catching up on other responsibilities. I did not get too much time to work on game development. I am fine with this fact, but I need to do a better job of scheduling these down times. As it is, it has been about a month since I first started working on Pong, and I don’t want to have another month go by before I am ready to release it as truly finished.

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