/kotlinconf-spinner

Primary LanguageKotlinApache License 2.0Apache-2.0

JetBrains incubator project

Kotlin Spinner Game

Simple spinner-like game intended to demonstrate capabilities of Kotlin/Native software stack

How to play

  • Download and install the mobile application for Android or iOS
  • The system will automatically assign you to a random team. Each team has a unique colour
  • Spin the Kotlin logo using your fingers, or alternatively shake your phone
  • Each two full rotations (i.e. 720 degrees) will increment your team's score
  • The team with the highest score wins

Technical details

The entire application is implemented using Kotlin/Native

Server-Side

Server side runs on a linux server and is implemented using:

  • microHTTPD HTTP server library
  • SQLite for the database, storing score
  • Jansson for JSON serialization and client/server communication

Client-Side

Android

Client side for Android is implemented in pure Kotlin/Native, as a Native Activity using:

iOS

Client side for iOS is implemented in pure Kotlin/Native using:

Implementation details

  • Most graphical code, sound playback and user input reaction is shared between Android and iOS
  • Server interaction on Android is asynchronous from the UI thread, using workers
  • HTTP server works in multithreaded mode, state sharing between sessions performed via SQLite DB access
  • Android app is split into separate loader and application code, so that dynamic library (libopenal.so) included with application can be used on older Androids
  • WebAssembly frontend can fetch and render stats in the browser