Lingara Lingara Ohjeet Oppaat API Kirjastot Sovellukset Rakenna Upotus Verkkosovellus
Kieli: Suomi

JVM ja Android

Tämä sivu on käännetty englannista. Jos ne eroavat toisistaan, englanninkielinen sivu on oikea. Lue englanninkielinen sivu

Kotlinin pelaajapaketti toimii JVM:llä, työpöydällä ja Androidilla. Java-pelit käyttävät samaa pakettia sen Java-julkisivun kautta. Esimerkit seuraavat libGDX-peliä, jonka renderöintisilmukka on luonteva paikka tyhjentää tapahtumat, ja samat kutsut sopivat mihin tahansa pelisilmukkaan.

Lisää paketti ja sen natiivikirjastot

Paketti ja sen natiivikirjastot ovat erillisiä artefakteja Maven Centralissa, joten lisää molemmat. Työpöytäpeli lisää lingara-embed-natives-desktop, joka sisältää kirjastot Windowsille, macOS:lle ja Linuxille. Android-moduuli lisää sen sijaan lingara-embed-natives-android, joka on AAR. libGDX-projektissa työpöydän natiivikirjastot menevät työpöytämoduuliin ja Androidin natiivikirjastot Android-moduuliin.

Kotlin-peli riippuu paketista lingara-embed-kotlin; Java-peli paketista lingara-embed-java, julkisivusta.

Hae tunnukset palvelimeltasi

Paketti ei koskaan säilytä salaisuutta. Anna sille oman palvelimesi tunnusreitti ja otsake, joka kuljettaa pelaajan istunnon, niin paketti lähettää sille pyynnön aina, kun se tarvitsee tunnuksen. Palvelimesi luo tunnuksen palvelinpaketilla ja vastaa tunnuksella ja sen vanhenemisajalla.

Tyhjennä tapahtumat renderöintisilmukassa

Ydin suorittaa verkko-I/O:nsa omassa säikeessään eikä koskaan kutsu koodiasi. Tyhjennä renderöintisilmukassasi, pelisäikeessä, kaikki saapunut, enintään 256 tapahtumaa kerrallaan, ja käsittele kukin: harjoittelun päivitys, virtautettu NPC-vastaus, virhe. Javassa jokainen tapahtuma menee visitorisi vastaavaan metodiin. Sulje paketti pelisi dispose-vaiheessa, joka pysäyttää ytimen ja vapauttaa sen.

Katso NPC-dialogit ja harjoittelun tulokset siitä, mitä nämä tapahtumat sisältävät.

Koodiesimerkin kieli

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>
Koodiesimerkin kieli

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();
Koodiesimerkin kieli

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();
}