Monday, December 20, 2010

PewPew Beta, for Android

Currently my work has shifted from developing PewPew to porting it to several different phone OS. I'll try to write a post later about the process of porting, because there's lot's of interesting bits I've discovered.

A few weeks ago I submitted a version of PewPew for the Bada OS to Samsung, but it got rejected because my website contained an image of an iPhone and a link to the App Store. At first I was surprised, but they simply don't want to have iPhone advertisement flaunted at their customers, which is understandable.

In the meanwhile I ported PewPew to Android and improved many things, and because I got rejected, those improvements will get to be in the initial Bada OS release as well (I try to look on the bright side of things).

Regarding the Android version, I don't know how well my app works on other phones, so I am starting a beta process. I want to get PewPew perfectly right before I submit it to the Android Market: I am a firm believer that first impressions counts.

If you want to test it, here is the .apk.

Tuesday, November 30, 2010

PewPew 1.4 and PewPew 2 1.2 submitted to the app store

I finally submitted to the App Store updated versions of PewPew and PewPew 2! Both versions now support the iPad's and the iPhone 4's resolution.

Most changes are in PewPew 2:

  • There's an improved Chapter One: among the things I did was adding visual feedback showing destructible objects were reacting to the players' bullets, so the players would know those objects were destructible . More importantly, I've corrected the bug where the game denied the completion of a level when a player died just after completing the level's objectives, but before the transition back to the menu.
  • There's the long awaited Chapter Two ! It took a really long time to create because it's containing a lot of new enemies, and the levels are more complex than in the first chapter.
  • I now display the best times for the campaign levels.

  • I've added a new infinity mode that you unlock by completing the chapter Two. This mode is very different from the existing ones since you actually control 2 ships. It took a while to adjust the difficulty progression because I am actually not a very good player at this game mode =). It's tough to adjust the gameplay for players that are going to be much better than you.

  • I've slightly improved user interface. I've made the buttons prettier because I've always felt the old buttons (just a rectangle) were boring. Also I've removed the explosions in the backgrounds since they just weren't justified, and in my opinion reduced the purity of the menus.
I've also re-done the website. The client side is done in GWT while the server side is in python. One of the visible change is that the high scores now include the colors of the nicknames :-)

Now that I think about it I was quite productive. I really hope you all like the new stuff. My goal is to make PewPew 2 the best twin joystick game on the App Store, so I am going to keep on working on it.

Sunday, July 18, 2010

Lack of updates because...

I am porting PewPew to the Bada OS. There is a contest going on, and I believe I have a real chance of winning a price ;-)

Monday, June 21, 2010

PewPew, step 10

At the beginning of this blog, I used to do short movies showing the progress of the game. I think it's cool to look back and see what changed and what hasn't.
Following this spirit, I made a small video showing the new game mode in action:

It features two new enemies internally called "Rolling Cube" and "Planner" :)

It looks really cool, but I still find it hard to play because my fingers tend to slip off the screen. This is because when the two ships are going in opposite directions, they cancel each others movement. Because I want to move anyway, I naturally move my fingers away from the centers of the joysticks, and thus move my fingers off the touchscreen.
There is really nothing I can do, except maybe visually notify the players that they are already moving as much as they can, and that they don't need to move their fingers further from the center. Come to think about it, it's an excellent idea. Yay. Now back to work.

Saturday, June 5, 2010

One month after...

The lack of posts on this blog is due to some furious bug fixing. During this past month I submitted to the App Store:
-PewPew 2
-PewPew 2 Lite, but I removed it from the app store immediately because I had actually uploaded the full version, instead of the Lite version...
-an update to PewPew 1 to notify everyone about PewPew 2
-an update to PewPew 2 because PewPew 2 was crashing when the score table was full, and because the iPad version simply did not start. It got rejected because the game did not support correctly the orientations of the iPad...
-a second update to PewPew 2 to fix all the issues I was aware of at the time (it got accepted).

At the moment, there seems to be no bugs left on the iPhone, but the iPad version sometimes crashes when validating a score, or when editing the name... It will get fixed!

While waiting for Apple to approve the various updates, I worked on the campaign. In the next campaign, you'll fight the "Boss" once more. This time however, it's going to be a bit harder to defeat him (some cannons/turrets will accentuate the chaos).

Recently, I have been working on a new Infinity game mode called "Symbiosis". You control 2 ships of different colors, much like in the xbox 360 game Schizoid. The blue ship will be invincible to blue enemies, and the red ship will be invincible to red enemies. For now, the ships are linked with an electric field that destroys enemies. The electric field is also a spring, so one ship can drag the other ship.

Don't mind the graphics, I am only testing the gameplay.

I am far from having the gameplay done, and I am not even sure yet this game mode will ever be included in PewPew 2. Controlling two ships at the same time is really really hard, and that's why I added the spring between the ships: it helps keeping the two ships close. Still, I am persuaded that this game mode has potential.

Saturday, May 1, 2010


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:

for (int index=0; index < numberOfVertex; index+=6)
glVertexPointer(3, VERTEX_TYPE, 0, vertexes);
glDrawArrays(GL_LINES, 0, numberOfVertex);

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 ;-)