A range of ideas and perspectives: iPhone Games Projects

iphone_games_projectsEven though I’m still playing with MIDP for the moment, it’s fun (and instructive!) to look over the shoulder of some of the people developing games for other device platforms.  I’ve done a little bit of work on the Android platform, and naturally I’d like to know what’s up with the iPhone as well.

So I picked up a copy of iPhone Games Projects by PJ Cabrera (and others).  This book is unusual for a computer book in that they gathered up ten highly successful iPhone game developers to give their best secrets and advice, so it gives higher-level project strategy ideas instead of spelling out all of the technical nitty-gritty.

Overall, the book answers the following questions:

  • What makes an iPhone game great?
  • How do you plan and execute a successful professional iPhone project?
  • How do you optimize for the iPhone?

The authors all present different perspectives on the subject, which naturally invites the reader to contrast them and think about their ideas! Read more »

Hello BlackBerry!

It’s been my experience that all MIDP implementations are different, but some are more different than others.  BlackBerry Java smartphones are MIDP compliant, but they have a particularly unique flavor of MIDP.  They’re also becoming increasingly popular, so I decided it was time to get one and try it out.  Here’s my new (to me, actually used) BlackBerry 8700g:

BlackBerry_8700g

By selecting “options > about” I got the convenient info screen above, which tells me that the version is 4.1 — one of the oldest BlackBerry handsets with Java.  (That’s OK, all the better to test backwards compatibility.)

The first (and IMHO most annoying, but critical) step is to set up the development environment and get a complete “Hello World!” from code on the PC built and running on the device.  Here’s my “road to Hello World” — the problems I encountered and their solutions — in hopes of saving the next person some time: Read more »

Do-it-yourself custom GUI for a range of MIDP devices

Suppose you’re writing a game or application, and you’d like it to have an attractive, professional-looking GUI (with your theme, brand, or skin), and you’d like it to run on as many Java ME MIDP devices as possible.  There’s some work to be done, but it’s not that hard.  I wrote about how to do it in the last chapter of my book, and it was the topic of my Jazoon talk.  Plus I wrote a library of utilities to simplify the task (the Frog-Parrot UI Library), but — looking over my blog the other day — it hit me that I never really posted a technical explanation of how to use this library.

Here’s the general idea:

If you want a mature product for MIDP customization — one that will teach you how MIDP customization works as you’re using it — J2ME Polish is a good place to start, as I explained here.  But in practice, I found that I wanted 100% control over the look-and-feel of the GUI, which I couldn’t get from J2ME Polish.

Essentially, handsets have a list of standard screen sizes, and many of them are so small that I need to have pixel-by-pixel control over where everything is placed.  Having the device place the widgets, etc., for you — guessing where you want them based on layout algorithms — isn’t nearly as useful on a small screen as it is on, say, a big browser window on a P.C.  So I wrote a library that would allow me to bundle the screen information into resource files, selecting the right image files for each screen size and passing along the data for how big widgets and images are and where they should be placed.

The annoying thing about making a custom GUI for MIDP is that you have to start from scratch, drawing your GUI onto a blank canvas.  That means re-inventing the wheel on some very standard functionality: widget navigation, navigating back and forth through a stack of screens, scrolling, and even cutting up a paragraph of text in the right places so it won’t disappear off the edge of the page.  That’s the functionality I’ve written for you in the FPUIL (which you can use however you like, as long as you don’t imagine it comes with a warranty. ;) ).

In this brand-new version (which I just re-worked today on a Windows machine, download here), I’ve included some build files to build the project with Ant and Antenna. Look at the build.xml and build_all.xml files to see some examples and explanation of how to build a MIDlet for different target devices.

That should be enough to get started, and if I find some time, I’ll try to write more explanation…

My game page is back on line!

My free sample game and code page is back on line here.  I had some problems with my earlier web host, so I found a new one.  This means that some of the links to sample jars and code on earlier blog entries may be broken, but all of the code should be available on the new game page (and, as before, you can open the game page in your mobile device’s browser and install the games and apps directly from there).  I’ve rebuilt many of these on the latest version of the WTK, and I’m working on testing them on some new devices.  If any of them aren’t working, feel free to leave a comment.  The “Frog-Parrot User Interface Library” — a set of simple utilities to create a customizable user-interface for a range of MIDP devices — is available as WidgetCanvas, with the source code here.

I’m sorry I haven’t kept up this blog very well lately.  (Wow, the last thing I posted about was Jazoon 2008, and the Jazoon folks are already gearing up for 2009!)  The thing is that I’ve switched gears enigineering-wise — I haven’t been working in Java ME for over a year, so I haven’t had much new stuff to add here.  I’ve mostly been working in software testing automation, but since I’ve been working mostly with proprietary software, I haven’t done much that I can post about.

But I’m planning some new projects this summer that I’ll be writing about! (Not necessarily all in Java ME…)

Jazoon 2008!!!

Jazoon was a blast! Here are some pictures:

My presentation is available for download on the Jazoon site here.

Can’t wait until next year! ;)

FPUIL: Frog-Parrot User Interface Library

I’ve finished my little library of UI utilities, which you can download here: FPUIL.tar.gz or FPUIL.zip.

Just unzip the directory, placing the WidgetCanvas folder in the apps folder of the WTK, and you can open it as a project.

This set of classes is intended to help with a “managing fragmentation” strategy of type “DERIVE-MULTI > SELECTIVE” (see Device Fragmentation of Mobile Applications for the theory).  As explained on TomSoft, this is a good strategy for one-shot projects, and it’s the strategy I’ll be discussing at Jazoon.

Here are some notes on using this little library: Read more »

Going to Jazoon 2008!!!

It’s official. I’ll be giving a talk at Jazoon 2008: the European Conference on Java Technology!

My talk will be on customizing applications for a range of (MIDP) handsets. It builds on some of the ideas from the last chapter of my book, but there’ll be plenty of new stuff. (I spent the holiday weekend madly programming some demos and sample code in preparation, which I plan to post here soon.) For details on my talk, look here.

For those of you who are bored of MIDP and want to live on the not-even-released-yet bleeding edge, my colleague at Greenliff Peter Wlodarczak will be giving a talk on Android.

Some basic STAF, with a simple example program

I’ve been playing with the Software Testing Automation Framework lately, and I thought I’d post some of my notes. This isn’t directly related to mobile games except for the fact that every type of software engineering requires testing. The root of STAF is an application that allows machines to control and monitor processes on other machines across a network (as peers instead of client/server). It has a rich set of features (logging, remote file system control, etc.) as well as APIs in multiple languages to allow you to write your own applications using STAF as a tool. To me it looks like this framework could be applied to lots of different distributed computing applications, but automated testing is what it’s designed and optimized for.

If you’re planning to use STAF but you’ve never used it before, here’s what I’d recommend to get started: Bookmark the documentation page and the User’s Guide. The User’s Guide has extensive helpful explanations on how to install STAF, then it contains some high-level discussion of the concepts followed by a detailed list of all of the commands and their options. To get a basic understanding of how STAF works and how to use it, read Getting Started With STAF V3, which includes some good explanation of how to use STAF as well as going over the demo. This blog post is intended as a supplement to the “Getting Started With STAF” tutorial. Here I’ll present an even simpler code example that shows how to interact with a process from the STAF command line. Read more »

Game page update

I’ve updated my sample game page to include links directly to the jar files (as some people have requested).

Sorry I haven’t been keeping this blog updated lately — since I’m not currently working on a book, I guess I’m not doing as many independent projects as I used to. However, I do have a new one coming up that I’m planning to post to this blog over the next couple of weeks:

As I’ve said before, the Java ME lcdui classes don’t allow enough customization of the look-and-feel to be appropriate for use in a professional application. So everyone ends up implementing their own UI classes, starting from a blank canvas. Since the basics are always the same, I was thinking of writing a simple library of basic UI navigation classes (starting from the classes I wrote for Chapter 10 of my book) and posting it. Anyone can write such classes, but perhaps it will save someone some time…

My new book just came in the mail…

I just received my box of copies of Creating Mobile Games: Using Java™ ME Platform to Put the Fun into Your Mobile Device and Cell Phone, and it looks great!!!  If I do say so myself…

Next Page »