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

Categories
Game Development Personal Development

Thousander Club Update: September 18th

For this week’s Thousander Club update:

Game Hours: 188.25 / 1000
Game Ideas: 432 / 1000

Target: 714

Ahem…those numbers above haven’t changed in a week, and I think it is the first time it has happened since I started tracking my progress in the Thousander Club.

On the other hand, I did spend a good portion of the week catching up on all sorts of things. I’m finally getting things organized again, which leaves me with less stress. I should see a good turnaround in the coming week.

Categories
Game Development Personal Development

Thousander Club Update: September 11th

For this week’s Thousander Club update:

Game Hours: 188.25 / 1000
Game Ideas: 432 / 1000

Target: 693

The deadline for IGF 2007 has come and gone. It’s September, and I am not even close to selling a game of mine on my website. Well, I’ve been meaning to update my business plan for some time, and now that I’ve basically missed every date I have ever set, now would be a good time to do so.

I feel like I need to “get back to fundamentals” as Michael Jordan would say, but I realized that I don’t know what the fundamentals of game development would be. I feel that by expending so much energy on making a component-based game engine, I am preventing myself from making a game. And I’ve never made a Pong clone before, which means it is complex enough to be a real challenge for me. How is it that I’ve been working on projects for over a year and still haven’t made anything playable? What made me think that Pong would be too easy but an entire game framework, specifically a component-based one, wouldn’t be too hard?

I’m going to focus my limited energies on making a Pong clone. Am I scrapping my engine? Hardly, but without the experience of writing a few games, I don’t think I can even begin to identify those things that my engine would need to be able to do. I don’t like that I’ve now switched to a different project twice this year, but I feel like I am spinning my wheels trying to make a component-based game engine. I’ve managed to make some good components that I can probably copy and paste into a more “hard-coded” engine without too many changes, so the past five months or so haven’t been a total loss. Maybe I just needed the experience of biting off more than I can chew.

As has been said before, game development is tough. Even if you have a ready-made engine, making a game is a difficult thing to do. I’m of the mind that the code, the engine, is just infrastructure to support the game and is NOT the game itself. While an open-source component-based engine would be nice to have, I just don’t have the experience, knowledge, and resources to make one that would be useful in a timely manner. When I can prove that I can make Pong and other game clones, maybe then I can have a better idea of what it takes to make an engine that would make all of those games. Making a Tetris clone is something that still makes me nervous whenever I think about how to implement the various pieces and how to spin them.

Saying the above means admitting that I am still a beginner at game development. Maybe a little wiser than I was a year or two ago, but still a beginner. Pong is supposed to be relatively easy, though. Perhaps it might only take me a month of part-time work to create it.

Categories
Game Design Game Development Games

Kudos Game Design Post-mortem

Cliffski has posted a Kudos game design post-mortem.

Witness the powers of Johnny Depp and Mel Gibson as they help to develop the concept and UI for one of the most anticipated indie games of the year! Cliffski noted that GUI design is especially tough when you are creating something that is different from anything else out there. While the article is short, it does provide some insight into the design process of a successful indie game developer.

Categories
Game Development Games

Indie Game Dev Podcast: Interview with Chronic Logic Co-Founder Josiah Pisciotta

Action has published another indie interview. Josiah Pisciotta is co-founder of Chronic Logic, creators of innovative games such as Gish, Bridge Construction Set, and Triptych.

Josiah talked about how he got started in game development, how he handled the business of running Chronic Logic, and how he and co-founder Alex Austin developed various game ideas. I thought that it was especially interesting to hear about the evolution of Gish.

Categories
Game Development Personal Development

Thousander Club Update: September 4th

For this week’s Thousander Club update:

Game Hours: 185.25 / 1000
Game Ideas: 432 / 1000

Target: 672

There are 5 days left until the deadline for entering a game in IGF 2007: Countdown to IGF 2007

I dedicated this past weekend to game development, and while I didn’t get too much done or spend as much time as I wanted to spend, I still managed to be somewhat productive. I have been working with some physics code that I managed to get integrated with my component-based engine. It works, but too well. That is, I want to try to make a Pong clone just to demonstrate that the engine is useful, but so far it seems like I would need to completely rewrite some parts of the physics code in order to make it less realistic, which defeats the purpose of having it in the first place. I’ll keep the code around as it may be useful for a future project, but for now I will be writing some basic collision detection and response code to get a bouncing ball to bounce off of paddles and walls.