John Carmack's Cell Phone Adventures
Mr. Carmack has updated his blog with news of his latest interests. Apparently mobile gaming on cell phones has consumed a large portion of his time of late, and he has some witty commentary on programming for the emerging game platform. From the article: "I'm not a cell phone guy. I resisted getting one at all for years, and even now I rarely carry it. To a first approximation, I don't really like talking to most people, so I don't go out of my way to enable people to call me. However, a little while ago I misplaced the old phone I usually take to Armadillo, and my wife picked up a more modern one for me. It had a nice color screen and a bunch of bad java game demos on it. The bad java games did it."
No kidding. When I play chess against the AI on my phone, the thing takes minutes to make a move. It usually takes 20 minutes to play a game that would take two humans to play in 5.
The guy loves tech, loves to contribute money where money is needed and his time where that's enough.
A true geek :)
Slashdot Sig. version 0.1alpha. Use at your own risk.
Are you not suppose to be working on Quake 4 or something? Don't tell me you will release Quake 4 on the phone!
No sig for now.
..how long will it take him to color the entire screen black and call it Doom 3 for mobiles?
If I weren't for Bejeweled 2 on my Mypal A620, I'd be consuming my morning commute with Push Push on my Samsung.
The biggest problem is that Java is really slow. On a pure cpu / memory / display / communications level, most modern cell phones should be considerably better gaming platforms than a Game Boy Advanced. With Java, on most phones you are left with about the CPU power of an original 4.77 mhz IBM PC, and lousy control over everything.
Heh - that should put the "Java is just as fast as native code" myth to rest. It won't, as people will claim that Just In Time compilation should solve it, but...
Even compiled to completely native code, Java semantic requirements like range checking on every array access hobble it. One of the phones (Motorola i730) has an option that does some load time compiling to improve performance, which does help a lot, but you have no idea what it is doing, and innocuous code changes can cause the compilable heuristic to fail.
Which ends that myth too.
Write-once-run-anywhere. Ha. Hahahahaha. We are only testing on four platforms right now, and not a single pair has the exact same quirks.
And there goes that Java myth, too...
Cell phones already have a very low latency digital data path - the circuit switched channel used for voice.
Actually - he's wrong. That channel has a good half-second or so latency. Try this - call up your home phone, and pick both up. Don't worry about feedback - there's way too much latency. Talk into your cellphone and listen to it "echo" on your phone. Or call up your friend on their cellphone and talk to each other, and listen to the good second between when they say something and you hear it.
It turns out that this latency isn't enough to prevent you from having a conversation, but there is quite a bit of latency on the voice connection of a cell phone.
you could play quake 3 with just a keypad...
Look behind you...
It's bad there too? I remember "Doom" for Nintendo 64. You wanted to shine a flashlight at the screen, it was that bad. For those if you who have not experienced it, try playing your favorite game while wearing sunglasses 3 deep.
Don't blame Durga. I voted for Centauri.
... but mobile phone gaming is an IMMENSE market. The key is in the subscription model. People will download a game and subscribe, play it once or twice, and forget about it. They never cancel, so they continue to pay $3/month for the game.
I worked on a few cell phone games for SOE when I was working there, and all I have to say is that the sales figures make me want to be a cell phone gaming tycoon. It's not a pipe dream.
They were too cheap to complete a chess program with good AI. You are not waiting for a slow computer. You are instead waiting for a rather frazzled guy in Mumbai whose job it is to play the computer opponent in anywhere from 10 to 50 phone chess games at any given time.
Don't blame Durga. I voted for Centauri.
He's 100% right. I got a Samsung a while back & purchased a copy of Baldur's Gate for it... wow. My expectation of quality was that of the original Game Boy... they didn't even go that far. Sprite collision detection was awful, load times were abysmal, game balance was horrid and bugs abounded (i.e. go to inventory screen, pause game, resume game, all your keymappings are scrambled). It's a damn shame, too, considering the possibility the platform holds. You could do something very nice with it... but alas. And developing on one is a pain too - transferring files over (or trying to sell games to other players) is so much of a headache I don't want to develop on them. Really, the SDK and API is there (since it's all J2ME), but transferring files to the phone in the first place is to huge of a barrier.
Java's not a programming language.
It's a platform that happens to be centered around a programming language.
There exist compilers that can compile the Java language to native code. But this article is about the Java platform - specifically, the Java platform for embedded devices.
Transferring the MIDP program is hard? I just drag and drop it to the root in the Bluetooth folder and it is uploaded. I'd think you can do the same thing over IrDA or USB, but I don't know as I've never tried.
Uploading new data files can be a lot more of a bother though I guess. I've never tried that.
In my reasonably extensive experirence, java fanbois don't know any better - or any worse - just java.
The Java platform that runs on most cell phones is J2ME, which is a completely different animal than J2SE, the one that's used on PCs.
The differences are substantial. For example, some J2ME VM's don't garbage collect. Ever. That's because in some cases, it's not required.
To say that the J2SE (or J2EE) plaforms suck because a particular J2ME implementation is slow is like saying that internal combustion engines suck because your go-kart can only go 15 mph.
Files transfers are sort of carrier dependent. Certain carriers (Verizon) really limit what you can transfer (easily) to your phone.
I do remember.
What has changed is that there is now an immense market for scams. Used to be, you couldn't get away with many scams because there just weren't enough people that were susceptible. Normal, everyday folks would see right through it and probably turn you in! People used to be diligent and take proper care of their affairs. Nowadays most, truly >50% I think, are so greedy, so lazy, so ignorant, and so lacking in integrity that scammers have a huge target market.
Why do you think something as ridiculous as a "letter from Nairobi/Can you help me with my money" can actually work?
Good judgement comes from experience, and experience comes from bad judgement.
- W. Wriston, former Citibank CEO
...Carmack is way over-estimating performance of most phones. Only the highest-end Java phones support 200k jar sizes. The majority of consumer phones are limited to 64k - even many brand new phones have this limitation. On the other hand, he's not being 100% fair with his GBA comparison. Gameboy, GBC, and Gameboy Advance all have tile-based rendering that is easily capable of 60fps, while Java-based (and BREW-based) cell phones have only linear frame buffers that you don't get direct access to (usually). To aggravate things, many Samsung BREW phones have 250ms response rates.
Carmack will also be disappointed when he begins experimenting with BREW. BREW doesn't support threading, globals, or even static variables. I'm not even going to get started on the bizarre latencies of the API.
One of my jobs as a cellphone developer is to port Java games to BREW. Carmack's comments about how fast Java phones play like 4.77MHz IBMs is true, but the same is true for BREW phones as well. I've only managed to squeeze another 10% out of the performance on similar BREW phones. There are a lot of things limiting cellphone performance, but Java isn't one of the main culprits. Bad platform design and slow hardware are what kills it.
Warning: what you are experiencing are the gold old shareware days. A lot of small, simple yet addictive games.
John Romero and Tom Hall had that same feeling a couple of years ago when they erected Monkeystone Games: http://www.monkeystone.com/
As a Texan, am I the only one that noticed the error in that Carmack spells the city of Amarillo, "Armadillo?" Most people don't realize the difference.
Ok, I can see that.
Yet another reason why I'll never again buy a branded mobile phone. I'd rather pay another $100 or so upfront and get a phone that actually works like it should.
Not so easy with some handsets, i.e. PCS phones. There USB or bluetooth uploading is frowned upon... the only recourse is going over-the-air to fetch your file via HTTP.
Not a big deal if you've signed on for unlimited kb as part of your plan, but a big deal if you haven't.
Maybe he'll get an NGAGE! He'd be about the only one though....
Interesting. I hate fantasy themes in games with passion, so it's something i would love to check. Haven't seen one since the days of Fallout I/II.
Even more, the MMORPG market is awfully saturated as it is, but if they turn it it into one it could work well on cellphones (Pocket Kingdoms, anyone?) - if done right, of course.
I would certainly give it a try.
It is. On my Samsung phone atleast, if you have a data cable (serial / USB), it's just a matter of dragging programs between folders. With Bluetooth or IrDA, you don't even have to plug it.
The only way we are going to satisfy the Turing Test is to have a small sweaty man inside a silver-painted cardboard box, with a typewriter, feeding answers to the test questions to the outside through a slot in the cardboard. Lots of flashing lights and a cool-looking "CYBERCOMPUVAC" logo on the side helps the effect.
Don't blame Durga. I voted for Centauri.
Sorry; it's Siemens, not Samsung. My brain farted.
Just like others have found out with C/C++ on other platforms, you can twiddle bits and get faster performance with Java on cell phones too. You just have to know what you're doing ;-) which hopefully Mr. Carmack will continue to do to find the secrets of J2ME technology that some already have discovered.
Also, you can deride JIT compilers on message boards, but if you take a look at Jbenchmark numbers, you'll see there is a world of difference between different Java VMs with different kinds of JITs, just like a Mustang with a 4-cylinder engine is different than a Mustang with a 5.0 liter engine.
It's easy to take pot-shots at Java technology for cell phones hiding behind a computer monitor, but those of us in the trenches who know how to work J2ME programming (like now John Carmack is starting to learn) will do well on the 650+ million cell phones that run J2ME technology.
Hinkmond
Would be cool to have a modding scene for mobile 3d-engines in a few years :)
In my day, playing on the phone meant asking random people if their refrigerator was running.
Slashdot Burying Stories About Slashdot Media Owned
Most carrier subsidies are a lot more than 100$ for locked v. unlocked phones...
every day http://en.wikipedia.org/wiki/Special:Random
john, you should be writing for symbian phones then. they have the largest fucking market share by far and all run basically the same binaries. oh, did i mention they have a C/C++ sdk avaiable for free? go look at the games already running on s60 series phones... sonic, doom, super monkey ball... and soo many more fast paced action games. so the question is... why the heck did you go with midp2? as you were saying, all that abstration sucks.
So John Carmack, one of the semi-dieties of game programming, has set his sites on the cell phone market.
What if he follows through on this attempt to make a cell phone game and does what he's done in the past with PC gaming? That is, pick the best, fastest hardware available at the time and then develop something that requires specs a LITTLE better than what's available to be really playable.
Let's suppose he finds a phone with a good, "fast" Java implementation, with a decent amount of memory, and targets his game for that minimum spec. Once the game is released, will we suddenly see a shift in cell phone performance? As every Doom fanboi wants the game and dumps their current lame phone and provider for whoever supports/carries a phone good enough to run MobileDoomRPG.
Will John Carmack be able to redefine the performance expectations of the cell phone industry? Will DoomRPG Capable(tm) become a new standard?
I certainly hope so. If the state of the industry is as bad as some have indicated in this thread, there needs to be a compelling reason to get performance beyond "good enough".
- Jasen.
There really isn't wrong with Java it is just a language. There is no reason Sun can't find people to spend the time and find ways to allow Java to compete with C in terms of performance. I think this would be a good starting point for them to realize Java gaming could be a possibilty if they only spend the time to find ways to implement faster code. Hopefully Carmacks influence is enough for them to add ablility to do lower level things in Java.
mnewberg.com
John Carmack's cell phone will make you his bitch!
Setting: A static old-school DnD first-person dungeon view is displayed on the mobile screen, with two Chainsaw Zombies going through a "chainsaw swipe" attack animation periodically:
You gain Right Circle Strafe!
ChainsawZombies_00 attacks. You dodged!
Your machine gun crits ChainsawZombie_00 for 20 damage!
Right Circle Strafe fades from you.
ChainsawZombie_01 hits you for 30 damage!
You gain Left Circle Strafe!
You switch to Rocket Launcher.
ChainsawZombies_00 misses you.
Your Rocket Launcher hits ChainsawZombie_00 for 50 damage!
ChainsawZombie_00 is knocked back!
Left Circle Strafe fades from you.
Your Rocket Launcher blast splashes ChainsawZombie_01 for 20 damage!
ChainsawZombie_01 crits you for 60 damage!
You die.