Sign in to follow this  

Mobile: Content creation pipeline

Recommended Posts

2-person indie studio, in-house mobile engine.

 

The goal is to be able to create an environment that allows content creators to iterate on their assets.

 

For example, I would imagine an artist who creates some texture, UI, sound, model, ect. in some content creation tool, would want to see, in real time, how this asset looks in the game world.

 

However, working on mobile, the engine doesn't have direct access to the filesystem where the content is being altered.

 

I suppose the simplest solution is to have the engine support PC and/or Mac; however, I was wondering if any other small studios / hobbyists came up with other solutions? With 1 programmer, want to keep development to a minimum.

 

Thanks,

Zach

Share this post


Link to post
Share on other sites
Use a filesystem abstraction library like PhysicsFS, which is open source and very easy to drop into most small engines.

That allows you to abstract how you load files. e.g., when you open /some/file.txt, the library can search a list of backends until it finds one that provides the file. For example, you can tell the library to search both /mnt/usb/my/game/data and ./data (in that order) whenever you ask for a file.

By itself that might be enough if you can access a directory on a USB cable from the phone app - you can export your asset directory on the PC as a USB device (probably requires some third party software; unsure) and then access that as a storage device on the phone. Some console SDKs do this (more or less). If you want automatic updating of assets you'd need to add file change notification support (I don't think PhysicsFS supports that, though).

If the USB mounting approach doesn't work you can also add a custom backend that implements a very simplistic network file system protocol; the developer runs a file server on their devbox and configures the phone app to connect to their devbox's IP to look for files. You can support automatic reload by having the file server monitor files for changes then send messages to the client/game whenever it detects a change so the game knows to reload the asset.

Share this post


Link to post
Share on other sites

Working on console games is similar - it takes time to deploy all the game assets to the console dev-kit's hard drive, making iteration hard.

 

At almost every studio that I've worked at, they've solved this problem similar to what Sean says above -- to make the file system API abstract and support different implementations during development. Most of the time during development, instead of the normal implementation that tries to read files for the local hard drive / storage, we'd use one that reads files over TCP/IP from your PC's hard drive. That way you never have to copy any assets to the dev-kit at all -- you just edit files on your PC, and when you run the game on the dev-kit, it loads those files directly.

Share this post


Link to post
Share on other sites

Network file systems are fine, but I'd also advise that having a PC build of your engine is a really valuable productivity tool and will probably pay back the time investment even over a single project.

 

Assuming your code is C++ based, then the ability to use edit-and-continue in MSVC will improve your programmers life significantly, and there are ways to get OpenGLES 2 working on windows too (I use PVRVFrame, but other options are available).

Share this post


Link to post
Share on other sites

@Sean - Thank you for your response. I swear I've seen youYes, this was precisely the other option I was thinking about. Transferring data over USB would be ideal - though I can't find any (official) way to do that for say, iOS. Going the route of setting up a simple file server would mean developing PC/Mac-side tools anyways :) At the moment, we hire contractors for assets - so the second we rely on a desktop approach, may have to support both Mac and Windows. Also, given mobile's available RAM, there is a chance there is frequent access over the network for assets. Would need to do some back-of-the-envelope calculations to see if I can dl the assets in a reasonable amount of time! Do you have experience with either method?

 

@Hodgman - Thanks for the response! Ya, that's what I've seen in my experience too. See my response to Sean for thoughts. Any experience on what works/doesn't work for mobile?

 

@Columbo - Part of me thinks this may just be safest - albeit, the most time-consuming. Eventually, we'll need to build actual tools and a Desktop-based editor. All C, don't use MSVC, but have a self-implemented edit-and-continue ;)

Share this post


Link to post
Share on other sites

We do mobile development on Android and iOS, and this is how we do it:

 

All resources are packaged with the app in the standard ways, but the debug build will also first check for the resource in the applications writable document/data folder.

 

I've then written a small server that you can point at your resource folder on your desktop pc which will monitor it for file changes.

The debug version of the application on device has a client that will connect to the server on startup over wifi.

The server will then send notifications to the client on device when any file changes, and transfer the content

 

If any update comes, the client on device will save the file to the document/data folder and trigger a callback that reloads the scene/ui/level/whatever-this-resource-belongs-to.

 

This way, you only have to transfer files when they actually change, and your game can easily automatically reload them when they are fully transfered.

Share this post


Link to post
Share on other sites

@Olof Thanks for the response! Ya, this is pretty much what I was thinking of doing. Does your small server sit on a central machine, or is it part of the toolchain on the dev/content creator's workstation? Do your artists/level designers like this setup? 

Edited by zokeefe

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this