Files
metabuilder/gameengine/cmake_config.json
johndoe6345789 bd4448c6cc feat(gameengine): Quake 3 BSP map loader with Bullet physics collision
- bsp.load: parse Q3 BSP from pk3 (zip) archives via libzip
- Extracts vertices, faces, meshverts from BSP lumps
- Coordinate conversion: Q3 Z-up → engine Y-up
- Configurable scale (default 1/32 = Q3 units to meters)
- Skips sky, clip, trigger, caulk, hint textures
- Bullet btBvhTriangleMeshShape collision from BSP geometry
- draw.map: graceful fallback when shadow texture missing
- Q3 game workflow: FPS controls, 90° FOV, walk around maps
- Tested with q3dm17 (The Longest Yard): 8486 verts, 5128 tris
- libzip added to cmake dependencies

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 10:53:52 +00:00

153 lines
5.4 KiB
JSON

{
"project": {
"name": "SDL3App",
"cmake_minimum_version": "3.24",
"default_build_type": "Release",
"cxx_standard": 20,
"description": "SDL3 GPU 2D/3D game engine with workflow system"
},
"options": [
{
"name": "BUILD_SDL3_APP",
"type": "BOOL",
"default": "ON",
"description": "Build the SDL3 GPU demo"
},
{
"name": "ENABLE_CLANG_TIDY",
"type": "BOOL",
"default": "OFF",
"description": "Automatically run clang-tidy on every target"
},
{
"name": "SDL_VERSION",
"type": "STRING",
"default": "SDL3",
"description": "SDL version to use",
"allowed_values": [
"SDL3",
"sdl"
]
}
],
"test_defaults": {
"include_directories": [
"src"
],
"link_libraries": [
"GTest::gtest_main",
"GTest::gmock",
"glm::glm",
"Bullet::Bullet",
"EnTT::EnTT"
]
},
"dependencies": {
"always": [
"SDL3",
"RapidJSON",
"nlohmann_json",
"Bullet",
"glm",
"stb",
"EnTT",
"assimp",
"libzip"
]
},
"source_exclusions": [
"tests/",
"src/services/impl/config/",
"src/services/impl/workflow/workflow_config_load_step.cpp",
"src/services/impl/workflow/workflow_config_migration_step.cpp",
"src/services/impl/workflow/workflow_config_schema_step.cpp",
"src/services/impl/workflow/workflow_config_version_step.cpp",
"src/services/impl/workflow/workflow_config_pipeline.cpp",
"src/services/impl/workflow/graphics/workflow_graphics_shader_load_step.cpp",
"src/services/impl/workflow/rendering/workflow_render_cube_grid_step.cpp"
],
"targets": [
{
"type": "executable",
"sources": [
"src/main.cpp",
"src/services/impl/diagnostics/logger_service.cpp",
"src/services/impl/workflow/workflow_executor.cpp",
"src/services/impl/workflow/workflow_step_registry.cpp",
"src/services/impl/workflow/workflow_exit_step.cpp",
"src/services/impl/workflow/workflow_parameter_reader.cpp",
"src/services/impl/workflow/workflow_step_io_resolver.cpp",
"src/services/impl/workflow/workflow_step_parameter_resolver.cpp",
"src/services/impl/workflow/workflow_registrar.cpp",
"src/services/impl/workflow/workflow_sdl_init_step.cpp",
"src/services/impl/workflow/workflow_sdl_window_create_step.cpp",
"src/services/impl/workflow/workflow_app_init_step.cpp",
"src/services/impl/workflow/workflow_load_workflow_step.cpp",
"src/services/impl/workflow/workflow_definition_parser.cpp",
"src/services/impl/workflow/workflow_definition_parser_nodes.cpp",
"src/services/impl/workflow/workflow_definition_parser_variables.cpp",
"src/services/impl/workflow/workflow_connection_resolver.cpp",
"src/services/impl/workflow/workflow_execute_step.cpp",
"src/stb_image.cpp",
"src/services/impl/workflow/workflow_generic_steps/*.cpp",
"src/services/impl/workflow/geometry/*.cpp",
"src/services/impl/workflow/rendering/*.cpp",
"src/services/impl/workflow/graphics/*.cpp",
"src/services/impl/workflow/input/*.cpp",
"src/services/impl/workflow/scene/*.cpp",
"src/services/impl/workflow/compute/*.cpp",
"src/services/impl/workflow/workflow_camera_view_state_builder.cpp",
"src/services/impl/workflow/workflow_cmdline_args_step.cpp",
"src/services/impl/workflow/workflow_data_deserialize_step.cpp",
"src/services/impl/workflow/workflow_data_serialize_step.cpp",
"src/services/impl/workflow/workflow_graphics_init_device_step.cpp",
"src/services/impl/workflow/workflow_graphics_init_swapchain_step.cpp",
"src/services/impl/workflow/workflow_media_catalog_scan_step.cpp",
"src/services/impl/workflow/workflow_media_item_select_step.cpp",
"src/services/impl/workflow/workflow_network_connect_step.cpp",
"src/services/impl/workflow/workflow_network_receive_step.cpp",
"src/services/impl/workflow/workflow_network_send_step.cpp",
"src/services/impl/workflow/workflow_package_shader_loader_step.cpp",
"src/services/impl/workflow/workflow_shader_builtin_constant_color_step.cpp",
"src/services/impl/workflow/workflow_shader_compile_step.cpp",
"src/services/impl/workflow/workflow_shader_system_initialize_step.cpp",
"src/services/impl/workflow/workflow_shader_system_set_step.cpp",
"src/services/impl/workflow/workflow_state_clear_step.cpp",
"src/services/impl/workflow/workflow_state_load_step.cpp",
"src/services/impl/workflow/workflow_state_save_step.cpp",
"src/services/impl/workflow/workflow_template_resolver.cpp"
],
"include_directories": [
"src"
],
"link_libraries": [
"${SDL_TARGET}",
"rapidjson",
"nlohmann_json::nlohmann_json",
"Bullet::Bullet",
"glm::glm",
"stb::stb",
"EnTT::EnTT",
"libzip::zip",
"assimp::assimp"
],
"compile_definitions": [],
"name": "sdl3_app",
"enabled_when": "BUILD_SDL3_APP"
}
],
"test_targets": [],
"file_copying": [
{
"condition": "BUILD_SDL3_APP",
"copies": [
{
"source": "packages",
"destination": "${CMAKE_CURRENT_BINARY_DIR}"
}
]
}
],
"libraries": []
}