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.
Download Links
Monopoly
Game of Life 2
Taboo
Jigsaw Video Party
Bubble Play
Last updated