U5.5 Basaltbastion: zehnte Meshy-Figur (g04), Glutpakt vollständig

Festungsgolem als Aufwertung der Schlackenwacht, deren Konzept als
Stilvorlage und Figurendatei, ersetzt die Phase-15-Skelettfigur,
68 Credits, Lane-Fassung inklusive. Stresstest 36 Basaltbastionen:
Mid 136,9 -> 125,5 fps, Karte 120,4 -> 126,4. Tests grün,
Fingerabdrücke unverändert.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Martin Stickelbroeck 2026-10-10 18:06:49 +02:00
parent 02c8839285
commit 9e253f4a19
72 changed files with 58172 additions and 56121 deletions

View file

@ -0,0 +1,491 @@
{
"id": "basaltbastion_meshy",
"group": "Characters",
"source": "tools/meshy/build_figure.py",
"exporter_version": 11,
"blender": "5.2.2 LTS",
"fbx_settings": {
"use_selection": true,
"use_visible": false,
"use_active_collection": false,
"global_scale": 1.0,
"apply_unit_scale": true,
"apply_scale_options": "FBX_SCALE_UNITS",
"axis_forward": "Y",
"axis_up": "Z",
"bake_space_transform": false,
"object_types": [
"ARMATURE",
"EMPTY",
"MESH"
],
"use_mesh_modifiers": true,
"use_mesh_modifiers_render": true,
"mesh_smooth_type": "OFF",
"use_subsurf": false,
"use_mesh_edges": false,
"use_tspace": false,
"use_triangles": false,
"colors_type": "LINEAR",
"prioritize_active_color": true,
"use_custom_props": false,
"add_leaf_bones": false,
"primary_bone_axis": "Y",
"secondary_bone_axis": "X",
"use_armature_deform_only": true,
"armature_nodetype": "NULL",
"bake_anim": true,
"bake_anim_use_all_bones": true,
"bake_anim_use_nla_strips": false,
"bake_anim_use_all_actions": true,
"bake_anim_force_startend_keying": true,
"bake_anim_step": 1.0,
"bake_anim_simplify_factor": 0.0,
"path_mode": "STRIP",
"embed_textures": false,
"batch_mode": "OFF"
},
"checks": [
{
"check": "turn_applied",
"ok": true,
"detail": "[]"
},
{
"check": "units_metric",
"ok": true,
"detail": "METRIC"
},
{
"check": "unit_scale_1",
"ok": true,
"detail": "1.0"
},
{
"check": "no_negative_scale",
"ok": true,
"detail": "{}"
},
{
"check": "object_scale_1",
"ok": true,
"detail": "{}"
},
{
"check": "mesh_names_unique",
"ok": true,
"detail": "['Basaltbastion_meshyBody_LOD0', 'Basaltbastion_meshyBody_LOD1']"
},
{
"check": "material_slots_filled",
"ok": true,
"detail": "{}"
},
{
"check": "normals_unit_length",
"ok": true,
"detail": "{}"
},
{
"check": "no_blend_shapes",
"ok": true,
"detail": "{}"
},
{
"check": "triangles_match_godot",
"ok": true,
"detail": "25178 fbx / 25178 godot"
},
{
"check": "one_armature",
"ok": true,
"detail": "['Basaltbastion_meshyRig']"
},
{
"check": "single_root_bone",
"ok": true,
"detail": "['Root']"
},
{
"check": "root_bone_name",
"ok": true,
"detail": "['Root']"
},
{
"check": "bone_count_match_godot",
"ok": true,
"detail": "25 / 25"
},
{
"check": "bone_names_portable",
"ok": true,
"detail": "[]"
},
{
"check": "skinned_meshes_present",
"ok": true,
"detail": ""
},
{
"check": "clips_match_godot",
"ok": true,
"detail": "[]"
},
{
"check": "required_clips_present",
"ok": true,
"detail": "[]"
},
{
"check": "roundtrip_mesh_names",
"ok": true,
"detail": "[]"
},
{
"check": "roundtrip_triangles",
"ok": true,
"detail": "25178 / 25178"
},
{
"check": "roundtrip_materials",
"ok": true,
"detail": "[]"
},
{
"check": "roundtrip_bones",
"ok": true,
"detail": "[]"
},
{
"check": "roundtrip_clips",
"ok": true,
"detail": "['ability', 'attack_a', 'attack_b', 'death', 'hit', 'idle', 'walk']"
}
],
"generator": {
"clips": {
"idle": {
"source": "Idle",
"frames": [
0.0,
96.0
],
"seconds": 4.0,
"loop": true,
"contact_seconds": -1.0
},
"walk": {
"source": "Slow_Orc_Walk",
"frames": [
0.0,
132.0
],
"seconds": 2.7917,
"loop": true,
"contact_seconds": -1.0
},
"attack_a": {
"source": "Right_Hand_Sword_Slash",
"frames": [
0,
36
],
"seconds": 1.0417,
"loop": false,
"contact_seconds": 0.4051
},
"attack_b": {
"source": "Punch_Forward_with_Both_Fists",
"frames": [
18,
56
],
"seconds": 1.0,
"loop": false,
"contact_seconds": 0.4737
},
"hit": {
"source": "Hit_Reaction",
"frames": [
0,
12
],
"seconds": 0.5,
"loop": false,
"contact_seconds": -1.0
},
"ability": {
"source": "Charged_Ground_Slam",
"frames": [
6,
64
],
"seconds": 1.2083,
"loop": false,
"contact_seconds": 0.7292
},
"death": {
"source": "dying_backwards",
"frames": [
0.0,
52.80000305175781
],
"seconds": 2.2083,
"loop": false,
"contact_seconds": -1.0
}
},
"textures": {
"glow_share": 0.0099,
"palette_gains": {
"rock": [
0.7852,
0.8903,
1.0126
],
"metal": [
1.8682,
1.5742,
0.7485
]
},
"size": [
2048,
2048
]
},
"unit": 0.009999999776482582,
"lod": {
"lod0_triangles": 20185,
"lod1_triangles": 4993,
"lod1_vertices": 2485,
"welded_triangles": 20185,
"lod0_screen": 0.2
},
"props": []
},
"inputs_sha256": {
"tools/meshy/g04/figure.json": "e958eb4b42c8ec9409333b175a8f2a7de9c48c0a114d53baf8409374d504789b",
"assets-source/meshy/g04/basaltbastion-skelett.glb": "b11b840bfae8bd157c1155945d4964ca31f7c36fc3043c2442c28e8ffc1f4807",
"assets-source/meshy/g04/basaltbastion-animationen.glb": "5e3dc878f1ac1de23f25cedf5e694f4f60a10929bebec6b0e38f6b86f8c79cfa"
},
"source_sha256": "4d5cdab415e4bfa97abe420f7457d4e1cddd67b9a76c23ccb6f9313a2fd8ea4e",
"removed_modifiers": 0,
"kind": "skinned",
"fps": 24.0,
"objects": 3,
"meshes": {
"Basaltbastion_meshyBody_LOD0": {
"mesh": "Basaltbastion_meshyBody_LOD0",
"triangles": 20185,
"vertices": 28837,
"ngons": 0,
"materials": [
"AI_Basaltbastion"
],
"uv_layers": [
"UVMap"
],
"color_attributes": [],
"active_color": null,
"custom_normals": true,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": true,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
-1.194,
0.0,
-0.5224
],
"max": [
1.194,
2.1,
0.5224
]
}
},
"Basaltbastion_meshyBody_LOD1": {
"mesh": "Basaltbastion_meshyBody_LOD1",
"triangles": 4993,
"vertices": 2485,
"ngons": 0,
"materials": [
"AI_Basaltbastion"
],
"uv_layers": [
"UVMap"
],
"color_attributes": [],
"active_color": null,
"custom_normals": false,
"normals_unit_length": true,
"bad_normals": 0,
"degenerate_triangles": 0,
"shape_keys": 0,
"skinned": true,
"scale": [
1.0,
1.0,
1.0
],
"bounds_unity": {
"min": [
-1.1906,
-0.0,
-0.5222
],
"max": [
1.1924,
2.0997,
0.5241
]
}
}
},
"armatures": {
"Basaltbastion_meshyRig": {
"bones": [
"Root",
"Hips",
"Spine02",
"Spine01",
"Spine",
"neck",
"Head",
"head_end",
"headfront",
"LeftShoulder",
"LeftArm",
"LeftForeArm",
"LeftHand",
"RightShoulder",
"RightArm",
"RightForeArm",
"RightHand",
"LeftUpLeg",
"LeftLeg",
"LeftFoot",
"LeftToeBase",
"RightUpLeg",
"RightLeg",
"RightFoot",
"RightToeBase"
],
"roots": [
"Root"
]
}
},
"empties": {},
"bounds_unity": {
"min": [
-1.194,
-0.0,
-0.5224
],
"max": [
1.194,
2.1,
0.5241
]
},
"clips": [
{
"name": "ability",
"frames": [
0.0,
29.0
],
"seconds": 1.2083,
"loop": false,
"contact_seconds": 0.7292
},
{
"name": "attack_a",
"frames": [
0.0,
25.0
],
"seconds": 1.0417,
"loop": false,
"contact_seconds": 0.4051
},
{
"name": "attack_b",
"frames": [
0.0,
24.0
],
"seconds": 1.0,
"loop": false,
"contact_seconds": 0.4737
},
{
"name": "death",
"frames": [
0.0,
53.0
],
"seconds": 2.2083,
"loop": false,
"contact_seconds": -1.0
},
{
"name": "hit",
"frames": [
0.0,
12.0
],
"seconds": 0.5,
"loop": false,
"contact_seconds": -1.0
},
{
"name": "idle",
"frames": [
0.0,
96.0
],
"seconds": 4.0,
"loop": true,
"contact_seconds": -1.0
},
{
"name": "walk",
"frames": [
0.0,
67.0
],
"seconds": 2.7917,
"loop": true,
"contact_seconds": -1.0
}
],
"expected_from_godot": {
"triangles": 25178,
"bones": 25,
"clips": [
"idle",
"walk",
"attack_a",
"attack_b",
"hit",
"ability",
"death"
]
},
"meshes_with_ngons": {},
"meshes_without_uv": [],
"triangles": 25178,
"fbx": "Assets/Luneraria/Art/Characters/basaltbastion_meshy.fbx",
"fbx_bytes": 3437660,
"ok": true
}

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d504fe7aa8bb746b2a01a860fa68558d
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,337 @@
fileFormatVersion: 2
guid: aa5734da897ea44808385f37d34070bf
ModelImporter:
serializedVersion: 24300
internalIDToNameTable: []
externalObjects: {}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
searchTexturesGlobally: 0
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 0
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 0
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations:
- serializedVersion: 16
name: ability
takeName: Basaltbastion_meshyRig|ability
internalID: -5495293919160781032
firstFrame: 0
lastFrame: 29
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 0
loopBlend: 0
loopBlendOrientation: 0
loopBlendPositionY: 0
loopBlendPositionXZ: 0
keepOriginalOrientation: 0
keepOriginalPositionY: 1
keepOriginalPositionXZ: 0
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events:
- time: 0.6034925
functionName: OnLuneContact
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
transformMask: []
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: attack_a
takeName: Basaltbastion_meshyRig|attack_a
internalID: 1565449223295100875
firstFrame: 0
lastFrame: 25
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 0
loopBlend: 0
loopBlendOrientation: 0
loopBlendPositionY: 0
loopBlendPositionXZ: 0
keepOriginalOrientation: 0
keepOriginalPositionY: 1
keepOriginalPositionXZ: 0
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events:
- time: 0.38888356
functionName: OnLuneContact
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
transformMask: []
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: attack_b
takeName: Basaltbastion_meshyRig|attack_b
internalID: 3972096498202774343
firstFrame: 0
lastFrame: 24
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 0
loopBlend: 0
loopBlendOrientation: 0
loopBlendPositionY: 0
loopBlendPositionXZ: 0
keepOriginalOrientation: 0
keepOriginalPositionY: 1
keepOriginalPositionXZ: 0
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events:
- time: 0.4737
functionName: OnLuneContact
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
transformMask: []
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: death
takeName: Basaltbastion_meshyRig|death
internalID: -4724392375424077161
firstFrame: 0
lastFrame: 53
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 0
loopBlend: 0
loopBlendOrientation: 0
loopBlendPositionY: 0
loopBlendPositionXZ: 0
keepOriginalOrientation: 0
keepOriginalPositionY: 1
keepOriginalPositionXZ: 0
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events: []
transformMask: []
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: hit
takeName: Basaltbastion_meshyRig|hit
internalID: -4714297317412057206
firstFrame: 0
lastFrame: 12
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 0
loopBlend: 0
loopBlendOrientation: 0
loopBlendPositionY: 0
loopBlendPositionXZ: 0
keepOriginalOrientation: 0
keepOriginalPositionY: 1
keepOriginalPositionXZ: 0
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events: []
transformMask: []
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: idle
takeName: Basaltbastion_meshyRig|idle
internalID: 9093657477581702130
firstFrame: 0
lastFrame: 96
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 1
loopBlend: 0
loopBlendOrientation: 0
loopBlendPositionY: 0
loopBlendPositionXZ: 0
keepOriginalOrientation: 0
keepOriginalPositionY: 1
keepOriginalPositionXZ: 0
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events: []
transformMask: []
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: walk
takeName: Basaltbastion_meshyRig|walk
internalID: -1455650782467671261
firstFrame: 0
lastFrame: 67
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 1
loopBlend: 0
loopBlendOrientation: 0
loopBlendPositionY: 0
loopBlendPositionXZ: 0
keepOriginalOrientation: 0
keepOriginalPositionY: 1
keepOriginalPositionXZ: 0
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events: []
transformMask: []
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
isReadable: 1
meshes:
lODScreenPercentages:
- 0.25
- 0.01
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 0
importBlendShapes: 0
importCameras: 0
importLights: 0
nodeNameCollisionStrategy: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 1
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
generateMeshLods: 0
meshLodGenerationFlags: 0
maximumMeshLod: -1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 1
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 1
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,246 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1107 &-6811216099093985071
AnimatorStateMachine:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Base Layer
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: -2709338179651766100}
m_Position: {x: 200, y: 0, z: 0}
- serializedVersion: 1
m_State: {fileID: 1735361140140776544}
m_Position: {x: 235, y: 65, z: 0}
- serializedVersion: 1
m_State: {fileID: -4370220345468990606}
m_Position: {x: 270, y: 130, z: 0}
- serializedVersion: 1
m_State: {fileID: 3813406096338511602}
m_Position: {x: 305, y: 195, z: 0}
- serializedVersion: 1
m_State: {fileID: 9082682921124757256}
m_Position: {x: 340, y: 260, z: 0}
- serializedVersion: 1
m_State: {fileID: 1782638191720012098}
m_Position: {x: 375, y: 325, z: 0}
- serializedVersion: 1
m_State: {fileID: 2921820919237067307}
m_Position: {x: 410, y: 390, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
m_AnyStatePosition: {x: 50, y: 20, z: 0}
m_EntryPosition: {x: 50, y: 120, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: -2709338179651766100}
--- !u!1102 &-4370220345468990606
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: attack_a
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 1565449223295100875, guid: aa5734da897ea44808385f37d34070bf, type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &-2709338179651766100
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: idle
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 9093657477581702130, guid: aa5734da897ea44808385f37d34070bf, type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: basaltbastion_meshy
serializedVersion: 5
m_AnimatorParameters: []
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: -6811216099093985071}
m_Mask: {fileID: 0}
m_Motions: []
m_Behaviours: []
m_BlendingMode: 0
m_SyncedLayerIndex: -1
m_DefaultWeight: 0
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
--- !u!1102 &1735361140140776544
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ability
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: -5495293919160781032, guid: aa5734da897ea44808385f37d34070bf, type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &1782638191720012098
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: hit
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: -4714297317412057206, guid: aa5734da897ea44808385f37d34070bf, type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &2921820919237067307
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: walk
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: -1455650782467671261, guid: aa5734da897ea44808385f37d34070bf, type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &3813406096338511602
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: attack_b
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 3972096498202774343, guid: aa5734da897ea44808385f37d34070bf, type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &9082682921124757256
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: death
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: -4724392375424077161, guid: aa5734da897ea44808385f37d34070bf, type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a456a0a7fa6d34b699183f75137f8f86
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 MiB

View file

@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: 0d36246861f5e495c9a37eebff823d05
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 MiB

View file

@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: fb23cd5309e9a4cc280eaf1093b8e477
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 0
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 1
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 MiB

View file

@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: ced81c900c77948e38af00218f6fe9b5
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 0
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View file

@ -185,6 +185,10 @@ MonoBehaviour:
Neutral: {fileID: 2100000, guid: 48235766686d249dfb6f4463f7a554c7, type: 2} Neutral: {fileID: 2100000, guid: 48235766686d249dfb6f4463f7a554c7, type: 2}
Blau: {fileID: 0} Blau: {fileID: 0}
Rot: {fileID: 0} Rot: {fileID: 0}
- Key: AI_Basaltbastion
Neutral: {fileID: 2100000, guid: 2844b8628dab84e70bea79fbffa9958f, type: 2}
Blau: {fileID: 0}
Rot: {fileID: 0}
- Key: AI_Funkenlanze - Key: AI_Funkenlanze
Neutral: {fileID: 2100000, guid: d5a88e3321a884b30bd8a8606b78090d, type: 2} Neutral: {fileID: 2100000, guid: d5a88e3321a884b30bd8a8606b78090d, type: 2}
Blau: {fileID: 0} Blau: {fileID: 0}

View file

@ -0,0 +1,68 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: AI_Basaltbastion
m_Shader: {fileID: 4800000, guid: 9809bd5750e264586bd30e14a6f1bd4e, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 0
m_EnableInstancingVariants: 1
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _AlbedoMap:
m_Texture: {fileID: 2800000, guid: 0d36246861f5e495c9a37eebff823d05, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _NormalMap:
m_Texture: {fileID: 2800000, guid: fb23cd5309e9a4cc280eaf1093b8e477, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OrmMap:
m_Texture: {fileID: 2800000, guid: ced81c900c77948e38af00218f6fe9b5, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _StoneMap:
m_Texture: {fileID: 2800000, guid: 2e11a30a0df8143ab84722ec0a116b6d, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _Cull: 2
- _Energy: 1
- _Flicker: 0
- _Glow: 1.25
- _Metallic: 1
- _Mode: 0
- _NormalStrength: 1
- _ObjectSpace: 0
- _Quality: 1
- _Relief: 0.016
- _Rim: 0.35
- _Roughness: 1
- _Seed: 0
- _ShadowNormalScale: 0
- _StoneScale: 1
- _UvMaps: 1
- _VertexColor: 0
m_Colors:
- _AlbedoMean: {r: 1, g: 1, b: 1, a: 1}
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _OrmMean: {r: 1, g: 1, b: 1, a: 1}
- _RimColor: {r: 0.8, g: 0.86, b: 1, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2844b8628dab84e70bea79fbffa9958f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load diff

View file

@ -22,6 +22,9 @@ MonoBehaviour:
- Id: basaltbastion - Id: basaltbastion
Prefab: {fileID: 919132149155446097, guid: 841c5b5333cc141a6bde6c22d3dc2884, type: 3} Prefab: {fileID: 919132149155446097, guid: 841c5b5333cc141a6bde6c22d3dc2884, type: 3}
Controller: {fileID: 9100000, guid: ec68488f0997c4a8185eea30724740ff, type: 2} Controller: {fileID: 9100000, guid: ec68488f0997c4a8185eea30724740ff, type: 2}
- Id: basaltbastion_meshy
Prefab: {fileID: 919132149155446097, guid: aa5734da897ea44808385f37d34070bf, type: 3}
Controller: {fileID: 9100000, guid: a456a0a7fa6d34b699183f75137f8f86, type: 2}
- Id: e01 - Id: e01
Prefab: {fileID: 919132149155446097, guid: 940635ed8b965461daabecd5cafdba92, type: 3} Prefab: {fileID: 919132149155446097, guid: 940635ed8b965461daabecd5cafdba92, type: 3}
Controller: {fileID: 0} Controller: {fileID: 0}
@ -68,8 +71,8 @@ MonoBehaviour:
Prefab: {fileID: 919132149155446097, guid: 2a144fe945cf34c34a772171ca5034b1, type: 3} Prefab: {fileID: 919132149155446097, guid: 2a144fe945cf34c34a772171ca5034b1, type: 3}
Controller: {fileID: 9100000, guid: 34bd3ea42721340d7a9c58fa3585219a, type: 2} Controller: {fileID: 9100000, guid: 34bd3ea42721340d7a9c58fa3585219a, type: 2}
- Id: g04 - Id: g04
Prefab: {fileID: 919132149155446097, guid: 841c5b5333cc141a6bde6c22d3dc2884, type: 3} Prefab: {fileID: 919132149155446097, guid: aa5734da897ea44808385f37d34070bf, type: 3}
Controller: {fileID: 9100000, guid: ec68488f0997c4a8185eea30724740ff, type: 2} Controller: {fileID: 9100000, guid: a456a0a7fa6d34b699183f75137f8f86, type: 2}
- Id: g05 - Id: g05
Prefab: {fileID: 919132149155446097, guid: 70c39c469a6fa406f85b60c8407d95c9, type: 3} Prefab: {fileID: 919132149155446097, guid: 70c39c469a6fa406f85b60c8407d95c9, type: 3}
Controller: {fileID: 9100000, guid: 44426d34820fe40da91e59336999b8a9, type: 2} Controller: {fileID: 9100000, guid: 44426d34820fe40da91e59336999b8a9, type: 2}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

View file

@ -229,6 +229,17 @@ Hinweis: Die Projektdateien des .NET-Harness (`tools/dotnet/*/*.csproj`) fehlten
| Bild | `screenshots/u5.5-g10/` | | Bild | `screenshots/u5.5-g10/` |
| Commits | `luneraria/u5.5-g10` | | Commits | `luneraria/u5.5-g10` |
## U5.5 · Basaltbastion (g04)
| Punkt | Ergebnis |
| --- | --- |
| Tests | EditMode 29/29, PlayMode 14/14 (Verify A–I 718/0), Player-Selbsttest 30/30, Asset-Prüfung 20/0 |
| Parität | Fingerabdrücke unverändert (`DCE95C96556F3A1A`, `7B8E43AEFC0D60C5`) |
| Inhalt | Meshy-Figur für `g04` statt der Phase-15-Figur, 68 Credits; damit alle zehn Glutpakt-Truppen umgestellt |
| Leistung | Stresstest 36 Basaltbastionen gegen Phase 15: Mid 136,9 → 125,5 fps, Karte 120,4 → 126,4 fps. Rohdaten `logs/u5.5-g04/` |
| Bild | `screenshots/u5.5-g04/` |
| Commits | `luneraria/u5.5-g04` |
## Ausblick ## Ausblick
Der Pilot entscheidet über eine Serie weiterer Meshy-Figuren (Kosten je Figur, Lizenz, Stilgleichheit). Offen bleiben außerdem Künstler-Sculpts für Anatomie/Gesicht/Haar, LOD und Material-Atlanten sowie die Build-Module für Windows und Linux. Der Pilot entscheidet über eine Serie weiterer Meshy-Figuren (Kosten je Figur, Lizenz, Stilgleichheit). Offen bleiben außerdem Künstler-Sculpts für Anatomie/Gesicht/Haar, LOD und Material-Atlanten sowie die Build-Module für Windows und Linux.

View file

@ -1,6 +1,6 @@
# Port-Status · Champions of Luneraria in Unity # Port-Status · Champions of Luneraria in Unity
Stand: 10. Oktober 2026 (U5.5, neunte Figur). Stand: 10. Oktober 2026 (U5.5, Glutpakt vollständig).
Referenz ist der Godot-Stand `luneraria/g3` (`1b540f2`) in `../saumwacht-godot`; er wird nicht mehr verändert. Engine: Unity 6.3 LTS (6000.3.20f1), Renderer URP. HDRP ist ausgeschlossen, bis ein Vergleich mit einer echten Szene etwas anderes nahelegt. Referenz ist der Godot-Stand `luneraria/g3` (`1b540f2`) in `../saumwacht-godot`; er wird nicht mehr verändert. Engine: Unity 6.3 LTS (6000.3.20f1), Renderer URP. HDRP ist ausgeschlossen, bis ein Vergleich mit einer echten Szene etwas anderes nahelegt.
@ -13,7 +13,7 @@ Zielplattformen sind Fedora 44 und Windows 11; macOS ist die Entwicklungsplattfo
| U2 · Unity-Spielwelt | **fertig**: U2A Blender→FBX-Pipeline (9 Assets geprüft), U2B G1-Karte mit Materialsystem, U2C fester Takt und Ansichten (bildratenunabhängig nachgewiesen), U2D vollständige Bot-Partien sichtbar und gleich dem Kern; danach Batch-Import aller 86 Modelle, Einheiten mit eigenen Modellen | [U2-WORLD.md](U2-WORLD.md) | | U2 · Unity-Spielwelt | **fertig**: U2A Blender→FBX-Pipeline (9 Assets geprüft), U2B G1-Karte mit Materialsystem, U2C fester Takt und Ansichten (bildratenunabhängig nachgewiesen), U2D vollständige Bot-Partien sichtbar und gleich dem Kern; danach Batch-Import aller 86 Modelle, Einheiten mit eigenen Modellen | [U2-WORLD.md](U2-WORLD.md) |
| U3 · G3-HUD portieren | **fertig** (`luneraria/u3`): UI Toolkit, Sichtmodell mit Privatsphäre, menschlicher Sitz, alle HUD-Bereiche, Eingabe und Befehle, Prüfung 718/0, 14 G3-Motive, Spieltest, Leistung mit HUD | [U3-UI.md](U3-UI.md) | | U3 · G3-HUD portieren | **fertig** (`luneraria/u3`): UI Toolkit, Sichtmodell mit Privatsphäre, menschlicher Sitz, alle HUD-Bereiche, Eingabe und Befehle, Prüfung 718/0, 14 G3-Motive, Spieltest, Leistung mit HUD | [U3-UI.md](U3-UI.md) |
| U4 · Netzwerk | **fertig** (`luneraria/u4` = `769e622`): LuneSession (Protokoll 4), TCP-Transport, Startbildschirm Host/Join, 43+12 Prüfungen, Mindestumfang M4. Nachtrag (`luneraria/u4-nachtrag`, in U5.3 zusammengeführt): Startbildschirm in der Szene, „Menü“ führt dorthin zurück | [U4-NETWORK.md](U4-NETWORK.md) | | U4 · Netzwerk | **fertig** (`luneraria/u4` = `769e622`): LuneSession (Protokoll 4), TCP-Transport, Startbildschirm Host/Join, 43+12 Prüfungen, Mindestumfang M4. Nachtrag (`luneraria/u4-nachtrag`, in U5.3 zusammengeführt): Startbildschirm in der Szene, „Menü“ führt dorthin zurück | [U4-NETWORK.md](U4-NETWORK.md) |
| U5 · Visuelle Neuausrichtung (Vertical Slice Mid-Lane) | **fertig** (`luneraria/u5` = `2c1686b`, Stufen `luneraria/u5.2`): 6 PBR-Sätze, Surface-Shader mit Albedo/Normal/ORM, Stufen Lane/Rand, Hit- und Turm-VFX, 133/180 fps. **U5.3** (`luneraria/u5.3` = `07fa457`): Gebäude, Boss und Ringborkes Rinde auf PBR (11 Sätze); Bildfehler aus U5 behoben (doppelte Einfärbung, Datenkarten als sRGB, Streifen, bleichender Treffer-Flash, Nebel), Helligkeit und Grün wieder auf U3-Niveau **U5.4** (`luneraria/u5.4` = `4883d95`): Surface-Materialien für alle 146 Figurenmaterialien (Metalle metallisch, Randlicht, Struktur in den Porträts), SSAO (abschaltbar), Leistung −13 % Karte / −16 % Mid **U5.5-pilot** (`luneraria/u5.5-pilot` = `c386206`): Meshy-Figur für den Kohlenbeißer `g01` (Pipeline `tools/meshy/`, UV-Material mit Lava-Glut, Schatten ohne Normalen-Versatz), GPU-Batched-Skinning, Figuren-Stress −21 % Mid / −13 % Karte gegenüber Phase-4; **Lane-Fassung** (`luneraria/u5.5-lod`): 5.000-Dreiecke-LOD, Abstand −10 % Mid / −2 % Karte; **Schlackenklaue** `g02` (`luneraria/u5.5-g02`) als zweite Meshy-Figur, −11 % Mid / −1 % Karte; **Schlackenwacht** `g03` (`luneraria/u5.5-g03`), −8 % Mid / 0 % Karte; **Funkenlanze** `g05` mit Lanze als eigenem Modell (`luneraria/u5.5-g05`), +15 % gegenüber der Phase-18-Figur; **Glasballiste** `g06` als Maschine mit übernommenem Skelett (`luneraria/u5.5-g06`); **Aschenwerfer** `g07` (`luneraria/u5.5-g07`), −11 % Mid / +2 % Karte; **Kraterrufer** `g08` (`luneraria/u5.5-g08`), −9 % Mid / +10 % Karte; **Herdhüter** `g09` (`luneraria/u5.5-g09`), −4 % Mid / +6 % Karte; **Sonnenesse** `g10` (`luneraria/u5.5-g10`), +11 % Mid / +15 % Karte | [U5-VISUAL.md](U5-VISUAL.md) | | U5 · Visuelle Neuausrichtung (Vertical Slice Mid-Lane) | **fertig** (`luneraria/u5` = `2c1686b`, Stufen `luneraria/u5.2`): 6 PBR-Sätze, Surface-Shader mit Albedo/Normal/ORM, Stufen Lane/Rand, Hit- und Turm-VFX, 133/180 fps. **U5.3** (`luneraria/u5.3` = `07fa457`): Gebäude, Boss und Ringborkes Rinde auf PBR (11 Sätze); Bildfehler aus U5 behoben (doppelte Einfärbung, Datenkarten als sRGB, Streifen, bleichender Treffer-Flash, Nebel), Helligkeit und Grün wieder auf U3-Niveau **U5.4** (`luneraria/u5.4` = `4883d95`): Surface-Materialien für alle 146 Figurenmaterialien (Metalle metallisch, Randlicht, Struktur in den Porträts), SSAO (abschaltbar), Leistung −13 % Karte / −16 % Mid **U5.5-pilot** (`luneraria/u5.5-pilot` = `c386206`): Meshy-Figur für den Kohlenbeißer `g01` (Pipeline `tools/meshy/`, UV-Material mit Lava-Glut, Schatten ohne Normalen-Versatz), GPU-Batched-Skinning, Figuren-Stress −21 % Mid / −13 % Karte gegenüber Phase-4; **Lane-Fassung** (`luneraria/u5.5-lod`): 5.000-Dreiecke-LOD, Abstand −10 % Mid / −2 % Karte; **Schlackenklaue** `g02` (`luneraria/u5.5-g02`) als zweite Meshy-Figur, −11 % Mid / −1 % Karte; **Schlackenwacht** `g03` (`luneraria/u5.5-g03`), −8 % Mid / 0 % Karte; **Funkenlanze** `g05` mit Lanze als eigenem Modell (`luneraria/u5.5-g05`), +15 % gegenüber der Phase-18-Figur; **Glasballiste** `g06` als Maschine mit übernommenem Skelett (`luneraria/u5.5-g06`); **Aschenwerfer** `g07` (`luneraria/u5.5-g07`), −11 % Mid / +2 % Karte; **Kraterrufer** `g08` (`luneraria/u5.5-g08`), −9 % Mid / +10 % Karte; **Herdhüter** `g09` (`luneraria/u5.5-g09`), −4 % Mid / +6 % Karte; **Sonnenesse** `g10` (`luneraria/u5.5-g10`), +11 % Mid / +15 % Karte; **Basaltbastion** `g04` (`luneraria/u5.5-g04`): alle zehn Glutpakt-Truppen sind Meshy-Figuren | [U5-VISUAL.md](U5-VISUAL.md) |
QA je Meilenstein: [PORT-QA.md](PORT-QA.md). QA je Meilenstein: [PORT-QA.md](PORT-QA.md).

View file

@ -635,3 +635,23 @@ Stand 10. Oktober 2026, Zweig `luneraria/u5.5-g10` (auf `luneraria/u5.5-g09`). D
Stresstest mit 36 Sonnenessen (`-luneBenchmarkArmy g10`), je drei Läufe gegen das starre Phase-4-Modell (`logs/u5.5-g10/`): Mid-Lane nah 137,1 → 152,3 fps (+11 %), Karte 110,6 → 126,8 fps (+15 %); das Phase-4-Modell hatte 97.000 Dreiecke. Bilder: `screenshots/u5.5-g10/`. Stresstest mit 36 Sonnenessen (`-luneBenchmarkArmy g10`), je drei Läufe gegen das starre Phase-4-Modell (`logs/u5.5-g10/`): Mid-Lane nah 137,1 → 152,3 fps (+11 %), Karte 110,6 → 126,8 fps (+15 %); das Phase-4-Modell hatte 97.000 Dreiecke. Bilder: `screenshots/u5.5-g10/`.
Bekannt: Der Überwurf zwischen den Beinen hängt am Skelett der Beine und dehnt sich beim Gehen mit. Bekannt: Der Überwurf zwischen den Beinen hängt am Skelett der Beine und dehnt sich beim Gehen mit.
## U5.5 · Zehnte Figur: Basaltbastion (g04), Glutpakt vollständig
Stand 10. Oktober 2026, Zweig `luneraria/u5.5-g04` (auf `luneraria/u5.5-g10`). Die Aufwertung der Schlackenwacht. Wie bei der Funkenlanze ersetzt sie eine Skelettfigur (Phase 15, `basaltbastion`), die unter ihrem Namen im Projekt bleibt. Ein Konzeptbild aus Icon, Bild der Phase-15-Figur und dem Schlackenwacht-Konzept als Stilvorlage (12 Credits), Modell (30), Skelett mit 2,1 m wie die bisherige Figur (5), sieben Bewegungen (21): **68 Credits**. Figurendatei und Nahkampf-Clips sind von der Schlackenwacht übernommen.
- Entwurf: wandelnder Festungsgolem; Zinnentürme auf Schultern und Unterarmen mit glühenden Schießscharten, ein kleiner Torturm mit Lavaschlitz als Kopf, eine Schildmauer mit Goldkante und Lavaschlitz auf der Brust, Steinfäuste, Goldbeschläge an Knien und Füßen.
- `basaltbastion_meshy.fbx`: 20.180 + 4.998 Dreiecke, 25 Knochen; Export 23 Prüfungen, bytegleich wiederholbar. Manifest `"replaces": "g04"`.
- Der erste Unity-Start dieser Kette brach beim Öffnen einer Pipe mit einer Mono-Zusicherung ab (Dateideskriptor über dem Limit), während parallel ein Testlauf einer anderen Sitzung lief; der Neustart lief durch.
| Test | Ergebnis |
| --- | --- |
| EditMode / PlayMode | 29/29, 14/14, Verify A–I 718/0 |
| Fingerabdrücke | `DCE95C96556F3A1A`, `7B8E43AEFC0D60C5`, unverändert |
| Asset-Prüfung / Player-Selbsttest | 20/0, 30/30 |
Stresstest mit 36 Basaltbastionen (`-luneBenchmarkArmy g04`), je drei Läufe gegen die Phase-15-Figur (`logs/u5.5-g04/`): Mid-Lane nah 136,9 → 125,5 fps (−8 %), Karte 120,4 → 126,4 fps (+5 %). Die neue Figur ist mit 2,4 m Breite breiter als die alte (1,8 m); in der Aufstellung stehen die Bastionen dicht. Bilder: `screenshots/u5.5-g04/`.
### Stand der Glutpakt
Alle zehn Truppen der Glutpakt sind Meshy-Figuren (g01 bis g10, dazu die Heldin Funkenlanze über `g05`). Ausgegeben wurden dafür 726 Credits (Pilot 86, Funkenlanze 110, Glasballiste 54, die übrigen sieben je 68). Die Phase-4- und Phase-15/18/19-Modelle bleiben im Projekt; eine Zeile `replaces` im Manifest stellt die alte Figur wieder her.

View file

@ -1129,6 +1129,173 @@
] ]
} }
}, },
{
"id": "basaltbastion_meshy",
"kind": "skinned",
"ok": true,
"checks": [
{
"check": "blender_checks_passed",
"ok": true,
"detail": ""
},
{
"check": "imported",
"ok": true,
"detail": "\"Assets/Luneraria/Art/Characters/basaltbastion_meshy.fbx\""
},
{
"check": "import_rules_applied",
"ok": true,
"detail": ""
},
{
"check": "root_transform_identity",
"ok": true,
"detail": "\"basaltbastion_meshy pos (0.0000, 0.0000, 0.0000) rot (0.00, 0.00, 0.00) scale (1.0000, 1.0000, 1.0000)\""
},
{
"check": "node_transforms_axis_clean",
"ok": true,
"detail": "[]"
},
{
"check": "mesh_names",
"ok": true,
"detail": "[]"
},
{
"check": "triangles",
"ok": true,
"detail": "\"25178 unity / 25178 blender \""
},
{
"check": "material_slots",
"ok": true,
"detail": "[]"
},
{
"check": "normals_unit_length",
"ok": true,
"detail": "[]"
},
{
"check": "tangents_where_uv",
"ok": true,
"detail": "[]"
},
{
"check": "uvs_where_blender_has_uv",
"ok": true,
"detail": "[]"
},
{
"check": "vertex_colors",
"ok": true,
"detail": "[]"
},
{
"check": "bounds_axes_scale",
"ok": true,
"detail": "\"largest difference 0.00005 m; unity (-1.194, 0.000, -0.522) (1.194, 2.100, 0.524)\""
},
{
"check": "skinned_mesh",
"ok": true,
"detail": "2"
},
{
"check": "bone_names Basaltbastion_meshyBody_LOD0",
"ok": true,
"detail": "[]"
},
{
"check": "root_bone Basaltbastion_meshyBody_LOD0",
"ok": true,
"detail": "\"Root\""
},
{
"check": "bone_names Basaltbastion_meshyBody_LOD1",
"ok": true,
"detail": "[]"
},
{
"check": "root_bone Basaltbastion_meshyBody_LOD1",
"ok": true,
"detail": "\"Root\""
},
{
"check": "generic_avatar",
"ok": true,
"detail": "\"basaltbastion_meshyAvatar\""
},
{
"check": "clips",
"ok": true,
"detail": "[]"
}
],
"facts": {
"triangles": 25178,
"renderers": 2,
"meshes_without_uv_and_tangents": 0,
"degenerate_triangles_dropped": 0,
"bounds_min": [
-1.194001,
-4.58623581E-05,
-0.522353053
],
"bounds_max": [
1.19400084,
2.10000014,
0.524057269
],
"clips": [
{
"name": "ability",
"length": 1.20833337,
"loop": false,
"events": 1
},
{
"name": "attack_a",
"length": 1.04166663,
"loop": false,
"events": 1
},
{
"name": "attack_b",
"length": 1.0,
"loop": false,
"events": 1
},
{
"name": "death",
"length": 2.20833325,
"loop": false,
"events": 0
},
{
"name": "hit",
"length": 0.5,
"loop": false,
"events": 0
},
{
"name": "idle",
"length": 4.0,
"loop": true,
"events": 0
},
{
"name": "walk",
"length": 2.79166675,
"loop": true,
"events": 0
}
]
}
},
{ {
"id": "funkenlanze", "id": "funkenlanze",
"kind": "skinned", "kind": "skinned",

View file

@ -0,0 +1,15 @@
{
"build": "OSXPlayer player, 6000.3.20f1, release",
"device": "Mac17,2; Apple M5; Apple M5",
"graphics_api": "Metal",
"resolution": "1920x1080",
"vsync": 0,
"match": "seed 9 from round 5, army g04 x36, speed 1x, measured after 10 s of combat",
// moving units at the start of the first window: g04 36, w04 14, e04 12, w06 11, w02 7, e01 4, e02 4, w08 4, w10 4, g05 2
"windows": [
{"view": "overview (zoom 64)", "frames": 2567, "fps": 128.3, "frame_ms_avg": 7.79, "frame_ms_median": 3.21, "frame_ms_p95": 25.01, "frame_ms_p99": 31.50, "frame_ms_max": 45.68, "frames_over_16_7_ms": 417, "of_them_with_simulation_step": 60, "gc_collections": 24, "simulation_ms_per_frame": 0.091, "views_ms_per_frame": 0.205, "ui_ms_per_frame": 0.076, "units_alive_max": 98},
// timings overview (zoom 64): main thread avg 2.55 / median 2.45 / p95 3.59 ms, render thread avg 1.90 / median 1.90 / p95 2.28 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 5.23 / median 0.25 / p95 22.18 ms
{"view": "mid lane close (zoom 22)", "frames": 1277, "fps": 127.6, "frame_ms_avg": 7.84, "frame_ms_median": 3.41, "frame_ms_p95": 27.70, "frame_ms_p99": 37.89, "frame_ms_max": 46.02, "frames_over_16_7_ms": 202, "of_them_with_simulation_step": 32, "gc_collections": 11, "simulation_ms_per_frame": 0.079, "views_ms_per_frame": 0.195, "ui_ms_per_frame": 0.067, "units_alive_max": 71}
// timings mid lane close (zoom 22): main thread avg 2.14 / median 2.01 / p95 3.20 ms, render thread avg 1.55 / median 1.55 / p95 1.85 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 5.71 / median 0.64 / p95 25.60 ms
]
}

View file

@ -0,0 +1,15 @@
{
"build": "OSXPlayer player, 6000.3.20f1, release",
"device": "Mac17,2; Apple M5; Apple M5",
"graphics_api": "Metal",
"resolution": "1920x1080",
"vsync": 0,
"match": "seed 9 from round 5, army g04 x36, speed 1x, measured after 10 s of combat",
// moving units at the start of the first window: g04 36, w04 14, e04 12, w06 11, w02 7, e01 4, e02 4, w08 4, w10 4, g05 2
"windows": [
{"view": "overview (zoom 64)", "frames": 2496, "fps": 124.8, "frame_ms_avg": 8.01, "frame_ms_median": 3.30, "frame_ms_p95": 25.40, "frame_ms_p99": 33.19, "frame_ms_max": 41.92, "frames_over_16_7_ms": 436, "of_them_with_simulation_step": 28, "gc_collections": 24, "simulation_ms_per_frame": 0.093, "views_ms_per_frame": 0.225, "ui_ms_per_frame": 0.080, "units_alive_max": 98},
// timings overview (zoom 64): main thread avg 2.75 / median 2.64 / p95 3.80 ms, render thread avg 1.96 / median 1.93 / p95 2.43 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 5.26 / median 0.15 / p95 22.85 ms
{"view": "mid lane close (zoom 22)", "frames": 1246, "fps": 124.6, "frame_ms_avg": 8.03, "frame_ms_median": 3.60, "frame_ms_p95": 28.10, "frame_ms_p99": 36.10, "frame_ms_max": 44.40, "frames_over_16_7_ms": 215, "of_them_with_simulation_step": 11, "gc_collections": 11, "simulation_ms_per_frame": 0.075, "views_ms_per_frame": 0.199, "ui_ms_per_frame": 0.066, "units_alive_max": 71}
// timings mid lane close (zoom 22): main thread avg 2.21 / median 2.04 / p95 3.48 ms, render thread avg 1.46 / median 1.44 / p95 1.76 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 5.82 / median 1.02 / p95 25.95 ms
]
}

View file

@ -0,0 +1,15 @@
{
"build": "OSXPlayer player, 6000.3.20f1, release",
"device": "Mac17,2; Apple M5; Apple M5",
"graphics_api": "Metal",
"resolution": "1920x1080",
"vsync": 0,
"match": "seed 9 from round 5, army g04 x36, speed 1x, measured after 10 s of combat",
// moving units at the start of the first window: g04 36, w04 14, e04 12, w06 11, w02 7, e01 4, e02 4, w08 4, w10 4, g05 2
"windows": [
{"view": "overview (zoom 64)", "frames": 2523, "fps": 126.1, "frame_ms_avg": 7.93, "frame_ms_median": 3.30, "frame_ms_p95": 26.21, "frame_ms_p99": 34.51, "frame_ms_max": 41.65, "frames_over_16_7_ms": 422, "of_them_with_simulation_step": 33, "gc_collections": 24, "simulation_ms_per_frame": 0.092, "views_ms_per_frame": 0.212, "ui_ms_per_frame": 0.076, "units_alive_max": 98},
// timings overview (zoom 64): main thread avg 2.63 / median 2.50 / p95 3.71 ms, render thread avg 1.90 / median 1.88 / p95 2.36 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 5.29 / median 0.20 / p95 23.76 ms
{"view": "mid lane close (zoom 22)", "frames": 1243, "fps": 124.3, "frame_ms_avg": 8.05, "frame_ms_median": 3.30, "frame_ms_p95": 29.90, "frame_ms_p99": 37.20, "frame_ms_max": 45.30, "frames_over_16_7_ms": 208, "of_them_with_simulation_step": 21, "gc_collections": 11, "simulation_ms_per_frame": 0.070, "views_ms_per_frame": 0.186, "ui_ms_per_frame": 0.065, "units_alive_max": 71}
// timings mid lane close (zoom 22): main thread avg 2.10 / median 1.99 / p95 3.12 ms, render thread avg 1.41 / median 1.39 / p95 1.67 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 5.92 / median 0.86 / p95 27.72 ms
]
}

View file

@ -0,0 +1,15 @@
{
"build": "OSXPlayer player, 6000.3.20f1, release",
"device": "Mac17,2; Apple M5; Apple M5",
"graphics_api": "Metal",
"resolution": "1920x1080",
"vsync": 0,
"match": "seed 9 from round 5, army g04 x36, speed 1x, measured after 10 s of combat",
// moving units at the start of the first window: g04 36, w04 14, e04 12, w06 11, w02 7, e01 4, e02 4, w08 4, w10 4, g05 2
"windows": [
{"view": "overview (zoom 64)", "frames": 2439, "fps": 121.9, "frame_ms_avg": 8.20, "frame_ms_median": 3.49, "frame_ms_p95": 23.59, "frame_ms_p99": 30.22, "frame_ms_max": 39.50, "frames_over_16_7_ms": 393, "of_them_with_simulation_step": 16, "gc_collections": 24, "simulation_ms_per_frame": 0.098, "views_ms_per_frame": 0.221, "ui_ms_per_frame": 0.080, "units_alive_max": 98},
// timings overview (zoom 64): main thread avg 2.71 / median 2.61 / p95 3.80 ms, render thread avg 2.15 / median 2.13 / p95 2.66 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 5.48 / median 0.40 / p95 20.90 ms
{"view": "mid lane close (zoom 22)", "frames": 1374, "fps": 137.2, "frame_ms_avg": 7.29, "frame_ms_median": 3.00, "frame_ms_p95": 23.89, "frame_ms_p99": 31.99, "frame_ms_max": 39.99, "frames_over_16_7_ms": 173, "of_them_with_simulation_step": 12, "gc_collections": 11, "simulation_ms_per_frame": 0.068, "views_ms_per_frame": 0.196, "ui_ms_per_frame": 0.067, "units_alive_max": 71}
// timings mid lane close (zoom 22): main thread avg 2.16 / median 2.03 / p95 3.20 ms, render thread avg 1.67 / median 1.66 / p95 1.95 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 5.12 / median 0.32 / p95 21.87 ms
]
}

View file

@ -0,0 +1,15 @@
{
"build": "OSXPlayer player, 6000.3.20f1, release",
"device": "Mac17,2; Apple M5; Apple M5",
"graphics_api": "Metal",
"resolution": "1920x1080",
"vsync": 0,
"match": "seed 9 from round 5, army g04 x36, speed 1x, measured after 10 s of combat",
// moving units at the start of the first window: g04 36, w04 14, e04 12, w06 11, w02 7, e01 4, e02 4, w08 4, w10 4, g05 2
"windows": [
{"view": "overview (zoom 64)", "frames": 2409, "fps": 120.4, "frame_ms_avg": 8.30, "frame_ms_median": 3.60, "frame_ms_p95": 24.19, "frame_ms_p99": 31.11, "frame_ms_max": 40.41, "frames_over_16_7_ms": 406, "of_them_with_simulation_step": 53, "gc_collections": 24, "simulation_ms_per_frame": 0.099, "views_ms_per_frame": 0.222, "ui_ms_per_frame": 0.081, "units_alive_max": 98},
// timings overview (zoom 64): main thread avg 2.78 / median 2.61 / p95 4.03 ms, render thread avg 2.14 / median 2.10 / p95 2.69 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 5.52 / median 0.39 / p95 21.15 ms
{"view": "mid lane close (zoom 22)", "frames": 1389, "fps": 138.6, "frame_ms_avg": 7.22, "frame_ms_median": 3.01, "frame_ms_p95": 24.11, "frame_ms_p99": 32.60, "frame_ms_max": 40.60, "frames_over_16_7_ms": 173, "of_them_with_simulation_step": 19, "gc_collections": 11, "simulation_ms_per_frame": 0.068, "views_ms_per_frame": 0.190, "ui_ms_per_frame": 0.064, "units_alive_max": 71}
// timings mid lane close (zoom 22): main thread avg 2.08 / median 1.97 / p95 3.04 ms, render thread avg 1.66 / median 1.65 / p95 1.97 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 5.11 / median 0.35 / p95 21.93 ms
]
}

View file

@ -0,0 +1,15 @@
{
"build": "OSXPlayer player, 6000.3.20f1, release",
"device": "Mac17,2; Apple M5; Apple M5",
"graphics_api": "Metal",
"resolution": "1920x1080",
"vsync": 0,
"match": "seed 9 from round 5, army g04 x36, speed 1x, measured after 10 s of combat",
// moving units at the start of the first window: g04 36, w04 14, e04 12, w06 11, w02 7, e01 4, e02 4, w08 4, w10 4, g05 2
"windows": [
{"view": "overview (zoom 64)", "frames": 2381, "fps": 119.0, "frame_ms_avg": 8.40, "frame_ms_median": 3.41, "frame_ms_p95": 25.01, "frame_ms_p99": 28.51, "frame_ms_max": 47.79, "frames_over_16_7_ms": 449, "of_them_with_simulation_step": 16, "gc_collections": 24, "simulation_ms_per_frame": 0.095, "views_ms_per_frame": 0.219, "ui_ms_per_frame": 0.080, "units_alive_max": 98},
// timings overview (zoom 64): main thread avg 2.73 / median 2.64 / p95 3.79 ms, render thread avg 2.12 / median 2.09 / p95 2.69 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 5.67 / median 0.31 / p95 22.47 ms
{"view": "mid lane close (zoom 22)", "frames": 1350, "fps": 135.0, "frame_ms_avg": 7.41, "frame_ms_median": 3.21, "frame_ms_p95": 25.00, "frame_ms_p99": 34.68, "frame_ms_max": 45.60, "frames_over_16_7_ms": 182, "of_them_with_simulation_step": 11, "gc_collections": 11, "simulation_ms_per_frame": 0.061, "views_ms_per_frame": 0.191, "ui_ms_per_frame": 0.069, "units_alive_max": 71}
// timings mid lane close (zoom 22): main thread avg 2.15 / median 2.03 / p95 3.20 ms, render thread avg 1.58 / median 1.57 / p95 1.87 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 5.26 / median 0.27 / p95 23.00 ms
]
}

View file

@ -0,0 +1,11 @@
{
"build": "OSXPlayer player, 6000.3.20f1, release",
"device": "Mac17,2; Apple M5; Apple M5",
"graphics_api": "Metal",
"resolution": "1920x1080",
"seconds": 11.6,
"passed": ["Startbildschirm sichtbar", "Partie wartet: Spielcontroller und Treiber aus", "vor dem Start kein HUD", "„Allein spielen“ bedienbar", "Offline: Startbildschirm verborgen", "Offline: Spielcontroller und Treiber laufen", "Offline: HUD sichtbar", "Offline: neue Partie, Sitz 1 (Mid)", "Offline: Planung", "Offline: lokale Sitzung", "„Startaufstellung“ bedienbar", "Startaufstellung gekauft (3 Einheiten)", "„Bereit“ bedienbar", "Bereit: Kampf beginnt", "Kampf: Figuren im Feld", "„Menü“ bedienbar", "Verlassen-Dialog mit „Zum Menü“", "Zurück: Startbildschirm sichtbar", "Zurück: HUD verborgen", "Zurück: Spielcontroller und Treiber aus", "Zurück: Sitzung beendet", "Zurück: keine Figuren im Feld", "Zurück: Kamera ruht", "Zurück: „Allein spielen“ bedienbar", "Zweite Partie: Startbildschirm verborgen, HUD sichtbar", "Zweite Partie: neue Partie in der Planung", "SSAO folgt der Einstellung", "Option „Umgebungsverdeckung“ sichtbar", "Option schaltet SSAO um", "Option stellt SSAO zurück"],
"failed": [],
"photos": ["00-startbildschirm.jpg", "01-planung.jpg", "02-kampf.jpg", "03-verlassen.jpg", "04-zurueck-im-startbildschirm.jpg", "05-zweite-partie.jpg", "06-optionen.jpg"],
"result": "PASS"
}

View file

@ -0,0 +1,11 @@
{
"match": "seed 2, bots, speed 24x",
"core_hash": "DCE95C96556F3A1A",
"core_steps": 12690,
"runs": [
{"target": "30 fps", "frames": 816, "seconds": 27.178, "measured_fps": 30.025, "max_steps_per_frame": 20, "steps": 12690, "hash": "DCE95C96556F3A1A", "winner": 1, "same_as_core": true},
{"target": "60 fps", "frames": 1623, "seconds": 27.1, "measured_fps": 59.889, "max_steps_per_frame": 19, "steps": 12690, "hash": "DCE95C96556F3A1A", "winner": 1, "same_as_core": true},
{"target": "120 fps", "frames": 3219, "seconds": 26.931, "measured_fps": 119.527, "max_steps_per_frame": 10, "steps": 12690, "hash": "DCE95C96556F3A1A", "winner": 1, "same_as_core": true},
{"target": "unlimited", "frames": 62848, "seconds": 26.868, "measured_fps": 2339.159, "max_steps_per_frame": 10, "steps": 12690, "hash": "DCE95C96556F3A1A", "winner": 1, "same_as_core": true}
]
}

View file

@ -0,0 +1,16 @@
{
"runs": [
{"label": "match-seed2", "seed": 2, "start_round": 1, "extra_gold": 0, "speed": 6, "winner": 1, "end_note": "Ancient von Blau zerstört.", "steps": 12690, "hash": "DCE95C96556F3A1A", "core_hash": "DCE95C96556F3A1A", "same_as_core": true,
"units_alive_max": 84, "heroes_alive_max": 4, "boss_log": ["round 8: won team 1 ", "round 9: deployed team 1 bot"],
"rounds": [{"round": 1, "combat_seconds": 44.9, "lost": [], "boss": "none", "end": "cleared"}, {"round": 2, "combat_seconds": 57.1, "lost": [], "boss": "none", "end": "cleared"}, {"round": 3, "combat_seconds": 54.1, "lost": [], "boss": "none", "end": "cleared"}, {"round": 4, "combat_seconds": 62.9, "lost": [], "boss": "none", "end": "cleared"}, {"round": 5, "combat_seconds": 60.7, "lost": [], "boss": "none", "end": "cleared"}, {"round": 6, "combat_seconds": 62.1, "lost": [], "boss": "none", "end": "cleared"}, {"round": 7, "combat_seconds": 66.5, "lost": ["blau_bot_outer"], "boss": "none", "end": "cleared"}, {"round": 8, "combat_seconds": 89.65, "lost": ["rot_top_outer", "rot_top_inner"], "boss": "won", "end": "cleared"}, {"round": 9, "combat_seconds": 136.55, "lost": ["blau_bot_inner", "blau_base_2", "blau_base_1", "blau_ancient"], "boss": "deployed", "end": "core"}],
"events": ["round 7: blau_bot_outer destroyed", "round 8: rot_top_outer destroyed", "round 8: rot_top_inner destroyed", "round 8: grotto boss won", "round 9: blau_bot_inner destroyed", "round 9: blau_base_2 destroyed", "round 9: blau_base_1 destroyed", "round 9: blau_ancient destroyed", "round 9: grotto boss deployed"],
"shots": ["01-runde1-aufmarsch", "02-runde1-mid-kampf", "03-turm-faellt", "04-turm-ruine", "05-grotte-bosskampf", "06-held-kaempft", "07-boss-auf-der-lane", "08-ancient-faellt", "09-ancient-ruine", "10-ende-uebersicht"],
"performance": null},
{"label": "match-seed9-round21", "seed": 9, "start_round": 21, "extra_gold": 4000, "speed": 6, "winner": 0, "end_note": "Ancient von Rot zerstört.", "steps": 4195, "hash": "7B8E43AEFC0D60C5", "core_hash": "7B8E43AEFC0D60C5", "same_as_core": true,
"units_alive_max": 125, "heroes_alive_max": 6, "boss_log": [],
"rounds": [{"round": 21, "combat_seconds": 121.8, "lost": ["rot_mid_outer", "rot_top_outer", "rot_mid_inner"], "boss": "none", "end": "cleared"}, {"round": 22, "combat_seconds": 87.95, "lost": ["rot_top_inner", "rot_base_1", "blau_bot_outer", "rot_base_2", "rot_ancient"], "boss": "none", "end": "core"}],
"events": ["round 21: rot_mid_outer destroyed", "round 21: rot_top_outer destroyed", "round 21: rot_mid_inner destroyed", "round 22: rot_top_inner destroyed", "round 22: rot_base_1 destroyed", "round 22: blau_bot_outer destroyed", "round 22: rot_base_2 destroyed", "round 22: rot_ancient destroyed"],
"shots": ["11-welle21-uebersicht", "12-welle21-kampf", "13-ancient-rot-faellt", "14-welle-ende"],
"performance": {"window": "20 s real time at 1x speed, unlimited frame rate, round 21", "frames": 49024, "fps": 2451.161, "frame_ms_avg": 0.408, "frame_ms_p95": 0.415, "simulation_ms_per_frame": 0.004, "views_ms_per_frame": 0.128, "units_alive_max": 116}}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 547 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 609 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 623 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 623 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 593 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 651 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 602 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 581 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 717 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 727 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 720 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 724 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 675 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 699 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 672 KiB

View file

@ -1992,6 +1992,51 @@
"death" "death"
] ]
} }
},
{
"id": "basaltbastion_meshy",
"group": "Characters",
"kind": "skinned",
"representative": "U5.5 series: Basaltbastion (g04) from Meshy, replaces the phase-15 skinned figure",
"source": "tools/meshy/build_figure.py",
"source_root": "unity",
"generator": {
"args": [
"tools/meshy/g04/figure.json"
],
"inputs": [
"tools/meshy/g04/figure.json",
"assets-source/meshy/g04/basaltbastion-skelett.glb",
"assets-source/meshy/g04/basaltbastion-animationen.glb"
]
},
"replaces": "g04",
"expect": {
"triangles": 25178,
"bones": 25,
"clips": [
"idle",
"walk",
"attack_a",
"attack_b",
"hit",
"ability",
"death"
]
},
"rules": {
"rest_action": null,
"root_bone": "Root",
"required_clips": [
"idle",
"walk",
"attack_a",
"attack_b",
"hit",
"ability",
"death"
]
}
} }
], ],
"aliases": { "aliases": {

View file

@ -0,0 +1,10 @@
{
"ai_model": "gpt-image-2",
"prompt": "Full-body concept of the creature in the first two references for a 3D fantasy strategy game, painted in exactly the same art style and materials as the third reference (its weaker form). The Basaltbastion, a huge walking fortress golem of grey-black basalt blocks: its shoulders and forearms are crenellated tower tops with battlements and narrow arrow-slit windows glowing molten orange, framed with worn gold; its head is a small fortified gate tower with a glowing orange slit visor; its chest is a tall tower-shield wall with gold edging and a glowing vertical lava slit; massive blocky rock fists, thick legs with gold knee guards and broad stone feet. Stylized realism, hand-sculpted detailed forms, chunky readable silhouette. Standing in a symmetric A-pose, front view, arms held away from the body, legs apart, entire figure visible head to feet, centered. Plain light grey background, soft even studio light, no ground shadow, no text.",
"aspect_ratio": "1:1",
"reference_image_urls": [
"@../saumwacht-godot/assets-source/phase3/masters/glutpakt/unit_g04_basaltbastion_icon.png",
"@tools/meshy/g04/ref-g04-basaltbastion.png",
"@assets-source/meshy/g03/schlackenwacht-konzept.png"
]
}

View file

@ -0,0 +1,16 @@
{
"input_task_id": "01a12678-a162-7733-a1fc-f52c7f112129",
"ai_model": "latest",
"should_texture": true,
"enable_pbr": true,
"texture_resolution": "2k",
"should_remesh": true,
"topology": "triangle",
"target_polycount": 20000,
"save_pre_remeshed_model": true,
"pose_mode": "a-pose",
"target_formats": [
"glb"
],
"multi_view_thumbnails": true
}

View file

@ -0,0 +1,4 @@
{
"input_task_id": "01a12679-cccc-7327-a0b9-474f8c157591",
"height_meters": 2.1
}

View file

@ -0,0 +1,4 @@
{
"rig_task_id": "01a1267c-c3ed-74d1-b1cc-9a4404f0fafb",
"action_ids": [0, 119, 219, 214, 178, 127, 189]
}

View file

@ -0,0 +1,21 @@
{
"id": "basaltbastion_meshy",
"replaces": "g04",
"rig": "assets-source/meshy/g04/basaltbastion-skelett.glb",
"animations": "assets-source/meshy/g04/basaltbastion-animationen.glb",
"material": "AI_Basaltbastion",
"textures": "Assets/Luneraria/Art/Textures/ai-basaltbastion",
"root_bone": "Root",
"glow": {"hue": [0, 42], "saturation": 0.6, "value": 0.5, "metal_below": 0.5},
"lod": {"triangles": 5000, "sharp_degrees": 50, "lod0_screen": 0.2},
"palette": {"rock": {"color": "41434b", "strength": 0.8}, "metal": {"color": "c99645", "strength": 1.0}},
"clips": {
"idle": {"source": "Idle", "loop": true},
"walk": {"source": "Slow_Orc_Walk", "seconds": 2.8, "loop": true},
"attack_a": {"source": "Right_Hand_Sword_Slash", "frames": [0, 36], "seconds": 1.05, "contact_frame": 14},
"attack_b": {"source": "Punch_Forward_with_Both_Fists", "frames": [18, 56], "seconds": 1.0, "contact_frame": 36},
"hit": {"source": "Hit_Reaction", "frames": [0, 12], "seconds": 0.5},
"ability": {"source": "Charged_Ground_Slam", "frames": [6, 64], "seconds": 1.2, "contact_frame": 41},
"death": {"source": "dying_backwards"}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 MiB

View file

@ -0,0 +1,20 @@
{
"id": "01a1267d-2b8e-7514-bcf6-cef8d86a5c91",
"type": "animate",
"name": "",
"status": "SUCCEEDED",
"created_at": 1791647100043,
"progress": 100,
"started_at": 1791647100050,
"finished_at": 1791647120519,
"expires_at": 1791906320519,
"task_error": null,
"result": {
"animation_glb_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a1267d-2b8e-7514-bcf6-cef8d86a5c91/output/merged_animations.glb",
"animation_fbx_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a1267d-2b8e-7514-bcf6-cef8d86a5c91/output/merged_animations.fbx",
"processed_usdz_url": "",
"processed_armature_fbx_url": "",
"processed_animation_fps_fbx_url": ""
},
"consumed_credits": 21
}

View file

@ -0,0 +1,16 @@
{
"id": "01a12678-a162-7733-a1fc-f52c7f112129",
"type": "image-to-image",
"ai_model": "gpt-image-2",
"prompt": "Full-body concept of the creature in the first two references for a 3D fantasy strategy game, painted in exactly the same art style and materials as the third reference (its weaker form). The Basaltbastion, a huge walking fortress golem of grey-black basalt blocks: its shoulders and forearms are crenellated tower tops with battlements and narrow arrow-slit windows glowing molten orange, framed with worn gold; its head is a small fortified gate tower with a glowing orange slit visor; its chest is a tall tower-shield wall with gold edging and a glowing vertical lava slit; massive blocky rock fists, thick legs with gold knee guards and broad stone feet. Stylized realism, hand-sculpted detailed forms, chunky readable silhouette. Standing in a symmetric A-pose, front view, arms held away from the body, legs apart, entire figure visible head to feet, centered. Plain light grey background, soft even studio light, no ground shadow, no text.",
"status": "SUCCEEDED",
"progress": 100,
"created_at": 1791646804705,
"started_at": 1791646804720,
"finished_at": 1791646844905,
"expires_at": 1791906044905,
"image_urls": [
"https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/uploads/image_01a12678-a162-7733-a1fc-f52c7f112129_0.png"
],
"consumed_credits": 12
}

View file

@ -0,0 +1,41 @@
{
"id": "01a12679-cccc-7327-a0b9-474f8c157591",
"type": "image-to-3d",
"name": "",
"art_style": "",
"object_prompt": "",
"style_prompt": "",
"negative_prompt": "",
"texture_prompt": "",
"texture_image_url": "",
"text_style_prompt": "",
"image_style_url": "",
"status": "SUCCEEDED",
"created_at": 1791646879446,
"progress": 100,
"started_at": 1791646879458,
"finished_at": 1791647062088,
"expires_at": 1791906262088,
"task_error": null,
"model_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12679-cccc-7327-a0b9-474f8c157591/output/model.glb",
"model_urls": {
"glb": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12679-cccc-7327-a0b9-474f8c157591/output/model.glb",
"pre_remeshed_glb": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12679-cccc-7327-a0b9-474f8c157591/output/pre_remeshed_model.glb"
},
"thumbnail_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12679-cccc-7327-a0b9-474f8c157591/output/preview.png",
"thumbnail_urls": {
"back": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12679-cccc-7327-a0b9-474f8c157591/output/preview_back.png",
"front": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12679-cccc-7327-a0b9-474f8c157591/output/preview_front.png",
"left": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12679-cccc-7327-a0b9-474f8c157591/output/preview_left.png",
"right": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12679-cccc-7327-a0b9-474f8c157591/output/preview_right.png"
},
"texture_urls": [
{
"base_color": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12679-cccc-7327-a0b9-474f8c157591/output/texture_0.png",
"metallic": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12679-cccc-7327-a0b9-474f8c157591/output/texture_0_metallic.png",
"roughness": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12679-cccc-7327-a0b9-474f8c157591/output/texture_0_roughness.png",
"normal": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a12679-cccc-7327-a0b9-474f8c157591/output/texture_0_normal.png"
}
],
"consumed_credits": 30
}

View file

@ -0,0 +1,25 @@
{
"id": "01a1267c-c3ed-74d1-b1cc-9a4404f0fafb",
"type": "rig",
"name": "",
"status": "SUCCEEDED",
"created_at": 1791647076729,
"progress": 100,
"started_at": 1791647076736,
"finished_at": 1791647093049,
"expires_at": 1791906293049,
"task_error": null,
"result": {
"rigged_character_fbx_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a1267c-c3ed-74d1-b1cc-9a4404f0fafb/output/Character_output.fbx",
"rigged_character_glb_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a1267c-c3ed-74d1-b1cc-9a4404f0fafb/output/Character_output.glb",
"basic_animations": {
"walking_glb_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a1267c-c3ed-74d1-b1cc-9a4404f0fafb/output/Animation_Walking_withSkin.glb",
"walking_fbx_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a1267c-c3ed-74d1-b1cc-9a4404f0fafb/output/Animation_Walking_withSkin.fbx",
"walking_armature_glb_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a1267c-c3ed-74d1-b1cc-9a4404f0fafb/output/Animation_Walking_withSkin_armature.glb",
"running_glb_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a1267c-c3ed-74d1-b1cc-9a4404f0fafb/output/Animation_Running_withSkin.glb",
"running_fbx_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a1267c-c3ed-74d1-b1cc-9a4404f0fafb/output/Animation_Running_withSkin.fbx",
"running_armature_glb_url": "https://assets.meshy.ai/c8cdc243-64e1-4e9d-9fa1-3bd5ed731d84/tasks/01a1267c-c3ed-74d1-b1cc-9a4404f0fafb/output/Animation_Running_withSkin_armature.glb"
}
},
"consumed_credits": 5
}