Making Games – Special Edition GDC 2014

Page 29

Script web code and the C++ mobile code. To be clear, controlling the »binary« outcome of a porting achieved through Unity, Xamarin or Apportable is absolutely possible as well. However, tweaking needs to be done in the original programming language (C#, ObjectiveC), and if those tweaks reach their limits you need to work directly with the tool providers, modifying their way a binary is generated or replacing parts with custom C++/Objective-C/ Java code for the target environment.

UI challenges

Haribo App utilizing a Unity3D view with native views on top (implemented in Android UI and iOS Cocoa Touch).

Source code porting Source porting is another way, which we pursue in various projects. While it requires considerable efforts to essentially translate the full source code from one programming language into another (for example from Objective-C to C++, from ActionScript 3.0 to C++), the native target programming environment gives the project team maximum direct control and optimization possibilities. In order to ease the translation process itself, we utilize a collection of in-house tools, consisting of language parsers, reference call modifications (custom libraries emulating language features such as ARC, Lambda expressions etc.), syntax translation/pre-formatting and also a set of custom merge tools. By using this semiautomatic tool chain, code changes within the »source« codebase can be reflected in the translated code in relatively short timeframe while preserving any additional optimizations and previously implemented changes in the »ported« source code. At the same time, the porting engineers can keep track on the actual changes on both versions, the »source« code as well as the »ported« code. Having both code bases structurally similar facilitates rapid merges of new features, tweaks and balancing. In some cases, complete frameworks or libraries can be used in platform-specific variants in order to optimize performance on each platform while sharing the same interfaces. For example, during the project »Forge of Empires« by InnoGames, the popular ActionScript 3.0 framework Robotlegs was ported to a custom C++ variant allowing for swift code merges between the Action-

Besides the technical porting of the program flow, we put much thought into the way we adapt the overall UI experience from one platform to another. Typical UI areas include: ¾¾ Navigation flow – including Android hardware buttons, split views vs. serial views ¾¾ Mouse vs. Touch UI – Specifying active click areas, gestures, »mouse overs« ¾¾ Resolution groups – Catering for Full HD smartphones down to original iPhone resolution and various tablet flavors. ¾¾ Texture management – Smart grouping of related textures into few atlases to minimize number of texture switches during draw calls, dynamically load/unload/generate texture atlases.

About exozet exozet is Germany’s leading independent game development studio in the family and brand entertainment sector. Since 2004, the Berlin-based company specializes in the development, publishing and marketing of multiplatform mobile and online games for an international audience. Among exozet’s best-known games are titles like Catan, Carcassonne, Playmobil and HABA apps for kids.

With hundreds of different Android tablet models on the market, there is a huge bandwidth ranging from 480x800px low-cost 7“

Wooga’s Diamond Dash for Android comes in 3 well-balanced grid configurations, depending on the physical screen size.

29


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.