Archive

Posts Tagged ‘programming’

iPhone 4 testers wanted

August 13th, 2010 6 comments

Do you have a brand new iPhone 4? I’m looking for a couple of people to help testing Jewels for iPhone on the actual iPhone 4 device. I have been working on to make sure that Jewels works also in the iPhone 4 resolution (and yes, I have crisp, pixel perfect high resolution graphics included, as well! ;) ) and while I can test in the simulator just fine, I’m interested in how the game performs on the real device. I think it should run about 50-60 fps (hopefully the max), but it is possible that the high res graphics bring it down, which means more optimizing work for myself.. :P

Unfortunately, I think the testers will need to be in the iPhone Developer Program to be able to install the game on their devices. (Correct me if I’m wrong!) But it doesn’t hurt to ask, right? So, any iPhone devs willing to test it for me? Drop me a comment if you’re interested. If not, I could try to find people on some dev forums. I do have my own iPhone 4 ordered as well, but I’m unsure if I get it before the game is finished.. :)

UPDATE: I did get my own phone, so there is no need for this anymore. :) It worked quite well, I had to optimize text rendering though. Now it works pretty much 60 fps all the time. The optimizations also benefit older devices (except 3GS, which was running at 60 fps already) so it was time well spent. :)

Categories: Development, Games Tags: , ,

Turned out I lied…

July 14th, 2010 14 comments

..about making the final post about Jewels. Sorry!

I wanted announce that I’ve managed to start working on bringing Jewels to the iDevices (at least for iPhone + iPod touch), even with the taking-care-of-the-baby-business! :D I’ve only recently started writing it from the grounds up in C++ with some Objective-C (or actually Objective-C++). (If anybody remembers, the original PC-Jewels is written in C#/XNA, while the Android-version is naturally in Java.)

This time I’ll be using OpenGL ES (which, in retrospect, I should have used for the Android-version as well), so iPhone gamers will be getting the smoothest Jewels experience yet! I might even throw in some extra eye candy, just for the heck of it! ;)

I’ve registered to the iPhone developer program, so I can test on the real devices, which is great. I’m aiming on making the game run perfectly on iPhone 3GS (and newer devices) hardware while still keeping it working fairly well on the older HW (like iPhone 3G). These are of course still only estimates, but something of a goal nevertheless. I’m liking the iPhone SDK so far, and even Objective-C isn’t as scary as it looked like before! :) But as I said, the majority of the code will be in C++. This actually makes a full circle: I had been using C++ for years before I made a switch to Java, and now I’m back in C++ along with learning Objective-C as well! Neat how things turn out.

As to why I’m doing Jewels again (for the third time!), instead of doing something else. Well, it has become a pattern of some sorts for me; while learning a new platform / language / API, I’ve ported Jewels over. The original was simply because I wanted to try coding with XNA. Android-version sprung out from the desire of learning to write for Android. It was a better game as well. And now it is iPhone. I’m learning new stuff and I firmly believe that this will be (again) the best Jewels yet! :)

Oh, I also noticed (only a few days ago) that there is already a game named JEWELS at the App Store! Just my luck. :P Any ideas for the name? I think I’ll have to go with iJewels or something like that, which I really didn’t want to do, but I guess there is no option but to change the name… :P

So there you have it. Hopefully iJewels (still don’t like that!) will gather some following on the iDevices — now I don’t expect it to be a mass hit like on Android, the competition is much tougher, but then again there is nothing to lose in doing the port (or rewrite, actually). I’m gaining some valuable code to reuse in future iPhone projects, even if the game was a flop. :)

Jewels for Android released!

November 5th, 2009 25 comments

Jewels for AndroidJust wanted to announce that I’ve finished the Android port of Jewels. It is now available through the Android Market, for free. :) The comments so far have been very positive, thank you. I’ll probably release an update later with some fixes and tweaks, but after that I think it’s time to start thinking about the next project.

I’ll write something about the porting experience from programmers point of view later; it definitely has been interesting as I have not done any mobile coding before this.

UPDATE on 13th of November:

Now that Jewels has been on the Market for a week, I’d like to share some statistics with you. Turned out that the game is a huge success (ok, it’s mainly because it’s Bewejeled, but interesting still), I had not anticipated this at all! At first I thought it’d break 5000 downloads before the last weekend (the game was released on Thursday). It did, Sunday the downloads were over 16 000. On Monday, it was over 32 000. And now, it’s over 100 000 installs, 92% of them active (i.e. still on users’ phones)!

Jewels is actually the second most popular (free) game in the Market right now with a average rating of 4.5 stars (596 ratings at the moment), only behind a Solitaire-game. Very nice. :D I’ve actually gotten more comments about Android-Jewels in a week, than I have from all my previous games combined during all these years, wow! So there’s definately market for good Android-games. I’m planning to make something a bit more original next,  so stay tuned.

Of course, it’s not all roses: I’ve released about a dozen updates but still there remains some mysterious bugs that don’t occur in most of the phones, but do in some.. Partly that is because Jewels was not originally writting  for phones (XNA as an environment is way simpler than Android!), and partly because I’ve probably screwed up something (my first Android app, after all). I will definitely try to design the next game to more solid and not so prone to these various bugs and crashes. But one thing bugs me: the Anroid phones are truly different from each other, although in theory the same code should work in most of them, in reality it won’t.. I’ve seeing reports of some really weird crashes that really should not be happening. :(

Enter the Android

October 11th, 2009 1 comment

Android logo

Hi, everybody! (“Hi, doctor Nick!” …sorry.)

Little background on today’s topic: When I first heard of the Google Android-platform some years back, I thought it was interesting but never actually expected to see proper devices (i.e. mobile phones) coming to reality. Now that there is several Android phones from a few manufacturers, I’ve been eyeing out the devices with great interest for a while now, I guess closer to a year actually. Waiting for them to arrive here in Finland. And, as you might have guessed already, they have arrived. :)

The Hero emerges..

So, I got myself a brand new HTC Hero! Obviously, the main interest for me was the prospect of developing software (ok, games) for the Android-platform. Also, it’s darn good phone as well, who would have thought of it? ;) My previous phone was a few years old Nokia, just a basic model with no bells and/or whistles — so this is all new to me.

My HTC Hero.

Why not iPhone, then? Well, there are several reasons I went with Android:

  1. The development environment. It’s free, cross-platform and well integrated into Eclipse. Plus I get to write in Java, which I very much prefer over Objective-C.
  2. I don’t need a freaking Mac for developing (as if the phone wasn’t expensive enough..)! I can use my old, cruddy PC instead.  :P
  3. Android Market, while still in its early stages, has great potential. Plus not nearly as much competition as in the iPhones App Store (obviously this also means less customers, but things improve when Android-phones gain more market, I hope).

Read more…

Geez, it’s been a while…

July 5th, 2009 No comments

Time for an update, I reckon.

Although PolyAnim is generally on hold due to the game project, I made a few optimizations (reducing garbage generation mostly, still quite high though) to it. As for the game, I’m still working on the engine side — BUT — I’ve written down some things on the game plot and other design! I have a vision of the game beginning, but the actual plot still needs to be thought up. Sooo yes, I don’t have much at all, but it’s a start. :D Luckily I don’t have too much pressures on the story side, as even if it ends up sucking donkey balls (excuse my language), it’s still infinitely better than the “stories” of my previous games combined! ;)

Meanwhile, in the programming land…

It’s been so long since my last update, I’ve worked on so many things I don’t even remember them all. Instead of trying to remember the details, I’ll just list the things I do remember:

  • First of all, I started using revision control for the source code (+ related resources). Instead of using the familiar Subversion, I decided to try something new and thus chose Git. All in all, this helps me keeping track of the things I do and also serves as a backup in case my computer decides to blow up. Git is nice since you can use it locally, on any directory without a server.
  • VBO (Vertex Buffer Object) support. This means storing geometry to the GPU and rendering it in one batch. Basically it means better performance. Using VBOs I could optimize the text rendering by buffering the rendered glyphs into a batch, up until the buffer fills up (or the texture changes). The buffered glyphs are rendered in one go, and the process starts again.
  • Particle systems! I started doing a “particle engine” a while back, got it done except for the different emitters. I still need to finish this up: complete the basic point emitter, add more emitters and add the ability to load particle systems from resources (perhaps a YAML or XML file). VBOs are used to render the systems, when supported by the GPU.
  • Lighting system improvements. Lights can now have different effects on them, like flickering, fading and pulsating. The effects are defined in a YAML file of properties.
  • Player character designs. I’m not sure if this guy ends up being the final character, but might be. I did a quick idle animation for him (need to adjust that a bit, though), I should add a walk cycle next as it’s quite boring to watch now. (The previous animation, test from PolyAnim, did walk!)
  • And now for something completely different: Water effects. Yes. This is mostly eye candy (as Box2D doesn’t support buoyancy yet, I think the water is only going to be used for restricting player movements as in the player can’t swim..) so it made no sense to do it at this phase of development. But I did it anyway, I’m childish like that.. :P The water reflects the scenery above (provided the GPU supports Render-to-texture) and I even wrote a fragment shader to make it all wavy and twirling..

I have noticed a problem during the development of this game, which was not apparent on my previous game projects (since they were much shorter): I have this annoying tendency to start working on different (sub)projects even when the previous stuff is still not finished. That means I have heaps of unfinished subsystems in this engine, like the particles, scripting, triggers, etc. And I’m already thinking of doing the sprite system and other things as well! I mean, what the hell, it should be bloody obvious I should concentrate on the unfinished things and finish them.. :P Argh, hopefully I can sort this mess out. Speaking of which, I guess I should start coding the particle system to an usable state.

And of course, to all aspiring game developers: design the game first, damnit! Figure out the plot, setting, characters and whatnot BEFORE getting sucked in the bottomless fathoms of Teh Engine(tm)! Yes, I really should take my own advice some day! :P

Categories: Development Tags: , ,