In order to run these games, you'll need a cellphone emulator. The one that I use is J2ME Wireless Toolkit. Just go
to
https://www.oracle.com/technetwork/java/download-135801.html
Install it and then you can open the JAD files. You can use the arrow keys and there are some other things you can do
as specified by their helpfile. More games will be added in the future.
And So It Begins...
This is a project that was designed for a class of mine (Advanced Software Engineering). The goal was to create
a software application that would store data using a Cloudscape or JBoss database. The storage would be maintained and
changed by a servlet running on a J2EE server (using Beans). The requests to the servlet would come from an application
using HTTP. This application would run on cell phones that supported MIDP2.0 (using KVM which is a Java Virtual Machine
written specifically for CLDC).
In short, we got a program that runs on a cell-phone. It uses a wireless internet connection to pass commands to a server.
That server has some data which is important and is maintained using a database as the back-end.
Fun stuff, eh? The point was to learn a bunch of unfamiliar new technology and work as a group to develop a product at a
commercial level of quality.
So we picked Pong. Talk about a best-seller!
And Then There Were Four
In September of 2004, we came together as a group. Michael, Prashant, Amandeep, and Yanshu formed the Cell-Pong development
team. Hereafter, we shall be referred to as the Devs. Well, we're making Pong..but what the hell does that really mean?
We had to draw up some design documents and fast. The teacher would want to know details about our project in order to determine if it is suitable in difficulty. So off to work! The design document, in it's primordial form, looked exactly
like:
Requirements Elicitation Documentation
Prototype!
Well, we handed in that pretty thin looking document. The teacher acknowledged that our inclusion of features were pretty
minimal. It was a pretty basic program.
But it was accepted. The reason is that we were dealing with real-time data transferring. Since the ball and the paddles
are in constant motion, the server would have to be constantly chatting with the clients. Due to this high volume, we would
be concerned with lag and all the other lovely things that online games have to deal with.
Difficulty: High (even without features? Yikes!)
Does this deter the Devs? Of course not! Bring it on, baby! =)
And so the prototyping began...Halfway through October, we had all been familiarized with the technology. We installed all
the stuff we would need and chose an emulator to work with. Now it was down to coding.
The First Prototype (Executable JAD File)
The First Prototype (Source)
- This prototype has a bouncing ball. Simply choose Start and use the arrow keys to alter the direction of the bouncing
ball.
The Demo
Near the end of October, we had to show a demo of our project. Not a prototype or any working source code, but rather the
architecture and layout of the entire program. How would it connect? What technologies did it use? What handled the game
and how were things scored on that end?
Well, we answered all of the questions fairly well and ran through a presentation. All in all, they seemed pretty okay with it. Posted here are the diagrams used in our presentation:

And Then There Was One (uh...me)
Well, that was all done then. Yanshu and Aman would be concerned with the database connection and how the tables would be handled. They
would have to consider all the really messy XML doclet stuff. Ick.
I got the fun job! I had to design the game engine itself. I therefore made this silly little program to try and play
with Midlets a little bit more. I give you...
Bricklet! | (Source) | (Binary)
It didn't take much longer to realize that the challenge of making the pong engine wouldn't be that much. I therefore decided
to take the MIDP capabilities to the next step. I implemented colour, backgrounds, music, level editing capabilities, external
files, and plain cool factor to give you Reball.
That's right, I wrote Reball before I wrote Cell-pong. Eventually things cooled down and I decided to work on the Pong
Engine. No probs, I'll just copy the engine from Reball and mod it a little.
Big mistake. Reball is single player and is obviously written for that intent only. Not only is Cell-Pong multiplayer, but
it has to be multiplayer over two different instances of the same program.
Next follows a week of rewriting my brain to figure out how to do this. And then...
Beat The Clock
Well, there are only 4 days left now. Wait a minute, Prashant is writing the server but we have yet to communicate at all
with how things are gonna work.
We spend an insane amount of time working; and on the final day we work around the clock. We barely make the deadline with
a piece of code that is barely functional. The database has completely failed and by now we are completely riding on code
written by Prashant and me.
And Then There Were Two...
Not satisfied with leaving our code at that, we spend a few more days adding all these nifty features which eliminate lag
to some degree. We allow for more than one game to run on the server, we tweak the menu system by quite a bit, and error
handling galore happened.
Whatever, right? We made our presentation and scored pretty big. And now you get to play it! (You will need a computer
to run as a server).