# Marmalade Game Studio

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&#x20;
* 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 Native Sharing](https://www.nicholassheehan.co.uk/projects/opensource#unity-native-sharing)
* 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.

## Download Links

### Monopoly

| Website                                                        | App Store                                           | Play Store                                                                       |
| -------------------------------------------------------------- | --------------------------------------------------- | -------------------------------------------------------------------------------- |
| [Website](https://www.marmaladegamestudio.com/games/monopoly/) | [Download](https://apps.apple.com/app/id1477966166) | [Download](https://play.google.com/store/apps/details?id=com.marmalade.monopoly) |

### Game of Life 2

| Website                                                                  | App Store                                              | Play Store                                                                   | Steam                                                                     | Switch                                                                                                         | PS4                                                              |
| ------------------------------------------------------------------------ | ------------------------------------------------------ | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| [Website](https://www.marmaladegamestudio.com/games/the-game-of-life-2/) | [Download](https://apps.apple.com/US/app/id1512751689) | [Download](https://play.google.com/store/apps/details?id=com.marmalade.gol2) | [Download](https://store.steampowered.com/app/1455630/The_Game_of_Life_2) | [Download](https://www.nintendo.co.uk/Games/Nintendo-Switch-download-software/THE-GAME-OF-LIFE-2-1939288.html) | [Download](https://store.playstation.com/en-gb/concept/10004213) |

### **Taboo**

| Website                                                     | App Store                                                                        | Play Store                                                                    |
| ----------------------------------------------------------- | -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| [Website](https://www.marmaladegamestudio.com/games/taboo/) | [Download](https://apps.apple.com/gb/app/taboo-official-party-game/id1563932741) | [Download](https://play.google.com/store/apps/details?id=com.marmalade.taboo) |

### Jigsaw Video Party

| Website                                                                  | App Store                                              | Play Store                                                                     |
| ------------------------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------------------------------ |
| [Website](https://www.marmaladegamestudio.com/games/jigsaw-video-party/) | [Download](https://apps.apple.com/us/app/id1530459925) | [Download](https://play.google.com/store/apps/details?id=com.marmalade.jigsaw) |

### Bubble Play

| Website                            | App Store                                           | Play Store                                                                     |
| ---------------------------------- | --------------------------------------------------- | ------------------------------------------------------------------------------ |
| [Website](https://bubbleplay.com/) | [Download](https://apps.apple.com/app/id1594207855) | [Download](https://play.google.com/store/apps/details?id=com.marmalade.bubble) |
