Introduction to Swing
Swing is an integrated system for game replay and sharing
Swing mainly consists of Swing Engine and Swing Server. Swing Engine is a Unity plugin that provides functions and sample source code for generating efficient object-data-based replay contents. Swing Server manages those contents sent by the engine to easily share replays on-demand or even broadcast alive.
Using Swing Engine is free of charge, while using Swing Server has cost rate similar to Amazon Web Service. But using Swing Server is not mandatory. Developers can choose to build their own server and Swing Engine supports local file management functions to facilitate the work.
Apart from the engine and the server, we provide Swing Utility which has additional functions for Swing Engine. Using this utility, developers can capture and render game play scenes into plain or 360 immersive image files to share on Facebook or other SNS.
Swing Engine captures and restores the gameplay, including animation and sound. It can be useful especially in mobile games, where cpu, memory and other resource usages are important. And Swing supports many helpful features for implementing replay.
Swing Engine creates a replay by capturing objects’ statuses and rebuild the game scene with them. Usually game app itself is used for rebuilding process, so we call it In-Game-Replay. As opposed to screen capturing replay systems, In-Game-Replay has many advantages.
There's no loss in screen display, no image quality degradation from lossy compression. It resolves the device screen resolution issues.
In-Game-Replay makes it possible to create a VR replay from a non-VR game, viewers can watch the play of non-VR games in immersive environment, and it will give them a new experience, even they can see what is not in the player’s view.
Small Data Size
Data sizes in mobile devices are important. Size of replay data generated by Swing can vary from 10MB to 100MB per hour depending on number of objects, which is much smaller than that of a video file (1GB per hour in general). Swing minimizes the data the linear regression and supports features for the reduction of data sizes.
Low CPU/GPU usage
Generally screen capturing replay systems use GPU for video encoding and it can influence the game play. But Swing does not use GPU and its average CPU usage during the game play is lower than 5%. It does not interrupt the game play. .
Swing provides various data management functions.
- Local File : Recorded data can be saved into local file in device. It can be used in various way as game developer's marketing plan. Gamers can share the game play with SNS. Developers can construct the contents platform with their server.
- Local Storage : Swing provides local storage with which developers can manage the replay contents easily. They can save the contents on it, easily get the list of the contents, and delete the contents with various options.
- SwingServer : Swing provides server system working on AWS for the contents management. Game provider can use the server with just AWS operation fee only.
With the support of SwingServer, Game providers can offer the Real-time live broadcasting service. Many of watchers would enjoy the game play with the voice of the broadcasting game player simultaneously.
Basically Swing captures the properties of the GameObjects, but you can optimize the Swing operations and data size with customizing. If a operation instantiates massive objects, like scatter gun shot, you can reduce the resource usage with customizing .
For example when a bullet is shot, general recording catches the path of the bullet. But it can be sufficiently represented by recording the initial data(time, position and force) and duration.
Swing support Playback camera function, which works only on playback state. Developers can set multiple playback camera, and main camera can be set among the playback cameras by game replay planning. For the 2 vs 2 FPS (First person shooter) game, viewers can watch the game play at any player's view, and center view where they can watch all the players in a view.
Gamers can record their voices in recording state. The recorded voice will be played back in playback state. Viewers can decide whether they would get the voice data and play it back or not.
In Swing implemented replay, latest version of game app covers the contents generated from older version. Their are two options if the appearances of the GameObjects are to be changed with update, they can be replayed as it is or as it was, according to the decision of the game providers.
One of the most important goal in creating game replays is to share them. Server operation is very essential to achieve the goal.
Developers can build their own management server system that interacts with Swing Engine. But building and operating server is not a simple work. It take much time to build and money for buying hardware, maintaining, administrating.
Swing Server can spare developers from all those extra works, for reasonable price. Swing Server’s supported features are as follows:
- on-demand replay contents server
- real-time live broadcasting
- authorization of gamers
- contents management
Swing has a set of utility that can assist Swing Engine for additional functions such as image sharing and Snap Shot.
Developers can implement sharing image of game play function easily with SnapShot of SwingUtility.
SnapShot covers :
- rendering game play,
- encoding to jpg and png format image file,
- supporting 360 immersive image,
- and sharing the image with uploading to Facebook.
Supports Unity 5.4.0 or later.
Visit https://www.minkonet.com for more information.
We plan to supports contents video-based sharing functionality and ads feature.
Basically, Swing Spectator implements In-Game-Replay. Though it has great advantages in resource usage and quality, also has limitation that replay contents can not be played without game app. To resolve it, Swing plans to include new features of image rendering, video encoding and publishing to SNS, and we call it as SwingSocial. SwingSocial is now under development and on the way to the open-beta version. Here are the specifications of SwingSocial,
- 2D and 360 video formats supported,
- stereo and mono types supported
- server-side rendering supported
- and sharing the contents on SNS (Facebook and Youtube).
Swing plans to include monetization system of SwingAds, which will make revenue with ads. The ads applied in SwingAds is non-blocking native ads. There is no ads object in game play, and some developer designated boards can be used for ads contents only in playback state. We are constructing full coverage of ads system. Image or videoclip will be downloaded from the Swing Ads Server and the exposure of the ads contents will be counted automatically by SwingAds. The revenue will be shared with Swing and it will give the game providers additional revenue.
The Member recorder, which captures and restore the properties using reflection cannot be applicable, when IL2CPP adapted.