bw logo

Client Programming Guide

BigWorld Technology 2.1. Released 2012.

This document is proprietary commercial in confidence and access is restricted to authorised users. This document is protected by copyright laws of Australia, other countries and international treaties. Unauthorised use, reproduction or distribution of this document, or any portion of this document, may result in the imposition of civil and criminal penalties as provided by law.


Table of Contents

1. Overview
1.1. Client in context
1.2. Outline
1.3. Resource search paths
1.3.1. paths.xml
1.3.2. Command line switch
1.4. Configuration files
1.4.1. File resources.xml
1.4.2. File <engine_config>.xml
1.4.3. File <scripts_config>.xml
1.4.4. File <preferences>.xml
1.5. Coordinate System
2. User Input
2.1. Key events
2.1.1. Character events
2.1.2. Auto-repeat
2.1.3. Sequence of events
2.1.4. Sinking events
2.1.5. Mouse cursor position
2.2. Mouse
2.2.1. Movement
2.2.2. Buttons
2.3. Joystick
2.3.1. Axis events
2.3.2. Buttons
2.3.3. Controlling player direction
2.3.4. Avatar movement
3. Cameras
3.1. The Cursor Camera
3.2. The Free Camera
3.3. The FlexiCam
4. Terrain
4.1. Advanced Terrain
4.1.1. Overview
4.1.2. Key Features
4.1.3. Texturing
4.1.4. Lighting
4.1.5. Shadows
4.1.6. LOD
4.1.7. Memory footprint
4.1.8. terrain2 resources
4.1.9. terrain section in space.settings
4.2. Simple Terrain
4.2.1. Key features
4.2.2. Overview
4.2.3. Chunking
4.2.4. Disk footprint
4.2.5. Memory footprint
4.2.6. Texture spacing
4.3. Terrain specular lighting
5. Cloud shadows
5.1. Requirements
5.2. Implementation
5.3. Effect File Implementation
5.4. Tweaking
6. Chunks
6.1. Definitions
6.2. Implementation files
6.3. Details and notes
6.3.1. Includes
6.3.2. Models
6.3.3. Entities
6.3.4. Boundaries and portals
6.3.5. Transforms
6.3.6. Other items
6.4. Loading and ejecting
6.5. Focus grid
6.5.1. Hull tree
6.5.2. Quad tree
6.6. Collisions
6.7. Sway items
7. Entities
7.1. Entity Manager
7.2. Entity scripts
7.3. Entity resources
7.3.1. Preloads
7.3.2. Prerequisites
8. User Data Objects
8.1. .1. User Data Objects are Python script objects
8.2. .2. Accessing from the Client
9. Scripting
9.1. Functional components
9.1.1. Entity skeleton
9.1.2. Python script object
9.1.3. Model management
9.1.4. Filters
9.1.5. Navigation
9.1.6. Action Queue
9.1.7. Action Matcher
9.1.8. Trackers
9.1.9. Timers and Traps
9.2. Personality script
9.2.1. init
9.2.2. fini
9.2.3. handleKeyEvent
9.2.4. handleMouseEvent
9.2.5. handleAxisEvent
9.2.6. handleIMEEvent
9.2.7. handleLangChangeEvent
9.2.8. onChangeEnvironments
9.2.9. onGeometryMapped
9.2.10. onRecreateDevice
9.2.11. onTimeOfDayLocalChange
9.2.12. start
10. Models
10.1. Performance
10.2. Hard Points
10.2.1. Naming scheme
10.2.2. How it works
10.2.3. Syntax
10.2.4. Data
10.3. SuperModel
10.3.1. Design
10.3.2. SuperModel classes
11. Animation System
11.1. Basic keyframed animations
11.2. Animation layering and blending
11.3. Animation data files
11.4. Animation data streaming
11.5. Actions
12. Integrating With BigWorld Server
12.1. Overview
12.2. Generating Code With the ProcessDefs tool
12.2.1. ProcessDefs/GenerateCPlusPlus Operation
12.2.2. Generating C++ Code
12.3. Customising ProcessDefs Output
12.3.1. Modifying the Generated Code Templates
12.3.2. Implementing a New Processing Module
12.4. The connection_model Library
12.4.1. Dependencies
12.4.2. BWConnection
12.4.3. BWEntity
12.4.4. BWEntityFactory
12.4.5. BWEntitiesListener
12.4.6. Server Discovery
12.5. Example Clients
12.5.1. python/simple
12.5.2. c_plus_plus/sdl
12.5.3. c_plus_plus/ios
13. Server Communications
13.1. Login
13.2. Online
13.3. Firewalls
14. Particles
14.1. Particle Systems
14.2. Particle Actions
14.2.1. Source actions
14.2.2. Movement actions
14.2.3. Sink actions
14.2.4. Alteration actions
14.3. Particle types
14.4. Attaching particle systems to bones
15. Detail Objects
15.1. Flora
15.1.1. Placement
15.1.2. Implementation
15.1.3. Frame coherency
15.1.4. Animation
15.1.5. Lighting
15.1.6. File format
16. Water
16.1. Code overview
16.2. Scene generation
16.3. Render settings
16.3.1. Setting the quality
16.4. Simulation
16.5. Rain
16.6. Water depth
16.7. Watchers
17. Graphical User Interface (GUI)
17.1. C++ GUI support
17.1.1. SimpleGUIComponent
17.1.2. GUIShader
17.1.3. SimpleGUI
17.2. Python GUI support
17.3. XML
17.4. XML and Python
17.4.1. onLoad(self,section)
17.4.2. onBound(self)
17.4.3. onSave(self,section)
17.5. Input events
17.5.1. Keyboard Events
17.5.2. Axis Events
17.5.3. Mouse Events
17.5.4. Drag-and-drop events
17.5.5. Component PyGUI
17.6. Mouse cursor
18. Fonts
18.1. Creating and Using Fonts
18.1.1. Creating a Font Definition File
18.1.2. Preloading Glyphs
18.1.3. Specifying the widest character
18.1.4. Displaying Text
18.2. Artist modified Fonts
18.2.1. Generating a Snapshot of a Font's Glyph Cache
18.2.2. Modifying the Font Texture
18.2.3. Explaining the Font Grid .dds File
19. Input Method Editors (IME)
19.1. Components of an IME interface
19.1.1. Examples
19.1.2. Recommended Reading
19.2. IME Python API
19.2.1. Enabling IME
19.2.2. Receiving IME events
19.2.3. Displaying the IME
20. BigWorld Web Integration
20.1. Architecture
20.2. Using the Web Integration
20.2.1. In Game Web GUI Component
20.2.2. In Game Web Screen
20.2.3. Texture Mapping of Web Pages into a world object
21. Sounds
22. 3D Engine (Moo)
22.1. Features
22.1.1. D3DXEffects vertex and pixel shader support
22.1.2. Cubic environment maps
22.1.3. Render targets
22.1.4. Lighting
22.1.5. Normal mapping/bump mapping
22.1.6. Terrain
22.1.7. Animation
22.1.8. Vertex morphing
22.2. Supported video cards
22.3. Hardware requirements for special effects
22.4. Visual
22.5. EffectMaterial
22.5.1. Format
22.5.2. Automatic variables/Globals
22.5.3. Artist-editable/tweakable variables
22.5.4. Multiple-layered effects per material
22.5.5. Recording material states
22.5.6. Using BigWorld .fx files with 3ds Max
22.6. Visual channels
22.6.1. Sorted channel
22.6.2. Internal sorted channel
22.6.3. Shimmer channel
22.6.4. Sorted shimmer channel
22.6.5. Distortion channel
22.7. Textures
22.7.1. Texture detail levels/compression
22.7.2. Animated textures
22.7.3. Applying a code-generated texture to a character
22.8. Vertex declaration
22.8.1. File format
22.9. Graphics settings
22.9.1. Customising options
22.9.2. Using settings
22.10. Taking Screenshots
22.10.1. High Resolution Screenshots
22.11. Dynamic Entity Shadows
22.11.1. Splodges
22.11.2. Shadow maps
23. Post Processing
23.1. Pipeline Overview
23.2. Creating a Custom Post-Processing Effect
23.2.1. Creating the Custom Pixel Shader
23.2.2. Previewing the Results
23.2.3. Writing a Custom Pixel Shader for Previewing the Results
23.2.4. Authoring a Post-Processing Effect in Python
23.3. Render Targets
23.4. Performance
23.4.1. Measuring the Time Spent on the GPU
23.4.2. Background Loading
24. Job System
24.1. Overview
24.2. Under the Hood
24.3. Wrapper API
24.4. Job System API
24.5. An Example
24.6. Implementing it
25. Debugging
25.1. Build configuration — conditional feature inclusion
25.2. Watchers
25.2.1. Watcher types
25.2.2. Using watchers
25.2.3. Watcher Console
25.2.4. Remote watcher access
25.3. Memory tracking
25.3.1. ResourceCounters overview
25.3.2. Memory allocation taxonomy
25.3.3. Case studies
25.3.4. Displaying the memory tracking console
25.4. Scripts
25.4.1. Python Console
25.4.2. Remote Python Console
25.4.3. Script reloading
25.4.4. Common errors
25.5. Script interactive debugging
25.6. Client Access Tool (CAT)
25.6.1. Connecting to the client
25.6.2. CAT Scripts
25.6.3. Creating scripts for CAT
25.7. Timing
26. Releasing The Game
26.1. Configure the engine for limited user accounts
26.2. Prepare the assets
26.2.1. bin_convert
26.2.2. res_packer
26.2.3. Processing done in bin_convert and res_packer
26.2.4. Files and folders that do not need to be shipped to the end user
26.2.5. Font Licensing issues with bin_convert and res_packer
26.3. Zip assets and specify paths
26.4. Prepare the game executable
27. Shared Development Environments
27.1. Windows and Linux cross platform development
27.1.1. Sharing resources from Windows
27.1.2. Accessing Windows share from Linux
27.2. Using BigWorld with a Version Control System
27.2.1. Customers using the Commercial Edition
27.2.2. Customers using the Indie Edition
27.2.3. Files to exclude from version control
27.3. DBMgr database conflicts