GAME JOBS
Latest Jobs
spacer View All     Post a Job     RSS spacer
 
June 6, 2013
 
Wargaming.net
Build Engineer
 
Virdyne Technologies
Unity Programmer
 
Wargaming.net
Dev-Ops Engineer
 
Gameloft - New York
UI Artist
 
Wargaming.net
Quality Assurance Analyst
 
Wargaming.net
Python Developer
spacer
Blogs

  Deploy to platform first (and often)
by Karl Schmidt on 05/29/13 06:00:00 pm   Expert Blogs   Featured Blogs
9 comments Share on Twitter Share on Facebook RSS
 
 
The following blog was, unless otherwise noted, independently written by a member of Gamasutra's game development community. The thoughts and opinions expressed here are not necessarily those of Gamasutra or its parent company.

Want to write your own blog post on Gamasutra? It's easy! Click here to get started. Your post could be featured on Gamasutra's home page, right alongside our award-winning articles and news stories.
 

If you plan on shipping code on some device, whether is it a PC, phone, tablet, game console, whatever – your first priority is to get some code running on that device. Any code. Even it is just a sample project, learn the steps to getting code running on your target device.

I’m going to use the word ‘device’ and ‘platform’ interchangeably here. I am referring to the thing that end users will use to run your app or game.

When I was in school I constantly saw my classmates leaving the ‘porting to device’ task to the very last minute. The common result would be: here is our project running on our PC (launched from an IDE…) because we couldn’t get it working on the device in time. In class, somehow that wasn’t a fail. In industry, that is precisely a fail. I’m still unsure why the professors didn’t insist that students get code running on device as their very first step.

simulator

It may come as a surprise to some that similar things have happened in the AAA industry. Most development of console games occurs on PCs, running a PC port of the game engine (although usually not polished enough to ship a PC SKU, but enough to do testing and development on). Time goes by, and the engineers get a version running on the target console. Then more time and development goes by, without testing on the target hardware. This leads to massive crunch near the project deadline to feverishly revise assets and code until there is something that fits in memory, fits on disc, and runs at an acceptable level of performance on the only platform that matters: your target platform.

vita

This simple idea may seem obvious to some, but it still happens. iOS apps developed fully in the simulator, only to discover hidden ‘surprises’ on the target device. Unity games developed in the in-editor player, only to discover major issues the target device. Flash components developed entirely in the Flash editor, only to completely not show up when embedded in their target website.

The studios that do things right, constantly test on device. They set up a fully automated system to build and deploy to the target device, so it is very, very easy to do. It should be easy so everyone: artists, designers, audio engineers, programmers, etc, can see how their work will look and function to the end user.

Running on device is arguably one of your highest risks – if you fail at it, you don’t have a product. People can’t use it. So in accordance to basic project management methodologies, you need to tackle your highest risk items first. If you are late in the development cycle and finally deploy to your target and run into some cryptic crash, is it your code? Or something else? If you deployed earlier you would know whether it was your code or not. It gives you a reference point to look back upon, so ‘it worked yesterday/last week, therefore something since then broke the build’.

Furthermore, while you may have lists of specifications and guidelines, actually getting your code running on device can reveal unexpected limitations or nuances. Even using your product, on device, will reveal lots of things you may not have been aware of or considered. Maybe a button is too small to touch easily when you actually use it on your iPhone – but was no problem when you were clicking with your mouse in the iOS simulator. The problems are compounded if you have platform-specific assets and/or codepaths – if certain things happen ONLY when you run on your target platform, then you cannot claim they work as intended without testing them on said target platform.

iphone

Sometimes the process of deployment and running on your target platform just takes too long for iteration, and can’t be sped up any more. I’m not against iterating in some PC editor, or PC build of your product. But if you are deploying elsewhere, you need to test there very regularly.

This was originally posted at www.karlschmidt.net/deploy-to-platform-first-and-often/.

 
 
Comments

Jed Hubic
profile image
Excellent article and something we all need to be reminded of every so often.

Just had an extremely fun time with Cocos2d-x and getting it on multiple platforms. Eventually we switched to MonoGame and doing what you mentioned right away would have made that decision much easier/quicker.

I guess the trap would be leaning towards a certain device or platform as the golden device or conversely tackling many irrelevant early bugs that may not persist near the end of a project.

Karl Schmidt
profile image
Thanks Jed! Yes porting is usually not the most pleasant experience, which I think is part of why we tend to put it off for too long.

Jonathan Jennings
profile image
The longer you wait to deploy the more bugs you are going to hav to adress once you see the game on a device. That's consistently been my experience in development . it's better to build constantly, and adjust that way if there are any glaring issues you catch them early and you get to see how each new revision affects the deployed project individually.

Karl Schmidt
profile image
Definitely, I hope those without the experience yet will read this and learn without the pain :)

Maurício Gomes
profile image
I suspect this is the reason some PS3 games never got released... They went emulating the PS3 capabilities on PC, finished the game, and now it does not work on PS3 itself... Probably this is what plague at least Last Guardian.

Also, I personally did this error when developing for Kindle Fire once... The thing worked perfect, until I deployed on Kindle just ahead of the deadline, and only then I noticed it puts its stupid status bar over the screen contents, and their official solution to fix it is: "the developer moves everything manually to not be obscured by the status bar"

Lihim Sidhe
profile image
You're absolutely right. In fact it was such an obvious thing to do that I would have never thought that it needed to even be addressed. However, if you are seeing game devs from school onwards making the same CRITICAL mistake over and over... wow.

Karl Schmidt
profile image
I agree that it seems obvious, but when you're in the scenario where you want to quickly get a great looking demo going, you'll do it on PC. Unfortunately that can lead to PC-only development for too long, and then it's a bigger hassle than it had to be to get it running on your target.

Robert Green
profile image
This is great advice. We had a mobile project last year that was being prototyped exclusively on PC. When I was called on to run it on an iOS device, it 'worked', but only at 4FPS. The lack of restrictions that comes from working on a reasonably powerful PC had let the team dramatically overestimate things like how much overdraw they could get away with, and it took a couple of months work from one of our top graphics coders to get it optimised up to a decent framerate without sacrificing the look too much.

Eric Robertson
profile image
Yes, this was a challenge for myself as well. I have weened my self 'mostly' from testing our mobile game on a PC and focus mostly on low-end Android or iOS devices. That being said, I do find it helps when troubleshooting specific script performance to do it on the PC still since for the part, the biggest challenge we had with mobile ports is user interface (mostly buttons like you mentioned) and rendering performance (not script performance).


none
 
Comment:
 




 
UBM Tech