Lingara Lingara Dokumentasyon Mga gabay API Mga library Mga app Gumawa Embed Web app
Wika: Filipino

JVM at Android

Isinalin mula sa Ingles ang pahinang ito. Kung magkaiba ang dalawa, ang pahinang Ingles ang tama. Basahin ang pahinang Ingles

Tumatakbo ang Kotlin player kit sa JVM, sa desktop at sa Android. Ginagamit ng mga Java na laro ang parehong kit sa pamamagitan ng Java facade nito. Sinusundan ng mga sample ang isang libGDX na laro, na ang render loop ay natural na lugar para umubos ng mga event, at ang parehong mga tawag ay akma sa anumang game loop.

Idagdag ang kit at ang mga native nito

Magkahiwalay na artifact sa Maven Central ang kit at ang mga native library nito, kaya idagdag ang dalawa. Ang isang desktop na laro ay nagdadagdag ng lingara-embed-natives-desktop, na nagdadala ng mga library para sa Windows, macOS at Linux. Ang isang Android module ay nagdadagdag ng lingara-embed-natives-android, isang AAR, sa halip. Sa isang libGDX project, napupunta ang mga desktop native sa desktop module at ang mga Android native sa Android module.

Nakadepende ang isang Kotlin na laro sa lingara-embed-kotlin; ang isang Java na laro sa lingara-embed-java, ang facade.

Kumuha ng mga token mula sa iyong server

Hindi kailanman humahawak ng secret ang kit. Ibigay dito ang token route ng sarili mong server at ang header na nagdadala ng session ng player, at magpo-post ang kit doon tuwing kailangan nito ng token. Nagmi-mint ang iyong server gamit ang isang server kit at sumasagot gamit ang token at ang expiry nito.

Ubusin ang mga event sa iyong render loop

Pinapatakbo ng core ang network I/O nito sa sarili nitong thread at hindi kailanman tumatawag sa iyong code. Sa iyong render loop, sa game thread, ubusin ang mga dumating, hanggang 256 na event sa isang pagkakataon, at asikasuhin ang bawat isa: isang update ng pagsasanay, isang naka-stream na sagot ng NPC, isang error. Sa Java, napupunta ang bawat event sa katugmang method ng iyong visitor. Isara ang kit sa dispose step ng iyong laro, na humihinto sa core at nagpapalaya rito.

Tingnan ang usapan ng NPC at mga resulta ng pagsasanay para sa dala ng mga event na iyon.

Wika ng halimbawang code

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>
Wika ng halimbawang code

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();
Wika ng halimbawang code

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