Ram Maheshwari Logo Image
Mohammad Shahriari

LiveOps Infrastructure

An in-house infrastructure for Medrick Studio to be used by the company's games to implement liveops features easier and faster.

Project Image

Project Overview

Medrick had a bunch of growing projects in the market. Following mobile game industry trends, those games where implementing LiveOps features. At the begining, each project had it's own system to handle liveOps. After a while, the studio decided to develop a general infrastructure for all it's projects.
I was a part of the LiveOps team, responsible to design the overall architecture and client-side implementation. We, as the client team, were discussing the design requirements with the back-end team to design APIs and the communication flow between the server and the client. Then we had to design the client-side's code architecture, before implementing it.
We were following TDD practices from the begining: writing the tests first(following AAA convention), then we were writing the code to pass those tests. We used Moq to mock our interfaces in our unit tests.
We chose unity packages as the distribution approach. We came up with 5 packages at the end of the first phase of the project, which was then uploaded on our in-house Nexus repo.
One of the importatnt requirements of the design team, was the ability to inject new assets to the app during a liveOps event. We used Addressable Assets to satisfy this requirement.
Our system design was highly flexible and after getting integrated, a project could have it's own implementations of the interfaces that the package provided to them.

Tools/Things to Mention

Software Architecture
Software Engineering
TDD
C#
Unity
Addressable Assets
npm Packages
LiveOps
REST