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.

Categories
Game Development Personal Development

Thousander Club Update: August 28th

For this week’s Thousander Club update:

Game Hours: 176 / 1000
Game Ideas: 432 / 1000

Target: 651

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

Categories
Game Development Personal Development

Thousander Club Update: August 21st

For this week’s Thousander Club update:

Game Hours: 171.5 / 1000
Game Ideas: 432 / 1000

Target: 630

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

I don’t have much to say in this update except that I went to Iowa this weekend and overtime at my day job needs to stop.

Categories
Game Development Personal Development

Thousander Club Update: August 14th

For this week’s Thousander Club update:

Game Hours: 166.5 / 1000
Game Ideas: 432 / 1000

Target: 609

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

This past week was another one spent mostly at my day job, and so all of my development happened on Saturday and Sunday. I probably could have spent a few more hours in development, but I let distractions get to me, the least of which was the five to ten minutes being tempted to learn Klingon while playing chess online. Thanks, cliffski! B-)

As suggested by others and my own thoughts after writing about porting physics code, I’ve decided to stop worrying about generalizing my engine too much. I will focus on making a Pong clone. I set August 18th as the date that I hope to have it finished, and I spent this past weekend working on creating some simple sprites for the game and designing some classes I would need for it to work. I already knew that if I wrote up a configuration file the way I think I would want to use it, I could code to make it work. I just never think to create other assets. Creating the graphics first helped me to focus my efforts, which allowed me to be efficient with my limited development time.

I’m a bit worried that I will miss the IGF 2007 submission date, but I believe that I can still make it with some serious effort. On the other hand, I haven’t finished a game since a Pac-man clone I did in QBasic in 1998. Is it unlikely that I can make even a slightly innovative game in less than a month?

Categories
Game Development Geek / Technical General Linux Game Development

Physics, Collision Detection, and Porting Code

As I develop Oracle’s Eye Prime using component-based methods, I have found myself thinking about how to implement features in a general way. For example, if I am trying to make Pong, I shouldn’t hardcode the Ball and Paddle and Walls. Instead, I should have a more general way to detect collisions. After all, even if I have a Ball entity bouncing off of a wall entity in Pong, I might want to do Space Invaders next and have bullet entities that destroy alien entities.

There are two aspects to collision detection with which I am grappling. The first problem is determining how to detect collisions between different, arbitrarily defined objects, which generally are represented by sprites on the screen, while still knowing where it collided. In Pong, I would like to know if the Ball hit the front or the sides of the Paddle since it would bounce differently. The second problem is figuring out what to do when a collision happens. If the Ball hits a Paddle, it should bounce off depending on the side it hit. If the Ball hits the goal, or goes out on one side, it should result in the score increasing for one of the players.

Metanet Software’s N Tutorials section helped me to figure out the solution to the first problem. While the code examples use ActionScript, the interactive example animations demonstrate the concepts and make them easy to grasp.

However, in the forums, there was a mention of Erin Catto’s GDC presentation on sequential impulses. Sequential impulses for “fast and easy” physics? It technically takes care of both problems? Count me in!

My first task: port the code.

It was originally written in Visual C++, but I am using an entirely different operating system and compiler. I obviously had to remove the #include for “windows.h”. The application used GLUT so I didn’t need to worry about WinMain or anything specific to VC++. On Windows, filenames are case-insensitive, so including <GL/glut.h> is the same as including <gl/glut.h> is the same as including <gL/Glut.H>. On Gnu/Linux, filenames are case-sensitive, so I had to determine which name was needed.

The next problem I encountered was a bit trickier. The code makes use of the class Arbiter, which basically regulates the collisions between different bodies. The World class has makes use of std::set to hold and sort through the Arbiters. The problem?


for (ArbIter arb = arbiters.begin(); arb != arbiters.end(); ++arb)
{
(*arb).PreStep(inv_dt);
}

g++ won’t compile the above code. It complains that it is modifying a const Arbiter, even though ArbIter is not a const iterator. VC++ will compile it just fine, obviously. Which one is correct?

It turns out that both are correct. At least, the standard library implementations are both correct. See, std::set’s keys must be ordered, and if a key can be modified, the ordering can’t be guaranteed. A set could be implemented so that std::set<T>::iterator is equivalent to const_iterator, which is how it is implemented for g++. If the key is only accessible through const methods, then there is no concern that the key can be changed in a way that would change the order. Other implementations can allow modification of a set’s keys so long as the parts relevant to ordering don’t change.

The problem is that the code as written wasn’t portable, and I didn’t like the idea of using const_cast or mutable to work around it.

Scott Meyers, author of “Effective C++” and “Effective STL”, provided the safe and portable solution.


ArbIter arb = arbiters.begin();
while (arb != arbiters.end())
{
// Erase key from set, modify it, then add it again.
Arbiter newArb((*arb).body1, (*arb).body2);
newArb.PreStep(inv_dt);
arbiters.erase(arb++);
arbiters.insert(newArb);
}

As the comment above states, you modify a copy of the key, erase the original, and then insert the copy. The above code should compile on any implementation, which means that it works with g++ on Gnu/Linux or VC++ on Windows.

Moments later, I was able to get the physics demos to run on Gnu/Linux.

The next step: integration with Oracle’s Eye Prime.

Categories
Game Development Linux Game Development Personal Development

Thousander Club Update: August 7th

For this week’s Thousander Club update:

Game Hours: 161 / 1000
Game Ideas: 432 / 1000

Target: 588

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

There is a deadline for a project at my day job, and so I haven’t had as much time to work on my own projects.

On top of it all, I had upgraded to a new version of SDL, which broke compatibility with the Kyra Sprite Engine. I couldn’t compile Kyra because there was a compile error in a certain file that has not changed for a number of versions. I have no idea why it wouldn’t work, but I had to change a line in it to get it to compile.

Unfortunately, after I did the new build and built my project against it, I couldn’t run it. Something else was updated on my system which prevented me from running applications that aren’t installed, such as Oracle’s Eye Prime and the Professor Fizzwizzle demo. I decided to upgrade everything on my system, since I was spending as much time as I was just trying to get these things working.

The result: I am typing this post from my girlfriend’s computer while waiting for the kernel to recompile so that I can create new Nvidia kernel modules in order to use Xorg (as I was using XFree86 before). I was able to get some work done this weekend, but I lost a lot of productivity.

I need to look into setting up virtualization so that I can get a clean image of a Gnu/Linux build without needing to worry about breaking anything when upgrading.

Categories
Game Development Games

Indie Game Dev Podcast: Interview with Amaranth Games

Action posted a new Indie Game Developer’s Podcast featuring Amanda of Amaranth Games.

The intro was new and, er, interesting. You’d have to hear it to understand.

Amanda is the creator of the game Aveyond, and in this interview she talks about how she started making games out of cardboard when she was eight years old. While she was in college she made her first computer game which was panned by critics as “too vanilla”. Her next project was Ahriman’s Prophecy, the success of which led her to attempt to commercialize Aveyond. She talks about the difference in development practices for each game as well what brings her inspiration.

She is also asking other indies to finish some RPGs so she can play them, so get to it!

Categories
Game Development Linux Game Development Personal Development

Thousander Club Update: July 31st

For this week’s Thousander Club update:

Game Hours: 154.5 / 1000
Game Ideas: 432 / 1000

Target: 567

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

I was sick again at the beginning of this past week, but I still managed to log quite a few hours. A lot of it was spent researching physics code, but I finally found something I could use at the Game Physics blog. As I am using g++ as my compiler, code found online can result in compile-time errors that Visual C++ and other compilers might allow. I spent some time trying to figure out how to change the code so that it not only works correctly but also conforms to standard C++. I was figuring out how to work with std::set to change existing members while satisfying the compiler, but the book C++ In A Nutshell had the answer. The code at Game Physics updated the set’s contents directly, but a set’s members are supposed to be immutable. I guess VC++ was fine with it, but g++ was complaining. If you need to change a key in a set, you must first erase it from the set, then you can update the key and add it to the set again.

I went to a LAN party this weekend, and while I didn’t stay long, I did manage to play various sessions in Unreal Tournament 2004. I was already planning on getting the game someday since it has a Gnu/Linux client right out of the box, but now that I know that there is a map in which you can attack a space station using ships, it’s a must-have.

I am worried that I’ll be working a bunch of late nights at my day job this coming week due to a looming deadline. I doubt I will be able to work as many hours on Oracle’s Eye Prime as I did this past week. Still, I am making steady progress. It’s just a question of making a finished game by September 9th for IGF 2007.

Categories
Game Design Game Development Games Personal Development

New Book on Game Writing Released

Chris Bateman announced the release of his new book Game Writing: Narrative Skills for Videogames.

This is a book about how we currently get stories into games. Anyone interested in learning these skills would do well to pick up a copy.

Bateman’s blog posts on game design are thought-provoking, such as Non-verbal Communication and Toru Iwatani’s Escalator, so I imagine this book will also be of high quality.

While I think that narrative shouldn’t be the sole focus of games to the exclusion of, you know, gameplay, it is still painful to play games with horrible dialogue and a joy to play those that are written well. Developers who want to avoid causing the pain might want to look into this book.