Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
sql
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

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

Releases

No releases published

Packages

No packages published
You can’t perform that action at this time.