Prijeđi na sadržaj

Vlastiti proizvod

TacLink: taktička karta uživo za airsoft i milsim

TacLink je moj vlastiti proizvod. Organizator na webu napravi događaj, igrači mu se pridruže u aplikaciji i na karti vide svoju stranu uživo, i kad je mobitel zaključan u džepu ili na terenu nema signala.

Javite se

Problem

Na airsoft i milsim igrama ekipa je raspršena po šumi i brdima i dogovara se preko radija. Teško je znati tko je gdje. Slične aplikacije traže mobilne podatke cijelo vrijeme, a teren za igru često je baš tamo gdje signala nema.

Kako radi

  • Organizator na webu ucrta područje igre, odredi strane, odrede i zapovjednike, postavi oznake na kartu i mjesto okupljanja.
  • Za svaku stranu dobiva QR kod i poveznicu koje može ispisati ili poslati u WhatsApp grupu.
  • Igrač se prijavi Apple ili Google računom, upiše nadimak i skenira QR kod svoje strane.
  • Aplikacija preuzme kartu područja i sve podatke igre, pa karta radi od prve sekunde.
  • Tijekom igre igrač vidi pozicije svoje strane, oznake protivnika, stanje suigrača i zapovijedi koje šalju zapovjednik i vođa odreda.
TacLink na webu: početna stranica s kartom i linkovima na trgovine
TacLink na mobitelu: karta s pozicijama igrača uživo

Lokacija sa zaključanim zaslonom

Tijekom igre mobitel je u džepu ili na prsluku. Zato aplikacija šalje lokaciju i kad je zaslon ugašen: na iPhoneu preko pozadinskih ažuriranja lokacije, a na Androidu preko servisa u prvom planu. Dok se igrač kreće, pozicija se šalje češće, a dok miruje, rjeđe, kako bi se štedjela baterija. Na iPhoneu je igra vidljiva i na zaključanom zaslonu, kao Live Activity.

Bluetooth mesh bez signala

Kad nestane signala, mobiteli na igri povezuju se Bluetoothom i jedni drugima prosljeđuju pozicije, stanja i zapovijedi. Poruke svake strane su šifrirane, pa mobitel protivničke strane može poruku proslijediti dalje, ali je ne može pročitati. Čim neki mobitel u mreži uhvati signal, postaje most prema serveru i šalje ono što se u međuvremenu skupilo.

Zašto nativno

Prva verzija TacLinka napisana je u React Nativeu i objavljena u App Storeu i na Google Playu. Nakon testne igre s igračima aplikacija je pojednostavljena, a mobilni dio napisan iznova, posebno za iOS i za Android. Rad u pozadini, Bluetooth i lokacija srž su ove aplikacije, a nativni kod do njih ima izravan pristup, bez dodatnih slojeva.

Tehnologije

Format mesh poruka zajednički je za obje platforme i provjerava se istim testnim podacima, pa se iPhone i Android mobiteli razumiju bajt po bajt. Sve radi na jednom vlastitom serveru.

  • iOS: Swift, SwiftUI, MapLibre za kartu, GRDB za lokalnu bazu, CoreBluetooth za mesh
  • Android: Kotlin, Jetpack Compose, MapLibre, Room, Bluetooth LE mesh
  • Server: ASP.NET Core, PostgreSQL, SignalR za podatke uživo
  • Web za organizatore: React, Vite
  • Javna stranica tac-link.com: Astro
  • Plaćanje organizatora: Stripe

Što ovaj projekt pokazuje

TacLink sam napravio sam, od servera i weba za organizatore do obje mobilne aplikacije i javne stranice. Iskustvo s lokacijom u pozadini, radom bez signala, prijavom, plaćanjem i objavom u trgovinama koristim i u projektima za klijente, npr. za aplikacije koje se koriste na terenu.