Blitz3D+ Command Reference

WorldNetworkFingerprint$ ( world )

Parameters

world - a valid world handle returned by LoadWorldAsync

Description

Returns the lowercase SHA-256 fingerprint of the simulation content captured when this world loaded. The fingerprint is available after WorldReady becomes True. It is computed in the loading worker; this query does not read files.

The fingerprint includes the exact .world source bytes, model and heightmap bytes, external glTF/GLB geometry buffers, and resolved prefab and physics definitions. It excludes texture, sound, and shader payloads and absolute installation paths. Matching exports use the same bytes on Windows, macOS, iOS, and web. Editing whitespace in the world source also changes its digest.

The command returns an empty string for worlds created with CreateWorld, pending or failed loads, or content that could not be fingerprinted. For a ready loaded world, use WorldNetworkFingerprintError to inspect that last case. An invalid or freed world handle raises a runtime error.

The retained digest describes loaded source content. Entity movement and other runtime gameplay changes do not recompute it. It does not certify that a multiplayer session or platform has been tested.

The validator command b3dworldc --network-fingerprint file.world uses the same fingerprint implementation and prints one digest. It requires all referenced simulation sources, including optional models and heightmaps.

Requires Extended mode.

See also: WorldNetworkFingerprintError, LoadWorldAsync, WorldReady, WorldSourcesCurrent.

Example

; WorldNetworkFingerprint and WorldNetworkFingerprintError
; Requires Extended mode. Press Escape to exit.

Graphics3D 640,480,0,2
SetBuffer BackBuffer()

world=LoadWorldAsync("../../../samples/worlds/help-marker.world")
While Not WorldReady(world)
    If WorldLoadState(world)=WORLD_LOAD_FAILED Then RuntimeError WorldLoadError(world)
    If KeyDown(1) Then FreeWorld world : End
    Cls
    Text 20,20,"Loading the world and fingerprinting its simulation content..."
    Flip
Wend

; Both values are retained from loading; these queries do not read files.
fingerprint$=WorldNetworkFingerprint(world)
problem$=WorldNetworkFingerprintError(world)

While Not KeyDown(1)
    Cls
    Text 20,20,"WorldNetworkFingerprint$:"
    Text 20,44,Left(fingerprint,32)
    Text 20,64,Mid(fingerprint,33)
    Text 20,104,"WorldNetworkFingerprintError$:"
    If problem="" Then
        Text 20,128,"Empty: this world's simulation content was fingerprinted."
    Else
        For line=0 To 3
            Text 20,128+line*20,Mid(problem,1+line*65,65)
        Next
    EndIf
    Text 20,248,"Matching shared worlds must have the same fingerprint."
    Text 20,280,"Escape: exit"
    Flip
Wend

FreeWorld world
End