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

Bevy

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

bevy_lingara is ‘n Bevy-inprop bo-op Lingara se spelerkern. Voeg dit by jou app, sê vir dit hoe om jou bediener vir tokens te bereik, en lees wat Lingara stuur as gewone Bevy-Messages.

Voeg die inprop by

Voeg die crate by jou speletjie, en voeg dan LingaraPlugin met ‘n LingaraConfig by jou app.

Kry tokens van jou bediener

Die inprop hou nooit ‘n geheim nie. Wanneer dit ‘n token nodig het, vra dit jou eie bediener, wat een met ‘n bedienerkit uitreik en met die token en sy vervaltyd antwoord.

Daar is twee maniere om te antwoord. In die gewone geval gee jy die konfigurasie jou bediener se tokenroete en enige kopreël wat jou sessie nodig het, en die inprop roep dit vir jou aan. Of laat die roete ongestel en beantwoord elke LingaraTokenNeeded-Message self met ‘n ProvideToken, met watter aanmelding jou speletjie ook al reeds het.

Lees gebeurtenisse een keer per raam

Die kern voer sy netwerk-I/O op sy eie draad uit en roep nooit jou kode aan nie. Die inprop maak sy tou een keer per raam leeg en maak van wat aangekom het Messages wat jou stelsels soos enige ander lees:

  • LingaraEventReceived vir ‘n gebeurtenis oor die speler, soos ‘n lesplan wat gereed word;
  • NpcTranscript, ‘n komponent op elke karakter wat groei terwyl ‘n antwoord instroom (sien NPC-dialoog);
  • PracticeFinished wanneer ‘n oefensessie eindig (sien oefenresultate).

Niks blokkeer ‘n raam nie: ‘n stadige netwerk wys as ‘n Message wat ‘n bietjie later aankom.

Bevy

cargo add bevy_lingara@0.1.0-alpha.6

Bevy

/// The common case: the plugin POSTs to your own server's token route, with
/// your game's session as a header, and reads `{token, expires_at}`.
fn lingara_config(session_header: bevy_lingara::lingara_embed::Header) -> LingaraConfig {
    LingaraConfig::new()
        .token_endpoint("https://game.example.com/lingara-token", vec![session_header])
        .source_lang("en")
}

/// Or keep the session in ECS: leave the token endpoint unset, answer each
/// `LingaraTokenNeeded` with what your server returned.
fn answer_token_requests(mut needed: MessageReader<LingaraTokenNeeded>, mut provide: MessageWriter<ProvideToken>) {
    for _request in needed.read() {
        let (token, expires_at) = fetch_from_your_server();
        provide.write(ProvideToken::new(token, expires_at));
    }
}

Bevy

App::new()
    .add_plugins(DefaultPlugins)
    .add_plugins(LingaraPlugin::new(lingara_config(header)))
    .add_systems(Update, on_lingara_event)

/// The plugin drains Lingara's events once per frame: read them as Messages.
fn on_lingara_event(mut events: MessageReader<LingaraEventReceived>) {
    for LingaraEventReceived(event) in events.read() {
        info!("{}: {}", event.event_type, event.data_json);
    }
}