Lingara Lingara Dokumentasie Gidse API Biblioteke Apps Bou Inbed Webtoepassing
Taal: Afrikaans

JVM en Android

Hierdie bladsy is uit Engels vertaal. As die twee verskil, is die Engelse bladsy korrek. Lees die Engelse bladsy

Die Kotlin-spelerkit loop op die JVM, op die rekenaar en op Android. Java-speletjies gebruik dieselfde kit deur sy Java-fasade. Die voorbeelde volg ‘n libGDX-speletjie, waarvan die weergawelus ‘n natuurlike plek is om gebeurtenisse leeg te maak, en dieselfde oproepe pas in enige speletjielus.

Voeg die kit en sy inheemse biblioteke by

Die kit en sy inheemse biblioteke is aparte artefakte op Maven Central, so voeg albei by. ‘n Rekenaarspeletjie voeg lingara-embed-natives-desktop by, wat die biblioteke vir Windows, macOS en Linux dra. ‘n Android-module voeg eerder lingara-embed-natives-android by, ‘n AAR. In ‘n libGDX-projek gaan die rekenaarbiblioteke in die rekenaarmodule en die Android-biblioteke in die Android-module.

‘n Kotlin-speletjie hang af van lingara-embed-kotlin; ‘n Java-speletjie van lingara-embed-java, die fasade.

Kry tokens van jou bediener

Die kit hou nooit ‘n geheim nie. Gee dit jou eie bediener se tokenroete en die kopreël wat die speler se sessie dra, en die kit stuur ‘n POST daarheen wanneer dit ‘n token nodig het. Jou bediener reik uit met ‘n bedienerkit en antwoord met die token en sy vervaltyd.

Maak gebeurtenisse in jou weergawelus leeg

Die kern voer sy netwerk-I/O op sy eie draad uit en roep nooit jou kode aan nie. Maak in jou weergawelus, op die speletjiedraad, leeg wat aangekom het, hoogstens 256 gebeurtenisse op ‘n slag, en hanteer elkeen: ‘n oefenopdatering, ‘n gestroomde NPC-antwoord, ‘n fout. In Java gaan elke gebeurtenis na die ooreenstemmende metode van jou besoeker. Sluit die kit in jou speletjie se dispose-stap, wat die kern stop en dit vrystel.

Sien NPC-dialoog en oefenresultate vir wat daardie gebeurtenisse dra.

Taal van die kodevoorbeeld

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>
Taal van die kodevoorbeeld

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();
Taal van die kodevoorbeeld

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