[
Top
]
[
Contents
]
[
Index
]
[
?
]
Table of Contents
1. Introduction
1.1 How To Read This Manual
1.2 Current Status
1.3 Using Crystal Space For Your Project
1.4 A Guide to This Documentation
1.5 Feature List
1.6 Where to Get Crystal Space
1.7 Mailing Lists
1.8 Internet Relay Chat (
IRC
)
1.9 Feedback and Bug Reporting
1.10 Genesis of Crystal Space
1.11 Documentation Authors & Contributors
1.12 Crystal Space Contributors
2. Building and Installing
2.1 Directory Hierarchy
2.2 Requirements
2.3 External Libraries
2.4 Platform Specific Instructions
2.4.1 Unix
2.4.2 WinCVS Tutorial
2.4.2.1 Step 1: Getting the Software
2.4.2.2 Step 2: Installing the Software
2.4.2.3 Step 3: Creating a Home Directory
2.4.2.4 Step 4: Setting WinCVS Preferences
2.4.2.5 Step 5: Setting WinCVS Login Settings
2.4.2.6 Step 6: Setting Location to Checkout Crystal Space
2.4.2.7 Step 7: Checking out Crystal Space
2.4.2.8 Step 8: Updating Crystal Space
2.4.3 Microsoft Visual C++ 7, 7.1 or 8
2.4.4 Windows using MinGW
2.4.5 Windows using Cygwin
2.4.6 MacOS/X
2.4.6.1 Library Prerequisites
2.4.6.2 Resources
2.4.6.3 Building
2.4.6.4 Using Crystal Space
2.5 Platform Specific Problems
2.6 Quick Start
3. Running The Demos
3.1 Walktest, the Basic Test Application
3.1.1 Getting Started
3.1.2 Mouse Movement
3.1.3 Command Line options
3.1.4 Console Commands
3.1.4.1 General Commands
3.1.4.2 Movement Commands
3.1.4.3 Special Effects
3.1.4.4 Recording and Playback Commands
3.1.4.5 Views Commands
3.1.4.6 Mesh Manipulation Commands
3.1.4.7 Lighting Commands
3.1.4.8 Statistics Commands
3.1.4.9 Debugging Commands
3.1.5 Special Keys
3.1.6 Configuration Files
3.2 Quick Overview
4. Using Crystal Space
4.1 The Basics
4.1.1 Basic Crystal Space Concepts
4.1.2 Minimum Application Requirements
4.1.3 Compiling the Application
4.2 Quick Overview
4.3 Tutorials
4.3.1 Simple Tutorial 1
4.3.1.1 Simple Header File
4.3.1.2 Event Handling
4.3.1.3 Creating a "World"
4.3.1.4 The Camera
4.3.1.5 Locomotion (Moving Around)
4.3.2 Simple Tutorial 2: Sprites
4.3.2.1 Loading a Material in Memory
4.3.2.2 Loading a Mesh Factory in Memory
4.3.2.3 Creating a Mesh from a Factory
4.3.3 Simple Tutorial 3: Map Loading
4.3.3.1 Minimal Base Code
4.3.3.2 Loading The Map
4.3.3.3 Locating the Camera
4.4 Plugins, Reference counting, Interfaces (SCF)
4.4.1 Shared Class Facility (
SCF
)
4.4.1.1 How it Works
4.4.1.2 Using
SCF
4.4.1.3 Classes Implementing Multiple Interfaces
4.4.1.4 Interface Versions
4.4.1.5 Client Side
4.4.1.6 Plugin Meta-Information
4.4.1.7 Meta-Information Embedding
4.4.1.8 Plugin Discovery
4.4.1.9 Example
4.4.1.10 Advanced Techniques
4.4.2 Correctly Using Smart Pointers
4.4.3 Create Your Own Plugin
4.5 Configuring Crystal Space
4.5.1 Common Command Line Options
4.5.2 Configuration File
4.5.3 Configuration Domains
4.5.4 Specific Options
4.5.4.1 System Configuration
4.5.4.2 Graphics Configuration
4.5.4.3 Engine Configuration
4.5.4.4 Sound Configuration
4.5.4.5 Console Configuration
4.5.4.6 Mouse Configuration
4.6 Basic Libraries
4.6.1 Geometry Library (
csGeom
)
4.6.2 Utility Library (
csUtil
)
4.6.2.1 Typed Arrays
4.7 Virtual File System (
VFS
)
4.7.1 Details
4.7.2 Configuration File (
`vfs.cfg'
)
4.8 Managing Game Specific Data
4.8.1 csObject and iObject
4.8.2 Attaching User Objects to CS Objects
4.8.3 Attaching User Objects to CS Objects in a map file
4.9 The 3D Engine
4.9.1 Render Priorities and Objects in Sectors
4.9.2 Components of a World
4.9.3 Portal Engine
4.9.4 Cameras and Matrices
4.9.5 Camera Movement
4.9.6 Space Warping
4.9.7 Visibility Culling In Detail
4.9.7.1 Sectors and Portals
4.9.7.2 Visibility Cullers
4.9.7.3 Entities
4.9.7.4 Sector Structure
4.9.7.5 Visibility Culling
4.9.7.6 View Frustum Culling
4.9.7.7 Portal/Sector Visibility
4.9.7.8 In-sector Visibility
4.9.8 Dynamic Worlds
4.9.9 Level of Detail
4.10 Mesh Object Plug-In System
4.10.1 MeshObject Concepts
4.10.2 Using Mesh Objects
4.10.3 Writing Mesh Objects
4.10.4 Creating a Thing Mesh
4.10.5 Creating a Genmesh Mesh
4.10.6 Mesh Lighting and Animation
4.10.7 Mesh Movement
4.10.8 Portal Container Mesh Object
4.10.9 Sprite2D Mesh Object
4.10.10 Sprite3D Mesh Object
4.10.11 SpriteCal3D Mesh Object
4.10.12 Genmesh Mesh Object
4.10.13 Ball Mesh Object
4.10.14 Emitter Mesh Object
4.10.15 Particle Systems in General
4.10.16 Fountain Mesh Object
4.10.17 Fire Mesh Object
4.10.18 Snow Mesh Object
4.10.19 Rain Mesh Object
4.10.20 Explosion Mesh Object
4.10.21 Spiral Mesh Object
4.10.22 Haze Mesh Object
4.10.23 Terrain Mesh Object
4.10.24 Thing Mesh Object
4.11 The Lighting System
4.11.1 Lighting
4.11.2 Pseudo-dynamic Lights
4.12 Materials and Textures
4.12.1 Alpha and Keycolor in Textures
4.12.2 Texture Mapping
4.12.2.1 Conventions
4.12.2.2 General Concepts
4.12.2.3 Perspective Correction
4.12.2.4 Bringing it All Together
4.12.2.5 Instructions for Texture Mapper
4.12.2.6 Procedural, Dynamic and Animated Textures
4.12.3 Efficient Textures
4.13 The Rendering System
4.13.1 Using a Custom Font
4.13.2 Drawing Text
4.14 Collision Detection and Physics
4.14.1 Basic Collision Detection
4.14.2 Physics using ODE
4.15 Animating your Objects
4.15.1 Sprite3D Animation
4.15.2 SpriteCal3D Animation
4.15.3 Socket Animation
4.15.4 GenMesh Animation
4.15.5 Sequence Manager
4.15.6 Procedural Texture System
4.16 Loading Maps and Models
4.16.1 Loading a Level
4.16.2 Format of Map File (
XML
)
4.16.2.1 Initalization Section
4.16.2.2 World Element Section
4.16.2.3 World Definition Section
4.16.2.4 Action Section
4.16.3 Old Format of Map File
4.16.3.1 Grammar
4.16.3.2 Syntax
4.16.3.3 Hints
4.16.4 Binary
XML
4.16.5 Loading
3DS
and
MD2
Models
4.17 Sound System
4.17.1 Sound Plugins
4.17.2 Playing a Sound
4.18 Scripting Languages
4.18.1 The iScript Interface
4.18.2 Java Bindings
4.18.3 Perl Bindings
4.18.4 Python Bindings
4.19 Alternate Windowing System (
AWS
)
4.19.1 Quick Start
4.19.2 Signals: Responding To User Input
4.19.3 Creating Custom
AWS
Components
4.19.3.1 Parameter Delivery
4.19.3.2 Events: Responding To User Actions
4.19.3.3 Sending and Receiving Signals
4.19.4
AWS
Standard Sink Trigger Reference
4.19.5
AWS
Standard Component Signal and Action Reference
4.19.5.1 All Components
4.19.5.2 Command Button
4.19.5.3 Label
4.19.5.4 Check Box
4.19.5.5 Radio Button
4.19.5.6 Group Frame
4.19.5.7 List Box
4.19.5.8 Scrollbar
4.19.5.9 Textbox
4.19.5.10 Image View
4.19.5.11 Multiline Edit
4.19.5.12 Notebook
4.19.5.13 Notebook Page
4.19.5.14 Bar Chart
4.19.6 In-Depth Explanation of
AWS
Architecture
4.19.7 Using QT Designer To Create
AWS
Definition Files
4.19.8
AWS
Automation: Properties and Scripting
4.19.9 Automation Objects Available for Components
4.19.10 Automation Objects Available for Windows
4.19.11 Flexible Vector Graphics
4.19.11.1
FVG
Rectangle
4.19.11.2
FVG
Circle
4.19.11.3
FVG
Ellipse
4.19.11.4
FVG
Line
4.19.11.5
FVG
Path
4.20 CEGUI Introduction
4.21 Making Projects Using Crystal Space
4.21.1 Creating an External Crystal Space Application
4.21.2 Creating an External
MSVC
7, 7.1 or 8 Application
4.21.3 Creating an External Application using KDevelop
4.21.4 Creating an External Crystal Space Application Using Dev-CPP
4.21.5 Creating Crystal Space
RPM
's
4.21.6 Setting the CRYSTAL environment variable
4.22 HOWTO
4.22.1 Clicking on Objects
4.22.2 Loading Images for Pixmaps
4.22.3 Recording Movies
5. Working with Engine Content
5.1 How to Create Optimal Maps for Crystal Space
5.2 Simple Map Example
5.3 Making Levels and Models in Blender
5.4 Making Levels and Models in 3DSMax
5.5
map2cs
Manual (Quake Map Converter)
5.5.1 Reference for
`map2cs.cfg'
5.5.2 Classnames and Keys
5.5.3 Invoking
5.5.4 Game-Specific Data
5.6
map2cs
Tutorial
5.6.1 Step 1: Links to Required Tools and Data
5.6.2 Step 2: Configuring Worldcraft
5.6.3 Step 3: Configuring
`map2cs'
5.6.4 Step 4: Creating a Simple Room in Worldcraft
5.6.5 Step 5: Compiling the Room and Testing It
5.6.6 Step 6: Applying Textures
5.6.7 Step 7: Adding Another Room
5.6.8 Step 8: Adding More Detail
5.6.9 Step 9: Adding Manual Sectors
5.6.10 Generating Skybox Textures
5.6.11 Tips for Map Creation
5.7
md32spr
Tutorial
5.8 Quake Model Converter (
mdl2spr
)
5.9 3D Sprites
5.9.1 A Simple 3D Sprite
5.9.2 Texturing
5.9.3 Shading
6. Internal Project Structure
6.1 Platform-Specific Details
6.1.1 MacOS/X
6.1.1.1 Contents
6.1.1.2 Run-Loop
6.1.1.3 Dynamic Linking
6.2 Threads in Crystal Space
6.3 The Engine Internals Explained
6.4 Rendering Loop
7. Contributing to Crystal Space
7.1 Writing Documentation
7.2 Portability
7.3 Coding Style
7.4
CVS
Etiquette Guidelines
7.5 Porting to a New Platform
A. Glossary
B. Frequently Asked Questions (
FAQ
)
C. Release Notes
C.1 Release Notes from 0.98 to 1.00
C.2 Release Notes from 0.96 to 0.98
C.3 Release Notes from 0.94 to 0.96
C.4 Release Notes from 0.92 to 0.94
C.5 Release Notes from 0.90 to 0.92
C.6 Release Notes from 0.18 to 0.90
C.7 Release Notes from 0.17 to 0.18
C.8 Release Notes from 0.16 to 0.17
D. Licenses
D.1
GNU
Lesser General Public License
D.1.1 Preamble
D.1.2 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
D.1.3 How to Apply These Terms to Your New Libraries
D.2 Portions of Crystal Space Covered Under Different Licenses
D.3
GNU
General Public License
D.3.1 Preamble
D.3.2 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
D.3.3 Appendix: How to Apply These Terms to Your New Programs
Index
[
Top
]
[
Contents
]
[
Index
]
[
?
]
This document was generated using
texi2html 1.76
.