We support a wide range of formats for 3D and 2D data.
Our main scene format is X3D, which is an open standard and you can export to it from virtually any 3D modeler. X3D can express 3D data with interactive features, scripting, prototypes etc.
While X3D is our "scene graph" format, the whole engine is designed as a general-purpose 3D / 2D engine, and many other model formats are supported as well: Collada, 3DS, Wavefront OBJ, MD3, Spine and many others. We also fully support older versions of the X3D standard: VRML 1.0 and VRML 2.0.
You can use any 3D modeler to design your 3D and 2D data. Blender? 3DS Max? Anything else? In part, that's because X3D (and it's predecessor, VRML) is an open and popular 3D format, and decent exporters for it exist in practically every 3D authoring tool. For detecting "placeholders" on levels you can configure the detection method to match your authoring tool.
In case of Blender, we have a description of how to create and export data along with some custom exporters (but to export the static 3D data from Blender, you can just use the standard X3D exporter!).
Animations are supported, in two flavors: interactive animation interpolated at runtime, or a "precalculated" animation (for fastest playback, but at the cost of using more memory).
You can compile and package your games as
It's easy to compile the same game to many platforms.
We have a build tool to make it easy to compile and package your games. For example, creating Android apk is a breeze with it.
Out-of-the-box integration with an incredible number of services on Android: games (achievements, leaderboards), in-app purchases, ads, sound, vibrations, and much more. See Android Project Components documentation.
ComposedShaderor enhance with
Effect, see links above).
We have a comfortable and extensible implementation of scene manager and 3D objects. You have a ready implementation of levels, creatures (with AI), items, players and other things typical to 3D games.
Engine manual contains detailed information about this.
3D and 2D. Not everything is about 3D. Our API is perfect for 2D games too, with flexible (and pixel-perfect) rendering of 2D images, movies, text and everything you can compose from them (like GUI controls). We also support Spine which is very cool for creating 2D animations.
examples/tiled/in the engine code.
tools/sprite-sheet-to-x3ddistributed as part of the engine.
castle_game_engine/examples/subdirectory. For even more examples, see some larger games we have developed using Castle Game Engine and their sources (for example on GitHub Castle Game Engine organization).
TCastleWindow) and Lazarus components (
TCastleControl) to make simple X3D and other 3D models browser, on a Lazarus form or independent from Lazarus LCL. The engine is integrated with Lazarus — we have various Lazarus components.
CastleWindowunit). And so on. Of course, ultimately you can just use everything from our engine, nicely integrated — but the point is that you don't have to.
The engine is developed for the Free Pascal Compiler, an open-source cross-platform compiler. We have Lazarus components for RAD development, although the core engine doesn't depend on Lazarus LCL and you can develop full games with pure FPC (we have our own OpenGL window management unit, if you want). The whole engine is 100% clean Object Pascal code.