Developer Portal

About You.i Engine One

With the release of You.i Engine One 5.0, You.i TV offers new options and flexibility in how you build your You.i Engine One-based app through the support of React Native as an official development platform. For React Native developers, You.i Engine One will feel just like a new target platform for maintaining development workflows. It's extended with broad portability, unlocks a new level of cross-platform code reuse around custom functionality, and adds a new level of design fidelity with smooth JSX integrations into our designer workflow.

All of these approaches can be used interchangeably within the same application, enabling a new level of flexibility in how you develop and augment applications.

Technology Overview

You.i Engine One SDK capabilities are explained in more detail below:

Layout and Motion Exporter

Designers create all the user interface elements for You.i Engine apps in Adobe After Effects (AE). In general, each screen in the app has its own AE file. Designers build these screens using standard AE elements. At runtime, the elements are bound to underlying C++ classes, called views, provided by You.i Engine; for example, buttons and lists. Designers can also use AE to control responsive screen and dynamic layout behavior.

You.i Engine provides an AE Preview tool, launched from within AE. Using the Preview tool, designers can view their responsive screen and dynamic behavior under various conditions and sizes.

You.i Engine also provides an AE Exporter that extracts the required data about the screen layout, controls, and motion, and converts it into a format that is consumable by You.i Engine.

User Interface

You.i Engine builds scenes using a tree of UI elements. This is a familiar architecture for developers who are acquainted with other GUI toolkits or game engines. At runtime, You.i Engine retrieves the visual and animation data from the exported files and constructs a scene tree that contains all the elements for a given screen, such as buttons, text, images, and so on. You.i Engine automatically handles the rendering and animation of UI components such as button presses and list scrolling. All the developer has to do is create connecting code to handle UI events (for example, reacting to a button press).

Screens come in different aspect ratios, which means developers cannot hardcode the layout of visual items. You.i Engine detects the screen size at runtime and automatically lays out and scales the items on the screen, according to rules specified in the AE file.

On mobile devices, users have touch controls to interact with an app. But on a TV, users have a remote control. When a user highlights an on-screen control using a remote, the highlight is known as focus. Based on the layout of controls on the screen, You.i Engine automatically determines which control has focus, and which control should get focus when the user presses the remote’s direction keys. Normally, apps can rely on You.i Engine focus rules, but they are free to override the default behavior.

In addition, You.i Engine allows you to specify which animations play when the user transitions from one screen to the next. Experienced app developers know that this is nothing new. However, You.i Engine allows you to drive the animation behavior from AE, which provides the artist and motion designer more finely-tuned control over the animated visuals and animated sequences.

Complex visuals with many elements can be broken into smaller pieces, which can then be assembled into a larger screen design while the app is running. This allows animation sequences to be reused across the app, as well as providing a means for precise control around the visibility of screen elements. When needed, these pieces can even be drawn off-screen during the screen assembly process, enabling more dramatic visual effects.

App Components

This block of features contains everything else that a developer needs to build an app; that is, event and input handling, managing memory, networking, and so on.

You.i Engine contains many features to help developers solve some unique problems for cross-platform development. For example, in a typical media app you could have hundreds or thousands of assets streaming in and out of the app while browsing a content library. In a cross-platform world, many of the devices have very different memory profiles. You.i Engine provides various features to enable an app developer to manage memory limits more effectively.

Networking is a fundamental aspect for any video streaming app. You.i Engine provides an easy-to-use API for web service calls and resource downloads. Everything related to networking and resource decoding is designed for performance and optimal viewing experiences.

You.i Engine apps are typically event-driven (for example, button pressed, timer fired, image downloaded). You.i Engine has an easy to use call-back mechanism, called signals and slots, for notifying code when these events happen. If used correctly, these API features can help make app code less coupled and more maintainable.

Rendering Pipeline

The UI is rendered through a custom cross-platform rendering pipeline that fully leverages GPU hardware acceleration on all platforms to deliver the best performance possible. The pipeline is built on top of standard GPU APIs, with most platforms leveraging OpenGL, DirectX for Microsoft Platforms, as well as some custom GPU integrations for some other types of devices.

Platform Bridges

This area provides developers with out-of-the-box abstracted bridges to common underlying platform capabilities. From an app developer’s perspective, they only have to integrate with a single interface and You.i Engine handles the implementation tied to all of the underlying platforms automatically. Common uses of the platform services include use cases such as revealing the system keyboard, and launching web-views, which are often used in authentication workflows, or for accessing secure platform storage.

Depending on the needs of the app being built, You.i Engine apps can vary on the amount of platform integration code written against the underlying OS. By minimizing the platform-dependent code, apps can reap huge benefits when handling OS version updates across all the different platforms. There is typically minimal work required to support new OS versions.