The data
subdirectory of your Castle Game Engine
project is somewhat special. For typical games (that are distributed with
read-only data files) it is recommended to put all your data inside the
data
subdirectory, and load them using a special URL
protocol castle-data:/xxx
.
Advantages:
This directory is automatically correctly packaged by the
CGE build tool
and editor.
E.g. it will be correctly added to the Android apk
file,
iOS or Nintendo Switch application.
It is detected in a smart way. E.g. it allows to place your data files in a system-wide location on Unix.
It can be customized using the
ApplicationDataOverride
global variable.
Note that you do not have to place your files inside the data
subdirectory, or use the ApplicationData
function
or castle-data:/xxx
URLs,
if you don't want to.
You can always load a file from any filename
or URL, so you can open any file on disk etc.
However, using data
subdirectory is adviced for typical cross-platform games.
This way the build tool will automatically package your game correctly.
Example things to put in the data
subdirectory:
Game 3D and 2D models, loaded e.g. by
MyScene.Load('castle-data:/my_model.x3d')
2D images, loaded e.g. by
MyImageControl.Url := 'castle-data:/my_image.png'
See displaying images.
Sounds, loaded e.g. by
MySoundBuffer := SoundEngine.LoadBuffer('castle-data:/my_sound.wav')
See loading sounds.
... and really anything else you plan to load during the game. Your custom files can be loaded using
MyStream := Download('castle-data:/my_binary_file')or
MyTextReader := TTextReader.Create('castle-data:/my_text_file.txt')
See loading from URLs
and the CastleDownload
unit.
Note that the data contents should be treated as read-only in cross-platform applications. In some cases it may be writeable (e.g. on desktop, when the application files are owned by the current user) but on some platforms it may be read-only (e.g. in case of Android, it resides in a special area which cannot be modified by code).
Copyright Michalis Kamburelis and Castle Game Engine Contributors.
This webpage is also open-source and we welcome pull requests to improve it.
We use cookies for analytics. See our privacy policy.