This is the last post about Unity3D, if you wonder what I have said before, please take a look:
5. Debugging in Unity3D
6. Performance Optimization in Unity3D
7. Continuous Integration and Delivery with Unity3D
With this last post I planning to explain Unity Services and Tools. Unity provides a range of services to help developers make games and engage, retain and monetize audiences. Unity Ads, Unity Analytics, Unity Cloud Build and Unity Multiplayer are fully integrated with the Unity Editor to make creating and managing games as smooth, simple and rewarding an experience as possible.
Unity Cloud Build helps you to automate your pipeline of compile, build, deploy and test. Simultaneously build for multiple platforms and app stores. And also distribute and share your builds that your team can easily download and install from anywhere. So it is yet another continuous integration and delivery tool specific to unity games by Unity. Since we have our own CI solution, we are not using this one either. Actually there is also other issues like being queued among all Unity Cloud Build customers.
Unity Collaborate is there for small teams to save, share, and sync their Unity project. It’s cloud hosted and easy to use so the entire team can contribute to the Project, regardless of location or role. Your project is cloud hosted so you’re always up to date with your team, no matter where you are. You can invite collaborators right in editor and start working together. It can be used by the entire team artists, QA, everyone (15 members max). It is in beta right now, and requires 5.4+ version of Unity3D. It is something we are planning to use (after beta) because right now it is impossible to work together on the same scene or prefab concurrently. I hope it will resolve these issues.
Everyplay is a SDK for recording game play of user. Recording is done in the background with virtually no impact on performance for users. According to Unity, players love replays. A user that watches game video typically plays more often and plays for longer than the average user. And it helps to market your game as your players share your game's replays, their friends will try it out too. We are not using it, and I am not sure if we even think it in the future. Once we tried built-in iOS Game Recording mechanism but it didn't work for our game genre.
The purpose of Unity Multiplayer is to create real time, networked games for Unity. It’s fast to implement and highly customizable. Unity-provided servers ensure that your players can find and play with each other. It can be used from turn based games to real time fast action games. Unity Matchmaker Servers makes it easy to connect your players. Unity Relay Servers brokers network traffic to ensure quality sessions between your players no matter where they are. See more on this documentation. We are not using this service also, because we have our own dedicated, robust, highly scalable and performant servers (some of our games have more than 100K concurrent users). And they are not generalized servers, they have been developed and being maintained specific to our games. We are not planning to use this in our board games, may be we can think some experimental games in the future.
Unity collects very useful statistics about the specs of mobile devices running Unity games. They share these stats on Unity Hardware Stats page. I strongly recommend to check this page frequently, it can show the characteristic of devices based on different dimensions and also platforms. The hardware data comes from users who installed some sort of Unity game, so it represents combined statistics of all Unity game players. Please be aware that, your particular game might be targeted at different type of users with different hardware.
6. Performance Optimization in Unity3D
7. Continuous Integration and Delivery with Unity3D
With this last post I planning to explain Unity Services and Tools. Unity provides a range of services to help developers make games and engage, retain and monetize audiences. Unity Ads, Unity Analytics, Unity Cloud Build and Unity Multiplayer are fully integrated with the Unity Editor to make creating and managing games as smooth, simple and rewarding an experience as possible.
Unity Ads is Unity's video ads tool. It is designed to become a natural part of the game that actually enhances the players’ experience. We are already using Unity Ads to monetize some of our native games with rewarded video ads. But we didn't experience any Unity game yet. It is not that difficult to integrate on native platforms, I guess it will be much more easier on Unity games here it is the documentation.
Whether you offer your gamers a chance to earn more currency, extra life, or double their score in exchange for watching a short video, the power is in their hands. Your players can choose to watch the ad at the right place and time in their game experience - putting more money in your pocket over the gamer’s lifetime with the highest ARPU of any global rewarded video ad network.
Unity Analytics gives you an easy access to important information that helps you improve your in-game economy and the player experience. It has a dashboard to visualize your game data. In this data you will have high-level overview of how your game is being used. Players' progress (and where they get stuck). Address different audiences by creating player groups and segments based on unique game scenarios and behavioral patterns. We are not using Unity Analytics because we have our own custom analytics solution.
Another thing is, you can enable in-app purchases across multiple stores (iOS, Mac, Google Play, Windows and Amazon App Stores) with single API called Unity IAP. And it enables you to monitor and act on trends in your revenue and purchase data across multiple platforms. Learn how to set up Unity IAP for multiple stores. We are not using Unity IAP also. Because we have our existing custom native solutions optimized and working specific to our needs. We just created native plugin for these solutions and started to use in our Unity games.
One last thing is Unity Heatmaps. It provides a visualization of spatial events that occur in your game. Where do players clicks? Where do they scores? Which roads are most travelled in your game? By collecting the data from hundreds or even thousands of plays, you begin to assemble a large-scale picture of how your players experience your game. The patterns that emerge can help you tune your game. So you can improve your game economy, reduce the gameplay difficulty curve and increase the level of player enjoyment. This is something that we are planning to use sometime in the future, but right now we didn't try it.
Unity Cloud Build helps you to automate your pipeline of compile, build, deploy and test. Simultaneously build for multiple platforms and app stores. And also distribute and share your builds that your team can easily download and install from anywhere. So it is yet another continuous integration and delivery tool specific to unity games by Unity. Since we have our own CI solution, we are not using this one either. Actually there is also other issues like being queued among all Unity Cloud Build customers.
Unity Collaborate is there for small teams to save, share, and sync their Unity project. It’s cloud hosted and easy to use so the entire team can contribute to the Project, regardless of location or role. Your project is cloud hosted so you’re always up to date with your team, no matter where you are. You can invite collaborators right in editor and start working together. It can be used by the entire team artists, QA, everyone (15 members max). It is in beta right now, and requires 5.4+ version of Unity3D. It is something we are planning to use (after beta) because right now it is impossible to work together on the same scene or prefab concurrently. I hope it will resolve these issues.
Everyplay is a SDK for recording game play of user. Recording is done in the background with virtually no impact on performance for users. According to Unity, players love replays. A user that watches game video typically plays more often and plays for longer than the average user. And it helps to market your game as your players share your game's replays, their friends will try it out too. We are not using it, and I am not sure if we even think it in the future. Once we tried built-in iOS Game Recording mechanism but it didn't work for our game genre.
The purpose of Unity Multiplayer is to create real time, networked games for Unity. It’s fast to implement and highly customizable. Unity-provided servers ensure that your players can find and play with each other. It can be used from turn based games to real time fast action games. Unity Matchmaker Servers makes it easy to connect your players. Unity Relay Servers brokers network traffic to ensure quality sessions between your players no matter where they are. See more on this documentation. We are not using this service also, because we have our own dedicated, robust, highly scalable and performant servers (some of our games have more than 100K concurrent users). And they are not generalized servers, they have been developed and being maintained specific to our games. We are not planning to use this in our board games, may be we can think some experimental games in the future.
Unity Performance Reporting automatically collects application errors, across devices and platforms, so you can find and address issues in real time. It consolidates errors across platforms, devices, and builds. Automatically collects and views errors as they are generated by app users. And best part is it requires no sdk. We are not using this one either. We are using Fabric/Crashlytics for tracking our crash reports. Actually we are very happy with it on native games. But on Unity games it is not as good as the others. We didn't discuss or investigate yet, but if Unity's solution is better than Fabric, we can think to move this one.
Unity Asset Store is home to a growing library of free and commercial assets created both by Unity Technologies and also members of the community. A wide variety of assets is available, covering everything from textures, models and animations to whole project examples, tutorials and Editor extensions. The assets are accessed from a simple interface built into the Unity Editor and are downloaded and imported directly into your project. Unity users can become publishers on Asset Store, and sell content they have created. To find out more, see Asset Store Publishing.
We are definitely using Asset Store actively (as a customer, not as a publisher yet). We have downloaded both free and paid assets. We are using some of them directly in our games and some of them to just investigate or to get inspired.
Here it is some of the assets that we are using directly (or in-directly):
- DOTween is a fast, efficient, fully type-safe object-oriented animation engine, optimized for C#.
- UniWebView is an easy solution for integrating WebView to your mobile games. You can set up a web view and embed web content in your game.
- Log Viewer helps you to check your editor console logs inside the game itself even on mobile.
- JSON .NET brings the power of Json and Bson serialization to Unity with support for 4.7.2 and up and is compatible with both .NET and IL2CPP backends.
- TextMesh Pro is the ultimate text solution for Unity. It's the perfect replacement for Unity's New UI Text & Text Mesh.
- Best HTTP is a plugin that supports request customization for REST, WebSocket, Socket.IO, SignalR, Server-Sent Events (and much more) out of the box.
- Console Enhanced is a vastly improved editor console for Unity.
- Realistic Effects Pack The package includes effects with particle systems, uv-animated textures and distortion for mobile. Dimensions are approximate to reality.
- Enhanced Scroller virtualizes your data, showing only the elements it needs to. Take thousands of rows and display them in a handful of UI elements, speeding up processing and saving memory.
- Stats Monitor is a customizable FPS counter and performance measuring tool.
Unity Labs is Unity's experimental projects, research, and explorations into the future of game design, VR, AR and development. Some of the current services started inside the Unity Labs like Heatmaps. Most probably you will not find anything that you can use directly in your game. But it can inspire you or helps you create new ideas. And articles gives you some deep knowledge of Unity Ecosystem.
There are very useful Open Source Libraries / Projects / Demos by Unity. As you might know Unity Game Engine is not open source. It can only be accessible for certain enterprise deals. But some important parts apart from game engine is open sourced in the account of Unity Technologies on bitbucket. It is always good to keep an eye on these projects to have better understanding of how Unity is working under the hood. And also it can give you some insights about the development style and practices of Unity Team.
Some of the very commonly used open sourced libraries by Unity:
- Entire Unity UI system is open sourced.
- Heatmaps that I have mentioned above is open sourced.
- Memory Profiler that I have mentioned before is open sourced.
- Unity Test Tools that our testing approaches based on is open sourced.
- XcodeAPI is for the post process that we are using to configure intermediate Xcode project is open sourced.
Unity collects very useful statistics about the specs of mobile devices running Unity games. They share these stats on Unity Hardware Stats page. I strongly recommend to check this page frequently, it can show the characteristic of devices based on different dimensions and also platforms. The hardware data comes from users who installed some sort of Unity game, so it represents combined statistics of all Unity game players. Please be aware that, your particular game might be targeted at different type of users with different hardware.
The End
So I have posted eight blog posts including this one. I have written more or less everything that I have planned in the beginning. Thanks for reading.
Now I will make a presentation from these posts to present on voxxed days belgrade. I don't promise but most probably I will tell you about the event and also share my slides here.