File: cs_6.html

package info (click to toggle)
crystalspace 0.94-20020412-3
  • links: PTS
  • area: main
  • in suites: woody
  • size: 62,276 kB
  • ctags: 52,843
  • sloc: cpp: 274,783; ansic: 6,608; perl: 6,276; objc: 3,952; asm: 2,942; python: 2,354; php: 542; pascal: 530; sh: 430; makefile: 370; awk: 193
file content (327 lines) | stat: -rw-r--r-- 9,686 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created by texi2html 1.64 -->
<!-- 
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
            Karl Berry  <karl@freefriends.org>
            Olaf Bachmann <obachman@mathematik.uni-kl.de>
            and many others.
Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de>
Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
 
-->
<HTML>
<HEAD>
<TITLE>Crystal Space: Feature List</TITLE>

<META NAME="description" CONTENT="Crystal Space: Feature List">
<META NAME="keywords" CONTENT="Crystal Space: Feature List">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.64">

</HEAD>

<BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">

<A NAME="SEC6"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_5.html#SEC5"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_7.html#SEC7"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_1.html#SEC1"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_1.html#SEC1"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_15.html#SEC22"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="index.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_285.html#SEC711">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<HR SIZE=1>
<H2> 1.5 Feature List </H2>
<!--docid::SEC6::-->
<P>

The first feature to mention is that Crystal Space is an open source project.
It falls under the GNU copyleft license (LGPL). See section <A HREF="cs_14.html#SEC16">1.13 GNU Library General Public License</A>.
</P><P>

Crystal Space is divided into several libraries. The items in the feature
list are sorted by the library they belong to. Note that this is not a
description of how these libraries work together. Some libraries are not
even mentioned here.
</P><P>

Currently Crystal Space has the following features:
</P><P>

<DL COMPACT>
<DT><EM>System Driver</EM>
<DD>A system library that will perform system-dependent operations for your
program. This way your program is easily portable to any supported system.
It includes a good plug-in system that offers you an interface to
dynamically loaded drivers (`<TT>.so</TT>' or `<TT>.dll</TT>'), like the 3D rasterizer.
NOTE: This library as such will not be available in the 1.0 release, OS-specific 
functions will remain in this library however. The most important classes will 
be moving into the Tool and Utility libraries.
 
<DT><EM>Geometry Library</EM>
<DD>A 3D math library, including 2D and 3D vectors, matrices and polygons.
This library can be used without the rest of Crystal Space.
<P>

<DT><EM>2D Canvas / 3D Renderer</EM>
<DD>These libraries allow you to draw directly on the screen, and to use
hardware accelerated 3D drawing. They are independent from the engine and
perform only basic operations. You can actually use them if you want to
write your own engine. The libraries include:
<P>

<UL>
<LI>
Direct3D for Windows (32 bit) port.
<P>

<LI>
OpenGL support for GNU/Linux, BeOS, MacOS/9, OS/2, and Windows (32 bit).
<P>

<LI>
Drawing arbitrary sloped convex polygons.
<P>

<LI>
Perspective correct texture mapping. You can chose between accuracy
and speed (by selecting the interpolation step).
<P>

<LI>
Support for 8-bit (palette), 15/16-bit and 32-bit truecolor displays
(no support for 24-bit yet).
<P>

<LI>
Mipmapping to minimize memory strain on the texture cache and to have
nicer textures in the distance.
<P>

<LI>
The width and height of textures must be a power of two but the
texture need not be a square.
<P>

<LI>
Procedural textures. Currently the included procedural textures are plasma,
sky, water, and fire. You can also define your own procedural textures.
<P>

<LI>
It is possible to map the texture on a polygon in various ways such as via
rotation, scaling, mirroring, etc.
<P>

<LI>
Transparent and semi-transparent textures allowing for see-through
water surfaces and windows.
<P>

<LI>
Colored volumetric fog.
<P>

<LI>
Halos around lights.
</UL>
<P>

<DT><EM>3D Engine</EM>
<DD>The engine features the following:
<P>

<UL>
<LI>
True six-degrees-of-freedom (6DOF).
<P>

<LI>
Integrated landscape engine.
<P>

<LI>
Moving objects and scripts controlling the movement.
<P>

<LI>
Static colored lighting with real shadows. Lighting and shadows are
precomputed before the world is displayed. Radiosity is also supported.
<P>

<LI>
Pseudo-dynamic colored lights which cannot move but have very accurate
shadows and can change intensity/color randomly.
<P>

<LI>
Dynamic colored lighting with support for shadows (detail objects are
ignored for shadows currently).
<P>

<LI>
Support for frame and skeletal based 3D triangle mesh sprites with
level-of-detail (LOD) reduction via progressive meshes.
<P>

<LI>
Support for 2D sprites and particle systems.
<P>

<LI>
Mesh object plugin system that is used for 3D sprites, 2D sprites and
particle systems. The game developer can also write his own mesh objects
and plug them into the engine transparently.
<P>

<LI>
Portals are used for efficient and easy visibility sorting. In
addition you can optionally enable an OCTREE and/or BSP for some
sectors to allow for even more powerful world definitions.
<P>

<LI>
Additional C-buffer (coverage buffer) which can be enabled for even
better visibility culling.
<P>

<LI>
Using portals you can also create transparent and semi-transparent
mirrors.
<P>

<LI>
Alpha transparency in combination with mirrors allows simulation of
shining walls.
<P>

<LI>
You can also include gouraud shaded triangles in the world.
<P>

<LI>
Dynamic gouraud shaded sky spheres. Also support for skybox.
<P>

<LI>
Curved bezier surfaces with dynamic tessellation depending on viewer
distance.
<P>

<LI>
Support for multiple cameras and the ability to make 1st person or
3rd person cameras.
<P>

<LI>
ZIP archive format to pack the map file, the textures and all other
needed data files for one level inside one file. Crystal Space also
uses the same ZIP file to automatically add lightmap data. This 
greatly speeds up the start-up of Crystal Space.
<P>

<LI>
Powerful text-based map file format allows you to easily redefine the world.
<P>

<LI>
Libraries of commonly used objects and textures are supported.
</UL>
<P>

<DT><EM>Utility Library</EM>
<DD>Much of the utility functionality in this library can be used independently
of Crystal Space.  This library includes the following functionality:
<P>

<UL>
<LI>
Reading configuration (INI) files for program options.
<P>

<LI>
Reading and writing ZIP files as data files.
<P>

<LI>
Simple parser that you can use if INI files are not enough. It is used
by the engine to read map files.
<P>

<LI>
Defining an interface for shared libraries (`<TT>.so</TT>' or .DLL).  This is
used by the plug-in system.
<P>

<LI>
Dynamically-sized arrays (<CODE>csVector</CODE>).
</UL>
<P>

<DT><EM>VFS</EM>
<DD>Virtual file system.  See section <A HREF="cs_161.html#SEC340">7.2 Virtual File System (VFS)</A>.
<P>

<DT><EM>Tool Library</EM>
<DD>Much of the utility functionality in this library can be used independently
of Crystal Space.  This library includes the following functionality:
<P>

<UL>
<LI>
Contains several functions that can help setup an application. 
The most important class in this library is csInitializer which will create 
everything needed to get a CS application operational.
<P>

<LI>
Support for models, procedural textures, and sprites.
<P>

<LI>
Support for collision detection.
</UL>
<P>

<DT><EM>Sound Driver / Sound Renderer</EM>
<DD>General sound system.  Currently drivers exist for GNU/Linux, MacOS/9, and
Windows.
<P>

<DT><EM>Network Driver</EM>
<DD>General networking support.  Currently supports socket-based networking via
TCP/IP.
<P>

<DT><EM>Scripting</EM>
<DD>Crystal Space supports scripting through the PYTHON plugin. This way
a game using Crystal Space can call PYTHON methods and PYTHON
scripts can call Crystal Space methods.
</DL>
<A NAME="Where to Get"></A>
<HR SIZE=1>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_5.html#SEC5"> &lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_7.html#SEC7"> &gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_1.html#SEC1"> &lt;&lt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_1.html#SEC1"> Up </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_15.html#SEC22"> &gt;&gt; </A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="index.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_285.html#SEC711">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="cs_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<BR>  
<FONT SIZE="-1">
This document was generated

using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>

</BODY>
</HTML>