Joris Eijmberts

Turning crazy ideas into games!

Development

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.