Lingara Lingara Belgeler Rehberler API Kütüphaneler Uygulamalar Oluştur Gömme Web uygulaması
Dil: Türkçe

JVM ve Android

Bu sayfa İngilizceden çevrilmiştir. İkisi arasında fark varsa İngilizce sayfa doğrudur. İngilizce sayfayı oku

Kotlin oyuncu kiti JVM üzerinde, masaüstünde ve Android’de çalışır. Java oyunları aynı kiti Java cephesi aracılığıyla kullanır. Örnekler, işleme döngüsü olayları boşaltmak için doğal bir yer olan bir libGDX oyununu izler; aynı çağrılar her oyun döngüsüne uyar.

Kiti ve yerel kütüphanelerini ekleyin

Kit ve yerel kütüphaneleri Maven Central’da ayrı yapıtlardır; bu yüzden ikisini de ekleyin. Bir masaüstü oyunu, Windows, macOS ve Linux kütüphanelerini taşıyan lingara-embed-natives-desktop yapıtını ekler. Bir Android modülü ise bunun yerine bir AAR olan lingara-embed-natives-android yapıtını ekler. Bir libGDX projesinde masaüstü yerel kütüphaneleri masaüstü modülüne, Android yerel kütüphaneleri ise Android modülüne gider.

Bir Kotlin oyunu lingara-embed-kotlin yapıtına, bir Java oyunu ise cephe olan lingara-embed-java yapıtına bağımlıdır.

Belirteçleri sunucunuzdan alın

Kit hiçbir zaman gizli anahtar tutmaz. Ona kendi sunucunuzun belirteç rotasını ve oyuncunun oturumunu taşıyan başlığı verin; kit bir belirtece ihtiyaç duyduğunda bu rotaya istek gönderir. Sunucunuz bir sunucu kiti ile belirteç üretir ve belirteci ve son kullanma zamanını yanıt olarak döndürür.

Olayları işleme döngünüzde boşaltın

Çekirdek ağ I/O’sunu kendi iş parçacığında yürütür ve hiçbir zaman sizin kodunuzu çağırmaz. İşleme döngünüzde, oyun iş parçacığında, gelenleri bir seferde en fazla 256 olay olarak boşaltın ve her birini işleyin: bir alıştırma güncellemesi, akışla gelen bir NPC yanıtı, bir hata. Java’da her olay, ziyaretçinizin eşleşen yöntemine gider. Kiti oyununuzun dispose adımında kapatın; bu adım çekirdeği durdurur ve serbest bırakır.

Bu olayların neler taşıdığı için NPC diyaloğu ve alıştırma sonuçları sayfalarına bakın.

Kod örneğinin dili

Kotlin

// The kit, and the natives for the platform: natives-desktop in a libGDX lwjgl3 module, natives-android in its android module.
implementation("com.getlingara:lingara-embed-kotlin:0.1.0-alpha.6")
implementation("com.getlingara:lingara-embed-natives-desktop:0.1.0-alpha.6")

Java

<!-- The kit, and the natives for the platform (lingara-embed-natives-android in an Android module). -->
<dependency>
  <groupId>com.getlingara</groupId>
  <artifactId>lingara-embed-java</artifactId>
  <version>0.1.0-alpha.6</version>
</dependency>
<dependency>
  <groupId>com.getlingara</groupId>
  <artifactId>lingara-embed-natives-desktop</artifactId>
  <version>0.1.0-alpha.6</version>
</dependency>
Kod örneğinin dili

Kotlin

// Your server mints the embed token; the kit POSTs {} here whenever it needs one.
private val lingara =
    LingaraEmbed.start(
        EmbedConfig(
            tokenSource =
                TokenSourceConfig.Http(
                    url = "https://my-game.example/lingara/token",
                    headers = listOf(Header("Authorization", Secret("Bearer $session"))),
                ),
            userAgentSuffix = "my-game/1.4",
        ),
    )

Java

// Your server mints the embed token; the kit POSTs {} here whenever it needs one.
lingara =
    LingaraEmbedJava.builder()
        .httpTokenSource(
            "https://my-game.example/lingara/token",
            Map.of("Authorization", "Bearer " + session))
        .userAgentSuffix("my-game/1.4")
        .build();
Kod örneğinin dili

Kotlin

// In render(), on the game thread: one crossing, at most 256 events.
fun render() {
    lingara.drain(256) { event ->
        when (event) {
            is EmbedEvent.Practice -> showPractice(event.snapshot.question?.prompt)
            is EmbedEvent.NpcTurn -> onNpcTurn(event.update)
            is EmbedEvent.Error -> println("Lingara error: ${event.error.message}")
            else -> Unit
        }
    }
}

// In dispose(): stops the core and frees it.
fun dispose() {
    lingara.close()
}

Java

// In render(), on the game thread: one crossing, at most 256 events, each to its visitor method.
void render() {
  lingara.drain(256, event -> LingaraEmbedJava.visit(event, visitor));
}

// In dispose(), or let try-with-resources do it.
@Override
public void close() {
  lingara.close();
}