During the realization phase, I first started by designing CP Social based on the final concept, after the final design was complete I started implementing CP Social’s required features
Designing
The first thing I did when designing CP Social was looking for available solutions that could be used to cut down on developement time and in the end create a more stable and better supported product.
After creating a list of available solutions I started designing the inner workings of CP Social, by creating domain & class diagrams based on the SOLID principles. And creating a design for the test project CP Social would be developed in.
Implementation
When the designs were finished I started implementing CP Social’s functionalities based on the answers Martijn gave in the interview and the requirements
Preventing multiple projects
To help prevent the need of multiple project for different platforms I had to make sure CP Social was able to figure out on what platform it was running and be able to use the right implementation for each service. To solve this I used cross platform compilation, this made sure that each service on a target platform would have the correct implementation and only that implementation.
Ease of use
To make sure CP Social was easy to use, I made sure that a developer using it wouldn’t have to worry about the platform implementation, this goal was achieved by creating CP Social as a unified api.
Robust
To make sure CP Social was robust I implemented an extra platform called the ‘unsupported platform‘ this implementation would be a default fallback for CP Social if any of the features required wouldn’t be able to run on a platform, because of an error or an end user declined a permission, needed by CP Social.
Testable
When creating CP Social I used a small lightweight test project which contained all features of CP Social. This project could be used as a simple way to test CP Social.
Services
CP Social is build up from multiple services, each service is responsible for supplying a single functionality of CP Social like, managing achievements and cloud saves.
Building
To make it easier to build for multiple platforms faster I created a separate addition to CP Social that can help developers building for multiple platform, by taking advantage of Unity build scripts.
This addition was also mandatory to create builds that would need different implementations of CP Social on the same target platform. An example of this can be seen when looking at a unsupported standalone build.
Result
At the end of the realization phase a lot had been developed and researched, here is an overview of all final products that had been developed during this internship.
A unified api
The final product is a unified api called CP Social that can be used as a solution to more easily handle support for user data management, achievement and cloud saving in any Unity project (above version 2018.4.14).
Api documentation
Along with a simple unified api, CP Social also includes a documentation website that contains tutorials on how to setup your apps Google Play, Apple’s App Store Connect and the Steam Management Console. Further more it contains full references to all code in the Api itself.
Configurator
The configurator created for CP Social is a small but powerful tool that can be used to configure app settings, achievements and cloud save settings right from the Unity editor.
Test project
The test project that has been developed to test CP Social, this project can also be used as an example project on how to implement CP Social’s features.