All resources visible to the engine should be managed by external tool that allows for importing (with format conversion) and managing resources database. Features:
[ ] Resources database. Each database entry have: source and target resource file path, dependencies list, modification date, information whether the file shall be included in a PAK archive. Draft form of the database:
[ ] Resource cooking. One the resources are imported and the database is complete, the resources should be "cooked" to their binary format, that will be read by the engine. Cooking should be performed only when needed - for example when source resource file was changed (that's why modification dates need to be tracked). When releasing a demo or a game there should be a possibility to cook resources to a compressed pack file. Cooked resources are read-only by the engine.
Engine's resource manager
[ ] Support for binary files only. At the moment only materials are non-binary.
[ ] Resource manager should use the mentioned resources database to know about dependencies. Currently, when a mesh is loaded, materials and textures are loaded after the mesh is created, what introduces some problems - we can't easily determine when a scene is completely loaded. Taking an advantage of the database, when we load a scene from scratch, we can easily calculate number of total resources to be loaded and show a valid progress bar. Asynchronous resources loading must be supported as well.
[ ] There should be a possibility to serialize resources by the engine (read-write resources) and the external resource manager should be aware of that. This will be helpful when saving a game - save state is a form of a resource.
Engine's editor base
[ ] Simple resource editor/preview. For example for meshes we want to see number of vertices, indicies, materials, etc. In the future there should be a GUI tool allowing preview and edition of each resource type (3D preview for meshes and materials, texture preview, etc.). BTW, the resource the tool could be a good starting point for engine's editor.
Resources manager (external tool)
All resources visible to the engine should be managed by external tool that allows for importing (with format conversion) and managing resources database. Features:
Engine's resource manager
Engine's editor base