Marmalade Game Studio

Projects I've worked on at Marmalade

While my job role is "Games Developer" for Marmalade. I also work in different areas of game development doing various things!

Bubble

Bubble is a social technology embedded within apps that Marmalade offer. Part of working on Bubble is managing one codebase across a number of different games with varying dependencies. To make things easier for each game and also for the development of Bubble, Bubble is treated as an internal studio SDK that sits alongside each app I have worked on all aspects of Bubble which include:

User accounts

  • Account creation

    • Account Authentication

      • Email

      • SSO's

        • Google

        • Facebook

        • Apple

  • Friend lists

  • Group chats

  • Profile customisation

    • Avatars

    • Display names

      • Bad word filtering on display names

Social aspects

  • Online friend status

  • Client real-time chat

    • Create 1-1 and group chats with friends

    • Send game invites for games that support Bubble via chats

Cloud Infrastructure

  • Server response compression

  • Maintaining multiple server environments

  • Function Apps

  • CosmosDB

  • Application Insights

  • Custom instant unhandled error reporting to Slack

  • Android piracy checks

  • Database data migration

  • Database optimization

  • Sending transactional emails

  • Bubble user authentication

  • SSO authentication

  • Video chat authentication

  • Push notifications for social Bubble events

    • Friend requests

    • Chats

    • Game invites

  • Remote asset and config hosting

    • S3

  • Custom domain redirects

    • Cloudfront / Route 53

      • get.bubbleplay.com

      • invites.bubbleplay.com

Deep linking

  • App Links (Google)

  • Universal Links (iOS)

  • Breaking out of Facebook Messenger's embedded in-app browser to actually launch the game

  • Rich link previews when shared via social media

Analytics

  • Custom analytics reports based on database data

    • Reports sent daily to Slack

  • Client-side analytics and Crashalytics

  • Custom post build scripts to optimize, compress and upload Android native symbols to Crashalytics and Google Play

Native mobile work

  • Push Notifications

    • Native code to check if the user has granted permissions for push notifications

  • Marmalade social media buttons

  • Cross promo page

    • YouTube hosted video player

    • YouTube thumbnail provider

    • Checking if an app is installed on the device in order to open it

  • Custom android native keyboard

    • To get around Unity's provided on-screen keyboard from not passing inputs down to the UI when dismissing the keyboard via tapping a blank area

Tools

Any software project needs tools to be able to develop better and faster, or to fill a gap that new requirement creates. Some of the tools i've work on are:

  • Mobile Permissions

    • In order to check if we have Camera and Microphone permissions for video chat

  • Link XML Merger

    • Allows link.xml files in UPM packages to be used in a build

  • ATT Popup Helper

    • Needed for iOS

  • Multiple tentative fixes for SDK's

    • AppsFlyer

    • Facebook

    • Firebase

    • Google Sign In

  • Remote bad word list

    • Helps keep Bubble display names clean without the need to update the app

  • Encryped local storage system

Infrastucture

A very easily overlooked aspect of any software development project is infrastructure.

UPM

Since starting at Marmalade, I've moved and converted numerous internal tools and 3rd party SDKs and plugins into UPM packages to make integration into Unity projects easier, quicker and cleaner.

This also involves forking public git based UPM packages to the company GitHub account to ensure that we have a buffer in case the originals are removed or changed significatly.

CI / CD

While Jenkins does the heavy lifting, some SDK's and platform requirements require special pre and post build steps to ensure that the build is configured correctly, and any native level adjustments are applied.

Understanding the build pipeline of different platforms is critical. From provisioning profiles to knowing the difference between upload and app signing keystores. Lots of people need to see and use builds on thier devices in order to test and capture gameplay, so keeping the build machines up, running and building is a high priority.

Monopoly

WebsiteApp StorePlay Store

Game of Life 2

WebsiteApp StorePlay StoreSteamSwitchPS4

Taboo

WebsiteApp StorePlay Store

Jigsaw Video Party

WebsiteApp StorePlay Store

Bubble Play

WebsiteApp StorePlay Store

Last updated