Update 0.1.7: Difference between revisions

From Wiki G1R-MP G1 Remake Multiplayer
Jump to navigation Jump to search
Document upcoming 0.1.7 game audio: 11 client APIs, result event, limits and complete dialogue catalog; not a release
 
Document native HUD/menu Lua APIs available since 0.1.7; client BUILD202 and save/load protection
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
'''Upcoming release — not released yet.''' This page describes additions planned for G1R:MP 0.1.7. They are not part of the public 0.1.6 packages.
'''Released: G1R:MP 0.1.7 / client BUILD202 / Protocol 39.''' [https://g1r-mp.com/download/ Download the client and matching Windows/Linux servers]. Protocol 38 (0.1.6) and older cannot join Protocol 39 servers. When upgrading from an earlier version, update both sides. Existing 0.1.7 / Protocol 39 servers do not need replacing for this client update.


== Built-in game audio ==
== Built-in game audio ==
Line 17: Line 17:
Dialogues follow the game's selected voice language. Audio handles are resource-owned and automatically cleaned up when their resource/lifecycle ends. Playback is client-local; a server script chooses listeners through targeted client events. Existing resource-file audio and voice chat remain separate and unchanged.
Dialogues follow the game's selected voice language. Audio handles are resource-owned and automatically cleaned up when their resource/lifecycle ends. Playback is client-local; a server script chooses listeners through targeted client events. Existing resource-file audio and voice chat remain separate and unchanged.


Request acceptance is not playback confirmation. Dialogue preload is requested rather than independently confirmed; no automatic music replacement, cross-client timeline synchronization or late-join replay is implied. See [[Scripting limits#Game audio (upcoming 0.1.7)|the game-audio limits]] before integrating.
Request acceptance is not playback confirmation. Dialogue preload is requested rather than independently confirmed; no automatic music replacement, cross-client timeline synchronization or late-join replay is implied. See [[Scripting limits#Game audio (since 0.1.7)|the game-audio limits]] before integrating.


[[Category:Lua API]]
[[Category:Lua API]]
<!-- tts017:start -->
== Optional server TTS (since 0.1.7) ==
'''Available since 0.1.7.''' Server-side speech generation with Chatterbox Multilingual V3 in 23 supported languages. Ukrainian is additionally supported through the separate StyleTTS2 engine and requires a reference sample; no OmniVoice backend. Default off, lazy model loading, one normal server launcher, Windows/Linux CPU package variants with models and without.
See [[Server TTS]] for the complete API, pre-rendering and remote playback, [[TTS configuration]] for setup/dependencies, and [[TTS voices]] for permitted downloaded samples, own voices, languages and presets. Saved recordings and verified client caches avoid repeating unchanged work/downloads. Server-owned 2D, 3D and NPC/player-attached audio includes coordinated playback and optional late join. Existing game audio/resource audio are separate APIs.
=== 33 new server functions (from 0.1.7) ===
* [[cancelTtsJob]]
* [[cloneTtsPreset]]
* [[createTtsPreset]]
* [[createTtsVoice]]
* [[deleteTtsPreset]]
* [[deleteTtsVoice]]
* [[exportTtsPresets]]
* [[generateTts]]
* [[getTtsAudioInfo]]
* [[getTtsCapabilities]]
* [[getTtsJobState]]
* [[getTtsLanguages]]
* [[getTtsPlaybackState]]
* [[getTtsPreset]]
* [[getTtsPresets]]
* [[getTtsVoice]]
* [[getTtsVoices]]
* [[importTtsPresets]]
* [[isTtsAvailable]]
* [[loadTtsAudio]]
* [[playTts]]
* [[playTts3D]]
* [[playTtsAttached]]
* [[preloadTtsAudio]]
* [[releaseTtsJob]]
* [[renderTts]]
* [[setTtsDistance]]
* [[setTtsPaused]]
* [[setTtsPosition]]
* [[setTtsVolume]]
* [[stopTts]]
* [[updateTtsPreset]]
* [[updateTtsVoice]]
=== 4 new server events (from 0.1.7) ===
* [[onTtsError]]
* [[onTtsJobStateChange]]
* [[onTtsPlaybackStateChange]]
* [[onTtsReady]]
<!-- tts017:end -->
<!-- melee017:start -->
== NPC melee skill tiers (since 0.1.7) ==
The functions themselves remain available since 0.1.5. '''Only the additions below are new in 0.1.7'''; they require matching 0.1.7 client/server support.
* [[setNpcCombatConfig]] accepts optional <code>meleeSkillTier</code>: integer 0 (untrained, default), 1 (trained) or 2 (master). [[getNpcCombatConfig]] includes this field in its result table.
* <code>skillTier</code> remains the separate ranged-combat tier. Changing the melee tier does not overwrite ranged settings. Omitted fields keep their existing values; invalid/unknown fields reject the entire change.
* This selects ordinary melee presentation/timing for the NPC's equipped family, not its weapon or damage. It does not enable combat, select a target or increase strength/damage. Existing resource ownership and combat controls still apply.
* A strike already admitted keeps its captured animation/impact deadline. A melee-only or unchanged update does not restart unrelated projectile preparation; changing ranged settings still affects that separate configuration.
* Use matching updated client/server support to see the new tier presentation, including observers and late join. Players continue using the existing [[setPlayerSkill]] API; no new setPlayerCombatStyle function was added.
<syntaxhighlight lang="lua">
-- npcId is an existing NPC owned by this server resource.
local ok = setNpcCombatConfig(npcId, {meleeSkillTier=2})
if ok then
    local config = getNpcCombatConfig(npcId)
    if config then outputDebugString("NPC melee tier: " .. config.meleeSkillTier) end
end
</syntaxhighlight>
<!-- melee017:end -->
<!-- presentation017:start -->
== Other presentation improvements ==
* More complete ordinary melee family/skill-tier presentation and smoother transitions for remote players and NPCs. Existing player skill APIs remain in use; no new player-style setter is introduced.
* Reduced repeated NPC appearance/animation/ground work in populated scenes. This is a client performance improvement, not a guarantee of a particular FPS or an unlimited number of NPCs at no cost.
These improvements are included in 0.1.7. They do not add separate Lua functions.
<!-- presentation017:end -->
<!-- release017-sync:start -->
== Synchronization, appearance and performance ==
These changes are included in 0.1.7 and do not introduce additional Lua setters:
* Remote player acrobatics follows the character's skill, including the corresponding jump presentation.
* Climbing walls and ledges: improved sideways/diagonal movement and entry/exit transitions. Ladder top/bottom entry is aligned to the actual interaction instead of playing climbing while the character is still approaching. Animation preparation reduces interaction hitches.
* World torches: extinguishing by weapon/arrow and ignition by fire magic are synchronized to observers, with state replay for late join.
* Identity overrides no longer retain the unwanted default-head hair accessory. Climbing-wall projections are prevented from covering remote character visuals near the wall.
* Gates: faster refresh for already streamed mechanisms and replay of the latest known state when a gate naturally streams in. Distant unloaded gates are not forcibly loaded or updated every frame. Existing ownership, interaction, collision and late-join rules remain in place.
* NPC crowd work is reduced through appearance/asset and animation scheduling improvements. Remote NPC/player visuals remain supported. Performance still depends on visible population, scripts, assets and hardware; this is not a guarantee of unlimited NPCs without a cost.
== Updating to 0.1.7 ==
Use the matching '''Protocol 39 client and server'''. Protocol 38 / 0.1.6 clients cannot connect; mixed protocol versions are rejected. Back up your server first. Preserve database credentials, server settings, keys, maps, resource private storage, TTS voices and saved recordings. Merge updated bundled scripts instead of publishing an operator-configured server directory. The distributed database password is the placeholder <code>CHANGE_ME</code>.
The [https://g1r-mp.com/download/ Download page] offers Windows x64 and Linux x86_64 servers, each '''WITH TTS''' first and '''WITHOUT TTS''' second. Both variants have the same gameplay server and API. TTS is disabled by default in both; the full variant additionally contains portable CPU interpreters, dependencies, models and language data. No system Python is needed for the complete package. See [[TTS configuration]] before enabling it. Map Editor and map_scene are included but remain optional, not auto-started.
NVIDIA Reflex/Boost, DLSS/DLAA and DLSS Frame Generation remain disabled by default; see [[Known issues]]. Before using the mod, keep a separate backup of single-player saves: multiplayer installation/use can overwrite or remove save data.
<!-- release017-sync:end -->
<!-- native-ui017:start -->
== Native HUD and menus (since 0.1.7) ==
Five new '''client-side''' functions: [[showNativeHud]], [[setNativeHudComponentVisible]], [[setNativeMenuEnabled]], [[getNativeUiState]] and [[resetNativeUi]]. Result event: [[onClientNativeUiResult]].
See [[Native HUD and menus]] for component/menu keys, asynchronous results, multi-resource ownership, ordinary Lua key bindings and examples. Requires the latest 0.1.7 client (BUILD202 or newer); existing Protocol 39 servers remain compatible. Native save/load protection is independent of these resource-owned restrictions.
<!-- native-ui017:end -->

Latest revision as of 02:08, 11 October 2026

Released: G1R:MP 0.1.7 / client BUILD202 / Protocol 39. Download the client and matching Windows/Linux servers. Protocol 38 (0.1.6) and older cannot join Protocol 39 servers. When upgrading from an earlier version, update both sides. Existing 0.1.7 / Protocol 39 servers do not need replacing for this client update.

Built-in game audio

Client resources can play Gothic Remake's own sound effects, music and localized dialogue using catalog keys. See Game audio for examples, ownership, asynchronous results and limitations. Game dialogue catalog contains the complete list of 34,795 dialogue identifiers, split into browsable pages.

New client functions:

New client event: onClientGameSoundResult.

Dialogues follow the game's selected voice language. Audio handles are resource-owned and automatically cleaned up when their resource/lifecycle ends. Playback is client-local; a server script chooses listeners through targeted client events. Existing resource-file audio and voice chat remain separate and unchanged.

Request acceptance is not playback confirmation. Dialogue preload is requested rather than independently confirmed; no automatic music replacement, cross-client timeline synchronization or late-join replay is implied. See the game-audio limits before integrating.

Optional server TTS (since 0.1.7)

Available since 0.1.7. Server-side speech generation with Chatterbox Multilingual V3 in 23 supported languages. Ukrainian is additionally supported through the separate StyleTTS2 engine and requires a reference sample; no OmniVoice backend. Default off, lazy model loading, one normal server launcher, Windows/Linux CPU package variants with models and without.

See Server TTS for the complete API, pre-rendering and remote playback, TTS configuration for setup/dependencies, and TTS voices for permitted downloaded samples, own voices, languages and presets. Saved recordings and verified client caches avoid repeating unchanged work/downloads. Server-owned 2D, 3D and NPC/player-attached audio includes coordinated playback and optional late join. Existing game audio/resource audio are separate APIs.

33 new server functions (from 0.1.7)

4 new server events (from 0.1.7)


NPC melee skill tiers (since 0.1.7)

The functions themselves remain available since 0.1.5. Only the additions below are new in 0.1.7; they require matching 0.1.7 client/server support.

  • setNpcCombatConfig accepts optional meleeSkillTier: integer 0 (untrained, default), 1 (trained) or 2 (master). getNpcCombatConfig includes this field in its result table.
  • skillTier remains the separate ranged-combat tier. Changing the melee tier does not overwrite ranged settings. Omitted fields keep their existing values; invalid/unknown fields reject the entire change.
  • This selects ordinary melee presentation/timing for the NPC's equipped family, not its weapon or damage. It does not enable combat, select a target or increase strength/damage. Existing resource ownership and combat controls still apply.
  • A strike already admitted keeps its captured animation/impact deadline. A melee-only or unchanged update does not restart unrelated projectile preparation; changing ranged settings still affects that separate configuration.
  • Use matching updated client/server support to see the new tier presentation, including observers and late join. Players continue using the existing setPlayerSkill API; no new setPlayerCombatStyle function was added.
-- npcId is an existing NPC owned by this server resource.
local ok = setNpcCombatConfig(npcId, {meleeSkillTier=2})
if ok then
    local config = getNpcCombatConfig(npcId)
    if config then outputDebugString("NPC melee tier: " .. config.meleeSkillTier) end
end


Other presentation improvements

  • More complete ordinary melee family/skill-tier presentation and smoother transitions for remote players and NPCs. Existing player skill APIs remain in use; no new player-style setter is introduced.
  • Reduced repeated NPC appearance/animation/ground work in populated scenes. This is a client performance improvement, not a guarantee of a particular FPS or an unlimited number of NPCs at no cost.

These improvements are included in 0.1.7. They do not add separate Lua functions.


Synchronization, appearance and performance

These changes are included in 0.1.7 and do not introduce additional Lua setters:

  • Remote player acrobatics follows the character's skill, including the corresponding jump presentation.
  • Climbing walls and ledges: improved sideways/diagonal movement and entry/exit transitions. Ladder top/bottom entry is aligned to the actual interaction instead of playing climbing while the character is still approaching. Animation preparation reduces interaction hitches.
  • World torches: extinguishing by weapon/arrow and ignition by fire magic are synchronized to observers, with state replay for late join.
  • Identity overrides no longer retain the unwanted default-head hair accessory. Climbing-wall projections are prevented from covering remote character visuals near the wall.
  • Gates: faster refresh for already streamed mechanisms and replay of the latest known state when a gate naturally streams in. Distant unloaded gates are not forcibly loaded or updated every frame. Existing ownership, interaction, collision and late-join rules remain in place.
  • NPC crowd work is reduced through appearance/asset and animation scheduling improvements. Remote NPC/player visuals remain supported. Performance still depends on visible population, scripts, assets and hardware; this is not a guarantee of unlimited NPCs without a cost.

Updating to 0.1.7

Use the matching Protocol 39 client and server. Protocol 38 / 0.1.6 clients cannot connect; mixed protocol versions are rejected. Back up your server first. Preserve database credentials, server settings, keys, maps, resource private storage, TTS voices and saved recordings. Merge updated bundled scripts instead of publishing an operator-configured server directory. The distributed database password is the placeholder CHANGE_ME.

The Download page offers Windows x64 and Linux x86_64 servers, each WITH TTS first and WITHOUT TTS second. Both variants have the same gameplay server and API. TTS is disabled by default in both; the full variant additionally contains portable CPU interpreters, dependencies, models and language data. No system Python is needed for the complete package. See TTS configuration before enabling it. Map Editor and map_scene are included but remain optional, not auto-started.

NVIDIA Reflex/Boost, DLSS/DLAA and DLSS Frame Generation remain disabled by default; see Known issues. Before using the mod, keep a separate backup of single-player saves: multiplayer installation/use can overwrite or remove save data.


Native HUD and menus (since 0.1.7)

Five new client-side functions: showNativeHud, setNativeHudComponentVisible, setNativeMenuEnabled, getNativeUiState and resetNativeUi. Result event: onClientNativeUiResult.

See Native HUD and menus for component/menu keys, asynchronous results, multi-resource ownership, ordinary Lua key bindings and examples. Requires the latest 0.1.7 client (BUILD202 or newer); existing Protocol 39 servers remain compatible. Native save/load protection is independent of these resource-owned restrictions.