Skip to content

Kotlin/kotlinconf-spinner

Folders and files

NameName
Last commit message
Last commit date
Dec 20, 2019
Nov 28, 2019
Sep 5, 2018
Aug 27, 2019
Jul 23, 2019
Jul 23, 2019
Jun 7, 2021
Jul 23, 2019
Jul 23, 2019
Nov 2, 2019
Jul 23, 2019
Sep 5, 2018
Sep 5, 2018
Oct 23, 2017
Jul 26, 2019
Dec 19, 2019
Jul 23, 2019
Dec 19, 2019
Sep 5, 2018
Sep 5, 2018
Oct 22, 2019

Repository files navigation

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

You need to have ANDROID_HOME set to your Android SDK location.

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

Project Sources

Use JDK1.8, for Android compatibility, i.e.: export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home

To use microhttpd (HTTP server) install it, i.e.:

port install libmicrohttpd
apt install libmicrohttpd-dev

To use jansson (JSON library) install it, i.e.:

port install jansson
apt install libjansson-dev

To use sqlite (embedded SQL server) install it:

port install sqlite3
apt install libsqlite3-dev

To use curl (HTTP client) install it:

port install curl
apt install libcurl3-nss

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published