Microsoft Demos Three Platforms Running the Same Game
suraj.sun writes with this excerpt from Engadget:
"Microsoft's Eric Rudder, speaking at TechEd Middle East, showed off a game developed in Visual Studio as a singular project (with 90% shared code) that plays on Windows with a keyboard, a Windows Phone 7 Series prototype device with accelerometer and touch controls, and the Xbox 360 with the Xbox gamepad. Interestingly, not only is the development cross-platform friendly, but the game itself (a simple Indiana Jones platformer was demoed) saves its place and lets you resume from that spot on whichever platform you happen to pick up."
Technically thats same platform, different devices. Cross platform would be if they had the running on iPhone, Windows 7, Playstation and Linux. THAT would have been impressive (not to mention newsworthy).
We expect them to be pushing studd across their own platforms. Not news.
This is my sig. There are many like it but this one is mine.
A simple demo game written on a Fedora system runs perfectly on Ubuntu, Debian, Mandriva, Mint, Arch, and a few dozen others, but nobody paid for a press conference.
You do not have a moral or legal right to do absolutely anything you want.
Let's see where to start....
1. If you are writing different libraries for each platform -- that's not 100% code re-use
2. You're not "just distributing" the same binary for each platform.
3. What are you using for graphics, sounds, storage, etc. on each platform?
4. You're doing this without a bunch of #ifdef's?
5. How are you accounting for different screen resolutions, graphics hardware, touch capabilities, and other hardware difference?
I've never programmed games for either the PC or mobile but I do write boring old business apps for Windows Mobile industrial devices. I'm able to target Windows Mobile and take the same app and run it flawlessly on the desktop -- without a recompile.
Oh, my god, he's displaying this and he has all these #ifdefs and "copies of projects" within his workspace and a "shared resources" folder for the game. Is that the future of cross platform? That's more like the PAST of cross platform. The way to do this is to create interfaces for the same object and implement that using different devices. What you don't want, ever, is to have all this different execution paths through your code using #ifdefs to instruct the compiler to compile each and every one of them separately.
Make it happen for Civ 5, so I can play the same game on the TV at home, switch to the laptop when the wife wants to watch TV, then switch to the phone in the bathroom at work! My life would be complete.
The headline should read "Microsoft Demos Three Microsoft Platforms Running the Same Game".
and lets you resume from that spot on whichever platform you happen to pick
My take was a little different. "oh, so they finally got it to work the way it's expected to work? Congrats.
1) use the same save game format
2) use the same controller layout
3) be network gaming compatible
is this soooo much to ask?
I work for the Department of Redundancy Department.
God almighty, their code base is more fragmented than I ever imagined.
Even at the worst of the "UNIX wars", if you had to rewrite as much as 10% of your code to get it to run on (say) AIX, SunOS, and System V that meant you'd done a really bad job of isolating the platform-specific parts of your code. If Microsoft can't keep their code bases in sync when they control all of them and they have incentive to do so, they're really slipping.
There are a good number of people I know (including a few riflemen in the Marine Corps) who would most definitely disagree with your first statement. It's more of a matter of the ability of the shooter, not the accuracy of the rifle. The US Military has some highly accurate rifles, when put in the hands of the right shooter.
I'm going to ignore the mostly inflammatory content of your post, because there is a valid point in there -- that the complexity of a lot of operations are underestimated by those unfamiliar when they are heavily exposed to the end product. On that count, I agree.
However, in this instance, at least, the concern is misplaced. I do have experience with cross-platform development, including any game-related subsystem you care to name (video, audio, mouse/kb/controller input, networking, file/data access, et cetera). The problem IS a trivial one if it is planned and accounted for, rather than a last-minute decision.
For 99% of development studios, it goes something like this: use DirectX, porting is a nightmare. Use SDL/OpenGL, porting is changing less than 5% of your code (and for non-'exotic' applications, 0%). Some things are -designed- to allow portability; it should be no surprise that they enable it. This is quite simply a field that UNIX-alikes have been dealing with for a long time, and Windows applications have not.