Native module guides

The Native reference groups three module guides by responsibility. Keep their owners and data types separate when following an example.

ModuleStart hereBoundary to preserve
BigWorldRuntime and callbacks, entities and spaces, models and loadingEngine objects and delayed work need an owning client context.
ResMgrVirtual paths and DataSection readersAn opened resource is separate from parsed application data and a ready view.
GUIComponent roots, resetters and coordinate modesNative component ownership is separate from Scaleform and Gameface view ownership.

BigWorld is the native engine bridge exposed to client-side Python. It provides access to engine time, scheduled callbacks, entities, spaces, cameras, input state, models, resources, collision queries, graphics, sound and other runtime-owned systems.

Use the owner that matches the question

This is not a rule to avoid the source. It is a rule to use the layer that owns the fact you are asking for.

The deepest layer is correct when the fact is genuinely engine-owned: entity lookup, world coordinates, camera state, collision, callbacks, or resource loading. A higher client layer is correct when it owns a processed meaning: selected lobby vehicle, account cache readiness, battle feedback events, UI route visibility, model state, or feature-controller state.

Many bugs happen when a mod reads a deep representation and treats it as the finished semantic answer. Deep objects may exist before the cache is synchronized, before a view is ready, before an entity appearance is built, or after a replay seek has invalidated old references. Use source verification to identify the real owner, then use the most direct stable API or event at that owner.

Where BigWorld fits

Python-to-engine bridge

Many objects returned by BigWorld are native engine objects rather than ordinary Python-owned values. Their lifetime is controlled by the client.

Low-level state

Use it when the required information genuinely belongs to the engine: entity lookup, world coordinates, camera state, collision, frame-safe callbacks or resource loading.

Not always the best layer

For account data, battle controllers, UI state or feature logic, a higher-level game service or event is often clearer and more stable.

Interpret the owner before the name

Many expressions begin with BigWorld, but they do not all belong to the same API layer. A native module function, an engine-managed collection, a property on the current player object, and a server proxy call require different safety rules.

Expression shape Owner Safety rule
BigWorld.callback(...) Native module Client-thread delayed work; cancel or generation-guard it.
BigWorld.entities Engine-managed collection Entity membership changes during battle, reconnect, and replay seek.
BigWorld.player().arena Current avatar object Valid only when the player is a battle avatar with an arena.
BigWorld.entity(id).appearance The returned entity Verify the entity generation and appearance readiness before use.
player.cell.someRequest(...) Server-side entity proxy Not a local helper. Verify authority, context, and user intent before calling.

Start with common functions

These familiar BigWorld entry points cover many small mods. Follow the linked guides for lifecycle details; the historical SDK explains the concepts, while current World of Tanks callers establish which forms the client uses.

TaskEntry pointCheck before use
Defer a small operationcallback / cancelCallbackKeep the live handle and cancel it when its owner stops.
Measure an engine-relative intervaltime()Keep both timestamps in the same clock and context.
Read the current playerplayer()Check for absence and the expected account or avatar type.
Find a live entityentity(id)A lookup can fail; an ID does not guarantee a live object or ready appearance.
Read the render-window dimensionswindowSize()Window pixels and authored UI coordinates use different scaling.

Reading a camera, entity or player gives access to a client-owned object. Keep mutations with the subsystem that owns that state, and reacquire references after a context change.

Core areas

Runtime & callbacks

Schedule work on the client thread, cancel it safely, and distinguish engine time from wall-clock time.

Entities & spaces

Understand live entities, spatial identity, collision and coordinate ownership.

Camera & input

Read active camera and key state without stealing ownership from the game UI.

API map

Find common historical symbols by responsibility and then verify them in the current client.

Safe decision rule

Game service or controller available?  -> prefer it
Lifecycle event available?             -> subscribe to it
Only engine state exposes the answer?  -> use BigWorld
Historical SDK mentions a symbol?      -> verify before shipping

Common mistakes

  • Treating BigWorld.player() as permanently available.
  • Keeping an entity or model reference after its arena, space or view was destroyed.
  • Using repeated zero-delay callbacks as an uncontrolled update loop.
  • Assuming an SDK signature matches the current customized client.
  • Using a low-level query where a higher-level controller already owns the same state.