Lingara Lingara Mwongozo Miongozo API Maktaba Programu Unda Pachika Programu ya wavuti
Lugha: Kiswahili

Bevy

Ukurasa huu umetafsiriwa kutoka Kiingereza. Ikiwa hizi mbili zinatofautiana, ukurasa wa Kiingereza ndio sahihi. Soma ukurasa wa Kiingereza

bevy_lingara ni programu-jalizi ya Bevy juu ya kiini cha mchezaji cha Lingara. Iongeze kwenye programu yako, iambie jinsi ya kufikia seva yako kupata tokeni, na usome kile ambacho Lingara hutuma kama Messages za kawaida za Bevy.

Ongeza programu-jalizi

Ongeza crate kwenye mchezo wako, kisha ongeza LingaraPlugin kwenye programu yako pamoja na LingaraConfig.

Pata tokeni kutoka kwa seva yako

Programu-jalizi haishikilii siri kamwe. Inapohitaji tokeni, huiomba seva yako mwenyewe, ambayo hutengeneza tokeni kwa kifurushi cha seva na kujibu kwa tokeni na muda wake wa kuisha.

Kuna njia mbili za kujibu. Katika hali ya kawaida, ipe usanidi njia ya tokeni (token route) ya seva yako na kichwa (header) chochote ambacho kipindi chako kinahitaji, na programu-jalizi huiita kwa niaba yako. Au acha njia hiyo bila kuiweka na ujibu mwenyewe kila Message ya LingaraTokenNeeded kwa ProvideToken, ukitumia njia yoyote ya kuingia ambayo mchezo wako tayari unayo.

Soma matukio mara moja kwa kila fremu

Kiini huendesha I/O yake ya mtandao kwenye thread yake yenyewe na hakiiti kamwe msimbo wako. Programu-jalizi humaliza foleni yake mara moja kwa kila fremu na kugeuza kilichowasili kuwa Messages ambazo mifumo yako husoma kama nyingine zozote:

  • LingaraEventReceived kwa tukio kuhusu mchezaji, kama vile mpango wa somo kuwa tayari;
  • NpcTranscript, kijenzi (component) kwenye kila mhusika kinachokua jibu linapotiririka (tazama mazungumzo ya NPC);
  • PracticeFinished kipindi cha mazoezi kinapoisha (tazama matokeo ya mazoezi).

Hakuna kinachozuia fremu: mtandao wa polepole huonekana kama Message inayowasili baadaye kidogo.

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