Game UX Summit 2016 - David Lightbown - Untapped Resource Helping Ubisoft to Make Better Tools. IGDA Webinar, 27 January 2016: Improving Productivity at Ubisoft: Better tools & pipelines with UX. Real-time Collaboration for Games Development. I’m going to start my #AltDevBlogADay escapade by discussing a subject of great interest to me. There is a lot of buzz recently around virtual worlds which can be modified in realtime by the player; probably the most popular example is Minecraft where you have the ability to construct your own world and collaborate with friends. The question I’d like to answer in this post is: can the same idea be applied to the game development process? Traditional development environment In a traditional development environment, designers have to worry about manually merging their individual works in batches which is time consuming, complex and may even lead to conflicts.
SVN, GIT, mercurial or other version control system is used for this purpose. The real-time solution Real-time collaboration can address this by synchronizing changes in real-time. Changes are live Multiple designers can move objects, apply textures, morph terrain, tweak lighting and instantly see the results. Video: Build better dev tools, build better games. Iterate Better, Iterate Faster. “Iteration means the act of repeating a process usually with the aim of approaching a desired goal or target or result.”
(wikipedia) In the game development business, if you’ve ever talked to anyone about “iteration” there’s a good chance you were discussing iteration times – how long it takes to perform one iteration, i.e. the time it takes to get from making a change to seeing the effect of that change. Usually you’ll be either moaning about how painfully long that iteration time is, or gushing about how amazingly fast it is, depending on the tools in question. I do too, I think we all do.
It’s universally acknowledged that long iteration times are bad. I once read a study (I can’t find the link now, so you’ll have to take my word for it) which showed that women multi-task slightly more effectively than men, but that both women and men multi-task incredibly badly and should really just stick to doing one thing at a time. So what factors lead to an increase in the number of iterations?
FileSystemWatcher: A cool thing I didn’t know about until recently. Since my last post demonstrated that I shouldn’t be allowed anywhere near a keyboard when I’ve “just had a good idea for something to write”, and this week I haven’t had any ideas for something to write, let alone good ones, I thought I’d just write a brief heads-up on something that I’ve personally wanted for ages, but only found out actually exists in the last year or so.
(I have this horrible feeling that everyone else has known about this for decades, though) Automatically flag files as needing building when they are modified, rather than having to scan everything for changes every time the user hits the build button.Tell when an external application (eg Maya) saves a file so you can refresh your view of it (in a preview tool, for example).Spot what files an “unknown” external EXE (like a compiler) is writing to so you can figure out what temporary folders/etc it uses.Track things that need updating at the next SCC checkin, or syncing with a network storage system.
Collaboration and Merging. (This has also been posted to the BitSquid blog.
We are looking for a tools programmer.) Games are huge collaborative efforts, but usually they are not developed that way. Mostly, assets can only be worked on by one person at a time and need to be locked in version control to prevent conflicting changes. This can be a real time sink, especially for level design, but all assets would benefit from more collaborative workflows. As tool developers, it is time we start thinking seriously about how to support that. Debugging Tools. At a base level, the debugger and print statement are essential tools for debugging features and fixing bugs.
They have been around since the beginning and are well understood by programmers from every discipline. In games, however, there are many useful tools and utilities at a higher level that make common cases easier to work with. In no particular order, here are some I’ve found useful throughout the years: Macro I’m grouping together a series of tools that provide have multi-purpose use, and do not provide in and of themselves any specific functionality. Live Tuning. Debugging on your Web Browser. Some time ago, a colleague I worked with at Krome Studios, Matthew Peers, put me onto using HTTP as an interactive output for debug information.
I’d never touched HTTP before and didn’t realise what an amazingly easy and convenient interface it was for getting state information out of your game. Pretty much any platform that is ping-able and supports sockets interface can provide a HTTP interface for debugging information. So far I’ve used it on X360, PS3, PC and iOS devices. For those of you who have no experience with HTTP GET protocol, I will go through a simple overview of the code involved. Iterate Better, Iterate Faster.