Saturday, May 1, 2010

Gold

PewPew 2 is Gold! I submitted it to the App Store yesterday, and hopefully it will be accepted in the App Store within a week. It will be priced at $1.99, which I think is a very good deal considering the quality of the content :o

This month I did some beta testing on different devices (3GS, iPad), and discovered the performance on the 3GS was worse than on my iPod 2G! I lost a lot of time trying to find out what the problem was, until I finally found a post in a forum explaining that using timers to set the FPS is bad on the iPhone OS 3.0.


I also did a small trailer with iMovie:

PewPew 2 trailer from Jean-François Geyelin on Vimeo.


It was my first time doing video editing, and it was pretty fun. It's frustrating that iMovie does not allow placing the text where we want it, but overall it's still a cool and simple software.

That is all for now, more updates when PewPew 2 is live.

Saturday, March 27, 2010

PewPew 2's progress

I haven't posted in quite some time now because I've been so busy with programming PewPew 2, but quite a few people are asking for news, so here we go:
PewPew 2 is progressing real well. Here are some of the new features that are currently done:
-Scores can be uploaded anytime, not just after you've played (it should have been the case from the start, I know)
-Replays are now uploaded along the scores. This will allow you to watch and admire the best players play. Also, you'll be able to show off.
-Better graphics, 3D sound, seriously optimized engine.
-2 new sound tracks.
-A 10 level campaign with a lot of diversity. And a boss.
-2 new unlock-able game modes (in addition to megagore, assault, chromatic conflict and dodge this)
-Medals. These are rewards when you achieve certain scores in one of the 6 game modes.
-6 different ships. You progressively unlock them by obtaining medals.
-Lot's of new ennemies.

I think it's enough new content for a first release of PewPew 2. Make no mistakes though, there will be updates ;-)
So what am I waiting for? Why am I not submitting PewPew 2 to the app-store? Well, I need to polish everything up. This is the step that will make PP2 awesome. I have to carefully balance everything, make sure the difficulty is not too high (I tend to do that), not to low (no worries there), that the in-game explanations are clear, that the objectives in every campaign level are also clear, etc...

One more thing... I have been busy bringing PewPew 2 to the iPad! Here are the first screenshots of PewPew 2 HD:
That's Megagore. Notice the increased viewing field.
And that? That's one of the level of the campaign ;-)
That's the splash screen. The quote comes from a review on the Canadian App Store, and I find it absolutely hilarious. I had to put it somewhere; I hope the author doesn't mind!
Fun fact: like 99% of the developers creating iPad apps, I haven't got an iPad to test it on. To find the ideal position for the virtual joysticks, I've made myself a dummy iPad in cardboard and imagined myself playing with it! Actually, probably all the game developers for the iPad have done the same thing.

OK, enough chitchat, I have a game to finish.

Wednesday, January 20, 2010

Volumetric lines 2

I promised I was going to do a follow up on the Volumetric Lines episode, so here it is.

Like I said, it was very easy to change from regular lines, to using volumetric lines in PewPew. In fact, I already changed once the way lines are drawn: the early versions of PewPew used SDL without OpenGL, so the lines were drawn in software using the good old Bresenham. Switching to OpenGL forced me to reduce the coupling between the renderer, and the game engine. Here is all I had to do to make the switch to volumetric lines, besides the initialization:

#ifdef USE_VOLUMETRIC_LINES
for (int index=0; index < numberOfVertex; index+=6)
VolumeLineRenderer::getInstance().renderLine(
&vertexes[index],&vertexes[index+3]);
#else
glVertexPointer(3, VERTEX_TYPE, 0, vertexes);
glDrawArrays(GL_LINES, 0, numberOfVertex);
#endif



Here are some new screenshots comparing the regular render to Sebastien Hillaire's one with different line width.







Now this is running on a PC, not on an iPhone. I previously said that I could maybe port this glowing effect to a real iPhone/iPod Touch, but it requires programmable shaders, which are only available on the iPod Touch 3G and the iPhone 3GS. I only have an iPod Touch 2G, so I wouldn't be able to test it.

Anyway, if you do not like the glowing effect do not worry, because if I do manage to get this effect to work on a real device at a decent frame rate, I would put an option to keep the classic look :-)

Friday, January 8, 2010

Automatic .caf file creation

As I said in the previous post, I am currently working on adding sound effects to PewPew 2. The preferred format for sound effects with OpenAL on the iPhone is the .caf (Core Audio Format), but audio softwares usually output .wav files.
Fortunately, there's an easy way to convert one format to the other, using a built in command in OS X:
afconvert -f caff -d LEI16@44100 -c 1 in.wav out.caf

Being a programmer, I am lazy, so I started thinking about automatizing the conversion for all my .wav files using a small python script that would look like that:
for every file in the directory:
exec "afconvert -f caff -d LEI16@44100 -c 1 file.wav file.caf"

But it was not going to be efficient: every time I would want to regenerate a single .caf file, the script would regenerate all of them.

And then it hit me: makefiles are made to solve this exact problem. I tested my idea with a small makefile that looked like:
test.caf: test.wav
afconvert -f caff -d LEI16@44100 -c 1 test.wav test.caf
and it worked as expected :-)

I am sure lots of other people thought about using make for stuff other than compilation, but I am still satisfied of having found this on my own.

While I was at it, I did a small python script to generate the makefile. Everytime I create a new wav file, I simply have to run the makefile generator.

Now what's pretty cool is that you can make the makefile run automatically in xCode every time you compile your project. Even cooler is that by executing the makefile with make -j 2 (or make -j 8 for some lucky bastards), you get to exploit all the cores of your CPU for the conversion. Indeed, man make explains that the -j switch "Specifies the number of jobs (commands) to run simultaneously".

Try doing this in Windows. For me, it's clear that OS X and Linux are the best OS for programmers!

Thursday, January 7, 2010

Happy new year

First of all, happy new year. For some, 2009 was the year of the Ox and 2010 will be the year of the Tiger. For me, 2009 was the year of PewPew, and 2010 will be the year of PewPew 2!

In 2009, most of my time was spent on creating the engine and getting to know the iPhone. Now that the engine is done, I am almost exclusively working on the content: I am creating tons of new ennemies and even more levels.
I say "almost exclusively", because I actually did improve the engine. I did an important (though obvious) optimisation regarding the collision system (Chromatic Conflict is smoother now because of that), I made explosions luminous, and I am in the process of adding sound effects.

The light added to the explosions is just an expanding texture (not even billboarded) whose transparency increases until it becomes totally transparent. It's simple, but it looks real good, I can't wait to post a video.

The sound effects are handled with OpenAL. OpenAL enables you to specify the relative position of the sounds, though I don't know yet whether I will use this feature or not. Basically, this feature allows you to changes the volume of a sound effect, depending on the player's position. For instance, the nearer an explosion happens to the player, the higher the volume of the explosion will be. What's even more interesting is that the volume of an explosion happening to the left of the player would be higher in the left earbud than in the right earbud. You can create other effects, such as the doppler effect, but that would be overkill for PewPew ;-)

Friday, December 11, 2009

PewPew 2

Here's a news that will make a lot of people happy: PewPew 2 is in development!
It will feature (among other things) new game modes unlock-able by completing some levels (there's a campaign mode), additional sound tracks, and medals and ships to earn.

The release date of PewPew 2 is "When it's done", but I hope to finish it before March 2010.
Programming the levels in the campaign mode is one of the task that is taking me the most time. I want all the levels to have a distinct look as well as a different gameplay. Right now, creating one level takes approximately one week (20% of the time is spent creating the level, 80% is spent polishing it)...

Of course, if you have any ideas or suggestions for PewPew 2, feel free to send me an email (jfgeyelin@gmail.com) or post a comment.

Unexpected Gotchas in Making a Game Deterministic

When aiming for a fully deterministic program, it is common knowledge that you have to deterministically seed your random number generators,...