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

Bevy

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

bevy_lingara on Bevy-liitännäinen Lingaran pelaajaytimen päällä. Lisää se sovellukseesi, kerro sille, miten se tavoittaa palvelimesi tunnuksia varten, ja lue Lingaran lähettämä sisältö tavallisina Bevy-Messageina.

Lisää liitännäinen

Lisää crate peliisi ja lisää sitten LingaraPlugin sovellukseesi yhdessä LingaraConfig-määrityksen kanssa.

Hae tunnukset palvelimeltasi

Liitännäinen ei koskaan säilytä salaisuutta. Kun se tarvitsee tunnuksen, se pyytää sitä omalta palvelimeltasi, joka luo tunnuksen palvelinpaketilla ja vastaa tunnuksella ja sen vanhenemisajalla.

Vastaamiseen on kaksi tapaa. Tavallisessa tapauksessa annat määritykselle palvelimesi tunnusreitin ja minkä tahansa otsakkeen, jota istuntosi tarvitsee, ja liitännäinen kutsuu sitä puolestasi. Tai jätä reitti asettamatta ja vastaa itse jokaiseen LingaraTokenNeeded-Messageen ProvideToken-vastauksella käyttäen sitä kirjautumista, joka pelilläsi jo on.

Lue tapahtumat kerran ruudunpäivityksessä

Ydin suorittaa verkko-I/O:nsa omassa säikeessään eikä koskaan kutsu koodiasi. Liitännäinen tyhjentää jononsa kerran ruudunpäivitystä kohden ja muuttaa saapuneen sisällön Messageiksi, joita järjestelmäsi lukevat kuten mitä tahansa muitakin:

  • LingaraEventReceived pelaajaa koskevasta tapahtumasta, kuten tuntisuunnitelman valmistumisesta;
  • NpcTranscript, jokaisen hahmon komponentti, joka kasvaa vastauksen virratessa sisään (katso NPC-dialogit);
  • PracticeFinished, kun harjoitusistunto päättyy (katso harjoittelun tulokset).

Mikään ei pysäytä ruudunpäivitystä: hidas verkko näkyy vain siten, että Message saapuu hieman myöhemmin.

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