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

Bevy

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

Ang bevy_lingara ay isang Bevy plugin na nakapatong sa player core ng Lingara. Idagdag ito sa iyong app, sabihin dito kung paano maaabot ang iyong server para sa mga token, at basahin ang ipinapadala ng Lingara bilang karaniwang mga Bevy Message.

Idagdag ang plugin

Idagdag ang crate sa iyong laro, saka idagdag ang LingaraPlugin sa iyong app kasama ang isang LingaraConfig.

Kumuha ng mga token mula sa iyong server

Hindi kailanman humahawak ng secret ang plugin. Kapag kailangan nito ng token, humihingi ito sa sarili mong server, na nagmi-mint ng isa gamit ang isang server kit at sumasagot gamit ang token at ang expiry nito.

May dalawang paraan para sumagot. Sa karaniwang kaso, ibigay sa config ang token route ng iyong server at anumang header na kailangan ng iyong session, at ang plugin na ang tatawag dito para sa iyo. O iwanang walang laman ang route at sagutin mo mismo ang bawat LingaraTokenNeeded na Message gamit ang isang ProvideToken, gamit ang anumang sign-in na mayroon na ang iyong laro.

Basahin ang mga event nang isang beses bawat frame

Pinapatakbo ng core ang network I/O nito sa sarili nitong thread at hindi kailanman tumatawag sa iyong code. Inuubos ng plugin ang queue nito nang isang beses bawat frame at ginagawang mga Message ang mga dumating, na binabasa ng iyong mga system gaya ng iba pa:

  • LingaraEventReceived para sa isang event tungkol sa player, gaya ng pagiging handa ng isang plano ng aralin;
  • NpcTranscript, isang component sa bawat karakter na lumalaki habang nag-i-stream papasok ang isang sagot (tingnan ang usapan ng NPC);
  • PracticeFinished kapag natapos ang isang practice session (tingnan ang mga resulta ng pagsasanay).

Walang humaharang sa isang frame: lumalabas ang mabagal na network bilang isang Message na dumarating nang medyo huli.

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