Compare commits
4 commits
luneraria/
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
55effca874 | ||
|
|
7b86973197 | ||
|
|
542a9646c8 | ||
|
|
cbff678290 |
596
Assets/Luneraria/Art/Characters/brunhild.export.json
Normal file
|
|
@ -0,0 +1,596 @@
|
||||||
|
{
|
||||||
|
"id": "brunhild",
|
||||||
|
"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": "['BrunhildBody_LOD0', 'BrunhildBody_LOD1', 'BrunhildSpeer_LOD0', 'BrunhildSpeer_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": "28706 fbx / 28706 godot"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "one_armature",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "['BrunhildRig']"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "28706 / 28706"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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', 'ultimate', 'walk']"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"generator": {
|
||||||
|
"clips": {
|
||||||
|
"idle": {
|
||||||
|
"source": "Idle",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
96.0
|
||||||
|
],
|
||||||
|
"seconds": 4.0,
|
||||||
|
"loop": true,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
"walk": {
|
||||||
|
"source": "Walk_Fight_Forward",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
40.0
|
||||||
|
],
|
||||||
|
"seconds": 1.2917,
|
||||||
|
"loop": true,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
"attack_a": {
|
||||||
|
"source": "Thrust_Slash",
|
||||||
|
"frames": [
|
||||||
|
4,
|
||||||
|
30
|
||||||
|
],
|
||||||
|
"seconds": 0.9583,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.516
|
||||||
|
},
|
||||||
|
"attack_b": {
|
||||||
|
"source": "Charged_Upward_Slash",
|
||||||
|
"frames": [
|
||||||
|
0,
|
||||||
|
45
|
||||||
|
],
|
||||||
|
"seconds": 1.0,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.5556
|
||||||
|
},
|
||||||
|
"hit": {
|
||||||
|
"source": "Hit_Reaction",
|
||||||
|
"frames": [
|
||||||
|
0,
|
||||||
|
14
|
||||||
|
],
|
||||||
|
"seconds": 0.5,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
"ability": {
|
||||||
|
"source": "Over_Shoulder_Throw",
|
||||||
|
"frames": [
|
||||||
|
50,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"seconds": 1.0,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.64
|
||||||
|
},
|
||||||
|
"death": {
|
||||||
|
"source": "Shot_and_Fall_Backward",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
84.0
|
||||||
|
],
|
||||||
|
"seconds": 2.4167,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
},
|
||||||
|
"ultimate": {
|
||||||
|
"source": "Basic_Jump",
|
||||||
|
"frames": [
|
||||||
|
20,
|
||||||
|
80
|
||||||
|
],
|
||||||
|
"seconds": 1.2917,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.775
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"textures": {
|
||||||
|
"glow_share": 0.0,
|
||||||
|
"palette_gains": {},
|
||||||
|
"size": [
|
||||||
|
2048,
|
||||||
|
2048
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"unit": 0.009999999776482582,
|
||||||
|
"lod": {
|
||||||
|
"lod0_triangles": 20663,
|
||||||
|
"lod1_triangles": 4999,
|
||||||
|
"lod1_vertices": 2468,
|
||||||
|
"welded_triangles": 20663,
|
||||||
|
"lod0_screen": 0.2
|
||||||
|
},
|
||||||
|
"props": [
|
||||||
|
{
|
||||||
|
"name": "BrunhildSpeer",
|
||||||
|
"triangles": 2545,
|
||||||
|
"textures": {
|
||||||
|
"glow_share": 0.0,
|
||||||
|
"palette_gains": {},
|
||||||
|
"size": [
|
||||||
|
2048,
|
||||||
|
2048
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"lod": {
|
||||||
|
"lod0_triangles": 2545,
|
||||||
|
"lod1_triangles": 499,
|
||||||
|
"lod1_vertices": 252,
|
||||||
|
"welded_triangles": 2545,
|
||||||
|
"lod0_screen": 0.2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"inputs_sha256": {
|
||||||
|
"tools/meshy/brunhild/figure.json": "19ccf5ca996bba99f8681c8b02ce221f7700175f7d66b820c5a953017e2305d9",
|
||||||
|
"assets-source/meshy/brunhild/brunhild-skelett.glb": "f089ffcec953c76f03997cdc19f3eb2f126b7199e9698e4e0a9d5654fca1dd18",
|
||||||
|
"assets-source/meshy/brunhild/brunhild-animationen.glb": "aca3433fec67155457f05046880e30772f9fba21ff1789912acf700f26ca7bfc",
|
||||||
|
"assets-source/meshy/brunhild/brunhild-speer.glb": "a7637375a32752913dc3929fe099d3c6e2e5d75a0f0665d0244af1637459f364"
|
||||||
|
},
|
||||||
|
"source_sha256": "5a0df3fc4ab4228c0b631a038098db9e79c833ae69ddd2457a8062eb1b493283",
|
||||||
|
"removed_modifiers": 0,
|
||||||
|
"kind": "skinned",
|
||||||
|
"fps": 24.0,
|
||||||
|
"objects": 5,
|
||||||
|
"meshes": {
|
||||||
|
"BrunhildBody_LOD0": {
|
||||||
|
"mesh": "BrunhildBody_LOD0",
|
||||||
|
"triangles": 20663,
|
||||||
|
"vertices": 28942,
|
||||||
|
"ngons": 0,
|
||||||
|
"materials": [
|
||||||
|
"AI_Brunhild"
|
||||||
|
],
|
||||||
|
"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": [
|
||||||
|
-0.4473,
|
||||||
|
0.0,
|
||||||
|
-0.2325
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
0.4473,
|
||||||
|
1.8,
|
||||||
|
0.2325
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BrunhildSpeer_LOD0": {
|
||||||
|
"mesh": "BrunhildSpeer_LOD0",
|
||||||
|
"triangles": 2545,
|
||||||
|
"vertices": 3856,
|
||||||
|
"ngons": 0,
|
||||||
|
"materials": [
|
||||||
|
"AI_BrunhildSpeer"
|
||||||
|
],
|
||||||
|
"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": [
|
||||||
|
0.1895,
|
||||||
|
0.7103,
|
||||||
|
-0.6358
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
0.5065,
|
||||||
|
1.2324,
|
||||||
|
1.2914
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BrunhildBody_LOD1": {
|
||||||
|
"mesh": "BrunhildBody_LOD1",
|
||||||
|
"triangles": 4999,
|
||||||
|
"vertices": 2468,
|
||||||
|
"ngons": 0,
|
||||||
|
"materials": [
|
||||||
|
"AI_Brunhild"
|
||||||
|
],
|
||||||
|
"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": [
|
||||||
|
-0.4478,
|
||||||
|
0.0007,
|
||||||
|
-0.2335
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
0.4466,
|
||||||
|
1.8008,
|
||||||
|
0.2343
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BrunhildSpeer_LOD1": {
|
||||||
|
"mesh": "BrunhildSpeer_LOD1",
|
||||||
|
"triangles": 499,
|
||||||
|
"vertices": 252,
|
||||||
|
"ngons": 0,
|
||||||
|
"materials": [
|
||||||
|
"AI_BrunhildSpeer"
|
||||||
|
],
|
||||||
|
"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": [
|
||||||
|
0.189,
|
||||||
|
0.7108,
|
||||||
|
-0.6379
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
0.5086,
|
||||||
|
1.2317,
|
||||||
|
1.2931
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"armatures": {
|
||||||
|
"BrunhildRig": {
|
||||||
|
"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": [
|
||||||
|
-0.4478,
|
||||||
|
0.0,
|
||||||
|
-0.6379
|
||||||
|
],
|
||||||
|
"max": [
|
||||||
|
0.5086,
|
||||||
|
1.8008,
|
||||||
|
1.2931
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"clips": [
|
||||||
|
{
|
||||||
|
"name": "ability",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
24.0
|
||||||
|
],
|
||||||
|
"seconds": 1.0,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.64
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "attack_a",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
23.0
|
||||||
|
],
|
||||||
|
"seconds": 0.9583,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.516
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "attack_b",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
24.0
|
||||||
|
],
|
||||||
|
"seconds": 1.0,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.5556
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "death",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
58.0
|
||||||
|
],
|
||||||
|
"seconds": 2.4167,
|
||||||
|
"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": "ultimate",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
31.0
|
||||||
|
],
|
||||||
|
"seconds": 1.2917,
|
||||||
|
"loop": false,
|
||||||
|
"contact_seconds": 0.775
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "walk",
|
||||||
|
"frames": [
|
||||||
|
0.0,
|
||||||
|
31.0
|
||||||
|
],
|
||||||
|
"seconds": 1.2917,
|
||||||
|
"loop": true,
|
||||||
|
"contact_seconds": -1.0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"expected_from_godot": {
|
||||||
|
"triangles": 28706,
|
||||||
|
"bones": 25,
|
||||||
|
"clips": [
|
||||||
|
"idle",
|
||||||
|
"walk",
|
||||||
|
"attack_a",
|
||||||
|
"attack_b",
|
||||||
|
"hit",
|
||||||
|
"ability",
|
||||||
|
"death",
|
||||||
|
"ultimate"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"meshes_with_ngons": {},
|
||||||
|
"meshes_without_uv": [],
|
||||||
|
"triangles": 28706,
|
||||||
|
"fbx": "Assets/Luneraria/Art/Characters/brunhild.fbx",
|
||||||
|
"fbx_bytes": 3796828,
|
||||||
|
"ok": true
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 76fa6bac90ff045589eba33ed23ef0dd
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Characters/brunhild.fbx
Normal file
373
Assets/Luneraria/Art/Characters/brunhild.fbx.meta
Normal file
|
|
@ -0,0 +1,373 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 29d894f788c5f4fbbacf819091c19542
|
||||||
|
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: BrunhildRig|ability
|
||||||
|
internalID: 3282932801577121271
|
||||||
|
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.64
|
||||||
|
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: BrunhildRig|attack_a
|
||||||
|
internalID: -4088893210095135303
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 23
|
||||||
|
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.5384535
|
||||||
|
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: BrunhildRig|attack_b
|
||||||
|
internalID: -3393105429929367649
|
||||||
|
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.5556
|
||||||
|
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: BrunhildRig|death
|
||||||
|
internalID: -575409383583182742
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 58
|
||||||
|
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: BrunhildRig|hit
|
||||||
|
internalID: 4649535545551490279
|
||||||
|
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: BrunhildRig|idle
|
||||||
|
internalID: -7637435868926338065
|
||||||
|
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: ultimate
|
||||||
|
takeName: BrunhildRig|ultimate
|
||||||
|
internalID: 7528617810713444434
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 31
|
||||||
|
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.5999845
|
||||||
|
functionName: OnLuneContact
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {instanceID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
|
transformMask: []
|
||||||
|
maskType: 3
|
||||||
|
maskSource: {instanceID: 0}
|
||||||
|
additiveReferencePoseFrame: 0
|
||||||
|
- serializedVersion: 16
|
||||||
|
name: walk
|
||||||
|
takeName: BrunhildRig|walk
|
||||||
|
internalID: -759485606388579005
|
||||||
|
firstFrame: 0
|
||||||
|
lastFrame: 31
|
||||||
|
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:
|
||||||
275
Assets/Luneraria/Art/Generated/brunhild.controller
Normal file
|
|
@ -0,0 +1,275 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1102 &-9220055677375747029
|
||||||
|
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: -759485606388579005, guid: 29d894f788c5f4fbbacf819091c19542, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &-4719041364407145157
|
||||||
|
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: -575409383583182742, guid: 29d894f788c5f4fbbacf819091c19542, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &-3340885724969997654
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: ultimate
|
||||||
|
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: 7528617810713444434, guid: 29d894f788c5f4fbbacf819091c19542, 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: brunhild
|
||||||
|
serializedVersion: 5
|
||||||
|
m_AnimatorParameters: []
|
||||||
|
m_AnimatorLayers:
|
||||||
|
- serializedVersion: 5
|
||||||
|
m_Name: Base Layer
|
||||||
|
m_StateMachine: {fileID: 4919687160989328924}
|
||||||
|
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 &604826683839612195
|
||||||
|
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: 3282932801577121271, guid: 29d894f788c5f4fbbacf819091c19542, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &3419020185831067391
|
||||||
|
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: -4088893210095135303, guid: 29d894f788c5f4fbbacf819091c19542, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &4117362530366511861
|
||||||
|
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: 4649535545551490279, guid: 29d894f788c5f4fbbacf819091c19542, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &4353629903250305412
|
||||||
|
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: -3393105429929367649, guid: 29d894f788c5f4fbbacf819091c19542, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1107 &4919687160989328924
|
||||||
|
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: 6833392093826740936}
|
||||||
|
m_Position: {x: 200, y: 0, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 604826683839612195}
|
||||||
|
m_Position: {x: 235, y: 65, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 3419020185831067391}
|
||||||
|
m_Position: {x: 270, y: 130, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 4353629903250305412}
|
||||||
|
m_Position: {x: 305, y: 195, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: -4719041364407145157}
|
||||||
|
m_Position: {x: 340, y: 260, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 4117362530366511861}
|
||||||
|
m_Position: {x: 375, y: 325, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: -3340885724969997654}
|
||||||
|
m_Position: {x: 410, y: 390, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: -9220055677375747029}
|
||||||
|
m_Position: {x: 445, y: 455, 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: 6833392093826740936}
|
||||||
|
--- !u!1102 &6833392093826740936
|
||||||
|
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: -7637435868926338065, guid: 29d894f788c5f4fbbacf819091c19542, type: 3}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
8
Assets/Luneraria/Art/Generated/brunhild.controller.meta
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8f779b941008d48fea9cfb256567bb9d
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 9100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-brunhild-albedo-2k.png
Normal file
|
After Width: | Height: | Size: 6.5 MiB |
117
Assets/Luneraria/Art/Textures/ai-brunhild-albedo-2k.png.meta
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0dbeeb8c48f344e64962b71d5e9fcca1
|
||||||
|
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:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-brunhild-normal-2k.png
Normal file
|
After Width: | Height: | Size: 6.1 MiB |
117
Assets/Luneraria/Art/Textures/ai-brunhild-normal-2k.png.meta
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f701c67235f354e4dac0ee3235b94b3d
|
||||||
|
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:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-brunhild-orm-2k.png
Normal file
|
After Width: | Height: | Size: 3.3 MiB |
117
Assets/Luneraria/Art/Textures/ai-brunhild-orm-2k.png.meta
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1722b2d9a084347b8845372bf878a61f
|
||||||
|
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:
|
||||||
|
After Width: | Height: | Size: 6.8 MiB |
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ed6f51893270d4a81a491e1b895a5815
|
||||||
|
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:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-brunhildspeer-albedo-2k.png
Normal file
|
After Width: | Height: | Size: 5.2 MiB |
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 336afb236cf9f438dae9687f76420327
|
||||||
|
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:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-brunhildspeer-normal-2k.png
Normal file
|
After Width: | Height: | Size: 5 MiB |
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9b19528e38c1f468a8dfb54927968778
|
||||||
|
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:
|
||||||
BIN
Assets/Luneraria/Art/Textures/ai-brunhildspeer-orm-2k.png
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
117
Assets/Luneraria/Art/Textures/ai-brunhildspeer-orm-2k.png.meta
Normal file
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cf3a5ed7600ba42349191e05cfe011e8
|
||||||
|
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:
|
||||||
|
After Width: | Height: | Size: 5.6 MiB |
|
|
@ -0,0 +1,117 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1fadc4bab123948b3b3f54a2fe52173a
|
||||||
|
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:
|
||||||
|
|
@ -60,7 +60,13 @@ namespace Luneraria.Core
|
||||||
new HeroSpec { Id = "held_sylvara", Name = "Sylvara", Title = "Die Mondklinge", Model = "sylvara", Cost = 260, RoleText = "Assassine / Nahkampf", Provisional = false, Summary = "Springt in die zweite Reihe, wirft Sicheln und wirbelt mit dem Mondsicheltanz durch Gruppen.",
|
new HeroSpec { Id = "held_sylvara", Name = "Sylvara", Title = "Die Mondklinge", Model = "sylvara", Cost = 260, RoleText = "Assassine / Nahkampf", Provisional = false, Summary = "Springt in die zweite Reihe, wirft Sicheln und wirbelt mit dem Mondsicheltanz durch Gruppen.",
|
||||||
PassiveText = "Mondsprung: einmal pro Kampf auf den nächsten Fernkämpfer oder Unterstützer in 8 m, der höchstens 2 Begleiter in 3 m hat. Der erste Treffer danach macht 150 % Schaden; Mondschleier schützt 4 s mit 25 % ihrer Lebenspunkte.",
|
PassiveText = "Mondsprung: einmal pro Kampf auf den nächsten Fernkämpfer oder Unterstützer in 8 m, der höchstens 2 Begleiter in 3 m hat. Der erste Treffer danach macht 150 % Schaden; Mondschleier schützt 4 s mit 25 % ihrer Lebenspunkte.",
|
||||||
AbilityText = "Sichelwurf: ab 4 s alle 6 s 90 % Schaden an ihrem Ziel und bis zu 2 weiteren Gegnern in 2,5 m.",
|
AbilityText = "Sichelwurf: ab 4 s alle 6 s 90 % Schaden an ihrem Ziel und bis zu 2 weiteren Gegnern in 2,5 m.",
|
||||||
UltimateName = "Mondsicheltanz", UltimateText = "Einmal pro Kampf, frühestens nach 2 s: 220 % Schaden an bis zu 5 Gegnern in 5 m, die 2 s um 30 % verlangsamt werden; danach Mondschleier. Wann er ausgelöst wird, legst du in der Planung fest.", Base = new UnitDef { MaxHp = 1450.0, Damage = 42.0, AttackType = 0, ArmorType = 0, AttackRange = 1.2, Speed = 2.8, Ability = "sylvara", AbilityDescription = "Mondsprung auf ungeschützte Fernkämpfer · Sichelwurf alle 6 s · Ultimate Mondsicheltanz nach Planungsregel." } }
|
UltimateName = "Mondsicheltanz", UltimateText = "Einmal pro Kampf, frühestens nach 2 s: 220 % Schaden an bis zu 5 Gegnern in 5 m, die 2 s um 30 % verlangsamt werden; danach Mondschleier. Wann er ausgelöst wird, legst du in der Planung fest.", Base = new UnitDef { MaxHp = 1450.0, Damage = 42.0, AttackType = 0, ArmorType = 0, AttackRange = 1.2, Speed = 2.8, Ability = "sylvara", AbilityDescription = "Mondsprung auf ungeschützte Fernkämpfer · Sichelwurf alle 6 s · Ultimate Mondsicheltanz nach Planungsregel." } },
|
||||||
|
// H2: Brunhild, the second hero of the champions concept.
|
||||||
|
new HeroSpec { Id = "held_brunhild", Name = "Brunhild", Title = "Die Walküre", Model = "brunhild", Cost = 260, RoleText = "Heldenjägerin / Nahkampf", Provisional = false, Summary = "Markiert mit dem Speer, stürzt sich auf Helden und betäubt mit dem Walkürensturz.",
|
||||||
|
PassiveText = "Heldenjägerin: +25 % Schaden gegen Helden und Angriffschampions.",
|
||||||
|
AbilityText = "Speerwurf: ab 3 s alle 6 s 120 % Schaden am fernsten Gegner in 7 m; er ist 4 s markiert und nimmt 15 % mehr Schaden.",
|
||||||
|
UltimateName = "Walkürensturz", UltimateText = "Einmal pro Kampf, frühestens nach 2 s: Sprung auf ihr Ziel (ein Held oder der markierte Gegner zuerst), 200 % Schaden an allen Gegnern in 3 m und 1 s Betäubung (Bosse sind immun); danach Walkürenschild (30 % ihrer Lebenspunkte, 5 s). Wann sie springt, legst du in der Planung fest.",
|
||||||
|
Base = new UnitDef { MaxHp = 2000.0, Damage = 42.0, AttackType = 1, ArmorType = 1, AttackRange = 2.0, Speed = 2.4, Ability = "brunhild", AbilityDescription = "Heldenjägerin · Speerwurf markiert alle 6 s · Ultimate Walkürensturz nach Planungsregel." } }
|
||||||
);
|
);
|
||||||
|
|
||||||
/// <summary>Heroes of the Godot reference; ContentTests compares exactly these, later heroes follow them.</summary>
|
/// <summary>Heroes of the Godot reference; ContentTests compares exactly these, later heroes follow them.</summary>
|
||||||
|
|
@ -91,6 +97,11 @@ namespace Luneraria.Core
|
||||||
{
|
{
|
||||||
new[] { new TalentOption("mondsilber", "Mondsilber", "Einzelziel: Der Sichelwurf trifft nur das Ziel, dafür mit 200 % statt 90 % Schaden."), new TalentOption("sichelsturm", "Sichelsturm", "Fläche: Der Sichelwurf trifft bis zu 5 statt 3 Gegner in 3,5 m.") },
|
new[] { new TalentOption("mondsilber", "Mondsilber", "Einzelziel: Der Sichelwurf trifft nur das Ziel, dafür mit 200 % statt 90 % Schaden."), new TalentOption("sichelsturm", "Sichelsturm", "Fläche: Der Sichelwurf trifft bis zu 5 statt 3 Gegner in 3,5 m.") },
|
||||||
new[] { new TalentOption("neumond", "Neumond", "+20 % Angriffstempo."), new TalentOption("vollmond", "Vollmond", "Mondsicheltanz: bis zu 7 statt 5 Ziele, 280 % statt 220 % Schaden.") }
|
new[] { new TalentOption("neumond", "Neumond", "+20 % Angriffstempo."), new TalentOption("vollmond", "Vollmond", "Mondsicheltanz: bis zu 7 statt 5 Ziele, 280 % statt 220 % Schaden.") }
|
||||||
|
} },
|
||||||
|
{ "held_brunhild", new[]
|
||||||
|
{
|
||||||
|
new[] { new TalentOption("walkuerenblut", "Walkürenblut", "Einzelziel: Der Speerwurf macht gegen Helden und Champions doppelten Schaden."), new TalentOption("speerregen", "Speerregen", "Fläche: Der Speerwurf trifft die drei fernsten Gegner in 7 m.") },
|
||||||
|
new[] { new TalentOption("rabenschwinge", "Rabenschwinge", "+20 % Angriffstempo."), new TalentOption("goetterdaemmerung", "Götterdämmerung", "Walkürensturz: 2 s Betäubung in 4 m statt 1 s in 3 m.") }
|
||||||
} }
|
} }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -102,6 +113,7 @@ namespace Luneraria.Core
|
||||||
public static readonly Dictionary<string, TalentOption[]> HeroSkins = new Dictionary<string, TalentOption[]>
|
public static readonly Dictionary<string, TalentOption[]> HeroSkins = new Dictionary<string, TalentOption[]>
|
||||||
{
|
{
|
||||||
{ "held_sylvara", new[] { new TalentOption("blutmond", "Blutmond", "Variante: rote Klingen und Runen, dunkelrotes Tuch, nachgedunkeltes Silber.") } },
|
{ "held_sylvara", new[] { new TalentOption("blutmond", "Blutmond", "Variante: rote Klingen und Runen, dunkelrotes Tuch, nachgedunkeltes Silber.") } },
|
||||||
|
{ "held_brunhild", new[] { new TalentOption("eiswalkuere", "Eiswalküre", "Variante: eisblauer Umhang und Federn statt Rot, frostiges Gold.") } },
|
||||||
};
|
};
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -118,6 +130,13 @@ namespace Luneraria.Core
|
||||||
new TalentOption("notfall", "Notfall", "Wenn Sylvara unter 40 % Leben fällt und ein Gegner in 4 m steht."),
|
new TalentOption("notfall", "Notfall", "Wenn Sylvara unter 40 % Leben fällt und ein Gegner in 4 m steht."),
|
||||||
new TalentOption("sofort", "Sofort", "Beim ersten Gegner in 4 m."),
|
new TalentOption("sofort", "Sofort", "Beim ersten Gegner in 4 m."),
|
||||||
} },
|
} },
|
||||||
|
{ "held_brunhild", new[]
|
||||||
|
{
|
||||||
|
new TalentOption("gruppe", "Gruppe", "Sobald mindestens 3 Gegner in 4 m um ihr Ziel stehen."),
|
||||||
|
new TalentOption("held", "Heldenjagd", "Sobald ein gegnerischer Held oder Angriffschampion in 7 m steht."),
|
||||||
|
new TalentOption("notfall", "Notfall", "Wenn Brunhild unter 40 % Leben fällt und ein Gegner in 7 m steht."),
|
||||||
|
new TalentOption("sofort", "Sofort", "Beim ersten Gegner in 7 m."),
|
||||||
|
} },
|
||||||
};
|
};
|
||||||
|
|
||||||
public static readonly OrderedMap<string, ItemSpec> Items = Ordered(
|
public static readonly OrderedMap<string, ItemSpec> Items = Ordered(
|
||||||
|
|
@ -145,7 +164,7 @@ namespace Luneraria.Core
|
||||||
|
|
||||||
/// <summary>Base troop id to role; iteration order matters for RoleOf (first match).</summary>
|
/// <summary>Base troop id to role; iteration order matters for RoleOf (first match).</summary>
|
||||||
public static readonly OrderedMap<string, string> MatchRoles = Pairs("g01", "melee", "g03", "front", "g05", "ranged", "g07", "splash", "g09", "support", "w01", "melee", "w03", "front", "w05", "ranged", "w07", "splash", "w09", "support");
|
public static readonly OrderedMap<string, string> MatchRoles = Pairs("g01", "melee", "g03", "front", "g05", "ranged", "g07", "splash", "g09", "support", "w01", "melee", "w03", "front", "w05", "ranged", "w07", "splash", "w09", "support");
|
||||||
public static readonly OrderedMap<string, string> HeroRoles = Pairs("held_ringborke", "front", "held_quellgeflecht", "support", "held_funkenlanze", "ranged", "held_sylvara", "melee");
|
public static readonly OrderedMap<string, string> HeroRoles = Pairs("held_ringborke", "front", "held_quellgeflecht", "support", "held_funkenlanze", "ranged", "held_sylvara", "melee", "held_brunhild", "melee");
|
||||||
public static readonly string[] RowOrder = { "front", "melee", "splash", "ranged", "support" };
|
public static readonly string[] RowOrder = { "front", "melee", "splash", "ranged", "support" };
|
||||||
public static readonly string[] BotNames = { "Eichrufer", "Aschenzunge", "Quellwächter", "Glutfaust", "Moosauge", "Basaltherz", "Rindenkrone", "Funkenschritt" };
|
public static readonly string[] BotNames = { "Eichrufer", "Aschenzunge", "Quellwächter", "Glutfaust", "Moosauge", "Basaltherz", "Rindenkrone", "Funkenschritt" };
|
||||||
public static readonly string[] WavesMelee = { "e01", "e02", "e05" };
|
public static readonly string[] WavesMelee = { "e01", "e02", "e05" };
|
||||||
|
|
@ -168,7 +187,8 @@ namespace Luneraria.Core
|
||||||
/// bot match). Usable as a fixed profile per slot (MatchOptions.Profiles, balance runs).
|
/// bot match). Usable as a fixed profile per slot (MatchOptions.Profiles, balance runs).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly OrderedMap<string, BotProfile> ExtraBotProfiles = Ordered(
|
public static readonly OrderedMap<string, BotProfile> ExtraBotProfiles = Ordered(
|
||||||
new BotProfile { Name = "assassine", Front = 0.3, Melee = 0.25, Ranged = 0.25, Splash = 0.1, Support = 0.1, UpgradeFrom = 6, SupportLane = 0.0, Hero = "held_sylvara", HeroRound = 3, Items = new[] { "glutklinge", "funkenfokus", "basaltschild" }, TalentChoices = new[] { 1, 0 }, Champion = "" }
|
new BotProfile { Name = "assassine", Front = 0.3, Melee = 0.25, Ranged = 0.25, Splash = 0.1, Support = 0.1, UpgradeFrom = 6, SupportLane = 0.0, Hero = "held_sylvara", HeroRound = 3, Items = new[] { "glutklinge", "funkenfokus", "basaltschild" }, TalentChoices = new[] { 1, 0 }, Champion = "" },
|
||||||
|
new BotProfile { Name = "walkuere", Front = 0.3, Melee = 0.25, Ranged = 0.25, Splash = 0.1, Support = 0.1, UpgradeFrom = 6, SupportLane = 0.0, Hero = "held_brunhild", HeroRound = 3, Items = new[] { "glutklinge", "basaltschild", "funkenfokus" }, TalentChoices = new[] { 0, 1 }, Champion = "" }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@ namespace Luneraria.Core
|
||||||
reduction += 0.15;
|
reduction += 0.15;
|
||||||
if (hero.Talents.Contains("fernsicht"))
|
if (hero.Talents.Contains("fernsicht"))
|
||||||
definition.AttackRange = definition.AttackRange + 1.5;
|
definition.AttackRange = definition.AttackRange + 1.5;
|
||||||
if (hero.Talents.Contains("glutsalve") || hero.Talents.Contains("neumond"))
|
if (hero.Talents.Contains("glutsalve") || hero.Talents.Contains("neumond") || hero.Talents.Contains("rabenschwinge"))
|
||||||
attackSpeed += 0.20;
|
attackSpeed += 0.20;
|
||||||
definition.UltimateRule = UltimateRuleFor(hero);
|
definition.UltimateRule = UltimateRuleFor(hero);
|
||||||
definition.Skin = ValidSkin(hero.HeroId, hero.Skin) ? hero.Skin ?? "" : "";
|
definition.Skin = ValidSkin(hero.HeroId, hero.Skin) ? hero.Skin ?? "" : "";
|
||||||
|
|
|
||||||
|
|
@ -711,6 +711,7 @@ namespace Luneraria.Core
|
||||||
// H1: leap and ultimate counters ride in the flag bits (8 bits each, compared for change only).
|
// H1: leap and ultimate counters ride in the flag bits (8 bits each, compared for change only).
|
||||||
unit.LeapSerial = (flags >> 2) & 0xFF;
|
unit.LeapSerial = (flags >> 2) & 0xFF;
|
||||||
unit.UltimateSerial = (flags >> 10) & 0xFF;
|
unit.UltimateSerial = (flags >> 10) & 0xFF;
|
||||||
|
unit.NetStunned = (flags & (1 << 18)) != 0;
|
||||||
unit.AttackProgress = data[baseIndex + 7];
|
unit.AttackProgress = data[baseIndex + 7];
|
||||||
unit.HitCount = (int)data[baseIndex + 8];
|
unit.HitCount = (int)data[baseIndex + 8];
|
||||||
unit.AttackSerial = (int)data[baseIndex + 9];
|
unit.AttackSerial = (int)data[baseIndex + 9];
|
||||||
|
|
@ -731,6 +732,13 @@ namespace Luneraria.Core
|
||||||
building.Hp = buildingHp[index];
|
building.Hp = buildingHp[index];
|
||||||
building.Alive = building.Hp > 0.0;
|
building.Alive = building.Hp > 0.0;
|
||||||
}
|
}
|
||||||
|
for (int team = 0; team < 2 && buildingHp.Length >= buildings.Count + 4; team++)
|
||||||
|
{
|
||||||
|
int lane = (int)buildingHp[buildings.Count + team * 2] - 1;
|
||||||
|
float left = buildingHp[buildings.Count + team * 2 + 1];
|
||||||
|
combat.GlyphLane[team] = lane >= 0 && lane < 3 ? LuneMap.Lanes[lane] : "";
|
||||||
|
combat.GlyphUntil[team] = lane >= 0 ? combat.Elapsed + left : -1.0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -813,7 +821,7 @@ namespace Luneraria.Core
|
||||||
{
|
{
|
||||||
if (!unit.IsMobile())
|
if (!unit.IsMobile())
|
||||||
continue;
|
continue;
|
||||||
int flags = (unit.Alive ? 1 : 0) | (unit.InRange ? 2 : 0) | ((unit.LeapSerial & 0xFF) << 2) | ((unit.UltimateSerial & 0xFF) << 10);
|
int flags = (unit.Alive ? 1 : 0) | (unit.InRange ? 2 : 0) | ((unit.LeapSerial & 0xFF) << 2) | ((unit.UltimateSerial & 0xFF) << 10) | (unit.Stunned() ? 1 << 18 : 0);
|
||||||
data.Add(unit.Id);
|
data.Add(unit.Id);
|
||||||
data.Add((float)unit.Position.X);
|
data.Add((float)unit.Position.X);
|
||||||
data.Add((float)unit.Position.Y);
|
data.Add((float)unit.Position.Y);
|
||||||
|
|
@ -834,7 +842,19 @@ namespace Luneraria.Core
|
||||||
public float[] BuildingHpArray()
|
public float[] BuildingHpArray()
|
||||||
{
|
{
|
||||||
IReadOnlyList<BuildingDef> buildings = MatchState.Map.Buildings;
|
IReadOnlyList<BuildingDef> buildings = MatchState.Map.Buildings;
|
||||||
var data = new float[buildings.Count];
|
// S4: four more values after the buildings carry the running glyph of each team (lane
|
||||||
|
// index + 1, seconds left) so guests see the glyph ring; older guests ignore them.
|
||||||
|
var data = new float[buildings.Count + 4];
|
||||||
|
LuneCombat glyphs = MatchState.Phase == Phase.Combat ? MatchState.Combat : null;
|
||||||
|
for (int team = 0; team < 2 && glyphs != null; team++)
|
||||||
|
{
|
||||||
|
double left = glyphs.GlyphUntil[team] - glyphs.Elapsed;
|
||||||
|
if (glyphs.GlyphLane[team].Length > 0 && left > 0.0)
|
||||||
|
{
|
||||||
|
data[buildings.Count + team * 2] = LuneMap.LaneIndex(glyphs.GlyphLane[team]) + 1;
|
||||||
|
data[buildings.Count + team * 2 + 1] = (float)left;
|
||||||
|
}
|
||||||
|
}
|
||||||
for (int index = 0; index < buildings.Count; index++)
|
for (int index = 0; index < buildings.Count; index++)
|
||||||
{
|
{
|
||||||
double hp;
|
double hp;
|
||||||
|
|
|
||||||
|
|
@ -747,6 +747,8 @@ namespace Luneraria.Core
|
||||||
}
|
}
|
||||||
if (unit.HitCount % 3 == 0 && unit.HasTalent("stammschlag"))
|
if (unit.HitCount % 3 == 0 && unit.HasTalent("stammschlag"))
|
||||||
damage *= 1.6;
|
damage *= 1.6;
|
||||||
|
if (unit.Ability() == "brunhild" && HeroLike(target))
|
||||||
|
damage *= BrunhildHunter;
|
||||||
if (unit.LeapStrike)
|
if (unit.LeapStrike)
|
||||||
{
|
{
|
||||||
damage *= SylvaraLeapStrike;
|
damage *= SylvaraLeapStrike;
|
||||||
|
|
@ -811,6 +813,9 @@ namespace Luneraria.Core
|
||||||
case "sylvara":
|
case "sylvara":
|
||||||
unit.AbilityReady = SylvaraFirstThrow;
|
unit.AbilityReady = SylvaraFirstThrow;
|
||||||
break;
|
break;
|
||||||
|
case "brunhild":
|
||||||
|
unit.AbilityReady = BrunhildFirstSpear;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -863,6 +868,8 @@ namespace Luneraria.Core
|
||||||
{
|
{
|
||||||
if (unit.Ability() == "sylvara")
|
if (unit.Ability() == "sylvara")
|
||||||
SylvaraStep(unit, gates);
|
SylvaraStep(unit, gates);
|
||||||
|
else if (unit.Ability() == "brunhild")
|
||||||
|
BrunhildStep(unit, gates);
|
||||||
double regen = unit.Def.Regen;
|
double regen = unit.Def.Regen;
|
||||||
if (regen > 0.0 && unit.Hp < unit.MaxHp)
|
if (regen > 0.0 && unit.Hp < unit.MaxHp)
|
||||||
QueueHeal(unit, unit.MaxHp * regen * Balance.SimStep);
|
QueueHeal(unit, unit.MaxHp * regen * Balance.SimStep);
|
||||||
|
|
@ -969,6 +976,9 @@ namespace Luneraria.Core
|
||||||
case "sylvara":
|
case "sylvara":
|
||||||
success = SylvaraThrow(unit, gates);
|
success = SylvaraThrow(unit, gates);
|
||||||
break;
|
break;
|
||||||
|
case "brunhild":
|
||||||
|
success = BrunhildSpear(unit, gates);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (success)
|
if (success)
|
||||||
{
|
{
|
||||||
|
|
@ -1104,6 +1114,97 @@ namespace Luneraria.Core
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// H2 Brunhild
|
||||||
|
public const double BrunhildFirstSpear = 3.0;
|
||||||
|
public const double BrunhildSpearRange = 7.0;
|
||||||
|
public const double BrunhildHunter = 1.25;
|
||||||
|
public const double BrunhildShield = 0.30;
|
||||||
|
|
||||||
|
static bool HeroLike(LuneUnit unit) { return unit.Kind == "hero" || unit.Kind == "champion"; }
|
||||||
|
|
||||||
|
/// <summary>Enemies within the radius, farthest first (ties by id), mobile only.</summary>
|
||||||
|
List<LuneUnit> Farthest(LuneUnit unit, double radius, int maximum)
|
||||||
|
{
|
||||||
|
List<LuneUnit> result = NearbyMobile(unit, radius, 1000);
|
||||||
|
result.Reverse();
|
||||||
|
GdMath.SortStable(result, (a, b) =>
|
||||||
|
{
|
||||||
|
double ad = a.Position.DistanceTo(unit.Position);
|
||||||
|
double bd = b.Position.DistanceTo(unit.Position);
|
||||||
|
return GdMath.IsEqualApprox(ad, bd) ? a.Id < b.Id : ad > bd;
|
||||||
|
});
|
||||||
|
if (result.Count > maximum)
|
||||||
|
result.RemoveRange(maximum, result.Count - maximum);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Speerwurf: 120 % to the farthest enemy in 7 m (Speerregen: three), marked 4 s (+15 % damage taken).</summary>
|
||||||
|
bool BrunhildSpear(LuneUnit unit, Dictionary<string, bool> gates)
|
||||||
|
{
|
||||||
|
List<LuneUnit> victims = Farthest(unit, BrunhildSpearRange, unit.HasTalent("speerregen") ? 3 : 1);
|
||||||
|
if (victims.Count == 0)
|
||||||
|
return false;
|
||||||
|
double damage = unit.Def.Damage * (1.0 + unit.DamageBonus()) * 1.2;
|
||||||
|
foreach (LuneUnit victim in victims)
|
||||||
|
{
|
||||||
|
double hit = damage * (HeroLike(victim) ? BrunhildHunter * (unit.HasTalent("walkuerenblut") ? 2.0 : 1.0) : 1.0);
|
||||||
|
QueueDamage(victim, victim.Mitigated(hit, unit.Def.AttackType), gates);
|
||||||
|
AddEffect(victim, "valkyrie_mark", "vulnerable", 0.15, 4.0);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Walkürensturz (once per combat after 2 s, by the planned rule): she leaps to her target
|
||||||
|
/// (an enemy hero or champion in 7 m first, then the marked enemy, then her current target),
|
||||||
|
/// deals 200 % to every enemy within 3 m of it and stuns them 1 s (Götterdämmerung: 2 s in
|
||||||
|
/// 4 m); bosses are not stunned. Decided on the state at the start of the step.
|
||||||
|
/// </summary>
|
||||||
|
void BrunhildStep(LuneUnit unit, Dictionary<string, bool> gates)
|
||||||
|
{
|
||||||
|
if (unit.UltimateUsed || string.IsNullOrEmpty(unit.Def.UltimateRule) || unit.CombatTime + 0.000001 < LuneContent.UltimateDelay)
|
||||||
|
return;
|
||||||
|
List<LuneUnit> reach = NearbyMobile(unit, BrunhildSpearRange, 1000);
|
||||||
|
if (reach.Count == 0)
|
||||||
|
return;
|
||||||
|
LuneUnit target = reach.Find(HeroLike) ?? reach.Find(other => other.Effects.ContainsKey("valkyrie_mark"))
|
||||||
|
?? (unit.Target != null && reach.Contains(unit.Target) ? unit.Target : reach[0]);
|
||||||
|
bool full = unit.HasTalent("goetterdaemmerung");
|
||||||
|
double radius = full ? 4.0 : 3.0;
|
||||||
|
bool release = false;
|
||||||
|
switch (unit.Def.UltimateRule)
|
||||||
|
{
|
||||||
|
case "gruppe":
|
||||||
|
release = Nearby(unit, false, target.Position, 4.0, 1000).FindAll(other => other.IsMobile()).Count >= 3;
|
||||||
|
break;
|
||||||
|
case "held":
|
||||||
|
release = HeroLike(target);
|
||||||
|
break;
|
||||||
|
case "notfall":
|
||||||
|
release = unit.Hp < unit.MaxHp * 0.4;
|
||||||
|
break;
|
||||||
|
case "sofort":
|
||||||
|
release = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (!release)
|
||||||
|
return;
|
||||||
|
double damage = unit.Def.Damage * (1.0 + unit.DamageBonus()) * 2.0;
|
||||||
|
foreach (LuneUnit victim in Nearby(unit, false, target.Position, radius, 1000))
|
||||||
|
{
|
||||||
|
if (!victim.IsMobile())
|
||||||
|
continue;
|
||||||
|
QueueDamage(victim, victim.Mitigated(damage * (HeroLike(victim) ? BrunhildHunter : 1.0), unit.Def.AttackType), gates);
|
||||||
|
if (!victim.IsBoss())
|
||||||
|
AddEffect(victim, "valkyrie_stun", "stun", 1.0, full ? 2.0 : 1.0);
|
||||||
|
}
|
||||||
|
// Walkürenschild: after the leap she is shielded like Sylvara after hers.
|
||||||
|
_pendingShields.Add(new PendingShield { Unit = unit, Amount = unit.MaxHp * BrunhildShield, Duration = 5.0 });
|
||||||
|
unit.LeapTarget = target;
|
||||||
|
unit.UltimateUsed = true;
|
||||||
|
unit.UltimateSerial += 1;
|
||||||
|
}
|
||||||
|
|
||||||
void OnHit(LuneUnit unit, LuneUnit primary, List<LuneUnit> living, Dictionary<string, bool> gates)
|
void OnHit(LuneUnit unit, LuneUnit primary, List<LuneUnit> living, Dictionary<string, bool> gates)
|
||||||
{
|
{
|
||||||
string ability = unit.Ability();
|
string ability = unit.Ability();
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,40 @@ namespace Luneraria.Core
|
||||||
return match.Map.LanePoint(0, lane, match.Map.LanePaths[lane].Length * 0.5, 0.0);
|
return match.Map.LanePoint(0, lane, match.Map.LanePaths[lane].Length * 0.5, 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// S4: everything that gives the team sight in the shown combat (or planning preview):
|
||||||
|
/// own living units, own standing buildings (from the match, so the planning preview has
|
||||||
|
/// them too) and the team's wards. Each as point, radius and zone.
|
||||||
|
/// </summary>
|
||||||
|
public static List<KeyValuePair<Vec2, double>> Vision(LuneMatch match, LuneCombat shown, int team, string zone = "lane")
|
||||||
|
{
|
||||||
|
var result = new List<KeyValuePair<Vec2, double>>();
|
||||||
|
if (match == null || team < 0 || team > 1)
|
||||||
|
return result;
|
||||||
|
if (shown != null)
|
||||||
|
{
|
||||||
|
foreach (LuneUnit unit in shown.Units)
|
||||||
|
{
|
||||||
|
if (unit.Team == team && unit.Alive && unit.IsMobile() && unit.Zone == zone)
|
||||||
|
result.Add(new KeyValuePair<Vec2, double>(unit.Position, UnitSight));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (zone == "lane")
|
||||||
|
{
|
||||||
|
foreach (BuildingDef definition in match.Map.Buildings)
|
||||||
|
{
|
||||||
|
if (definition.Team == team && match.BuildingHp[definition.Id] > 0.0)
|
||||||
|
result.Add(new KeyValuePair<Vec2, double>(definition.Position, BuildingSight));
|
||||||
|
}
|
||||||
|
foreach (string lane in LuneMap.Lanes)
|
||||||
|
{
|
||||||
|
if (match.Boss.Wards[team * 3 + LuneMap.LaneIndex(lane)] > 0)
|
||||||
|
result.Add(new KeyValuePair<Vec2, double>(WardPoint(match, lane), WardSight));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ids of the enemy units the team cannot see in the shown combat (the live combat, or
|
/// Ids of the enemy units the team cannot see in the shown combat (the live combat, or
|
||||||
/// the planning preview when planning). Empty without the extended rules or for team -1.
|
/// the planning preview when planning). Empty without the extended rules or for team -1.
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,11 @@ namespace Luneraria.Core
|
||||||
public int AbilitySerial;
|
public int AbilitySerial;
|
||||||
public int LeapSerial;
|
public int LeapSerial;
|
||||||
public int UltimateSerial;
|
public int UltimateSerial;
|
||||||
|
/// <summary>S4: stunned as reported by the host's frame (guests have no effects); presentation only.</summary>
|
||||||
|
public bool NetStunned;
|
||||||
|
|
||||||
|
/// <summary>Stunned for the view: the own effect on the host, the frame flag on a guest.</summary>
|
||||||
|
public bool ShowsStun() { return NetStunned || Stunned(); }
|
||||||
public double HitFlash;
|
public double HitFlash;
|
||||||
public bool InRange;
|
public bool InRange;
|
||||||
public double DeathTime = -1.0;
|
public double DeathTime = -1.0;
|
||||||
|
|
@ -103,7 +108,8 @@ namespace Luneraria.Core
|
||||||
public double Mitigated(double raw, int attackType)
|
public double Mitigated(double raw, int attackType)
|
||||||
{
|
{
|
||||||
double value = GdMath.Max(0.0, raw) * DamageMatrix[GdMath.Clamp(attackType, 0, 2), ArmorType()];
|
double value = GdMath.Max(0.0, raw) * DamageMatrix[GdMath.Clamp(attackType, 0, 2), ArmorType()];
|
||||||
return value * (1.0 - DamageReduction());
|
// H2: a unit marked by Brunhild's spear takes more damage ("vulnerable"; 0 for everyone else).
|
||||||
|
return value * (1.0 - DamageReduction()) * (1.0 + StrongestEffect("vulnerable"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Applies an already mitigated amount through the shield.</summary>
|
/// <summary>Applies an already mitigated amount through the shield.</summary>
|
||||||
|
|
@ -209,8 +215,13 @@ namespace Luneraria.Core
|
||||||
return GdMath.Min(0.35, result + Def.ReductionBonus);
|
return GdMath.Min(0.35, result + Def.ReductionBonus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>H2: Brunhild's stun stops attacks and movement for its duration.</summary>
|
||||||
|
public bool Stunned() { return StrongestEffect("stun") > 0.0; }
|
||||||
|
|
||||||
public double AttackSpeedFactor()
|
public double AttackSpeedFactor()
|
||||||
{
|
{
|
||||||
|
if (Stunned())
|
||||||
|
return 0.0;
|
||||||
double slowing = StrongestEffect("attack_slow") * (IsBoss() ? 0.5 : 1.0);
|
double slowing = StrongestEffect("attack_slow") * (IsBoss() ? 0.5 : 1.0);
|
||||||
double bonus = Def.AttackSpeedBonus;
|
double bonus = Def.AttackSpeedBonus;
|
||||||
return 1.0 + GdMath.Clamp(StrongestEffect("attack_speed") - slowing + bonus, -0.25, 0.5);
|
return 1.0 + GdMath.Clamp(StrongestEffect("attack_speed") - slowing + bonus, -0.25, 0.5);
|
||||||
|
|
@ -222,6 +233,8 @@ namespace Luneraria.Core
|
||||||
|
|
||||||
public double MovementFactor()
|
public double MovementFactor()
|
||||||
{
|
{
|
||||||
|
if (Stunned())
|
||||||
|
return 0.0;
|
||||||
return 1.0 - GdMath.Min(0.35, StrongestEffect("movement_slow") * (IsBoss() ? 0.5 : 1.0));
|
return 1.0 - GdMath.Min(0.35, StrongestEffect("movement_slow") * (IsBoss() ? 0.5 : 1.0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ namespace Luneraria.EditorTools
|
||||||
}
|
}
|
||||||
library.HeroRing = Marker("Ring_Hero", LuneMaterialFactory.Hex("f2c96b"), 2.2f, false);
|
library.HeroRing = Marker("Ring_Hero", LuneMaterialFactory.Hex("f2c96b"), 2.2f, false);
|
||||||
library.MoonBurst = Marker("Ring_MoonBurst", LuneMaterialFactory.Hex("8fb8ff"), 4f, false);
|
library.MoonBurst = Marker("Ring_MoonBurst", LuneMaterialFactory.Hex("8fb8ff"), 4f, false);
|
||||||
|
library.FogOverlay = FogMaterial();
|
||||||
for (int team = 0; team < 2; team++)
|
for (int team = 0; team < 2; team++)
|
||||||
{
|
{
|
||||||
library.OwnerRing[team] = Marker("Ring_Owner_" + team, LuneMaterialFactory.TeamColor[team], 3f, false);
|
library.OwnerRing[team] = Marker("Ring_Owner_" + team, LuneMaterialFactory.TeamColor[team], 3f, false);
|
||||||
|
|
@ -180,6 +181,24 @@ namespace Luneraria.EditorTools
|
||||||
return existing;
|
return existing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>S4: the fog of war overlay material (night blue, alpha from the grid's vertices).</summary>
|
||||||
|
static Material FogMaterial()
|
||||||
|
{
|
||||||
|
string path = LuneMaterialFactory.Folder + "/Markers/Fog_Overlay.mat";
|
||||||
|
Directory.CreateDirectory(Path.GetDirectoryName(path));
|
||||||
|
Shader shader = Shader.Find("Luneraria/FogOverlay");
|
||||||
|
var material = AssetDatabase.LoadAssetAtPath<Material>(path);
|
||||||
|
if (material == null)
|
||||||
|
{
|
||||||
|
material = new Material(shader);
|
||||||
|
AssetDatabase.CreateAsset(material, path);
|
||||||
|
}
|
||||||
|
material.shader = shader;
|
||||||
|
material.SetColor("_Color", new Color(.03f, .04f, .08f, 1f));
|
||||||
|
EditorUtility.SetDirty(material);
|
||||||
|
return material;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>Unshaded marker colour (Godot _flat with emission energy); bars draw on top.</summary>
|
/// <summary>Unshaded marker colour (Godot _flat with emission energy); bars draw on top.</summary>
|
||||||
static Material Marker(string name, Color srgb, float energy, bool onTop)
|
static Material Marker(string name, Color srgb, float energy, bool onTop)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -189,6 +189,14 @@ MonoBehaviour:
|
||||||
Neutral: {fileID: 2100000, guid: 2844b8628dab84e70bea79fbffa9958f, type: 2}
|
Neutral: {fileID: 2100000, guid: 2844b8628dab84e70bea79fbffa9958f, type: 2}
|
||||||
Blau: {fileID: 0}
|
Blau: {fileID: 0}
|
||||||
Rot: {fileID: 0}
|
Rot: {fileID: 0}
|
||||||
|
- Key: AI_Brunhild
|
||||||
|
Neutral: {fileID: 2100000, guid: 86538db76bda54b19acbf73c7e1e6432, type: 2}
|
||||||
|
Blau: {fileID: 0}
|
||||||
|
Rot: {fileID: 0}
|
||||||
|
- Key: AI_BrunhildSpeer
|
||||||
|
Neutral: {fileID: 2100000, guid: 683e7a7f8c9ff4bafbe24e22287ad674, 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}
|
||||||
|
|
@ -745,6 +753,14 @@ MonoBehaviour:
|
||||||
Neutral: {fileID: 2100000, guid: 09c239a4cf52e4af4969869c24b078ff, type: 2}
|
Neutral: {fileID: 2100000, guid: 09c239a4cf52e4af4969869c24b078ff, type: 2}
|
||||||
Blau: {fileID: 0}
|
Blau: {fileID: 0}
|
||||||
Rot: {fileID: 0}
|
Rot: {fileID: 0}
|
||||||
|
- Key: AI_Brunhild_Eiswalkuere
|
||||||
|
Neutral: {fileID: 2100000, guid: 8058295d8bee34a8b831603ad53f5501, type: 2}
|
||||||
|
Blau: {fileID: 0}
|
||||||
|
Rot: {fileID: 0}
|
||||||
|
- Key: AI_BrunhildSpeer_Eiswalkuere
|
||||||
|
Neutral: {fileID: 2100000, guid: 40b5dbee4b87547ef9b92e96deeb30a6, type: 2}
|
||||||
|
Blau: {fileID: 0}
|
||||||
|
Rot: {fileID: 0}
|
||||||
- Key: AI_Sylvara_Blutmond
|
- Key: AI_Sylvara_Blutmond
|
||||||
Neutral: {fileID: 2100000, guid: aa1c3bf7df6bd46ddbe3d0c8051d5b82, type: 2}
|
Neutral: {fileID: 2100000, guid: aa1c3bf7df6bd46ddbe3d0c8051d5b82, type: 2}
|
||||||
Blau: {fileID: 0}
|
Blau: {fileID: 0}
|
||||||
|
|
|
||||||
31
Assets/Luneraria/Materials/Markers/Fog_Overlay.mat
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
%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: Fog_Overlay
|
||||||
|
m_Shader: {fileID: 4800000, guid: 7633b9f391704a8f84ae742a82128282, type: 3}
|
||||||
|
m_Parent: {fileID: 0}
|
||||||
|
m_ModifiedSerializedProperties: 0
|
||||||
|
m_ValidKeywords: []
|
||||||
|
m_InvalidKeywords: []
|
||||||
|
m_LightmapFlags: 4
|
||||||
|
m_EnableInstancingVariants: 0
|
||||||
|
m_DoubleSidedGI: 0
|
||||||
|
m_CustomRenderQueue: -1
|
||||||
|
stringTagMap: {}
|
||||||
|
disabledShaderPasses: []
|
||||||
|
m_LockedProperties:
|
||||||
|
m_SavedProperties:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TexEnvs: []
|
||||||
|
m_Ints: []
|
||||||
|
m_Floats: []
|
||||||
|
m_Colors:
|
||||||
|
- _Color: {r: 0.03, g: 0.04, b: 0.08, a: 1}
|
||||||
|
m_BuildTextureStacks: []
|
||||||
|
m_AllowLocking: 1
|
||||||
8
Assets/Luneraria/Materials/Markers/Fog_Overlay.mat.meta
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7846e5bf0b03a456ab8720cbca2c8d9d
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
68
Assets/Luneraria/Materials/Units/AI_Brunhild.mat
Normal 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_Brunhild
|
||||||
|
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: 0dbeeb8c48f344e64962b71d5e9fcca1, type: 3}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _NormalMap:
|
||||||
|
m_Texture: {fileID: 2800000, guid: f701c67235f354e4dac0ee3235b94b3d, type: 3}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _OrmMap:
|
||||||
|
m_Texture: {fileID: 2800000, guid: 1722b2d9a084347b8845372bf878a61f, 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
|
||||||
8
Assets/Luneraria/Materials/Units/AI_Brunhild.mat.meta
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 86538db76bda54b19acbf73c7e1e6432
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
68
Assets/Luneraria/Materials/Units/AI_BrunhildSpeer.mat
Normal 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_BrunhildSpeer
|
||||||
|
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: 336afb236cf9f438dae9687f76420327, type: 3}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _NormalMap:
|
||||||
|
m_Texture: {fileID: 2800000, guid: 9b19528e38c1f468a8dfb54927968778, type: 3}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _OrmMap:
|
||||||
|
m_Texture: {fileID: 2800000, guid: cf3a5ed7600ba42349191e05cfe011e8, 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
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 683e7a7f8c9ff4bafbe24e22287ad674
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -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_BrunhildSpeer_Eiswalkuere
|
||||||
|
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: 1fadc4bab123948b3b3f54a2fe52173a, type: 3}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _NormalMap:
|
||||||
|
m_Texture: {fileID: 2800000, guid: 9b19528e38c1f468a8dfb54927968778, type: 3}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _OrmMap:
|
||||||
|
m_Texture: {fileID: 2800000, guid: cf3a5ed7600ba42349191e05cfe011e8, 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
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 40b5dbee4b87547ef9b92e96deeb30a6
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
68
Assets/Luneraria/Materials/Units/AI_Brunhild_Eiswalkuere.mat
Normal 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_Brunhild_Eiswalkuere
|
||||||
|
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: ed6f51893270d4a81a491e1b895a5815, type: 3}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _NormalMap:
|
||||||
|
m_Texture: {fileID: 2800000, guid: f701c67235f354e4dac0ee3235b94b3d, type: 3}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _OrmMap:
|
||||||
|
m_Texture: {fileID: 2800000, guid: 1722b2d9a084347b8845372bf878a61f, 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
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8058295d8bee34a8b831603ad53f5501
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -25,6 +25,9 @@ MonoBehaviour:
|
||||||
- Id: basaltbastion_meshy
|
- Id: basaltbastion_meshy
|
||||||
Prefab: {fileID: 919132149155446097, guid: aa5734da897ea44808385f37d34070bf, type: 3}
|
Prefab: {fileID: 919132149155446097, guid: aa5734da897ea44808385f37d34070bf, type: 3}
|
||||||
Controller: {fileID: 9100000, guid: a456a0a7fa6d34b699183f75137f8f86, type: 2}
|
Controller: {fileID: 9100000, guid: a456a0a7fa6d34b699183f75137f8f86, type: 2}
|
||||||
|
- Id: brunhild
|
||||||
|
Prefab: {fileID: 919132149155446097, guid: 29d894f788c5f4fbbacf819091c19542, type: 3}
|
||||||
|
Controller: {fileID: 9100000, guid: 8f779b941008d48fea9cfb256567bb9d, 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}
|
||||||
|
|
@ -270,6 +273,7 @@ MonoBehaviour:
|
||||||
- {fileID: 2100000, guid: 77d940cdf3d6043cb93c647607c3e35e, type: 2}
|
- {fileID: 2100000, guid: 77d940cdf3d6043cb93c647607c3e35e, type: 2}
|
||||||
HeroRing: {fileID: 2100000, guid: 862d58435f9824d969aecf8551257a64, type: 2}
|
HeroRing: {fileID: 2100000, guid: 862d58435f9824d969aecf8551257a64, type: 2}
|
||||||
MoonBurst: {fileID: 2100000, guid: c79261fd1aa5e42479782d3bac53f7ba, type: 2}
|
MoonBurst: {fileID: 2100000, guid: c79261fd1aa5e42479782d3bac53f7ba, type: 2}
|
||||||
|
FogOverlay: {fileID: 2100000, guid: 7846e5bf0b03a456ab8720cbca2c8d9d, type: 2}
|
||||||
BarBack: {fileID: 2100000, guid: 8efe289a463614fee8dcb19e789f2bf8, type: 2}
|
BarBack: {fileID: 2100000, guid: 8efe289a463614fee8dcb19e789f2bf8, type: 2}
|
||||||
BarFill:
|
BarFill:
|
||||||
- {fileID: 2100000, guid: 778bc4f74208340e38dc099b897f3db3, type: 2}
|
- {fileID: 2100000, guid: 778bc4f74208340e38dc099b897f3db3, type: 2}
|
||||||
|
|
|
||||||
39
Assets/Luneraria/Shaders/LuneFogOverlay.shader
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
// S4 fog of war: a ground-hugging grid whose vertex alpha darkens what the viewer's team cannot see.
|
||||||
|
Shader "Luneraria/FogOverlay"
|
||||||
|
{
|
||||||
|
Properties
|
||||||
|
{
|
||||||
|
_Color("Fog colour", Color) = (0.03, 0.04, 0.07, 1)
|
||||||
|
}
|
||||||
|
SubShader
|
||||||
|
{
|
||||||
|
Tags { "RenderType" = "Transparent" "RenderPipeline" = "UniversalPipeline" "Queue" = "Transparent-50" }
|
||||||
|
Pass
|
||||||
|
{
|
||||||
|
Name "Fog"
|
||||||
|
Tags { "LightMode" = "UniversalForward" }
|
||||||
|
Blend SrcAlpha OneMinusSrcAlpha
|
||||||
|
ZWrite Off
|
||||||
|
ZTest LEqual
|
||||||
|
Cull Off
|
||||||
|
HLSLPROGRAM
|
||||||
|
#pragma vertex Vert
|
||||||
|
#pragma fragment Frag
|
||||||
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
|
||||||
|
CBUFFER_START(UnityPerMaterial)
|
||||||
|
half4 _Color;
|
||||||
|
CBUFFER_END
|
||||||
|
struct Attributes { float4 positionOS : POSITION; half4 color : COLOR; };
|
||||||
|
struct Varyings { float4 positionCS : SV_POSITION; half alpha : TEXCOORD0; };
|
||||||
|
Varyings Vert(Attributes input)
|
||||||
|
{
|
||||||
|
Varyings output;
|
||||||
|
output.positionCS = TransformObjectToHClip(input.positionOS.xyz);
|
||||||
|
output.alpha = input.color.a;
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
half4 Frag(Varyings input) : SV_Target { return half4(_Color.rgb, _Color.a * input.alpha); }
|
||||||
|
ENDHLSL
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
9
Assets/Luneraria/Shaders/LuneFogOverlay.shader.meta
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7633b9f391704a8f84ae742a82128282
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -50,7 +50,7 @@ namespace Luneraria.Core.Tests
|
||||||
|
|
||||||
public static IList<CheckSuite> All()
|
public static IList<CheckSuite> All()
|
||||||
{
|
{
|
||||||
return new List<CheckSuite> { new ContentSuite(), new CoreRulesSuite(), new M2RulesSuite(), new GoldenSuite(), new DeterminismSuite(), new NetSuite(), new NetRoundsSuite(), new H1HeroSuite(), new S1RulesSuite(), new S2RulesSuite(), new S3RulesSuite() };
|
return new List<CheckSuite> { new ContentSuite(), new CoreRulesSuite(), new M2RulesSuite(), new GoldenSuite(), new DeterminismSuite(), new NetSuite(), new NetRoundsSuite(), new H1HeroSuite(), new S1RulesSuite(), new S2RulesSuite(), new S3RulesSuite(), new H2HeroSuite(), new S4NetSuite() };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ namespace Luneraria.Core.Tests
|
||||||
// Heroes added after the port (H1) follow the reference heroes; those must match exactly.
|
// Heroes added after the port (H1) follow the reference heroes; those must match exactly.
|
||||||
Check(expected.Keys.SequenceEqual(ContentData.ReferenceHeroes) && ContentData.Heroes.Keys.Take(ContentData.ReferenceHeroes.Length).SequenceEqual(ContentData.ReferenceHeroes),
|
Check(expected.Keys.SequenceEqual(ContentData.ReferenceHeroes) && ContentData.Heroes.Keys.Take(ContentData.ReferenceHeroes.Length).SequenceEqual(ContentData.ReferenceHeroes),
|
||||||
"heroes: same reference ids in the same order, later heroes after them");
|
"heroes: same reference ids in the same order, later heroes after them");
|
||||||
Check(ContentData.Heroes.Keys.Skip(ContentData.ReferenceHeroes.Length).SequenceEqual(new[] { "held_sylvara" }), "heroes: exactly the documented later heroes (H1: held_sylvara)");
|
Check(ContentData.Heroes.Keys.Skip(ContentData.ReferenceHeroes.Length).SequenceEqual(new[] { "held_sylvara", "held_brunhild" }), "heroes: exactly the documented later heroes (H1 Sylvara, H2 Brunhild)");
|
||||||
foreach (KeyValuePair<string, object> pair in expected)
|
foreach (KeyValuePair<string, object> pair in expected)
|
||||||
{
|
{
|
||||||
var entry = MiniJson.Obj(pair.Value);
|
var entry = MiniJson.Obj(pair.Value);
|
||||||
|
|
|
||||||
148
Assets/Luneraria/Tests/Core/H2HeroSuite.cs
Normal file
|
|
@ -0,0 +1,148 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace Luneraria.Core.Tests
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// H2: Brunhild, the Valkyrie. Purchase and rules, hunter passive, spear with mark, the leap
|
||||||
|
/// with area damage and stun (bosses immune), talents, skin, bot profile; reference untouched.
|
||||||
|
/// </summary>
|
||||||
|
public sealed class H2HeroSuite : CheckSuite
|
||||||
|
{
|
||||||
|
public override string Name { get { return "h2"; } }
|
||||||
|
|
||||||
|
protected override void RunChecks()
|
||||||
|
{
|
||||||
|
TestPurchase();
|
||||||
|
TestSpear();
|
||||||
|
TestUltimate();
|
||||||
|
TestPassiveAndTalents();
|
||||||
|
TestBots();
|
||||||
|
}
|
||||||
|
|
||||||
|
static LuneCombat Arena(HeroState hero, out LuneUnit brunhild, params KeyValuePair<string, double>[] enemies)
|
||||||
|
{
|
||||||
|
var balance = LuneBalance.Default();
|
||||||
|
var combat = new LuneCombat(new LuneMap(balance), balance, 5);
|
||||||
|
UnitDef definition = LuneContent.HeroDefinition(hero);
|
||||||
|
definition.Role = "melee";
|
||||||
|
brunhild = combat.Spawn("hero", 0, "mid", definition, 40.0, 0.0, 0, "h0-1");
|
||||||
|
Vec2 forward = combat.Map.LaneForward(0, "mid", 40.0);
|
||||||
|
foreach (KeyValuePair<string, double> enemy in enemies)
|
||||||
|
{
|
||||||
|
bool isHero = enemy.Key == "held";
|
||||||
|
UnitDef def = isHero ? LuneContent.HeroDefinition(new HeroState { HeroId = "held_ringborke" }) : ContentData.Enemies[enemy.Key].Clone();
|
||||||
|
def.MaxHp = 50000.0;
|
||||||
|
def.Speed = 0.0;
|
||||||
|
LuneUnit unit = combat.Spawn(isHero ? "hero" : "monster", 1, "mid", def, 40.0, 0.0, isHero ? 3 : -1, isHero ? "h3-1" : "");
|
||||||
|
unit.Position = brunhild.Position + forward * enemy.Value;
|
||||||
|
unit.PreviousPosition = unit.Position;
|
||||||
|
}
|
||||||
|
return combat;
|
||||||
|
}
|
||||||
|
|
||||||
|
static KeyValuePair<string, double> At(string id, double distance) { return new KeyValuePair<string, double>(id, distance); }
|
||||||
|
|
||||||
|
static void Run(LuneCombat combat, double seconds)
|
||||||
|
{
|
||||||
|
int steps = (int)(seconds / combat.Balance.SimStep + 0.5);
|
||||||
|
for (int i = 0; i < steps && !combat.Finished; i++)
|
||||||
|
combat.Step();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TestPurchase()
|
||||||
|
{
|
||||||
|
var state = new LuneMatch();
|
||||||
|
state.Setup(new MatchOptions { Seed = 71, HumanSlot = -1 });
|
||||||
|
state.Players[0].Draft.Gold += 1000;
|
||||||
|
Check(state.Submit(0, Command.HeroBuy("held_brunhild")).Ok, "Brunhild can be recruited for 260");
|
||||||
|
Check(LuneContent.UltimateRuleFor(state.Players[0].Draft.Hero) == "gruppe", "default rule Gruppe");
|
||||||
|
Check(state.Submit(0, Command.UltimateRule("held")).Ok && state.Submit(0, Command.HeroSkin("eiswalkuere")).Ok, "rule Heldenjagd and skin Eiswalküre");
|
||||||
|
Check(!state.Submit(0, Command.HeroSkin("blutmond")).Ok, "Sylvara's skin is not hers");
|
||||||
|
UnitDef definition = LuneContent.HeroDefinition(state.Players[0].Draft.Hero);
|
||||||
|
Check(definition.Id == "brunhild" && definition.Skin == "eiswalkuere" && definition.UltimateRule == "held" && GdMath.IsEqualApprox(definition.AttackRange, 2.0), "definition carries model, skin, rule and the spear's reach");
|
||||||
|
}
|
||||||
|
|
||||||
|
void TestSpear()
|
||||||
|
{
|
||||||
|
LuneUnit brunhild;
|
||||||
|
LuneCombat combat = Arena(new HeroState { HeroId = "held_brunhild", Ultimate = "notfall" }, out brunhild, At("e01", 1.5), At("e01", 4.0), At("e04", 6.5));
|
||||||
|
LuneUnit far = combat.Units.First(u => u.Def.Id == "e04");
|
||||||
|
Run(combat, LuneCombat.BrunhildFirstSpear - 0.1);
|
||||||
|
Check(brunhild.AbilitySerial == 0, "no spear before 3 s");
|
||||||
|
Run(combat, 0.2);
|
||||||
|
Check(brunhild.AbilitySerial == 1 && far.Effects.ContainsKey("valkyrie_mark"), "the first spear marks the farthest enemy in 7 m");
|
||||||
|
double raw = 100.0;
|
||||||
|
var probe = new LuneUnit { Def = far.Def };
|
||||||
|
Check(GdMath.IsEqualApprox(far.Mitigated(raw, 0), probe.Mitigated(raw, 0) * 1.15), "a marked enemy takes 15 % more damage");
|
||||||
|
}
|
||||||
|
|
||||||
|
void TestUltimate()
|
||||||
|
{
|
||||||
|
LuneUnit brunhild;
|
||||||
|
LuneCombat combat = Arena(new HeroState { HeroId = "held_brunhild", Ultimate = "held" }, out brunhild, At("e01", 1.5), At("held", 6.0), At("e01", 6.8), At("e07", 6.5));
|
||||||
|
LuneUnit hero = combat.Units.First(u => u.Kind == "hero" && u.Team == 1);
|
||||||
|
LuneUnit boss = combat.Units.First(u => u.Def.Id == "e07");
|
||||||
|
Run(combat, LuneContent.UltimateDelay - 0.1);
|
||||||
|
Check(brunhild.UltimateSerial == 0, "no ultimate before 2 s");
|
||||||
|
Run(combat, 0.1);
|
||||||
|
Check(brunhild.UltimateSerial == 1, "Heldenjagd fires with an enemy hero in 7 m");
|
||||||
|
Check(brunhild.Position.DistanceTo(hero.Position) < 1.5, "she leaps next to the hero");
|
||||||
|
Check(hero.Stunned() && !boss.Stunned(), "the hero is stunned, the boss is immune");
|
||||||
|
Check(hero.AttackSpeedFactor() == 0.0 && hero.MovementFactor() == 0.0, "a stunned unit neither attacks nor moves");
|
||||||
|
Run(combat, 1.1);
|
||||||
|
Check(!hero.Stunned(), "the stun ends after 1 s");
|
||||||
|
Run(combat, 8.0);
|
||||||
|
Check(brunhild.UltimateSerial == 1, "once per combat");
|
||||||
|
LuneUnit calm;
|
||||||
|
LuneCombat group = Arena(new HeroState { HeroId = "held_brunhild" }, out calm, At("e01", 3.0), At("e01", 3.5));
|
||||||
|
Run(group, 4.0);
|
||||||
|
Check(calm.UltimateSerial == 0, "Gruppe waits for three enemies at the target");
|
||||||
|
}
|
||||||
|
|
||||||
|
void TestPassiveAndTalents()
|
||||||
|
{
|
||||||
|
LuneUnit brunhild;
|
||||||
|
LuneCombat combat = Arena(new HeroState { HeroId = "held_brunhild", Ultimate = "notfall" }, out brunhild, At("held", 1.5));
|
||||||
|
LuneUnit hero = combat.Units.First(u => u.Kind == "hero" && u.Team == 1);
|
||||||
|
double before = hero.Hp;
|
||||||
|
int guard = 0;
|
||||||
|
while (brunhild.HitCount == 0 && guard++ < 200)
|
||||||
|
combat.Step();
|
||||||
|
double expected = hero.Mitigated(brunhild.Def.Damage * (1.0 + brunhild.DamageBonus()) * LuneCombat.BrunhildHunter, brunhild.Def.AttackType);
|
||||||
|
Check(GdMath.IsEqualApprox(before - hero.Hp, expected), "Heldenjägerin: +25 % against heroes");
|
||||||
|
UnitDef raven = LuneContent.HeroDefinition(new HeroState { HeroId = "held_brunhild", Xp = 1000, Talents = new List<string> { "speerregen", "rabenschwinge" } });
|
||||||
|
Check(GdMath.IsEqualApprox(raven.AttackSpeedBonus, 0.20), "Rabenschwinge: +20 % attack tempo");
|
||||||
|
LuneUnit rain;
|
||||||
|
LuneCombat spears = Arena(new HeroState { HeroId = "held_brunhild", Ultimate = "notfall", Talents = new List<string> { "speerregen", "goetterdaemmerung" } }, out rain,
|
||||||
|
At("e01", 4.0), At("e01", 5.0), At("e01", 6.0), At("e01", 1.0));
|
||||||
|
Run(spears, 3.1);
|
||||||
|
Check(spears.Units.Count(u => u.Effects.ContainsKey("valkyrie_mark")) == 3, "Speerregen: three marked enemies");
|
||||||
|
LuneUnit dusk;
|
||||||
|
LuneCombat stun = Arena(new HeroState { HeroId = "held_brunhild", Ultimate = "sofort", Talents = new List<string> { "speerregen", "goetterdaemmerung" } }, out dusk, At("e01", 2.0));
|
||||||
|
Run(stun, 2.05);
|
||||||
|
LuneUnit victim = stun.Units.First(u => u.Kind == "monster");
|
||||||
|
Run(stun, 1.5);
|
||||||
|
Check(victim.Stunned(), "Götterdämmerung: the stun lasts 2 s");
|
||||||
|
}
|
||||||
|
|
||||||
|
void TestBots()
|
||||||
|
{
|
||||||
|
bool picked = false;
|
||||||
|
for (int seed = 1; seed <= 16 && !picked; seed++)
|
||||||
|
{
|
||||||
|
var probe = new LuneMatch();
|
||||||
|
probe.Setup(new MatchOptions { Seed = seed, HumanSlot = -1, Extended = true });
|
||||||
|
for (int slot = 0; slot < 6; slot++)
|
||||||
|
picked |= LuneBot.ProfileFor(probe, slot) == "walkuere";
|
||||||
|
}
|
||||||
|
Check(picked, "extended bots pick Brunhild's profile");
|
||||||
|
var reference = new LuneMatch();
|
||||||
|
reference.Setup(new MatchOptions { Seed = 3, HumanSlot = -1 });
|
||||||
|
bool clean = true;
|
||||||
|
for (int slot = 0; slot < 6; slot++)
|
||||||
|
clean &= !ContentData.ExtraBotProfiles.ContainsKey(LuneBot.ProfileFor(reference, slot));
|
||||||
|
Check(clean, "reference rotation untouched");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Luneraria/Tests/Core/H2HeroSuite.cs.meta
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2fa3dc51ddee4a919bec93bf34fc29f9
|
||||||
55
Assets/Luneraria/Tests/Core/S4NetSuite.cs
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace Luneraria.Core.Tests
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// S4: what guests see of the extended rules. Over the in-process loopback a guest receives
|
||||||
|
/// the running glyph of each team (extra values after the building HP of a frame) and the
|
||||||
|
/// stun flag of every unit, and its fog sources match the host's (LuneFog.Vision).
|
||||||
|
/// </summary>
|
||||||
|
public sealed class S4NetSuite : CheckSuite
|
||||||
|
{
|
||||||
|
public override string Name { get { return "s4"; } }
|
||||||
|
|
||||||
|
protected override void RunChecks()
|
||||||
|
{
|
||||||
|
var hub = new LuneLoopback();
|
||||||
|
LuneSession host = hub.Attach(1, new LuneSession());
|
||||||
|
var options = new MatchOptions { Seed = 42, HumanSlot = 0, Extended = true,
|
||||||
|
Bunds = new List<string> { "glutpakt", "wurzelbund", "glutpakt", "wurzelbund", "glutpakt", "wurzelbund" } };
|
||||||
|
Check(host.HostNetwork(options, "Host"), "host starts");
|
||||||
|
LuneSession guest = hub.Attach(10, new LuneSession());
|
||||||
|
guest.JoinNetwork("Gast");
|
||||||
|
guest.OnClientConnected();
|
||||||
|
Check(guest.MatchState != null && guest.MatchState.Extended, "the guest's match has the extended rules");
|
||||||
|
host.PlanBotSeats();
|
||||||
|
host.Submit(Command.Buy("g01"));
|
||||||
|
host.ReadyUp();
|
||||||
|
guest.Submit(Command.Buy(guest.MatchState.BaseIds(guest.MatchState.Players[guest.LocalSlot].Bund)[0]));
|
||||||
|
guest.ReadyUp();
|
||||||
|
for (int i = 0; i < 20 && host.MatchState.Phase != Phase.Combat; i++)
|
||||||
|
host.HostTick(LuneNet.FrameInterval);
|
||||||
|
Check(host.MatchState.Phase == Phase.Combat && guest.MatchState.Phase == Phase.Combat, "both sides are in combat");
|
||||||
|
LuneCombat combat = host.MatchState.Combat;
|
||||||
|
for (int i = 0; i < 10; i++)
|
||||||
|
host.MatchState.StepCombat();
|
||||||
|
combat.GlyphLane[0] = "mid";
|
||||||
|
combat.GlyphUntil[0] = combat.Elapsed + 3.0;
|
||||||
|
LuneUnit target = combat.Units.First(u => u.IsMobile() && u.Team == 1 && u.Alive);
|
||||||
|
target.ApplyEffect("valkyrie_stun", "stun", 1.0, 2.0);
|
||||||
|
host.HostTick(LuneNet.FrameInterval);
|
||||||
|
LuneCombat mirror = guest.MatchState.Combat;
|
||||||
|
Check(mirror.GlyphLane[0] == "mid" && mirror.GlyphLane[1] == "", "the guest knows Blau's glyph on mid");
|
||||||
|
LuneUnit tower;
|
||||||
|
Check(mirror.Buildings.TryGetValue("blau_mid_outer", out tower) && mirror.Glyphed(tower), "the guest sees the mid tower glyphed");
|
||||||
|
LuneUnit copy = mirror.Units.FirstOrDefault(u => u.Id == target.Id);
|
||||||
|
Check(copy != null && copy.ShowsStun(), "the guest sees the stun");
|
||||||
|
Check(mirror.Units.Where(u => u.Id != target.Id && u.IsMobile()).All(u => !u.ShowsStun()), "nobody else looks stunned");
|
||||||
|
int team = 0;
|
||||||
|
int hostSources = LuneFog.Vision(host.MatchState, combat, team).Count;
|
||||||
|
int guestSources = LuneFog.Vision(guest.MatchState, mirror, team).Count;
|
||||||
|
Check(hostSources == guestSources && hostSources > 0, "fog sources agree on host and guest (" + hostSources + "/" + guestSources + ")");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Luneraria/Tests/Core/S4NetSuite.cs.meta
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: df9ba1b1ef594679b037f9c14faa13c0
|
||||||
|
|
@ -55,5 +55,7 @@ namespace Luneraria.Core.Tests
|
||||||
[Test] public void S1Rules() { RunSuite(new S1RulesSuite()); }
|
[Test] public void S1Rules() { RunSuite(new S1RulesSuite()); }
|
||||||
[Test] public void S2Rules() { RunSuite(new S2RulesSuite()); }
|
[Test] public void S2Rules() { RunSuite(new S2RulesSuite()); }
|
||||||
[Test] public void S3Rules() { RunSuite(new S3RulesSuite()); }
|
[Test] public void S3Rules() { RunSuite(new S3RulesSuite()); }
|
||||||
|
[Test] public void H2Heroes() { RunSuite(new H2HeroSuite()); }
|
||||||
|
[Test] public void S4Net() { RunSuite(new S4NetSuite()); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ namespace Luneraria.UI.Tests
|
||||||
s.Hud.OpenHero();
|
s.Hud.OpenHero();
|
||||||
yield return HudSession.Frames(2);
|
yield return HudSession.Frames(2);
|
||||||
s.Sync();
|
s.Sync();
|
||||||
Assert.AreEqual(4, s.Hud.HeroDetail.RecruitButtons.Count, "four heroes to recruit");
|
Assert.AreEqual(LuneContent.Heroes.Count, s.Hud.HeroDetail.RecruitButtons.Count, "every hero can be recruited");
|
||||||
Assert.IsTrue(s.Hud.HeroDetail.RecruitButtons.ContainsKey("held_sylvara"), "Sylvara can be recruited");
|
Assert.IsTrue(s.Hud.HeroDetail.RecruitButtons.ContainsKey("held_sylvara"), "Sylvara can be recruited");
|
||||||
s.Click(s.Hud.HeroDetail.RecruitButtons["held_sylvara"]);
|
s.Click(s.Hud.HeroDetail.RecruitButtons["held_sylvara"]);
|
||||||
yield return HudSession.Frames(2);
|
yield return HudSession.Frames(2);
|
||||||
|
|
|
||||||
175
Assets/Luneraria/Tests/UI/PlayMode/H2HeroViewsTests.cs
Normal file
|
|
@ -0,0 +1,175 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Linq;
|
||||||
|
using Luneraria.Core;
|
||||||
|
using Luneraria.View;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.TestTools;
|
||||||
|
|
||||||
|
namespace Luneraria.UI.Tests
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// H2: Brunhild in the real scene (derived from the H1 test). BrunhildHud checks recruiting,
|
||||||
|
/// the tab "Ultimate & Skin" (four rules, two skins), the command slot, her figure with the
|
||||||
|
/// ultimate clip and the Eiswalküre material on body and spear, and the ultimate in combat.
|
||||||
|
/// BrunhildBilder captures the H2 evidence (1920×1080); LUNE_EVIDENCE names the folder below
|
||||||
|
/// docs/port/screenshots (default h2/spiel).
|
||||||
|
/// </summary>
|
||||||
|
public sealed class H2HeroViewsTests
|
||||||
|
{
|
||||||
|
static void Send(HudSession s, Command command)
|
||||||
|
{
|
||||||
|
CommandResult result = s.Match.Submit(HudSession.Human, command);
|
||||||
|
Assert.IsTrue(result.Ok, command.Type + ": " + result.Message);
|
||||||
|
s.Game.RebuildPreview();
|
||||||
|
s.Sync();
|
||||||
|
}
|
||||||
|
|
||||||
|
static LuneUnit Hero(HudSession s)
|
||||||
|
{
|
||||||
|
return s.Match.Combat?.Units.FirstOrDefault(u => u.Kind == "hero" && u.OwnerSlot == HudSession.Human);
|
||||||
|
}
|
||||||
|
|
||||||
|
static LuneUnitView ViewOf(LuneUnit unit)
|
||||||
|
{
|
||||||
|
return UnityEngine.Object.FindObjectsByType<LuneUnitView>(FindObjectsSortMode.None).FirstOrDefault(v => v.Unit == unit);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Steps the combat in single simulation steps until the condition holds (or the combat ends).</summary>
|
||||||
|
static IEnumerator Until(HudSession s, Func<bool> done, double limit = 60.0)
|
||||||
|
{
|
||||||
|
double time = 0.0;
|
||||||
|
while (!done() && time < limit && s.Runner.Current == LuneMatchRunner.Stage.Combat)
|
||||||
|
{
|
||||||
|
s.Runner.Advance(.05);
|
||||||
|
time += .05;
|
||||||
|
if ((int)(time / .05) % 10 == 0)
|
||||||
|
yield return null;
|
||||||
|
}
|
||||||
|
yield return HudSession.Frames(2);
|
||||||
|
s.Sync();
|
||||||
|
}
|
||||||
|
|
||||||
|
[UnityTest, Timeout(600000)]
|
||||||
|
public IEnumerator BrunhildHud()
|
||||||
|
{
|
||||||
|
var s = new HudSession();
|
||||||
|
yield return s.Open(1920, 1080, seed: 4, startRound: 6, extraGold: 1500);
|
||||||
|
s.Hud.OpenHero();
|
||||||
|
yield return HudSession.Frames(2);
|
||||||
|
s.Sync();
|
||||||
|
Assert.AreEqual(LuneContent.Heroes.Count, s.Hud.HeroDetail.RecruitButtons.Count, "every hero can be recruited");
|
||||||
|
Assert.IsTrue(s.Hud.HeroDetail.RecruitButtons.ContainsKey("held_brunhild"), "Brunhild can be recruited");
|
||||||
|
s.Click(s.Hud.HeroDetail.RecruitButtons["held_brunhild"]);
|
||||||
|
yield return HudSession.Frames(2);
|
||||||
|
s.Sync();
|
||||||
|
Assert.AreEqual("held_brunhild", s.Me.Draft.Hero?.HeroId, "the recruit button buys Brunhild");
|
||||||
|
s.Hud.OpenHero(LuneHeroDetail.TabUltimate);
|
||||||
|
yield return HudSession.Frames(2);
|
||||||
|
s.Sync();
|
||||||
|
Assert.AreEqual(4, s.Hud.HeroDetail.RuleCards.Count, "four trigger rules");
|
||||||
|
Assert.AreEqual(2, s.Hud.HeroDetail.SkinCards.Count, "standard look and Eiswalküre");
|
||||||
|
Assert.IsTrue(s.Hud.HeroDetail.RuleCards["gruppe"].On, "default rule Gruppe is marked");
|
||||||
|
s.Click(s.Hud.HeroDetail.RuleCards["held"]);
|
||||||
|
yield return HudSession.Frames(2);
|
||||||
|
s.Sync();
|
||||||
|
Assert.AreEqual("held", s.Me.Draft.Hero.Ultimate, "a rule card sets the rule");
|
||||||
|
s.Click(s.Hud.HeroDetail.SkinCards["eiswalkuere"]);
|
||||||
|
yield return HudSession.Frames(2);
|
||||||
|
s.Sync();
|
||||||
|
Assert.AreEqual("eiswalkuere", s.Me.Draft.Hero.Skin, "a skin card sets the skin");
|
||||||
|
Assert.IsTrue(HudSession.Visible(s.Hud.HeroCard.CommandSlot), "the hero card shows the ultimate");
|
||||||
|
StringAssert.Contains("HELDENJAGD", s.Hud.HeroCard.CommandSlot.Text, "the command slot names the rule");
|
||||||
|
s.Hud.CloseModal();
|
||||||
|
s.Game.Key(KeyCode.Space);
|
||||||
|
yield return HudSession.Frames(2);
|
||||||
|
LuneUnit hero = Hero(s);
|
||||||
|
Assert.IsNotNull(hero, "Brunhild fights");
|
||||||
|
Assert.AreEqual("eiswalkuere", hero.Def.Skin);
|
||||||
|
yield return HudSession.Frames(3);
|
||||||
|
LuneUnitView view = ViewOf(hero);
|
||||||
|
Assert.IsNotNull(view, "Brunhild has a view");
|
||||||
|
Animator animator = view.GetComponentInChildren<Animator>();
|
||||||
|
Assert.IsNotNull(animator, "skinned figure");
|
||||||
|
Assert.IsTrue(animator.HasState(0, Animator.StringToHash("ultimate")), "ultimate clip");
|
||||||
|
string[] materials = view.GetComponentsInChildren<Renderer>().SelectMany(r => r.sharedMaterials).Where(m => m != null).Select(m => m.name).Distinct().ToArray();
|
||||||
|
Assert.Contains("AI_Brunhild_Eiswalkuere", materials, "the Blutmond material is dressed: " + string.Join(", ", materials));
|
||||||
|
Assert.Contains("AI_BrunhildSpeer_Eiswalkuere", materials, "both sickles in Blutmond");
|
||||||
|
yield return Until(s, () => hero.UltimateSerial > 0 || !hero.Alive);
|
||||||
|
Assert.IsTrue(hero.UltimateSerial > 0 || !hero.Alive, "the ultimate fires (or Brunhild fell first)");
|
||||||
|
if (hero.UltimateSerial > 0)
|
||||||
|
StringAssert.Contains("GENUTZT", s.Hud.HeroCard.CommandSlot.Text, "the card reports the fired ultimate");
|
||||||
|
s.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
[UnityTest, Timeout(900000), Explicit("Bildwerkzeug: nur gezielt per -testFilter")]
|
||||||
|
public IEnumerator BrunhildBilder()
|
||||||
|
{
|
||||||
|
string evidence = Environment.GetEnvironmentVariable("LUNE_EVIDENCE");
|
||||||
|
string folder = "docs/port/screenshots/" + (string.IsNullOrEmpty(evidence) ? "h2/spiel" : evidence) + "/";
|
||||||
|
var s = new HudSession();
|
||||||
|
yield return s.Open(1920, 1080, seed: 4, startRound: 6, extraGold: 1500);
|
||||||
|
yield return s.Starter();
|
||||||
|
s.Leave();
|
||||||
|
s.Hud.OpenHero();
|
||||||
|
yield return new WaitForSecondsRealtime(.6f);
|
||||||
|
yield return s.Shot(folder + "01-heldenwahl.png");
|
||||||
|
Send(s, Command.HeroBuy("held_brunhild"));
|
||||||
|
s.Hud.OpenHero(LuneHeroDetail.TabValues);
|
||||||
|
yield return new WaitForSecondsRealtime(.6f);
|
||||||
|
yield return s.Shot(folder + "02-heldenfenster.png");
|
||||||
|
s.Hud.OpenHero(LuneHeroDetail.TabUltimate);
|
||||||
|
yield return new WaitForSecondsRealtime(.8f);
|
||||||
|
yield return s.Shot(folder + "03-ultimate-und-skin.png");
|
||||||
|
s.Hud.CloseModal();
|
||||||
|
yield return new WaitForSecondsRealtime(.3f);
|
||||||
|
LuneUnit waiting = s.View.Preview?.Units.FirstOrDefault(u => u.Kind == "hero" && u.OwnerSlot == HudSession.Human);
|
||||||
|
Assert.IsNotNull(waiting, "Brunhild in the planning preview");
|
||||||
|
s.Rig.LookAt(waiting.Position, 9f, true);
|
||||||
|
yield return new WaitForSecondsRealtime(.6f);
|
||||||
|
yield return s.Shot(folder + "04-aufstellung.png");
|
||||||
|
s.Game.Key(KeyCode.Space);
|
||||||
|
yield return HudSession.Frames(2);
|
||||||
|
LuneUnit hero = Hero(s);
|
||||||
|
yield return Until(s, () => hero.UltimateSerial > 0 || !hero.Alive);
|
||||||
|
s.Driver.Paused = true;
|
||||||
|
s.Rig.LookAt(hero.Position, 11f, true);
|
||||||
|
yield return new WaitForSecondsRealtime(.35f);
|
||||||
|
yield return s.Shot(folder + "05-walkuerensturz.png");
|
||||||
|
s.Rig.LookAt(hero.Position, 11f, true);
|
||||||
|
yield return new WaitForSecondsRealtime(.2f);
|
||||||
|
yield return s.Shot(folder + "06-betaeubt.png");
|
||||||
|
yield return new WaitForSecondsRealtime(.6f);
|
||||||
|
yield return s.Shot(folder + "07-nach-dem-sturz.png");
|
||||||
|
s.Rig.LookAt(hero.Position, 20f, true);
|
||||||
|
yield return new WaitForSecondsRealtime(.4f);
|
||||||
|
yield return s.Shot(folder + "08-kampf-lane.png");
|
||||||
|
s.Driver.Paused = false;
|
||||||
|
yield return s.FinishCombat();
|
||||||
|
// Space is blocked for a moment after a combat (no accidental skip of the planning).
|
||||||
|
float waited = 0f;
|
||||||
|
while (s.Hud.ReadyBlocked() && waited < 5f)
|
||||||
|
{
|
||||||
|
waited += Time.unscaledDeltaTime;
|
||||||
|
yield return null;
|
||||||
|
}
|
||||||
|
Send(s, Command.HeroSkin("eiswalkuere"));
|
||||||
|
s.Hud.OpenHero(LuneHeroDetail.TabUltimate);
|
||||||
|
yield return new WaitForSecondsRealtime(.8f);
|
||||||
|
yield return s.Shot(folder + "09-skin-eiswalkuere-fenster.png");
|
||||||
|
s.Hud.CloseModal();
|
||||||
|
int round = s.Match.RoundNumber;
|
||||||
|
s.Game.Key(KeyCode.Space);
|
||||||
|
yield return HudSession.Frames(2);
|
||||||
|
Assert.AreEqual(LuneMatchRunner.Stage.Combat, s.Runner.Current, "combat of round " + round);
|
||||||
|
hero = Hero(s);
|
||||||
|
yield return s.Fight(9.0);
|
||||||
|
s.Driver.Paused = true;
|
||||||
|
s.Rig.LookAt(hero.Position, 9f, true);
|
||||||
|
yield return new WaitForSecondsRealtime(.5f);
|
||||||
|
yield return s.Shot(folder + "10-skin-eiswalkuere-kampf.png");
|
||||||
|
s.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c13db54917f6463ebc138e12a6922458
|
||||||
|
|
@ -188,8 +188,8 @@ namespace Luneraria.UI.Tests
|
||||||
yield return s.Open();
|
yield return s.Open();
|
||||||
yield return s.Tap(() => s.Hud.HeroCard);
|
yield return s.Tap(() => s.Hud.HeroCard);
|
||||||
Check(s.Hud.ModalOpen, "hero card opens the hero window");
|
Check(s.Hud.ModalOpen, "hero card opens the hero window");
|
||||||
// H1: every hero of the catalogue (G3: three; Sylvara is the fourth).
|
// H1/H2: every hero of the catalogue (G3: three; Sylvara and Brunhild follow).
|
||||||
Check(s.Hud.HeroDetail.RecruitButtons.Count == LuneContent.Heroes.Count && LuneContent.Heroes.Count == 4, "all four heroes to recruit (H1)");
|
Check(s.Hud.HeroDetail.RecruitButtons.Count == LuneContent.Heroes.Count && LuneContent.Heroes.Count == 5, "all five heroes to recruit (H2)");
|
||||||
int heroCost = LuneContent.Heroes.Values[0].Cost;
|
int heroCost = LuneContent.Heroes.Values[0].Cost;
|
||||||
bool unaffordable = s.Match.GoldOf(HudSession.Human) < heroCost;
|
bool unaffordable = s.Match.GoldOf(HudSession.Human) < heroCost;
|
||||||
Check(!unaffordable || s.Hud.HeroDetail.RecruitButtons.Values.All(b => b.Disabled), "recruiting blocked without gold");
|
Check(!unaffordable || s.Hud.HeroDetail.RecruitButtons.Values.All(b => b.Disabled), "recruiting blocked without gold");
|
||||||
|
|
|
||||||
87
Assets/Luneraria/Tests/UI/PlayMode/S4PolishViewsTests.cs
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Linq;
|
||||||
|
using Luneraria.Core;
|
||||||
|
using Luneraria.View;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.TestTools;
|
||||||
|
|
||||||
|
namespace Luneraria.UI.Tests
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// S4 in the real scene: the fog of war darkens the terrain outside the team's vision (light
|
||||||
|
/// at the own base, dark at the enemy base), and a stunned unit shows the gold ring over its
|
||||||
|
/// head. S4Bilder (explicit) captures both at 1920×1080; LUNE_EVIDENCE names the folder below
|
||||||
|
/// docs/port/screenshots (default s4/spiel).
|
||||||
|
/// </summary>
|
||||||
|
public sealed class S4PolishViewsTests
|
||||||
|
{
|
||||||
|
static float AlphaAt(LuneFogOverlay fog, Vec2 point)
|
||||||
|
{
|
||||||
|
int side = Mathf.CeilToInt((float)(LuneMap.HalfExtent * 2.0) / LuneFogOverlay.Cell) + 1;
|
||||||
|
int column = Mathf.Clamp(Mathf.RoundToInt((float)((point.X + LuneMap.HalfExtent) / LuneFogOverlay.Cell)), 0, side - 1);
|
||||||
|
int row = Mathf.Clamp(Mathf.RoundToInt((float)((point.Y + LuneMap.HalfExtent) / LuneFogOverlay.Cell)), 0, side - 1);
|
||||||
|
return fog.Alpha[row * side + column];
|
||||||
|
}
|
||||||
|
|
||||||
|
static IEnumerator Fight(HudSession s)
|
||||||
|
{
|
||||||
|
yield return s.Starter();
|
||||||
|
s.Leave();
|
||||||
|
s.Game.Key(KeyCode.Space);
|
||||||
|
yield return HudSession.Frames(2);
|
||||||
|
yield return s.Fight(4.0);
|
||||||
|
yield return HudSession.Frames(4);
|
||||||
|
}
|
||||||
|
|
||||||
|
[UnityTest, Timeout(600000)]
|
||||||
|
public IEnumerator S4Views()
|
||||||
|
{
|
||||||
|
var s = new HudSession();
|
||||||
|
yield return s.Open(1920, 1080, seed: 4, startRound: 6, extraGold: 500, extended: true);
|
||||||
|
yield return Fight(s);
|
||||||
|
LuneFogOverlay fog = s.Game.View.Fog;
|
||||||
|
Assert.IsNotNull(fog, "an extended match with a human seat has the fog overlay");
|
||||||
|
Assert.IsTrue(fog.gameObject.activeSelf && fog.Refreshes > 0, "the fog is active and refreshed");
|
||||||
|
Assert.Less(AlphaAt(fog, s.Match.Map.CorePosition(0)), .05f, "the own Ancient stands in light");
|
||||||
|
Assert.Greater(AlphaAt(fog, s.Match.Map.CorePosition(1)), .5f, "the enemy Ancient lies in the fog");
|
||||||
|
LuneUnit victim = s.Match.Combat.Units.First(u => u.IsMobile() && u.Alive && u.Team == 0);
|
||||||
|
victim.ApplyEffect("valkyrie_stun", "stun", 1.0, 3.0);
|
||||||
|
yield return HudSession.Frames(3);
|
||||||
|
LuneUnitView view = UnityEngine.Object.FindObjectsByType<LuneUnitView>(FindObjectsSortMode.None).First(v => v.Unit == victim);
|
||||||
|
Transform ring = view.transform.Find("StunRing");
|
||||||
|
Assert.IsTrue(ring != null && ring.gameObject.activeSelf, "a stunned unit shows the stun ring");
|
||||||
|
s.Close();
|
||||||
|
var reference = new HudSession();
|
||||||
|
yield return reference.Open(1920, 1080, seed: 4, startRound: 6, extraGold: 500);
|
||||||
|
yield return Fight(reference);
|
||||||
|
Assert.IsTrue(reference.Game.View.Fog == null || !reference.Game.View.Fog.gameObject.activeSelf, "no fog under the reference rules");
|
||||||
|
reference.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
[UnityTest, Timeout(600000), Explicit("Bildwerkzeug: nur gezielt per -testFilter")]
|
||||||
|
public IEnumerator S4Bilder()
|
||||||
|
{
|
||||||
|
string evidence = Environment.GetEnvironmentVariable("LUNE_EVIDENCE");
|
||||||
|
string folder = "docs/port/screenshots/" + (string.IsNullOrEmpty(evidence) ? "s4/spiel" : evidence) + "/";
|
||||||
|
var s = new HudSession();
|
||||||
|
yield return s.Open(1920, 1080, seed: 4, startRound: 6, extraGold: 500, extended: true);
|
||||||
|
yield return Fight(s);
|
||||||
|
s.Driver.Paused = true;
|
||||||
|
s.Rig.LookAt(new Vec2(0.0, 0.0), 60f, true);
|
||||||
|
yield return new WaitForSecondsRealtime(.6f);
|
||||||
|
yield return s.Shot(folder + "01-nebel-uebersicht.png");
|
||||||
|
LuneUnit front = s.Match.Combat.Units.Where(u => u.IsMobile() && u.Alive && u.Team == 0 && u.Lane == "mid").OrderByDescending(u => u.Progress).First();
|
||||||
|
s.Rig.LookAt(front.Position, 22f, true);
|
||||||
|
yield return new WaitForSecondsRealtime(.5f);
|
||||||
|
yield return s.Shot(folder + "02-nebelgrenze-mid.png");
|
||||||
|
foreach (LuneUnit unit in s.Match.Combat.Units.Where(u => u.IsMobile() && u.Alive && u.Position.DistanceTo(front.Position) < 6.0))
|
||||||
|
unit.ApplyEffect("valkyrie_stun", "stun", 1.0, 10.0);
|
||||||
|
s.Rig.LookAt(front.Position, 9f, true);
|
||||||
|
yield return new WaitForSecondsRealtime(.6f);
|
||||||
|
yield return s.Shot(folder + "03-betaeubung.png");
|
||||||
|
s.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 62a4209ed52348a182c63f43dc65a85b
|
||||||
|
|
@ -352,7 +352,11 @@ namespace Luneraria.UI
|
||||||
portrait.style.height = 170f;
|
portrait.style.height = 170f;
|
||||||
column.Add(portrait);
|
column.Add(portrait);
|
||||||
portrait.ShowModel(spec.Model, true);
|
portrait.ShowModel(spec.Model, true);
|
||||||
LuneUi.Label(spec.Name, "HudTitle", column);
|
// H2: five heroes share the window; the columns get more compact.
|
||||||
|
bool compact = LuneContent.Heroes.Count > 4;
|
||||||
|
Label title = LuneUi.Clip(LuneUi.Label(spec.Name, "HudTitle", column));
|
||||||
|
if (compact)
|
||||||
|
title.style.fontSize = 24f;
|
||||||
LuneUi.Label(spec.Title, "HudMuted", column);
|
LuneUi.Label(spec.Title, "HudMuted", column);
|
||||||
UnitDef definition = model.HeroDefinition(new HeroState { HeroId = heroId });
|
UnitDef definition = model.HeroDefinition(new HeroState { HeroId = heroId });
|
||||||
VisualElement role = LuneUi.Box(false, 5f, column);
|
VisualElement role = LuneUi.Box(false, 5f, column);
|
||||||
|
|
@ -362,7 +366,7 @@ namespace Luneraria.UI
|
||||||
{
|
{
|
||||||
VisualElement line = LuneUi.Box(false, 6f, column);
|
VisualElement line = LuneUi.Box(false, 6f, column);
|
||||||
LuneUi.Glyph(entry[0], LuneUiTheme.Muted, 13f, line);
|
LuneUi.Glyph(entry[0], LuneUiTheme.Muted, 13f, line);
|
||||||
LuneUi.Label(entry[1], "HudMuted", line).style.minWidth = 104f;
|
LuneUi.Label(entry[1], "HudMuted", line).style.minWidth = compact ? 88f : 104f;
|
||||||
LuneUi.Clip(LuneUi.Label(entry[2], "HudText", line)).style.flexGrow = 1f;
|
LuneUi.Clip(LuneUi.Label(entry[2], "HudText", line)).style.flexGrow = 1f;
|
||||||
}
|
}
|
||||||
Label summary = LuneUi.Wrap(LuneUi.Label(spec.Summary, "HudText", column));
|
Label summary = LuneUi.Wrap(LuneUi.Label(spec.Summary, "HudText", column));
|
||||||
|
|
|
||||||
91
Assets/Luneraria/View/LuneFogOverlay.cs
Normal file
|
|
@ -0,0 +1,91 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Luneraria.Core;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Luneraria.View
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// S4 fog of war in the terrain: a grid over the map (2 m cells) that follows the ground and
|
||||||
|
/// darkens every point no vision source of the viewer's team reaches (LuneFog.Vision: own
|
||||||
|
/// units 9 m, own buildings 10 m, wards 12 m). The alpha has a soft 2 m edge and is
|
||||||
|
/// recomputed ten times a second. Presentation only; the rules never read it.
|
||||||
|
/// </summary>
|
||||||
|
public sealed class LuneFogOverlay : MonoBehaviour
|
||||||
|
{
|
||||||
|
public const float Cell = 2f;
|
||||||
|
public const float Darkness = .55f;
|
||||||
|
public const float Edge = 2f;
|
||||||
|
public const float Interval = .1f;
|
||||||
|
|
||||||
|
Mesh _mesh;
|
||||||
|
Vec2[] _points;
|
||||||
|
Color32[] _colors;
|
||||||
|
float _timer;
|
||||||
|
|
||||||
|
/// <summary>Darkness of every grid point (0 = seen), for tests.</summary>
|
||||||
|
public float[] Alpha { get; private set; }
|
||||||
|
public int Refreshes { get; private set; }
|
||||||
|
|
||||||
|
public void Build(LuneGround ground, Material material)
|
||||||
|
{
|
||||||
|
int side = Mathf.CeilToInt((float)(LuneMap.HalfExtent * 2.0) / Cell) + 1;
|
||||||
|
var vertices = new Vector3[side * side];
|
||||||
|
_points = new Vec2[side * side];
|
||||||
|
for (int row = 0; row < side; row++)
|
||||||
|
{
|
||||||
|
for (int column = 0; column < side; column++)
|
||||||
|
{
|
||||||
|
var map = new Vec2(-LuneMap.HalfExtent + column * Cell, -LuneMap.HalfExtent + row * Cell);
|
||||||
|
float height = ground != null ? ground.StandHeight(map) : 0f;
|
||||||
|
_points[row * side + column] = map;
|
||||||
|
vertices[row * side + column] = LuneSpace.World(map, height + .45f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var triangles = new List<int>();
|
||||||
|
for (int row = 0; row + 1 < side; row++)
|
||||||
|
{
|
||||||
|
for (int column = 0; column + 1 < side; column++)
|
||||||
|
{
|
||||||
|
int a = row * side + column;
|
||||||
|
triangles.AddRange(new[] { a, a + side, a + 1, a + 1, a + side, a + side + 1 });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_colors = new Color32[vertices.Length];
|
||||||
|
Alpha = new float[vertices.Length];
|
||||||
|
_mesh = new Mesh { name = "FogOverlay", indexFormat = UnityEngine.Rendering.IndexFormat.UInt32 };
|
||||||
|
_mesh.SetVertices(vertices);
|
||||||
|
_mesh.SetTriangles(triangles, 0);
|
||||||
|
_mesh.SetColors(_colors);
|
||||||
|
_mesh.RecalculateBounds();
|
||||||
|
gameObject.AddComponent<MeshFilter>().sharedMesh = _mesh;
|
||||||
|
var renderer = gameObject.AddComponent<MeshRenderer>();
|
||||||
|
renderer.sharedMaterial = material;
|
||||||
|
renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
|
||||||
|
renderer.receiveShadows = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>Recomputes the darkness at most every Interval seconds (force: now).</summary>
|
||||||
|
public void Tick(float dt, List<KeyValuePair<Vec2, double>> sources, bool force = false)
|
||||||
|
{
|
||||||
|
_timer -= dt;
|
||||||
|
if (!force && _timer > 0f)
|
||||||
|
return;
|
||||||
|
_timer = Interval;
|
||||||
|
Refreshes++;
|
||||||
|
for (int i = 0; i < _points.Length; i++)
|
||||||
|
{
|
||||||
|
double best = double.PositiveInfinity;
|
||||||
|
foreach (KeyValuePair<Vec2, double> source in sources)
|
||||||
|
{
|
||||||
|
double gap = _points[i].DistanceTo(source.Key) - source.Value;
|
||||||
|
if (gap < best)
|
||||||
|
best = gap;
|
||||||
|
}
|
||||||
|
float t = Mathf.Clamp01((float)(best + Edge * .5) / Edge);
|
||||||
|
Alpha[i] = Darkness * t;
|
||||||
|
_colors[i] = new Color32(0, 0, 0, (byte)Mathf.RoundToInt(Alpha[i] * 255f));
|
||||||
|
}
|
||||||
|
_mesh.SetColors(_colors);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Luneraria/View/LuneFogOverlay.cs.meta
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a539f6fdd87d43728442d53d45a23e97
|
||||||
|
|
@ -74,6 +74,29 @@ namespace Luneraria.View
|
||||||
/// <summary>Ids of the units hidden in the fog this frame.</summary>
|
/// <summary>Ids of the units hidden in the fog this frame.</summary>
|
||||||
public HashSet<int> Hidden { get; private set; } = new HashSet<int>();
|
public HashSet<int> Hidden { get; private set; } = new HashSet<int>();
|
||||||
static readonly HashSet<int> Empty = new HashSet<int>();
|
static readonly HashSet<int> Empty = new HashSet<int>();
|
||||||
|
/// <summary>S4: the darkening grid of the fog (null until a fogged match runs).</summary>
|
||||||
|
public LuneFogOverlay Fog { get; private set; }
|
||||||
|
|
||||||
|
void FogTick(LuneMatch match, float dt)
|
||||||
|
{
|
||||||
|
bool on = FogSlot >= 0 && FogSlot < match.Players.Count && match.Extended && Library != null && Library.FogOverlay != null;
|
||||||
|
if (!on)
|
||||||
|
{
|
||||||
|
if (Fog != null && Fog.gameObject.activeSelf)
|
||||||
|
Fog.gameObject.SetActive(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (Fog == null)
|
||||||
|
{
|
||||||
|
var go = new GameObject("FogOverlay");
|
||||||
|
go.transform.SetParent(transform, false);
|
||||||
|
Fog = go.AddComponent<LuneFogOverlay>();
|
||||||
|
Fog.Build(Library.Ground, Library.FogOverlay);
|
||||||
|
}
|
||||||
|
if (!Fog.gameObject.activeSelf)
|
||||||
|
Fog.gameObject.SetActive(true);
|
||||||
|
Fog.Tick(dt, LuneFog.Vision(match, _combat, match.Players[FogSlot].Team));
|
||||||
|
}
|
||||||
/// <summary>Main-thread cost of the last frame's view update (milliseconds).</summary>
|
/// <summary>Main-thread cost of the last frame's view update (milliseconds).</summary>
|
||||||
public double LastSyncMs { get; private set; }
|
public double LastSyncMs { get; private set; }
|
||||||
readonly System.Diagnostics.Stopwatch _clock = new System.Diagnostics.Stopwatch();
|
readonly System.Diagnostics.Stopwatch _clock = new System.Diagnostics.Stopwatch();
|
||||||
|
|
@ -117,6 +140,7 @@ namespace Luneraria.View
|
||||||
Hidden = FogSlot >= 0 && FogSlot < match.Players.Count && showUnits
|
Hidden = FogSlot >= 0 && FogSlot < match.Players.Count && showUnits
|
||||||
? LuneFog.Hidden(match, _combat, match.Players[FogSlot].Team, planning, planning ? match.Players[FogSlot].Draft : null)
|
? LuneFog.Hidden(match, _combat, match.Players[FogSlot].Team, planning, planning ? match.Players[FogSlot].Draft : null)
|
||||||
: Empty;
|
: Empty;
|
||||||
|
FogTick(match, dt);
|
||||||
float alpha = Driver.Runner.Current == LuneMatchRunner.Stage.Combat ? (float)Driver.Runner.Clock.Alpha : 1f;
|
float alpha = Driver.Runner.Current == LuneMatchRunner.Stage.Combat ? (float)Driver.Runner.Clock.Alpha : 1f;
|
||||||
if (showUnits)
|
if (showUnits)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,8 @@ namespace Luneraria.View
|
||||||
public Material HeroRing;
|
public Material HeroRing;
|
||||||
/// <summary>H1: expanding ring of a hero's ultimate (moon light).</summary>
|
/// <summary>H1: expanding ring of a hero's ultimate (moon light).</summary>
|
||||||
public Material MoonBurst;
|
public Material MoonBurst;
|
||||||
|
/// <summary>S4: fog of war overlay (Luneraria/FogOverlay, vertex alpha).</summary>
|
||||||
|
public Material FogOverlay;
|
||||||
public Material BarBack;
|
public Material BarBack;
|
||||||
public Material[] BarFill = new Material[3];
|
public Material[] BarFill = new Material[3];
|
||||||
public Material[] Bolt = new Material[3];
|
public Material[] Bolt = new Material[3];
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,8 @@ namespace Luneraria.View
|
||||||
/// <summary>H1: expanding moon ring of an ultimate (seconds left, 0 = none).</summary>
|
/// <summary>H1: expanding moon ring of an ultimate (seconds left, 0 = none).</summary>
|
||||||
Transform _burst;
|
Transform _burst;
|
||||||
float _burstTime;
|
float _burstTime;
|
||||||
|
/// <summary>S4: a small gold ring circling over the head of a stunned unit.</summary>
|
||||||
|
Transform _stun;
|
||||||
float _attackFlash;
|
float _attackFlash;
|
||||||
float _time;
|
float _time;
|
||||||
Vector3 _lastVisual;
|
Vector3 _lastVisual;
|
||||||
|
|
@ -116,6 +118,9 @@ namespace Luneraria.View
|
||||||
_burst.localPosition = new Vector3(0f, .08f, 0f);
|
_burst.localPosition = new Vector3(0f, .08f, 0f);
|
||||||
_burst.gameObject.SetActive(false);
|
_burst.gameObject.SetActive(false);
|
||||||
}
|
}
|
||||||
|
_stun = Marker("StunRing", library.RingRound, library.HeroRing);
|
||||||
|
_stun.localScale = new Vector3(.55f, 1f, .55f);
|
||||||
|
_stun.gameObject.SetActive(false);
|
||||||
transform.position = Ground(unit.Position);
|
transform.position = Ground(unit.Position);
|
||||||
transform.rotation = LuneSpace.Facing(unit.Facing);
|
transform.rotation = LuneSpace.Facing(unit.Facing);
|
||||||
_lastVisual = transform.position;
|
_lastVisual = transform.position;
|
||||||
|
|
@ -164,6 +169,14 @@ namespace Luneraria.View
|
||||||
if (ultimate && _burst != null)
|
if (ultimate && _burst != null)
|
||||||
_burstTime = BurstSeconds;
|
_burstTime = BurstSeconds;
|
||||||
Burst(dt);
|
Burst(dt);
|
||||||
|
bool stunned = Unit.Alive && Unit.ShowsStun();
|
||||||
|
if (_stun.gameObject.activeSelf != stunned)
|
||||||
|
_stun.gameObject.SetActive(stunned);
|
||||||
|
if (stunned)
|
||||||
|
{
|
||||||
|
_stun.localPosition = new Vector3(0f, _height + .15f, 0f);
|
||||||
|
_stun.Rotate(0f, 360f * dt, 0f, Space.Self);
|
||||||
|
}
|
||||||
if (attacked || ability)
|
if (attacked || ability)
|
||||||
_attackFlash = .28f;
|
_attackFlash = .28f;
|
||||||
_attackFlash = Mathf.Max(0f, _attackFlash - dt);
|
_attackFlash = Mathf.Max(0f, _attackFlash - dt);
|
||||||
|
|
|
||||||
BIN
assets-source/meshy/brunhild/brunhild-animationen.glb
Normal file
BIN
assets-source/meshy/brunhild/brunhild-konzept.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
assets-source/meshy/brunhild/brunhild-skelett.glb
Normal file
BIN
assets-source/meshy/brunhild/brunhild-speer-konzept.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
assets-source/meshy/brunhild/brunhild-speer.glb
Normal file
|
|
@ -106,3 +106,5 @@ Die Fähigkeiten setzen die **Ultimate-Bedingungen** aus [IDEEN.md](IDEEN.md) vo
|
||||||
**Sylvara mit einem Varianten-Skin (Blutmond).** Ziel: das Slot-System einmal vollständig prüfen (Körper, Waffen-Prop, Umhang, VFX-Palette, Teamfarbe, Variantenmaterial), bevor weitere Helden folgen.
|
**Sylvara mit einem Varianten-Skin (Blutmond).** Ziel: das Slot-System einmal vollständig prüfen (Körper, Waffen-Prop, Umhang, VFX-Palette, Teamfarbe, Variantenmaterial), bevor weitere Helden folgen.
|
||||||
|
|
||||||
**Umgesetzt in H1** (10. Oktober 2026): Sylvara als voller Held mit Ultimate-Auslöser und Blutmond-Skin, siehe [H1-SYLVARA.md](H1-SYLVARA.md). Werte nach der Balance-Abstimmung: 1.450 Leben, Sprung nur auf ungeschützte Ziele, Mondschleier, Tanz 220 %.
|
**Umgesetzt in H1** (10. Oktober 2026): Sylvara als voller Held mit Ultimate-Auslöser und Blutmond-Skin, siehe [H1-SYLVARA.md](H1-SYLVARA.md). Werte nach der Balance-Abstimmung: 1.450 Leben, Sprung nur auf ungeschützte Ziele, Mondschleier, Tanz 220 %.
|
||||||
|
|
||||||
|
**Umgesetzt in H2** (11. Oktober 2026): Brunhild als voller Held mit Markierung, Betäubung und Skin Eiswalküre, siehe [H2-BRUNHILD.md](H2-BRUNHILD.md). Abweichung vom Konzept: Der Speerwurf trifft den fernsten Gegner in 7 m (statt eines beliebigen Ziels), und nach dem Sturz schützt der Walkürenschild.
|
||||||
|
|
|
||||||
91
docs/luneraria/H2-BRUNHILD.md
Normal file
|
|
@ -0,0 +1,91 @@
|
||||||
|
# H2 · Brunhild, die Walküre
|
||||||
|
|
||||||
|
Stand: 11. Oktober 2026 · Branch `luneraria/h2-brunhild` (von `luneraria/s3-strategie`).
|
||||||
|
Grundlage: [CHAMPIONS-KONZEPT.md](CHAMPIONS-KONZEPT.md) und das Muster aus [H1-SYLVARA.md](H1-SYLVARA.md). Auftrag: „weiter“; Brunhild war die Empfehlung seit S1.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Kurzfassung
|
||||||
|
|
||||||
|
- **Neue Heldin:** Brunhild ist der fünfte kaufbare Held, Heldenjägerin in der Nahkampfreihe, 260 Gold. Sie ist das Gegenstück zu Siegfried.
|
||||||
|
- **Kit:**
|
||||||
|
- Heldenjägerin (passiv)
|
||||||
|
- Speerwurf mit Markierung
|
||||||
|
- Ultimate Walkürensturz: Sprung, Flächenschaden, Betäubung
|
||||||
|
- zwei Talentstufen
|
||||||
|
- vier Auslöser
|
||||||
|
- **Neue Regelbausteine** (wirken nur durch Brunhild, deshalb bleibt die Referenz unverändert):
|
||||||
|
- **Markierung** (`vulnerable`): Das Ziel nimmt mehr Schaden.
|
||||||
|
- **Betäubung** (`stun`): Das Ziel greift weder an noch bewegt es sich. Bosse sind immun.
|
||||||
|
- **Skin:** „Eiswalküre“ (Variante): Der karmesinrote Umhang wird eisblau, das Gold kühler, Haut und Haar bleiben.
|
||||||
|
- **Figur:** Meshy-Figur mit dem Speer als eigenem Modell; das Ultimate nutzt den Clip „Jump Attack“. Verbrauch: 113 Credits, danach sind 110 übrig.
|
||||||
|
- **Bots:** Mit erweiterten Regeln wählen sie das Profil `walkuere` (acht Profile in der Rotation, Schritt 5, weiterhin sechs verschiedene je Partie).
|
||||||
|
|
||||||
|
## Regeln
|
||||||
|
|
||||||
|
| Teil | Wirkung |
|
||||||
|
| --- | --- |
|
||||||
|
| Grundwerte | 2.000 Leben, 42 Schaden, Durchschlag gegen Schwer, Reichweite 2,0 m (Speer), Tempo 2,4, Rolle Nahkampf |
|
||||||
|
| Heldenjägerin (passiv) | +25 % Schaden gegen Helden und Angriffschampions, auch bei Speer und Sturz |
|
||||||
|
| Speerwurf | Ab 3 s alle 6 s: 120 % Schaden am fernsten Gegner in 7 m. Er ist 4 s markiert und nimmt 15 % mehr Schaden |
|
||||||
|
| Walkürensturz (Ultimate) | Einmal pro Kampf, frühestens nach 2 s. Sprung auf das Ziel: zuerst ein Held oder Angriffschampion in 7 m, dann der markierte Gegner, dann ihr Ziel. 200 % Schaden an allen Gegnern in 3 m und 1 s Betäubung (Bosse immun). Danach Walkürenschild: Schild von 30 % ihrer Lebenspunkte für 5 s |
|
||||||
|
| Auslöser | **Gruppe** (Standard): 3 Gegner in 4 m um das Ziel · **Heldenjagd:** ein Held oder Champion in 7 m · **Notfall:** unter 40 % Leben · **Sofort:** erster Gegner in 7 m |
|
||||||
|
| Talente Stufe 3 | **Walkürenblut:** Speerwurf gegen Helden und Champions doppelt · **Speerregen:** die drei fernsten Gegner |
|
||||||
|
| Talente Stufe 6 | **Rabenschwinge:** +20 % Angriffstempo · **Götterdämmerung:** 2 s Betäubung in 4 m |
|
||||||
|
|
||||||
|
## Balance
|
||||||
|
|
||||||
|
Probe-Vergleich (`dotnet run -c Release --project tools/dotnet/Luneraria.Balance 40`): gleiches Bot-Profil, nur der Held getauscht, 80 Partien.
|
||||||
|
|
||||||
|
| Fassung | Brunhild | Überlebenszeit im Kampf |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Erste Fassung (1.700 Leben, kein Schild) | 0 % | fällt in jedem Kampf nach etwa 25 s (Ringborke etwa 42 s, Funkenlanze etwa 51 s) |
|
||||||
|
| Mit 2.000 Leben und Walkürenschild | **50 %**, wie Ringborke, Funkenlanze und Sylvara | – |
|
||||||
|
|
||||||
|
Die Siegquoten einzelner Bot-Profile in der Rotation schwanken stark mit den Teamkombinationen (15 bis 83 von 90) und taugen deshalb nicht für Heldenvergleiche. Maßgeblich ist der Probe-Vergleich.
|
||||||
|
|
||||||
|
## Technik
|
||||||
|
|
||||||
|
- **Kern:**
|
||||||
|
- `ContentData`: Held, Talente, Auslöser, Skin, Bot-Profil.
|
||||||
|
- `LuneCombat.BrunhildStep` / `BrunhildSpear`: Der Sprung nutzt dieselbe Landung wie Sylvaras Mondsprung.
|
||||||
|
- `LuneUnit`: `vulnerable` in `Mitigated`, `Stunned()` in Angriffstempo und Bewegung.
|
||||||
|
- **Figur:**
|
||||||
|
- `tools/meshy/brunhild/figure.json`, Speer als Prop in der rechten Hand.
|
||||||
|
- Export 23/23, zwei Läufe byteidentisch.
|
||||||
|
- **Skin:**
|
||||||
|
- `tools/meshy/brunhild/skins.json`.
|
||||||
|
- `skin_variant.py` kann jetzt Farbbänder über 0° (Rot) und eine Mindestsättigung, damit Hauttöne unverändert bleiben.
|
||||||
|
- **HUD:** Bei mehr als vier Helden werden die Spalten der Heldenwahl kompakter (Name 24 px, schmalere Beschriftung).
|
||||||
|
|
||||||
|
## Tests und Nachweise
|
||||||
|
|
||||||
|
| Prüfung | Ergebnis |
|
||||||
|
| --- | --- |
|
||||||
|
| Kern (.NET 8) | 619/619, darunter **h2 22**: Kauf, Regel, Skin; Speer erst ab 3 s, markiert den fernsten Gegner, +15 % erlittener Schaden; Sturz bei Heldenjagd, Landung am Helden, Betäubung (Boss immun), keine Bewegung und kein Angriff, Ende nach 1 s, einmal pro Kampf; Gruppe wartet; +25 % gegen Helden; Talente; Bot-Profil nur erweitert |
|
||||||
|
| Golden und Fingerabdrücke | 0 Abweichungen; `DCE95C96556F3A1A` bei 30/60/120 fps und unbegrenzt unverändert |
|
||||||
|
| Unity EditMode | 34/34 |
|
||||||
|
| Unity PlayMode | 19/19, neu `H2HeroViewsTests.BrunhildHud`: fünf Helden, Regel- und Skin-Karten, Befehlsplatz „HELDENJAGD“, Figur mit Ultimate-Clip, Eiswalküre-Material an Körper und Speer, Ultimate im Kampf. Verify A–I 718/0; die Prüfung der Heldenwahl erwartet jetzt fünf Helden |
|
||||||
|
| Asset-Prüfung | Export 23/23, byteidentisch in zwei Läufen |
|
||||||
|
| Player-Selbsttest | macOS 30/30 |
|
||||||
|
| Leistung | A/B im selben Player, abwechselnd, je sechs Heldinnen. Karte: Brunhild 138,1 / 142,9 / 143,3 fps, Sylvara 142,9 / 141,7 / 141,2 fps, Mittel gleich (141,4 zu 141,9). Mid nah: 153,3 / 157,1 / 157,8 zu 161,8 / 162,5 / 163,2 fps, also −4 %. Brunhild hat weniger Dreiecke (28.706 zu 30.782); der Unterschied kommt aus dem Kampfgeschehen im Nahbild. Rohdaten in `docs/port/logs/h2/` |
|
||||||
|
|
||||||
|
**Bilder** in `docs/port/screenshots/h2/spiel/`:
|
||||||
|
1. Heldenwahl mit fünf Helden
|
||||||
|
2. Heldenfenster
|
||||||
|
3. Ultimate und Skin
|
||||||
|
4. Aufstellung
|
||||||
|
5. Walkürensturz
|
||||||
|
6. Betäubt
|
||||||
|
7. Nach dem Sturz
|
||||||
|
8. Lane
|
||||||
|
9. Eiswalküre im Fenster
|
||||||
|
10. Eiswalküre im Kampf
|
||||||
|
|
||||||
|
Das Figurenblatt liegt in `figur/`.
|
||||||
|
|
||||||
|
## Offene Punkte
|
||||||
|
|
||||||
|
- **Betäubung sichtbar machen:** Betäubte Einheiten erkennt man bisher nur daran, dass sie stillstehen.
|
||||||
|
- **Brunhild und Siegfried als Paar:** Ein Götterdämmerung-Set-Skin ist möglich, sobald Siegfried als Held kommt.
|
||||||
|
- **Meshy-Guthaben:** 110 Credits übrig, das reicht für einen weiteren Helden mit Waffe knapp nicht. Die nächste Monatsgutschrift kommt laut Meshy im November.
|
||||||
46
docs/luneraria/HAUPTSTAND.md
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
# Hauptstand · 11. Oktober 2026
|
||||||
|
|
||||||
|
Stand: 11. Oktober 2026 · Branch `main` (vorgerückt) · Tag `stand-2026-10-11`.
|
||||||
|
|
||||||
|
Champions of Luneraria in Unity mit allen Phasen bis S4.
|
||||||
|
- **Zusammenführung:** `main` enthielt bisher nur den ersten Commit („Unity-Projekt angelegt“). Alle Phasen-Branches liegen in einer Linie; `main` wurde ohne Konflikte auf den Endstand vorgerückt.
|
||||||
|
- **Phasen-Branches:** Sie bleiben als Nachweis erhalten.
|
||||||
|
|
||||||
|
## Was der Stand enthält
|
||||||
|
|
||||||
|
| Phase | Inhalt | Doku |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| U1–U5.5 | Port aus Godot mit Verhaltensgleichheit, Welt, HUD, Netzwerk, PBR-Grafik, alle zehn Glutpakt-Truppen als Meshy-Figuren | `docs/port/PORT-STATUS.md`, `PORT-QA.md` |
|
||||||
|
| Konzept | Ideensammlung Strategie/MOBA, sieben neue Champions, Skin-Regeln | [IDEEN.md](IDEEN.md), [CHAMPIONS-KONZEPT.md](CHAMPIONS-KONZEPT.md) |
|
||||||
|
| H1 | Sylvara: Ultimate-Auslöser in der Planung, Skin-System (Blutmond) | [H1-SYLVARA.md](H1-SYLVARA.md) |
|
||||||
|
| S1 | Regelschalter „Erweitert“: Söldner-Einkommen, Kasernen, Rückkauf, Mondsegen | [S1-STRATEGIE.md](S1-STRATEGIE.md) |
|
||||||
|
| S2 | Glyphe, Item-Rezepte, Ancient-Stufen, Grottenjagd der Bots | [S2-STRATEGIE.md](S2-STRATEGIE.md) |
|
||||||
|
| S3 | frühe Bot-Helden (Rotationsfehler behoben), Neutrallager, Fog of War mit Spähern | [S3-STRATEGIE.md](S3-STRATEGIE.md) |
|
||||||
|
| H2 | Brunhild: Markierung, Betäubung, Skin Eiswalküre | [H2-BRUNHILD.md](H2-BRUNHILD.md) |
|
||||||
|
| S4 | Betäubung sichtbar, Nebel im Gelände, Glyphe und Betäubung für Gäste | [S4-FEINSCHLIFF.md](S4-FEINSCHLIFF.md) |
|
||||||
|
|
||||||
|
## Spielen
|
||||||
|
|
||||||
|
- **Startbildschirm:** „Allein spielen“, „Hosten“ oder „Beitreten“. Der Schalter **REGELN** steht auf ERWEITERT (Legion TD 2, Dota 2, LoL); REFERENZ spielt die Regeln des Godot-Originals.
|
||||||
|
- **Helden (5):** Ringborke, Quellgeflecht, Funkenlanze, Sylvara, Brunhild. Ultimate-Auslöser und Skin wählst du im Heldenfenster unter „Ultimate & Skin“.
|
||||||
|
- **Team-Aktionen im Teampanel links:** Glyphe, Ancient-Stufe, Späher, Lager-Übersicht.
|
||||||
|
- **macOS-Player:** `Builds/macOS/Luneraria.app` im Arbeitsordner, aus dem der Stand gebaut wurde. Ein frischer Bau entsteht mit `LunePlayerBuild.BuildMac`.
|
||||||
|
|
||||||
|
## Prüfstand
|
||||||
|
|
||||||
|
| Prüfung | Ergebnis |
|
||||||
|
| --- | --- |
|
||||||
|
| Kern (.NET 8) | 627/627: content 77, core 91, m2 73, golden 157, determinism 6, net 43, net_rounds 12, h1 42, s1 31, s2 34, s3 31, h2 22, s4 8 |
|
||||||
|
| Parität zur Godot-Referenz | Golden 51.221 Werte, 0 Abweichungen; Bot-Fingerabdrücke `DCE95C96556F3A1A` (Seed 2) und `7B8E43AEFC0D60C5` (Seed 9 ab Welle 21) unverändert. Alle neuen Regeln wirken nur mit `MatchOptions.Extended` |
|
||||||
|
| Unity | EditMode 35/35, PlayMode 20/20, Verify A–I 718/0, Player-Selbsttest 30/30 |
|
||||||
|
|
||||||
|
## Offene Punkte
|
||||||
|
|
||||||
|
- **Build-Module für Windows und Linux** (Zielplattformen) fehlen weiterhin; Installation nur nach Freigabe.
|
||||||
|
- **Git LFS:** Das Repo wächst mit jeder Figur um rund 40 bis 60 MB.
|
||||||
|
- **Weitere Helden des Konzepts:** Thalion, Ilyra, Isolde, Aurelian, Rowan (Meshy-Guthaben 110 Credits, nächste Gutschrift im November).
|
||||||
|
- **Regeln, die du entscheiden musst:**
|
||||||
|
- manuelles Ultimate im Kampf (braucht Kampfbefehle im Netz)
|
||||||
|
- Quellgeflecht-Dominanz in Probe-Vergleichen (Referenzbalance)
|
||||||
|
- kürzere Partien mit Lagern beobachten
|
||||||
|
- **Netz:** Der Nebel ist Darstellung, keine Geheimhaltung; Gäste erhalten alle Einheiten.
|
||||||
32
docs/luneraria/S4-FEINSCHLIFF.md
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
# S4 · Feinschliff: Betäubung, Nebel im Gelände, Glyphe für Gäste
|
||||||
|
|
||||||
|
Stand: 11. Oktober 2026 · Branch `luneraria/s4-feinschliff` (von `luneraria/h2-brunhild`).
|
||||||
|
Auftrag: „1 und 2 durchführen“. Punkt 1 ist der Feinschliff aus S3 und H2 ohne Meshy-Credits, Punkt 2 die Zusammenführung zum Hauptstand (siehe unten).
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Inhalt
|
||||||
|
|
||||||
|
| Punkt | Umsetzung |
|
||||||
|
| --- | --- |
|
||||||
|
| Betäubung sichtbar | Ein goldener Ring kreist über dem Kopf jeder betäubten Einheit (`LuneUnitView`, Marker `StunRing`). Gäste sehen ihn ebenfalls: Der Host überträgt den Zustand als Bit 18 in den Flags des Kampfrahmens (`LuneUnit.NetStunned`, `ShowsStun()`) |
|
||||||
|
| Nebel im Gelände | `LuneFogOverlay` ist ein Gitter aus 2-m-Zellen über die ganze Karte, das dem Gelände folgt (0,45 m darüber). Die Deckkraft der Gitterpunkte wird zehnmal pro Sekunde aus den Sichtquellen berechnet, mit weicher Kante von 2 m: außerhalb jeder Sicht 55 % Nachtblau, innerhalb klar. Shader `Luneraria/FogOverlay` (transparent, Deckkraft aus den Vertexfarben). Die Sichtquellen kommen aus `LuneFog.Vision`; dieselbe Funktion steuert das Ausblenden. Der Nebel ist nur aktiv mit erweiterten Regeln und einem menschlichen Sitz |
|
||||||
|
| Glyphe für Gäste | Der Kampfrahmen hängt an die Gebäude-Lebenspunkte vier Werte an: je Team die Lane der laufenden Glyphe und die Restsekunden. Gäste setzen damit `GlyphLane`/`GlyphUntil` und sehen den Glyphen-Ring. Ältere Gäste lesen nur die Gebäudewerte und ignorieren den Rest |
|
||||||
|
|
||||||
|
Die Simulation ist unberührt: Betäubungs-Ring, Nebel-Gitter und Gast-Glyphe sind reine Darstellung.
|
||||||
|
|
||||||
|
## Tests und Nachweise
|
||||||
|
|
||||||
|
| Prüfung | Ergebnis |
|
||||||
|
| --- | --- |
|
||||||
|
| Kern (.NET 8) | 627/627, darunter **s4 8**: Über die Loopback-Verbindung sieht der Gast die Glyphe von Blau auf Mid, den Mid-Turm als geschützt und die Betäubung genau einer Einheit; Host und Gast zählen gleich viele Sichtquellen |
|
||||||
|
| Golden und Fingerabdrücke | 0 Abweichungen; `DCE95C96556F3A1A` unverändert |
|
||||||
|
| Unity EditMode | 35/35 |
|
||||||
|
| Unity PlayMode | 20/20, neu `S4PolishViewsTests.S4Views`: Nebel aktiv, eigener Ancient im Licht (< 5 %), gegnerischer Ancient im Nebel (> 50 %), Betäubungs-Ring sichtbar, kein Nebel unter den Referenzregeln. Verify A–I 718/0 |
|
||||||
|
| Player-Selbsttest | macOS 30/30 |
|
||||||
|
| Leistung | Benchmark (Bot-Partie, sechs Brunhilds): Karte 148,6–151,5 fps, Mid nah 163,4–167,3 fps, Ansichten 0,19–0,22 ms. Der Benchmark hat keinen menschlichen Sitz, der Nebel ist dort also aus. Nicht gemessene Schätzung für den Nebel: 1.521 Gitterpunkte gegen 50–90 Sichtquellen, zehnmal pro Sekunde |
|
||||||
|
|
||||||
|
Bilder in `docs/port/screenshots/s4/spiel/`:
|
||||||
|
1. Nebel in der Übersicht
|
||||||
|
2. Nebelgrenze auf Mid
|
||||||
|
3. Betäubung
|
||||||
|
|
@ -312,6 +312,29 @@ Die Glutpakt-Arbeit entstand als Kette aufeinander aufbauender Zweige (`lunerari
|
||||||
| Bild | `screenshots/s3/spiel/` |
|
| Bild | `screenshots/s3/spiel/` |
|
||||||
| Commits | `luneraria/s3-strategie` (S3A `e756a90`) |
|
| Commits | `luneraria/s3-strategie` (S3A `e756a90`) |
|
||||||
|
|
||||||
|
## H2 · Brunhild
|
||||||
|
|
||||||
|
| Punkt | Ergebnis |
|
||||||
|
| --- | --- |
|
||||||
|
| Tests | Kern .NET 619/619 (neu `h2` 22), EditMode 34/34, PlayMode 19/19 (neu `BrunhildHud`), Verify A–I 718/0 (Heldenwahl erwartet fünf Helden), Player-Selbsttest 30/30, Export 23/23 |
|
||||||
|
| Parität | Golden 0 Abweichungen, Fingerabdruck `DCE95C96556F3A1A` gleich; Markierung und Betäubung wirken nur durch Brunhild |
|
||||||
|
| Inhalt | Heldenjägerin, Speerwurf mit Markierung, Walkürensturz mit Betäubung und Schild, Talente, Auslöser, Skin Eiswalküre, Bot-Profil `walkuere`; Meshy-Figur mit Speer, 113 Credits |
|
||||||
|
| Balance | Probe-Vergleich 50 % wie die übrigen Helden (erste Fassung 0 %, `logs/h2/balance-h2-probe.txt`) |
|
||||||
|
| Leistung | A/B mit Sylvara: Karte gleich (141,4 / 141,9 fps), Mid nah −4 % (156,1 / 162,5) |
|
||||||
|
| Bild | `screenshots/h2/spiel/`, `figur/` |
|
||||||
|
| Commits | `luneraria/h2-brunhild` (H2A `cbff678`) |
|
||||||
|
|
||||||
|
## S4 · Feinschliff (Betäubung, Nebel im Gelände, Glyphe für Gäste)
|
||||||
|
|
||||||
|
| Punkt | Ergebnis |
|
||||||
|
| --- | --- |
|
||||||
|
| Tests | Kern .NET 627/627 (neu `s4` 8), EditMode 35/35, PlayMode 20/20 (neu `S4Views`), Verify A–I 718/0, Player-Selbsttest 30/30 |
|
||||||
|
| Parität | Golden 0 Abweichungen, Fingerabdruck `DCE95C96556F3A1A` gleich; alles Darstellung |
|
||||||
|
| Inhalt | Betäubungs-Ring (auch für Gäste über Bit 18 der Rahmen-Flags), Nebel-Gitter im Gelände (`LuneFogOverlay`, Shader `Luneraria/FogOverlay`), Glyphe im Kampfrahmen für Gäste |
|
||||||
|
| Leistung | Karte 148,6–151,5 fps, Mid nah 163,4–167,3 fps (Bot-Partie ohne Nebel); die Nebelkosten sind nicht gemessen |
|
||||||
|
| Bild | `screenshots/s4/spiel/` |
|
||||||
|
| Commits | `luneraria/s4-feinschliff` |
|
||||||
|
|
||||||
## 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.
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Port-Status · Champions of Luneraria in Unity
|
# Port-Status · Champions of Luneraria in Unity
|
||||||
|
|
||||||
Stand: 11. Oktober 2026 (S3, Bots, Neutrallager, Fog of War).
|
Stand: 11. Oktober 2026 (Hauptstand: `main` = S4, Tag `stand-2026-10-11`; Übersicht [../luneraria/HAUPTSTAND.md](../luneraria/HAUPTSTAND.md)).
|
||||||
|
|
||||||
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.
|
||||||
|
|
||||||
|
|
@ -18,6 +18,8 @@ Zielplattformen sind Fedora 44 und Windows 11; macOS ist die Entwicklungsplattfo
|
||||||
| S1 · Strategie-Regeln | **fertig** (`luneraria/s1-strategie`): Söldner-Einkommen (Legion TD 2), Kasernen und Rückkauf (Dota 2), Mondsegen (League of Legends) hinter dem Regelschalter „Erweitert“ (Standard im Spiel); Referenzregeln für Tests unverändert | [../luneraria/S1-STRATEGIE.md](../luneraria/S1-STRATEGIE.md) |
|
| S1 · Strategie-Regeln | **fertig** (`luneraria/s1-strategie`): Söldner-Einkommen (Legion TD 2), Kasernen und Rückkauf (Dota 2), Mondsegen (League of Legends) hinter dem Regelschalter „Erweitert“ (Standard im Spiel); Referenzregeln für Tests unverändert | [../luneraria/S1-STRATEGIE.md](../luneraria/S1-STRATEGIE.md) |
|
||||||
| S2 · Glyphe, Rezepte, Ancient | **fertig** (`luneraria/s2-strategie`): Glyphe (Dota 2), Item-Rezepte (Dota 2/LoL), Ancient-Stufen (Legion TD 2), Grottenjagd der Bots; hinter dem Regelschalter „Erweitert“ | [../luneraria/S2-STRATEGIE.md](../luneraria/S2-STRATEGIE.md) |
|
| S2 · Glyphe, Rezepte, Ancient | **fertig** (`luneraria/s2-strategie`): Glyphe (Dota 2), Item-Rezepte (Dota 2/LoL), Ancient-Stufen (Legion TD 2), Grottenjagd der Bots; hinter dem Regelschalter „Erweitert“ | [../luneraria/S2-STRATEGIE.md](../luneraria/S2-STRATEGIE.md) |
|
||||||
| S3 · Bots, Neutrallager, Fog of War | **fertig** (`luneraria/s3-strategie`): frühe Bot-Helden und Rotationsfehler behoben, Neutrallager mit LoL-Buffs, Fog of War mit Spähern (Dota 2) und Aufklärung in der Planung; hinter dem Regelschalter „Erweitert“ | [../luneraria/S3-STRATEGIE.md](../luneraria/S3-STRATEGIE.md) |
|
| S3 · Bots, Neutrallager, Fog of War | **fertig** (`luneraria/s3-strategie`): frühe Bot-Helden und Rotationsfehler behoben, Neutrallager mit LoL-Buffs, Fog of War mit Spähern (Dota 2) und Aufklärung in der Planung; hinter dem Regelschalter „Erweitert“ | [../luneraria/S3-STRATEGIE.md](../luneraria/S3-STRATEGIE.md) |
|
||||||
|
| H2 · Brunhild | **fertig** (`luneraria/h2-brunhild`): zweite Heldin des Champions-Konzepts mit Markierung und Betäubung, Skin Eiswalküre; Referenzpartien unverändert | [../luneraria/H2-BRUNHILD.md](../luneraria/H2-BRUNHILD.md) |
|
||||||
|
| S4 · Feinschliff | **fertig** (`luneraria/s4-feinschliff`): Betäubung sichtbar, Nebel im Gelände, Glyphe und Betäubung für Gäste | [../luneraria/S4-FEINSCHLIFF.md](../luneraria/S4-FEINSCHLIFF.md) |
|
||||||
|
|
||||||
QA je Meilenstein: [PORT-QA.md](PORT-QA.md).
|
QA je Meilenstein: [PORT-QA.md](PORT-QA.md).
|
||||||
|
|
||||||
|
|
|
||||||
6
docs/port/logs/h2/balance-h2-probe.txt
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
hero; seat wins; losses; draws; open; win rate; mean rounds; leaps/combat; ultimates/combat
|
||||||
|
held_ringborke; 40; 40; 0; 0; 50 %; 15.0; 0.00; 0.00
|
||||||
|
held_quellgeflecht; 80; 0; 0; 0; 100 %; 13.5; 0.00; 0.00
|
||||||
|
held_funkenlanze; 40; 40; 0; 0; 50 %; 15.0; 0.00; 0.00
|
||||||
|
held_sylvara; 40; 40; 0; 0; 50 %; 14.5; 0.28; 0.31
|
||||||
|
held_brunhild; 40; 40; 0; 0; 50 %; 15.0; 0.00; 0.33
|
||||||
19
docs/port/logs/h2/core-tests-dotnet.json
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
"suites": [
|
||||||
|
{"suite": "content", "checks": 77, "failures": 0, "seconds": 0.02, "failed": [], "notes": ["map geometry: largest deviation lanes 0.00E+000 m, buildings 0.00E+000 m"]},
|
||||||
|
{"suite": "core", "checks": 91, "failures": 0, "seconds": 1.92, "failed": [], "notes": ["full match seed 2 -> Rot after 9 rounds"]},
|
||||||
|
{"suite": "m2", "checks": 73, "failures": 0, "seconds": 0.40, "failed": [], "notes": []},
|
||||||
|
{"suite": "golden", "checks": 157, "failures": 0, "seconds": 1.58, "failed": [], "notes": ["golden values compared: 51221", "largest deviation angle: 0.00E+000 over 1140 values (tolerance 1E-004)", "largest deviation effect: 0.00E+000 over 264 values (tolerance 1E-006)", "largest deviation hp: 0.00E+000 over 5679 values (tolerance 1E-002)", "largest deviation other: 0.00E+000 over 34 values (tolerance 1E-006)", "largest deviation position: 0.00E+000 over 3420 values (tolerance 1E-003)", "largest deviation time: 0.00E+000 over 780 values (tolerance 1E-006)", "domain ancients: 246 values, 0 differences, largest numeric deviation 0.00E+000", "domain announcements: 44 values, 0 differences, largest numeric deviation 0.00E+000", "domain boss: 1559 values, 0 differences, largest numeric deviation 0.00E+000", "domain combat: 676 values, 0 differences, largest numeric deviation 0.00E+000", "domain commands: 410 values, 0 differences, largest numeric deviation 0.00E+000", "domain events: 6937 values, 0 differences, largest numeric deviation 0.00E+000", "domain facing: 1140 values, 0 differences, largest numeric deviation 0.00E+000", "domain gold: 3584 values, 0 differences, largest numeric deviation 0.00E+000", "domain heroes: 1512 values, 0 differences, largest numeric deviation 0.00E+000", "domain hp: 3420 values, 0 differences, largest numeric deviation 0.00E+000", "domain other: 119 values, 0 differences, largest numeric deviation 0.00E+000", "domain positions: 3420 values, 0 differences, largest numeric deviation 0.00E+000", "domain purchases: 9311 values, 0 differences, largest numeric deviation 0.00E+000", "domain rounds: 119 values, 0 differences, largest numeric deviation 0.00E+000", "domain targets: 1140 values, 0 differences, largest numeric deviation 0.00E+000", "domain towers: 1994 values, 0 differences, largest numeric deviation 0.00E+000", "domain units: 14164 values, 0 differences, largest numeric deviation 0.00E+000", "domain waves: 731 values, 0 differences, largest numeric deviation 0.00E+000", "domain winner: 695 values, 0 differences, largest numeric deviation 0.00E+000"]},
|
||||||
|
{"suite": "determinism", "checks": 6, "failures": 0, "seconds": 1.55, "failed": [], "notes": []},
|
||||||
|
{"suite": "net", "checks": 43, "failures": 0, "seconds": 0.01, "failed": [], "notes": []},
|
||||||
|
{"suite": "net_rounds", "checks": 12, "failures": 0, "seconds": 0.07, "failed": [], "notes": []},
|
||||||
|
{"suite": "h1", "checks": 42, "failures": 0, "seconds": 1.29, "failed": [], "notes": ["sylvara-bot match seed 12: 15/1"]},
|
||||||
|
{"suite": "s1", "checks": 31, "failures": 0, "seconds": 0.43, "failed": [], "notes": ["extended seed 17: 10/0, income bonus 24,0,24,0,0,15, blessing 0/0"]},
|
||||||
|
{"suite": "s2", "checks": 34, "failures": 0, "seconds": 2.12, "failed": [], "notes": ["12 extended matches: expeditions 12, Mondsegen 4, recipe heroes 0, glyphs 19, Ancient levels 34; seed 1 10/0"]},
|
||||||
|
{"suite": "s3", "checks": 31, "failures": 0, "seconds": 0.61, "failed": [], "notes": []},
|
||||||
|
{"suite": "h2", "checks": 22, "failures": 0, "seconds": 0.00, "failed": [], "notes": []}
|
||||||
|
],
|
||||||
|
"runtime": ".NET 8.0.27",
|
||||||
|
"label": ".NET 8.0.27, Release",
|
||||||
|
"os": "Darwin 27.0.0 Darwin Kernel Version 27.0.0: Tue Aug 11 21:02:59 PDT 2026; root:xnu-13432.1.9~1/RELEASE_ARM64_T8142 Arm64"
|
||||||
|
}
|
||||||
371
docs/port/logs/h2/editmode-results.xml
Normal file
|
|
@ -0,0 +1,371 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<test-run id="2" testcasecount="34" result="Passed" total="34" passed="34" failed="0" inconclusive="0" skipped="0" asserts="0" engine-version="3.5.0.0" clr-version="4.0.30319.42000" start-time="2026-10-11 14:57:23Z" end-time="2026-10-11 14:59:03Z" duration="99.1737822">
|
||||||
|
<test-suite type="TestSuite" id="1000" name="luneraria-unity" fullname="luneraria-unity" runstate="Runnable" testcasecount="34" result="Passed" start-time="2026-10-11 14:57:23Z" end-time="2026-10-11 14:59:03Z" duration="99.173782" total="34" passed="34" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="platform" value="EditMode" />
|
||||||
|
</properties>
|
||||||
|
<test-suite type="Assembly" id="1017" name="Luneraria.Core.Tests.dll" fullname="/private/tmp/lune-konzept/Library/ScriptAssemblies/Luneraria.Core.Tests.dll" runstate="Runnable" testcasecount="14" result="Passed" start-time="2026-10-11 14:57:23Z" end-time="2026-10-11 14:58:39Z" duration="75.882744" total="14" passed="14" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_PID" value="32049" />
|
||||||
|
<property name="_APPDOMAIN" value="Unity Child Domain" />
|
||||||
|
<property name="platform" value="EditMode" />
|
||||||
|
<property name="EditorOnly" value="True" />
|
||||||
|
</properties>
|
||||||
|
<test-suite type="TestSuite" id="1018" name="Luneraria" fullname="Luneraria" runstate="Runnable" testcasecount="14" result="Passed" start-time="2026-10-11 14:57:23Z" end-time="2026-10-11 14:58:39Z" duration="75.882499" total="14" passed="14" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1019" name="Core" fullname="Luneraria.Core" runstate="Runnable" testcasecount="14" result="Passed" start-time="2026-10-11 14:57:23Z" end-time="2026-10-11 14:58:39Z" duration="75.882261" total="14" passed="14" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1020" name="Tests" fullname="Luneraria.Core.Tests" runstate="Runnable" testcasecount="14" result="Passed" start-time="2026-10-11 14:57:23Z" end-time="2026-10-11 14:58:39Z" duration="75.882035" total="14" passed="14" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestFixture" id="1001" name="CoreIntegrationTests" fullname="Luneraria.Core.Tests.CoreIntegrationTests" classname="Luneraria.Core.Tests.CoreIntegrationTests" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 14:57:23Z" end-time="2026-10-11 14:57:24Z" duration="0.068032" total="2" passed="2" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1003" name="CoreFloatArithmeticMatchesGodot" fullname="Luneraria.Core.Tests.CoreIntegrationTests.CoreFloatArithmeticMatchesGodot" methodname="CoreFloatArithmeticMatchesGodot" classname="Luneraria.Core.Tests.CoreIntegrationTests" runstate="Runnable" seed="571652855" result="Passed" start-time="2026-10-11 14:57:23Z" end-time="2026-10-11 14:57:24Z" duration="0.063577" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[float probe: length 4000/4000, length_squared 4000/4000, distance_to 4000/4000, distance_squared_to 4000/4000, dot 4000/4000, normalized 4000/4000, lerp 4000/4000, limit_length 4000/4000, multiply 4000/4000, divide 4000/4000, sub_normalized 4000/4000, atan2 4000/4000
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1002" name="CoreHasNoEngineReferences" fullname="Luneraria.Core.Tests.CoreIntegrationTests.CoreHasNoEngineReferences" methodname="CoreHasNoEngineReferences" classname="Luneraria.Core.Tests.CoreIntegrationTests" runstate="Runnable" seed="991403339" result="Passed" start-time="2026-10-11 14:57:24Z" end-time="2026-10-11 14:57:24Z" duration="0.000282" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1004" name="CoreSuiteTests" fullname="Luneraria.Core.Tests.CoreSuiteTests" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" testcasecount="12" result="Passed" start-time="2026-10-11 14:57:24Z" end-time="2026-10-11 14:58:39Z" duration="75.813563" total="12" passed="12" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1005" name="Content" fullname="Luneraria.Core.Tests.CoreSuiteTests.Content" methodname="Content" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="625688550" result="Passed" start-time="2026-10-11 14:57:24Z" end-time="2026-10-11 14:57:24Z" duration="0.013331" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[content: map geometry: largest deviation lanes 0.00E+000 m, buildings 0.00E+000 m
|
||||||
|
LUNE_U1_PASS content: 77 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1006" name="CoreRules" fullname="Luneraria.Core.Tests.CoreSuiteTests.CoreRules" methodname="CoreRules" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="1123911954" result="Passed" start-time="2026-10-11 14:57:24Z" end-time="2026-10-11 14:57:29Z" duration="5.330970" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[core: full match seed 2 -> Rot after 9 rounds
|
||||||
|
LUNE_U1_PASS core: 91 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1009" name="Determinism" fullname="Luneraria.Core.Tests.CoreSuiteTests.Determinism" methodname="Determinism" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="830612951" result="Passed" start-time="2026-10-11 14:57:29Z" end-time="2026-10-11 14:57:42Z" duration="13.546562" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_U1_PASS determinism: 6 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1008" name="GoldenReplays" fullname="Luneraria.Core.Tests.CoreSuiteTests.GoldenReplays" methodname="GoldenReplays" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="977967922" result="Passed" start-time="2026-10-11 14:57:42Z" end-time="2026-10-11 14:57:56Z" duration="13.521733" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[golden: golden values compared: 51221
|
||||||
|
golden: largest deviation angle: 0.00E+000 over 1140 values (tolerance 1E-004)
|
||||||
|
golden: largest deviation effect: 0.00E+000 over 264 values (tolerance 1E-006)
|
||||||
|
golden: largest deviation hp: 0.00E+000 over 5679 values (tolerance 1E-002)
|
||||||
|
golden: largest deviation other: 0.00E+000 over 34 values (tolerance 1E-006)
|
||||||
|
golden: largest deviation position: 0.00E+000 over 3420 values (tolerance 1E-003)
|
||||||
|
golden: largest deviation time: 0.00E+000 over 780 values (tolerance 1E-006)
|
||||||
|
golden: domain ancients: 246 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain announcements: 44 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain boss: 1559 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain combat: 676 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain commands: 410 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain events: 6937 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain facing: 1140 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain gold: 3584 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain heroes: 1512 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain hp: 3420 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain other: 119 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain positions: 3420 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain purchases: 9311 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain rounds: 119 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain targets: 1140 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain towers: 1994 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain units: 14164 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain waves: 731 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain winner: 695 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
LUNE_U1_PASS golden: 157 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1012" name="H1Heroes" fullname="Luneraria.Core.Tests.CoreSuiteTests.H1Heroes" methodname="H1Heroes" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="1865512660" result="Passed" start-time="2026-10-11 14:57:56Z" end-time="2026-10-11 14:58:08Z" duration="11.545062" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[h1: sylvara-bot match seed 12: 15/1
|
||||||
|
LUNE_U1_PASS h1: 42 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1016" name="H2Heroes" fullname="Luneraria.Core.Tests.CoreSuiteTests.H2Heroes" methodname="H2Heroes" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="1523687017" result="Passed" start-time="2026-10-11 14:58:08Z" end-time="2026-10-11 14:58:08Z" duration="0.014013" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_U1_PASS h2: 22 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1007" name="M2Rules" fullname="Luneraria.Core.Tests.CoreSuiteTests.M2Rules" methodname="M2Rules" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="1972937494" result="Passed" start-time="2026-10-11 14:58:08Z" end-time="2026-10-11 14:58:11Z" duration="3.368497" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_U1_PASS m2: 73 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1010" name="NetProtocol" fullname="Luneraria.Core.Tests.CoreSuiteTests.NetProtocol" methodname="NetProtocol" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="873191396" result="Passed" start-time="2026-10-11 14:58:11Z" end-time="2026-10-11 14:58:11Z" duration="0.065667" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_U1_PASS net: 43 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1011" name="NetRounds" fullname="Luneraria.Core.Tests.CoreSuiteTests.NetRounds" methodname="NetRounds" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="1373345239" result="Passed" start-time="2026-10-11 14:58:11Z" end-time="2026-10-11 14:58:12Z" duration="0.568910" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_U1_PASS net_rounds: 12 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1013" name="S1Rules" fullname="Luneraria.Core.Tests.CoreSuiteTests.S1Rules" methodname="S1Rules" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="1229423845" result="Passed" start-time="2026-10-11 14:58:12Z" end-time="2026-10-11 14:58:15Z" duration="3.826071" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[s1: extended seed 17: 10/0, income bonus 24,0,24,0,0,15, blessing 0/0
|
||||||
|
LUNE_U1_PASS s1: 31 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1014" name="S2Rules" fullname="Luneraria.Core.Tests.CoreSuiteTests.S2Rules" methodname="S2Rules" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="1833994956" result="Passed" start-time="2026-10-11 14:58:15Z" end-time="2026-10-11 14:58:34Z" duration="18.719652" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[s2: 12 extended matches: expeditions 12, Mondsegen 4, recipe heroes 0, glyphs 19, Ancient levels 34; seed 1 10/0
|
||||||
|
LUNE_U1_PASS s2: 34 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1015" name="S3Rules" fullname="Luneraria.Core.Tests.CoreSuiteTests.S3Rules" methodname="S3Rules" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="103978093" result="Passed" start-time="2026-10-11 14:58:34Z" end-time="2026-10-11 14:58:39Z" duration="5.290612" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_U1_PASS s3: 31 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="Assembly" id="1026" name="Luneraria.Net.Tests.dll" fullname="/private/tmp/lune-konzept/Library/ScriptAssemblies/Luneraria.Net.Tests.dll" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:39Z" duration="0.032320" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_PID" value="32049" />
|
||||||
|
<property name="_APPDOMAIN" value="Unity Child Domain" />
|
||||||
|
<property name="platform" value="EditMode" />
|
||||||
|
<property name="EditorOnly" value="True" />
|
||||||
|
</properties>
|
||||||
|
<test-suite type="TestSuite" id="1027" name="Luneraria" fullname="Luneraria" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:39Z" duration="0.007844" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1028" name="Net" fullname="Luneraria.Net" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:39Z" duration="0.007564" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1029" name="Tests" fullname="Luneraria.Net.Tests" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:39Z" duration="0.007374" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestFixture" id="1021" name="LuneWireTests" fullname="Luneraria.Net.Tests.LuneWireTests" classname="Luneraria.Net.Tests.LuneWireTests" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:39Z" duration="0.007202" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1022" name="CommandRoundTrips" fullname="Luneraria.Net.Tests.LuneWireTests.CommandRoundTrips" methodname="CommandRoundTrips" classname="Luneraria.Net.Tests.LuneWireTests" runstate="Runnable" seed="1324813035" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:39Z" duration="0.001662" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1025" name="LobbyAndOptionsRoundTrip" fullname="Luneraria.Net.Tests.LuneWireTests.LobbyAndOptionsRoundTrip" methodname="LobbyAndOptionsRoundTrip" classname="Luneraria.Net.Tests.LuneWireTests" runstate="Runnable" seed="1337807739" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:39Z" duration="0.000686" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1023" name="StateRoundTrips" fullname="Luneraria.Net.Tests.LuneWireTests.StateRoundTrips" methodname="StateRoundTrips" classname="Luneraria.Net.Tests.LuneWireTests" runstate="Runnable" seed="1980035298" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:39Z" duration="0.002674" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1024" name="UnitsAndFrameRoundTrip" fullname="Luneraria.Net.Tests.LuneWireTests.UnitsAndFrameRoundTrip" methodname="UnitsAndFrameRoundTrip" classname="Luneraria.Net.Tests.LuneWireTests" runstate="Runnable" seed="1599248383" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:39Z" duration="0.001510" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="Assembly" id="1043" name="Luneraria.UI.Tests.EditMode.dll" fullname="/private/tmp/lune-konzept/Library/ScriptAssemblies/Luneraria.UI.Tests.EditMode.dll" runstate="Runnable" testcasecount="12" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:40Z" duration="0.208445" total="12" passed="12" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_PID" value="32049" />
|
||||||
|
<property name="_APPDOMAIN" value="Unity Child Domain" />
|
||||||
|
<property name="platform" value="EditMode" />
|
||||||
|
<property name="EditorOnly" value="True" />
|
||||||
|
</properties>
|
||||||
|
<test-suite type="TestSuite" id="1044" name="Luneraria" fullname="Luneraria" runstate="Runnable" testcasecount="12" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:40Z" duration="0.208172" total="12" passed="12" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1045" name="UI" fullname="Luneraria.UI" runstate="Runnable" testcasecount="12" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:40Z" duration="0.207987" total="12" passed="12" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1046" name="Tests" fullname="Luneraria.UI.Tests" runstate="Runnable" testcasecount="12" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:40Z" duration="0.207759" total="12" passed="12" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestFixture" id="1030" name="HudModelTests" fullname="Luneraria.UI.Tests.HudModelTests" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" testcasecount="12" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:40Z" duration="0.207484" total="12" passed="12" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1035" name="AnnouncedDangersRaiseTheThreat" fullname="Luneraria.UI.Tests.HudModelTests.AnnouncedDangersRaiseTheThreat" methodname="AnnouncedDangersRaiseTheThreat" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="21792033" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:39Z" duration="0.003704" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1036" name="BattlefieldCountsTheLaneUnits" fullname="Luneraria.UI.Tests.HudModelTests.BattlefieldCountsTheLaneUnits" methodname="BattlefieldCountsTheLaneUnits" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="1116785096" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:39Z" duration="0.029662" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1033" name="BossLaneChoiceIsPrivateToTheChooser" fullname="Luneraria.UI.Tests.HudModelTests.BossLaneChoiceIsPrivateToTheChooser" methodname="BossLaneChoiceIsPrivateToTheChooser" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="924751101" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:39Z" duration="0.002437" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1037" name="BossStatesFromPublicState" fullname="Luneraria.UI.Tests.HudModelTests.BossStatesFromPublicState" methodname="BossStatesFromPublicState" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="205962074" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:39Z" duration="0.000659" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1042" name="BotMatchStillStartsByItself" fullname="Luneraria.UI.Tests.HudModelTests.BotMatchStillStartsByItself" methodname="BotMatchStillStartsByItself" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="1012985768" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:39Z" duration="0.001684" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1031" name="EverySeatSeesTheSamePublicPicture" fullname="Luneraria.UI.Tests.HudModelTests.EverySeatSeesTheSamePublicPicture" methodname="EverySeatSeesTheSamePublicPicture" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="1683370762" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:39Z" duration="0.040698" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1041" name="HumanSeatPlanningWaitsForReady" fullname="Luneraria.UI.Tests.HudModelTests.HumanSeatPlanningWaitsForReady" methodname="HumanSeatPlanningWaitsForReady" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="445174070" result="Passed" start-time="2026-10-11 14:58:39Z" end-time="2026-10-11 14:58:40Z" duration="0.058503" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1034" name="LaneThreatFollowsTowerHealth" fullname="Luneraria.UI.Tests.HudModelTests.LaneThreatFollowsTowerHealth" methodname="LaneThreatFollowsTowerHealth" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="312152121" result="Passed" start-time="2026-10-11 14:58:40Z" end-time="2026-10-11 14:58:40Z" duration="0.000870" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1038" name="NextWaveIsTheRulesWave" fullname="Luneraria.UI.Tests.HudModelTests.NextWaveIsTheRulesWave" methodname="NextWaveIsTheRulesWave" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="1416604886" result="Passed" start-time="2026-10-11 14:58:40Z" end-time="2026-10-11 14:58:40Z" duration="0.001335" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1040" name="NumbersAreFormattedAsInGodot" fullname="Luneraria.UI.Tests.HudModelTests.NumbersAreFormattedAsInGodot" methodname="NumbersAreFormattedAsInGodot" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="1450916974" result="Passed" start-time="2026-10-11 14:58:40Z" end-time="2026-10-11 14:58:40Z" duration="0.000469" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1032" name="OtherSeatsPlansStayPrivateUntilCombat" fullname="Luneraria.UI.Tests.HudModelTests.OtherSeatsPlansStayPrivateUntilCombat" methodname="OtherSeatsPlansStayPrivateUntilCombat" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="93685332" result="Passed" start-time="2026-10-11 14:58:40Z" end-time="2026-10-11 14:58:40Z" duration="0.065544" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1039" name="ReadyLocksThePlan" fullname="Luneraria.UI.Tests.HudModelTests.ReadyLocksThePlan" methodname="ReadyLocksThePlan" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="383403632" result="Passed" start-time="2026-10-11 14:58:40Z" end-time="2026-10-11 14:58:40Z" duration="0.000795" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="Assembly" id="1052" name="Luneraria.View.Tests.EditMode.dll" fullname="/private/tmp/lune-konzept/Library/ScriptAssemblies/Luneraria.View.Tests.EditMode.dll" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-10-11 14:58:40Z" end-time="2026-10-11 14:59:03Z" duration="23.047660" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_PID" value="32049" />
|
||||||
|
<property name="_APPDOMAIN" value="Unity Child Domain" />
|
||||||
|
<property name="platform" value="EditMode" />
|
||||||
|
<property name="EditorOnly" value="True" />
|
||||||
|
</properties>
|
||||||
|
<test-suite type="TestSuite" id="1053" name="Luneraria" fullname="Luneraria" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-10-11 14:58:40Z" end-time="2026-10-11 14:59:03Z" duration="23.047364" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1054" name="View" fullname="Luneraria.View" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-10-11 14:58:40Z" end-time="2026-10-11 14:59:03Z" duration="23.047250" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1055" name="Tests" fullname="Luneraria.View.Tests" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-10-11 14:58:40Z" end-time="2026-10-11 14:59:03Z" duration="23.047117" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestFixture" id="1047" name="FrameRateIndependenceTests" fullname="Luneraria.View.Tests.FrameRateIndependenceTests" classname="Luneraria.View.Tests.FrameRateIndependenceTests" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-10-11 14:58:40Z" end-time="2026-10-11 14:59:03Z" duration="23.046959" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1051" name="ClockRunsWholeStepsOnly" fullname="Luneraria.View.Tests.FrameRateIndependenceTests.ClockRunsWholeStepsOnly" methodname="ClockRunsWholeStepsOnly" classname="Luneraria.View.Tests.FrameRateIndependenceTests" runstate="Runnable" seed="1754690768" result="Passed" start-time="2026-10-11 14:58:40Z" end-time="2026-10-11 14:58:40Z" duration="0.000560" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1048" name="FullBotMatchSeed2IsTheSameAtEveryFrameRate" fullname="Luneraria.View.Tests.FrameRateIndependenceTests.FullBotMatchSeed2IsTheSameAtEveryFrameRate" methodname="FullBotMatchSeed2IsTheSameAtEveryFrameRate" classname="Luneraria.View.Tests.FrameRateIndependenceTests" runstate="Runnable" seed="1274536394" result="Passed" start-time="2026-10-11 14:58:40Z" end-time="2026-10-11 14:58:49Z" duration="8.963841" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_FPS seed 2 30 fps: 19315 frames, 12690 steps, hash DCE95C96556F3A1A (core DCE95C96556F3A1A)
|
||||||
|
LUNE_FPS seed 2 60 fps: 38597 frames, 12690 steps, hash DCE95C96556F3A1A (core DCE95C96556F3A1A)
|
||||||
|
LUNE_FPS seed 2 120 fps: 77169 frames, 12690 steps, hash DCE95C96556F3A1A (core DCE95C96556F3A1A)
|
||||||
|
LUNE_FPS seed 2 unlimited (0.4-3.9 ms jitter): 569627 frames, 12690 steps, hash DCE95C96556F3A1A (core DCE95C96556F3A1A)
|
||||||
|
LUNE_FPS seed 2 stutter (stalls up to 0.4 s): 26845 frames, 12690 steps, hash DCE95C96556F3A1A (core DCE95C96556F3A1A)
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1049" name="HighWaveMatchFromRound21IsTheSameAtEveryFrameRate" fullname="Luneraria.View.Tests.FrameRateIndependenceTests.HighWaveMatchFromRound21IsTheSameAtEveryFrameRate" methodname="HighWaveMatchFromRound21IsTheSameAtEveryFrameRate" classname="Luneraria.View.Tests.FrameRateIndependenceTests" runstate="Runnable" seed="83536547" result="Passed" start-time="2026-10-11 14:58:49Z" end-time="2026-10-11 14:58:54Z" duration="5.096916" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_FPS seed 9 30 fps: 6342 frames, 4195 steps, hash 7B8E43AEFC0D60C5 (core 7B8E43AEFC0D60C5)
|
||||||
|
LUNE_FPS seed 9 60 fps: 12678 frames, 4195 steps, hash 7B8E43AEFC0D60C5 (core 7B8E43AEFC0D60C5)
|
||||||
|
LUNE_FPS seed 9 120 fps: 25352 frames, 4195 steps, hash 7B8E43AEFC0D60C5 (core 7B8E43AEFC0D60C5)
|
||||||
|
LUNE_FPS seed 9 unlimited (0.4-3.9 ms jitter): 99090 frames, 4195 steps, hash 7B8E43AEFC0D60C5 (core 7B8E43AEFC0D60C5)
|
||||||
|
LUNE_FPS seed 9 stutter (stalls up to 0.4 s): 8796 frames, 4195 steps, hash 7B8E43AEFC0D60C5 (core 7B8E43AEFC0D60C5)
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1050" name="MatchSpeedDoesNotChangeTheMatch" fullname="Luneraria.View.Tests.FrameRateIndependenceTests.MatchSpeedDoesNotChangeTheMatch" methodname="MatchSpeedDoesNotChangeTheMatch" classname="Luneraria.View.Tests.FrameRateIndependenceTests" runstate="Runnable" seed="1828720424" result="Passed" start-time="2026-10-11 14:58:54Z" end-time="2026-10-11 14:59:03Z" duration="8.984654" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_FPS seed 2 30 fps: 2418 frames, 12690 steps, hash DCE95C96556F3A1A (core DCE95C96556F3A1A)
|
||||||
|
LUNE_FPS seed 2 60 fps: 4831 frames, 12690 steps, hash DCE95C96556F3A1A (core DCE95C96556F3A1A)
|
||||||
|
LUNE_FPS seed 2 120 fps: 9658 frames, 12690 steps, hash DCE95C96556F3A1A (core DCE95C96556F3A1A)
|
||||||
|
LUNE_FPS seed 2 unlimited (0.4-3.9 ms jitter): 37713 frames, 12690 steps, hash DCE95C96556F3A1A (core DCE95C96556F3A1A)
|
||||||
|
LUNE_FPS seed 2 stutter (stalls up to 0.4 s): 3428 frames, 12690 steps, hash DCE95C96556F3A1A (core DCE95C96556F3A1A)
|
||||||
|
Saving results to: /Users/martin/Library/Application Support/DefaultCompany/luneraria-unity/TestResults.xml
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-run>
|
||||||
6
docs/port/logs/h2/meshy-ledger.jsonl
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{"endpoint": "v1/image-to-image", "task": "01a12b6c-9eda-7382-92f6-f2b88931aabf", "status": "SUCCEEDED", "credits": 12, "error": null, "time": "2026-10-11T16:45:45"}
|
||||||
|
{"endpoint": "v1/image-to-image", "task": "01a12b6d-980a-774c-bd36-d96f37cca91d", "status": "SUCCEEDED", "credits": 12, "error": null, "time": "2026-10-11T16:46:49"}
|
||||||
|
{"endpoint": "v1/image-to-3d", "task": "01a12b6e-4bae-74a4-a924-7323c7ff73c4", "status": "SUCCEEDED", "credits": 30, "error": null, "time": "2026-10-11T16:50:03"}
|
||||||
|
{"endpoint": "v1/image-to-3d", "task": "01a12b6e-5198-7244-9d84-acdc34ab0dd1", "status": "SUCCEEDED", "credits": 30, "error": null, "time": "2026-10-11T16:50:03"}
|
||||||
|
{"endpoint": "v1/rigging", "task": "01a12b71-c38f-7621-9467-1c49136e3b47", "status": "SUCCEEDED", "credits": 5, "error": null, "time": "2026-10-11T16:51:03"}
|
||||||
|
{"endpoint": "v1/animations", "task": "01a12b72-4071-75e7-8e0c-30017dec9391", "status": "SUCCEEDED", "credits": 24, "error": null, "time": "2026-10-11T16:51:42"}
|
||||||
15
docs/port/logs/h2/player-benchmark-held_brunhild-run1.json
Normal 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 2, army held_brunhild x6, speed 1x, measured after 10 s of combat",
|
||||||
|
// moving units at the start of the first window: w04 11, w06 11, g04 10, g02 9, g06 9, e01 7, w02 7, brunhild 6, g08 4, g10 4, w08 4, w10 3
|
||||||
|
"windows": [
|
||||||
|
{"view": "overview (zoom 64)", "frames": 2764, "fps": 138.1, "frame_ms_avg": 7.24, "frame_ms_median": 3.11, "frame_ms_p95": 22.31, "frame_ms_p99": 28.81, "frame_ms_max": 43.12, "frames_over_16_7_ms": 365, "of_them_with_simulation_step": 30, "gc_collections": 20, "simulation_ms_per_frame": 0.069, "views_ms_per_frame": 0.227, "ui_ms_per_frame": 0.070, "units_alive_max": 85},
|
||||||
|
// timings overview (zoom 64): main thread avg 2.62 / median 2.50 / p95 3.59 ms, render thread avg 1.82 / median 1.80 / p95 2.16 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.61 / median 0.15 / p95 19.58 ms
|
||||||
|
{"view": "mid lane close (zoom 22)", "frames": 1535, "fps": 153.3, "frame_ms_avg": 6.52, "frame_ms_median": 2.84, "frame_ms_p95": 21.72, "frame_ms_p99": 30.41, "frame_ms_max": 37.00, "frames_over_16_7_ms": 161, "of_them_with_simulation_step": 9, "gc_collections": 7, "simulation_ms_per_frame": 0.040, "views_ms_per_frame": 0.191, "ui_ms_per_frame": 0.048, "units_alive_max": 38}
|
||||||
|
// timings mid lane close (zoom 22): main thread avg 2.02 / median 1.97 / p95 2.79 ms, render thread avg 1.37 / median 1.36 / p95 1.59 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.50 / median 0.26 / p95 19.83 ms
|
||||||
|
]
|
||||||
|
}
|
||||||
15
docs/port/logs/h2/player-benchmark-held_brunhild-run2.json
Normal 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 2, army held_brunhild x6, speed 1x, measured after 10 s of combat",
|
||||||
|
// moving units at the start of the first window: w04 11, w06 11, g04 10, g02 9, g06 9, e01 7, w02 7, brunhild 6, g08 4, g10 4, w08 4, w10 3
|
||||||
|
"windows": [
|
||||||
|
{"view": "overview (zoom 64)", "frames": 2861, "fps": 142.9, "frame_ms_avg": 7.00, "frame_ms_median": 3.01, "frame_ms_p95": 22.01, "frame_ms_p99": 28.11, "frame_ms_max": 41.10, "frames_over_16_7_ms": 339, "of_them_with_simulation_step": 32, "gc_collections": 20, "simulation_ms_per_frame": 0.064, "views_ms_per_frame": 0.215, "ui_ms_per_frame": 0.065, "units_alive_max": 85},
|
||||||
|
// timings overview (zoom 64): main thread avg 2.48 / median 2.38 / p95 3.40 ms, render thread avg 1.72 / median 1.72 / p95 1.99 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.51 / median 0.18 / p95 19.43 ms
|
||||||
|
{"view": "mid lane close (zoom 22)", "frames": 1573, "fps": 157.1, "frame_ms_avg": 6.37, "frame_ms_median": 2.62, "frame_ms_p95": 21.61, "frame_ms_p99": 30.11, "frame_ms_max": 35.81, "frames_over_16_7_ms": 152, "of_them_with_simulation_step": 16, "gc_collections": 7, "simulation_ms_per_frame": 0.037, "views_ms_per_frame": 0.187, "ui_ms_per_frame": 0.046, "units_alive_max": 38}
|
||||||
|
// timings mid lane close (zoom 22): main thread avg 1.95 / median 1.90 / p95 2.60 ms, render thread avg 1.34 / median 1.33 / p95 1.56 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.41 / median 0.21 / p95 19.40 ms
|
||||||
|
]
|
||||||
|
}
|
||||||
15
docs/port/logs/h2/player-benchmark-held_brunhild-run3.json
Normal 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 2, army held_brunhild x6, speed 1x, measured after 10 s of combat",
|
||||||
|
// moving units at the start of the first window: w04 11, w06 11, g04 10, g02 9, g06 9, e01 7, w02 7, brunhild 6, g08 4, g10 4, w08 4, w10 3
|
||||||
|
"windows": [
|
||||||
|
{"view": "overview (zoom 64)", "frames": 2867, "fps": 143.3, "frame_ms_avg": 6.98, "frame_ms_median": 3.01, "frame_ms_p95": 22.07, "frame_ms_p99": 28.10, "frame_ms_max": 40.11, "frames_over_16_7_ms": 320, "of_them_with_simulation_step": 32, "gc_collections": 20, "simulation_ms_per_frame": 0.064, "views_ms_per_frame": 0.209, "ui_ms_per_frame": 0.063, "units_alive_max": 85},
|
||||||
|
// timings overview (zoom 64): main thread avg 2.44 / median 2.34 / p95 3.30 ms, render thread avg 1.71 / median 1.71 / p95 1.99 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.54 / median 0.19 / p95 19.58 ms
|
||||||
|
{"view": "mid lane close (zoom 22)", "frames": 1579, "fps": 157.8, "frame_ms_avg": 6.34, "frame_ms_median": 2.80, "frame_ms_p95": 21.80, "frame_ms_p99": 29.50, "frame_ms_max": 38.08, "frames_over_16_7_ms": 157, "of_them_with_simulation_step": 13, "gc_collections": 8, "simulation_ms_per_frame": 0.038, "views_ms_per_frame": 0.182, "ui_ms_per_frame": 0.044, "units_alive_max": 38}
|
||||||
|
// timings mid lane close (zoom 22): main thread avg 1.92 / median 1.88 / p95 2.64 ms, render thread avg 1.35 / median 1.34 / p95 1.57 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.41 / median 0.24 / p95 19.85 ms
|
||||||
|
]
|
||||||
|
}
|
||||||
15
docs/port/logs/h2/player-benchmark-held_sylvara-run1.json
Normal 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 2, army held_sylvara x6, speed 1x, measured after 10 s of combat",
|
||||||
|
// moving units at the start of the first window: w04 11, w06 11, g04 10, g02 9, g06 9, w02 7, sylvara 5, g08 4, g10 4, w08 4, w10 3
|
||||||
|
"windows": [
|
||||||
|
{"view": "overview (zoom 64)", "frames": 2859, "fps": 142.9, "frame_ms_avg": 7.00, "frame_ms_median": 2.99, "frame_ms_p95": 22.54, "frame_ms_p99": 28.12, "frame_ms_max": 51.06, "frames_over_16_7_ms": 334, "of_them_with_simulation_step": 48, "gc_collections": 20, "simulation_ms_per_frame": 0.063, "views_ms_per_frame": 0.218, "ui_ms_per_frame": 0.059, "units_alive_max": 77},
|
||||||
|
// timings overview (zoom 64): main thread avg 2.51 / median 2.43 / p95 3.30 ms, render thread avg 1.74 / median 1.73 / p95 2.03 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.48 / median 0.16 / p95 19.90 ms
|
||||||
|
{"view": "mid lane close (zoom 22)", "frames": 1618, "fps": 161.8, "frame_ms_avg": 6.18, "frame_ms_median": 2.82, "frame_ms_p95": 21.20, "frame_ms_p99": 29.81, "frame_ms_max": 37.19, "frames_over_16_7_ms": 148, "of_them_with_simulation_step": 26, "gc_collections": 8, "simulation_ms_per_frame": 0.037, "views_ms_per_frame": 0.188, "ui_ms_per_frame": 0.044, "units_alive_max": 37}
|
||||||
|
// timings mid lane close (zoom 22): main thread avg 1.98 / median 1.92 / p95 2.71 ms, render thread avg 1.36 / median 1.35 / p95 1.57 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.19 / median 0.42 / p95 19.05 ms
|
||||||
|
]
|
||||||
|
}
|
||||||
15
docs/port/logs/h2/player-benchmark-held_sylvara-run2.json
Normal 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 2, army held_sylvara x6, speed 1x, measured after 10 s of combat",
|
||||||
|
// moving units at the start of the first window: w04 11, w06 11, g04 10, g02 9, g06 9, w02 7, sylvara 5, g08 4, g10 4, w08 4, w10 3
|
||||||
|
"windows": [
|
||||||
|
{"view": "overview (zoom 64)", "frames": 2834, "fps": 141.7, "frame_ms_avg": 7.06, "frame_ms_median": 3.00, "frame_ms_p95": 21.99, "frame_ms_p99": 27.70, "frame_ms_max": 51.77, "frames_over_16_7_ms": 333, "of_them_with_simulation_step": 22, "gc_collections": 20, "simulation_ms_per_frame": 0.064, "views_ms_per_frame": 0.214, "ui_ms_per_frame": 0.060, "units_alive_max": 77},
|
||||||
|
// timings overview (zoom 64): main thread avg 2.51 / median 2.41 / p95 3.33 ms, render thread avg 1.73 / median 1.73 / p95 2.02 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.55 / median 0.14 / p95 19.33 ms
|
||||||
|
{"view": "mid lane close (zoom 22)", "frames": 1627, "fps": 162.5, "frame_ms_avg": 6.15, "frame_ms_median": 2.90, "frame_ms_p95": 21.11, "frame_ms_p99": 27.98, "frame_ms_max": 34.60, "frames_over_16_7_ms": 150, "of_them_with_simulation_step": 14, "gc_collections": 8, "simulation_ms_per_frame": 0.038, "views_ms_per_frame": 0.184, "ui_ms_per_frame": 0.044, "units_alive_max": 37}
|
||||||
|
// timings mid lane close (zoom 22): main thread avg 1.96 / median 1.91 / p95 2.70 ms, render thread avg 1.34 / median 1.33 / p95 1.56 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.16 / median 0.74 / p95 18.70 ms
|
||||||
|
]
|
||||||
|
}
|
||||||
15
docs/port/logs/h2/player-benchmark-held_sylvara-run3.json
Normal 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 2, army held_sylvara x6, speed 1x, measured after 10 s of combat",
|
||||||
|
// moving units at the start of the first window: w04 11, w06 11, g04 10, g02 9, g06 9, w02 7, sylvara 5, g08 4, g10 4, w08 4, w10 3
|
||||||
|
"windows": [
|
||||||
|
{"view": "overview (zoom 64)", "frames": 2825, "fps": 141.2, "frame_ms_avg": 7.08, "frame_ms_median": 3.10, "frame_ms_p95": 22.09, "frame_ms_p99": 28.00, "frame_ms_max": 41.50, "frames_over_16_7_ms": 354, "of_them_with_simulation_step": 64, "gc_collections": 20, "simulation_ms_per_frame": 0.065, "views_ms_per_frame": 0.225, "ui_ms_per_frame": 0.060, "units_alive_max": 77},
|
||||||
|
// timings overview (zoom 64): main thread avg 2.60 / median 2.48 / p95 3.70 ms, render thread avg 1.74 / median 1.73 / p95 2.07 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.49 / median 0.14 / p95 19.29 ms
|
||||||
|
{"view": "mid lane close (zoom 22)", "frames": 1635, "fps": 163.2, "frame_ms_avg": 6.13, "frame_ms_median": 2.91, "frame_ms_p95": 20.43, "frame_ms_p99": 27.40, "frame_ms_max": 33.80, "frames_over_16_7_ms": 137, "of_them_with_simulation_step": 25, "gc_collections": 8, "simulation_ms_per_frame": 0.034, "views_ms_per_frame": 0.189, "ui_ms_per_frame": 0.044, "units_alive_max": 37}
|
||||||
|
// timings mid lane close (zoom 22): main thread avg 1.96 / median 1.90 / p95 2.78 ms, render thread avg 1.34 / median 1.33 / p95 1.56 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.14 / median 0.68 / p95 18.22 ms
|
||||||
|
]
|
||||||
|
}
|
||||||
11
docs/port/logs/h2/player-smoke.json
Normal 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"
|
||||||
|
}
|
||||||
450
docs/port/logs/h2/playmode-results.xml
Normal file
|
|
@ -0,0 +1,450 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<test-run id="2" testcasecount="31" result="Passed" total="31" passed="19" failed="0" inconclusive="0" skipped="12" asserts="0" engine-version="3.5.0.0" clr-version="4.0.30319.42000" start-time="2026-10-11 15:08:10Z" end-time="2026-10-11 15:13:23Z" duration="312.6098309">
|
||||||
|
<test-suite type="TestSuite" id="1058" name="luneraria-unity" fullname="luneraria-unity" runstate="Runnable" testcasecount="31" result="Passed" start-time="2026-10-11 15:08:10Z" end-time="2026-10-11 15:13:23Z" duration="312.609831" total="31" passed="19" failed="0" inconclusive="0" skipped="12" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="platform" value="PlayMode" />
|
||||||
|
</properties>
|
||||||
|
<test-suite type="Assembly" id="1043" name="Luneraria.UI.Tests.PlayMode.dll" fullname="/private/tmp/lune-konzept/Library/ScriptAssemblies/Luneraria.UI.Tests.PlayMode.dll" runstate="Runnable" testcasecount="29" result="Passed" start-time="2026-10-11 15:08:10Z" end-time="2026-10-11 15:08:40Z" duration="29.448289" total="29" passed="17" failed="0" inconclusive="0" skipped="12" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_PID" value="33438" />
|
||||||
|
<property name="_APPDOMAIN" value="Unity Child Domain" />
|
||||||
|
<property name="platform" value="PlayMode" />
|
||||||
|
<property name="EditorOnly" value="False" />
|
||||||
|
</properties>
|
||||||
|
<test-suite type="TestSuite" id="1044" name="Luneraria" fullname="Luneraria" runstate="Runnable" testcasecount="29" result="Passed" start-time="2026-10-11 15:08:10Z" end-time="2026-10-11 15:08:40Z" duration="29.447877" total="29" passed="17" failed="0" inconclusive="0" skipped="12" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1045" name="UI" fullname="Luneraria.UI" runstate="Runnable" testcasecount="29" result="Passed" start-time="2026-10-11 15:08:10Z" end-time="2026-10-11 15:08:40Z" duration="29.447676" total="29" passed="17" failed="0" inconclusive="0" skipped="12" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1046" name="Tests" fullname="Luneraria.UI.Tests" runstate="Runnable" testcasecount="29" result="Passed" start-time="2026-10-11 15:08:10Z" end-time="2026-10-11 15:08:40Z" duration="29.447261" total="29" passed="17" failed="0" inconclusive="0" skipped="12" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestFixture" id="1001" name="ArmyViewsTests" fullname="Luneraria.UI.Tests.ArmyViewsTests" classname="Luneraria.UI.Tests.ArmyViewsTests" runstate="Explicit" testcasecount="1" result="Skipped" label="Explicit" site="SetUp" start-time="2026-10-11 15:08:10Z" end-time="2026-10-11 15:08:10Z" duration="0.002637" total="1" passed="0" failed="0" inconclusive="0" skipped="1" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_SKIPREASON" value="Bildwerkzeug: nur gezielt per -testFilter" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
<test-case id="1002" name="Glutpakt" fullname="Luneraria.UI.Tests.ArmyViewsTests.Glutpakt" methodname="Glutpakt" classname="Luneraria.UI.Tests.ArmyViewsTests" runstate="Runnable" seed="484685372" result="Skipped" label="Explicit" site="Parent" start-time="0001-01-01 00:00:00Z" end-time="0001-01-01 00:00:00Z" duration="0.000000" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1003" name="FigureViewsTests" fullname="Luneraria.UI.Tests.FigureViewsTests" classname="Luneraria.UI.Tests.FigureViewsTests" runstate="Explicit" testcasecount="1" result="Skipped" label="Explicit" site="SetUp" start-time="2026-10-11 15:08:10Z" end-time="2026-10-11 15:08:10Z" duration="0.000068" total="1" passed="0" failed="0" inconclusive="0" skipped="1" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_SKIPREASON" value="Bildwerkzeug: nur gezielt per -testFilter" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
<test-case id="1004" name="Kohlenbeisser" fullname="Luneraria.UI.Tests.FigureViewsTests.Kohlenbeisser" methodname="Kohlenbeisser" classname="Luneraria.UI.Tests.FigureViewsTests" runstate="Runnable" seed="1247754021" result="Skipped" label="Explicit" site="Parent" start-time="0001-01-01 00:00:00Z" end-time="0001-01-01 00:00:00Z" duration="0.000000" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1005" name="H1HeroViewsTests" fullname="Luneraria.UI.Tests.H1HeroViewsTests" classname="Luneraria.UI.Tests.H1HeroViewsTests" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 15:08:10Z" end-time="2026-10-11 15:08:12Z" duration="2.024046" total="2" passed="1" failed="0" inconclusive="0" skipped="1" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1007" name="SylvaraBilder" fullname="Luneraria.UI.Tests.H1HeroViewsTests.SylvaraBilder" methodname="SylvaraBilder" classname="Luneraria.UI.Tests.H1HeroViewsTests" runstate="Explicit" seed="469215423" result="Skipped" label="Explicit" start-time="2026-10-11 15:08:10Z" end-time="2026-10-11 15:08:10Z" duration="0.000151" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
<property name="_SKIPREASON" value="Bildwerkzeug: nur gezielt per -testFilter" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1006" name="SylvaraHud" fullname="Luneraria.UI.Tests.H1HeroViewsTests.SylvaraHud" methodname="SylvaraHud" classname="Luneraria.UI.Tests.H1HeroViewsTests" runstate="Runnable" seed="1188505406" result="Passed" start-time="2026-10-11 15:08:10Z" end-time="2026-10-11 15:08:12Z" duration="2.021571" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="600000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1008" name="H2HeroViewsTests" fullname="Luneraria.UI.Tests.H2HeroViewsTests" classname="Luneraria.UI.Tests.H2HeroViewsTests" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 15:08:12Z" end-time="2026-10-11 15:08:13Z" duration="0.499744" total="2" passed="1" failed="0" inconclusive="0" skipped="1" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1010" name="BrunhildBilder" fullname="Luneraria.UI.Tests.H2HeroViewsTests.BrunhildBilder" methodname="BrunhildBilder" classname="Luneraria.UI.Tests.H2HeroViewsTests" runstate="Explicit" seed="1423703170" result="Skipped" label="Explicit" start-time="2026-10-11 15:08:12Z" end-time="2026-10-11 15:08:12Z" duration="0.000001" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
<property name="_SKIPREASON" value="Bildwerkzeug: nur gezielt per -testFilter" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1009" name="BrunhildHud" fullname="Luneraria.UI.Tests.H2HeroViewsTests.BrunhildHud" methodname="BrunhildHud" classname="Luneraria.UI.Tests.H2HeroViewsTests" runstate="Runnable" seed="1071759425" result="Passed" start-time="2026-10-11 15:08:12Z" end-time="2026-10-11 15:08:13Z" duration="0.495401" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="600000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1011" name="HudCaptureTests" fullname="Luneraria.UI.Tests.HudCaptureTests" classname="Luneraria.UI.Tests.HudCaptureTests" runstate="Runnable" testcasecount="1" result="Passed" start-time="2026-10-11 15:08:13Z" end-time="2026-10-11 15:08:13Z" duration="0.420027" total="1" passed="1" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1012" name="PlanningHudOverTheScene" fullname="Luneraria.UI.Tests.HudCaptureTests.PlanningHudOverTheScene" methodname="PlanningHudOverTheScene" classname="Luneraria.UI.Tests.HudCaptureTests" runstate="Runnable" seed="1885282074" result="Passed" start-time="2026-10-11 15:08:13Z" end-time="2026-10-11 15:08:13Z" duration="0.416059" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="600000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_HUD syncs 1 sync ms 0.177 portraits 15 scale 1 size (1706.67, 960.00)
|
||||||
|
LUNE_HUD region top (x:425.78, y:12.44, width:855.11, height:83.56)
|
||||||
|
LUNE_HUD region system (x:1559.11, y:12.44, width:136.00, height:35.56)
|
||||||
|
LUNE_HUD region left (x:12.44, y:12.44, width:312.00, height:466.67)
|
||||||
|
LUNE_HUD region right (x:1372.44, y:56.00, width:322.67, height:248.00)
|
||||||
|
LUNE_HUD region bottom (x:12.44, y:761.78, width:1432.00, height:186.67)
|
||||||
|
LUNE_HUD region ready (x:1455.11, y:616.00, width:240.00, height:84.44)
|
||||||
|
LUNE_HUD region minimap (x:1455.11, y:708.44, width:240.00, height:240.00)
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1013" name="HudPlaytest" fullname="Luneraria.UI.Tests.HudPlaytest" classname="Luneraria.UI.Tests.HudPlaytest" runstate="Explicit" testcasecount="1" result="Skipped" label="Explicit" site="SetUp" start-time="2026-10-11 15:08:13Z" end-time="2026-10-11 15:08:13Z" duration="0.000105" total="1" passed="0" failed="0" inconclusive="0" skipped="1" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_SKIPREASON" value="Spieltest: wartet auf Befehlsdateien" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Spieltest: wartet auf Befehlsdateien]]></message>
|
||||||
|
</reason>
|
||||||
|
<test-case id="1014" name="Play" fullname="Luneraria.UI.Tests.HudPlaytest.Play" methodname="Play" classname="Luneraria.UI.Tests.HudPlaytest" runstate="Runnable" seed="443027061" result="Skipped" label="Explicit" site="Parent" start-time="0001-01-01 00:00:00Z" end-time="0001-01-01 00:00:00Z" duration="0.000000" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="2147483647" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Spieltest: wartet auf Befehlsdateien]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1015" name="HudVerifyTests" fullname="Luneraria.UI.Tests.HudVerifyTests" classname="Luneraria.UI.Tests.HudVerifyTests" runstate="Runnable" testcasecount="9" result="Passed" start-time="2026-10-11 15:08:13Z" end-time="2026-10-11 15:08:25Z" duration="12.156553" total="9" passed="9" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1016" name="A_Layout" fullname="Luneraria.UI.Tests.HudVerifyTests.A_Layout" methodname="A_Layout" classname="Luneraria.UI.Tests.HudVerifyTests" runstate="Runnable" seed="1041325043" result="Passed" start-time="2026-10-11 15:08:13Z" end-time="2026-10-11 15:08:18Z" duration="4.607664" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="1800000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_VERIFY A: 585 checks, 0 failed
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1017" name="B_Status" fullname="Luneraria.UI.Tests.HudVerifyTests.B_Status" methodname="B_Status" classname="Luneraria.UI.Tests.HudVerifyTests" runstate="Runnable" seed="2030120030" result="Passed" start-time="2026-10-11 15:08:18Z" end-time="2026-10-11 15:08:18Z" duration="0.406023" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_VERIFY B: 21 checks, 0 failed
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1018" name="C_HeroItemsUnits" fullname="Luneraria.UI.Tests.HudVerifyTests.C_HeroItemsUnits" methodname="C_HeroItemsUnits" classname="Luneraria.UI.Tests.HudVerifyTests" runstate="Runnable" seed="1005551008" result="Passed" start-time="2026-10-11 15:08:18Z" end-time="2026-10-11 15:08:19Z" duration="0.768884" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_VERIFY C: 23 checks, 0 failed
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1019" name="D_ChampionsAndBoss" fullname="Luneraria.UI.Tests.HudVerifyTests.D_ChampionsAndBoss" methodname="D_ChampionsAndBoss" classname="Luneraria.UI.Tests.HudVerifyTests" runstate="Runnable" seed="240803134" result="Passed" start-time="2026-10-11 15:08:19Z" end-time="2026-10-11 15:08:19Z" duration="0.539322" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_VERIFY D: 16 checks, 0 failed
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1020" name="E_ReadyBotsPrivacy" fullname="Luneraria.UI.Tests.HudVerifyTests.E_ReadyBotsPrivacy" methodname="E_ReadyBotsPrivacy" classname="Luneraria.UI.Tests.HudVerifyTests" runstate="Runnable" seed="803562058" result="Passed" start-time="2026-10-11 15:08:19Z" end-time="2026-10-11 15:08:21Z" duration="1.414110" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_VERIFY E: 17 checks, 0 failed
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1021" name="F_Input" fullname="Luneraria.UI.Tests.HudVerifyTests.F_Input" methodname="F_Input" classname="Luneraria.UI.Tests.HudVerifyTests" runstate="Runnable" seed="1108008334" result="Passed" start-time="2026-10-11 15:08:21Z" end-time="2026-10-11 15:08:24Z" duration="3.434122" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_VERIFY F: 18 checks, 0 failed
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1022" name="G_EventsAndMotion" fullname="Luneraria.UI.Tests.HudVerifyTests.G_EventsAndMotion" methodname="G_EventsAndMotion" classname="Luneraria.UI.Tests.HudVerifyTests" runstate="Runnable" seed="130660984" result="Passed" start-time="2026-10-11 15:08:24Z" end-time="2026-10-11 15:08:25Z" duration="0.465534" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_VERIFY G: 14 checks, 0 failed
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1023" name="H_RatesAndPortraits" fullname="Luneraria.UI.Tests.HudVerifyTests.H_RatesAndPortraits" methodname="H_RatesAndPortraits" classname="Luneraria.UI.Tests.HudVerifyTests" runstate="Runnable" seed="1156458073" result="Passed" start-time="2026-10-11 15:08:25Z" end-time="2026-10-11 15:08:25Z" duration="0.210705" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_VERIFY rates planning 18/2s combat 10/2s sync 0.223 ms portraits 16
|
||||||
|
LUNE_VERIFY H: 5 checks, 0 failed
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1024" name="I_Field" fullname="Luneraria.UI.Tests.HudVerifyTests.I_Field" methodname="I_Field" classname="Luneraria.UI.Tests.HudVerifyTests" runstate="Runnable" seed="348733467" result="Passed" start-time="2026-10-11 15:08:25Z" end-time="2026-10-11 15:08:25Z" duration="0.306232" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_VERIFY I: 19 checks, 0 failed
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1025" name="HudViewsTests" fullname="Luneraria.UI.Tests.HudViewsTests" classname="Luneraria.UI.Tests.HudViewsTests" runstate="Explicit" testcasecount="4" result="Skipped" label="Explicit" site="SetUp" start-time="2026-10-11 15:08:25Z" end-time="2026-10-11 15:08:25Z" duration="0.000241" total="4" passed="0" failed="0" inconclusive="0" skipped="4" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_SKIPREASON" value="Bildwerkzeug: nur gezielt per -testFilter" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
<test-case id="1028" name="Motifs_1280x720" fullname="Luneraria.UI.Tests.HudViewsTests.Motifs_1280x720" methodname="Motifs_1280x720" classname="Luneraria.UI.Tests.HudViewsTests" runstate="Runnable" seed="2076851718" result="Skipped" label="Explicit" site="Parent" start-time="0001-01-01 00:00:00Z" end-time="0001-01-01 00:00:00Z" duration="0.000000" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="1800000" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1026" name="Motifs_1920x1080" fullname="Luneraria.UI.Tests.HudViewsTests.Motifs_1920x1080" methodname="Motifs_1920x1080" classname="Luneraria.UI.Tests.HudViewsTests" runstate="Runnable" seed="1154065971" result="Skipped" label="Explicit" site="Parent" start-time="0001-01-01 00:00:00Z" end-time="0001-01-01 00:00:00Z" duration="0.000000" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="1800000" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1029" name="Motifs_2560x1080" fullname="Luneraria.UI.Tests.HudViewsTests.Motifs_2560x1080" methodname="Motifs_2560x1080" classname="Luneraria.UI.Tests.HudViewsTests" runstate="Runnable" seed="1482049301" result="Skipped" label="Explicit" site="Parent" start-time="0001-01-01 00:00:00Z" end-time="0001-01-01 00:00:00Z" duration="0.000000" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="1800000" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1027" name="Motifs_2560x1440" fullname="Luneraria.UI.Tests.HudViewsTests.Motifs_2560x1440" methodname="Motifs_2560x1440" classname="Luneraria.UI.Tests.HudViewsTests" runstate="Runnable" seed="318062725" result="Skipped" label="Explicit" site="Parent" start-time="0001-01-01 00:00:00Z" end-time="0001-01-01 00:00:00Z" duration="0.000000" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="1800000" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1030" name="S1RulesViewsTests" fullname="Luneraria.UI.Tests.S1RulesViewsTests" classname="Luneraria.UI.Tests.S1RulesViewsTests" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 15:08:25Z" end-time="2026-10-11 15:08:27Z" duration="1.626924" total="2" passed="1" failed="0" inconclusive="0" skipped="1" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1032" name="S1Bilder" fullname="Luneraria.UI.Tests.S1RulesViewsTests.S1Bilder" methodname="S1Bilder" classname="Luneraria.UI.Tests.S1RulesViewsTests" runstate="Explicit" seed="766748513" result="Skipped" label="Explicit" start-time="2026-10-11 15:08:25Z" end-time="2026-10-11 15:08:25Z" duration="0.000002" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="600000" />
|
||||||
|
<property name="_SKIPREASON" value="Bildwerkzeug: nur gezielt per -testFilter" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1031" name="S1Hud" fullname="Luneraria.UI.Tests.S1RulesViewsTests.S1Hud" methodname="S1Hud" classname="Luneraria.UI.Tests.S1RulesViewsTests" runstate="Runnable" seed="65905269" result="Passed" start-time="2026-10-11 15:08:25Z" end-time="2026-10-11 15:08:27Z" duration="1.624760" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="600000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1033" name="S2RulesViewsTests" fullname="Luneraria.UI.Tests.S2RulesViewsTests" classname="Luneraria.UI.Tests.S2RulesViewsTests" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 15:08:27Z" end-time="2026-10-11 15:08:27Z" duration="0.321169" total="2" passed="1" failed="0" inconclusive="0" skipped="1" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1035" name="S2Bilder" fullname="Luneraria.UI.Tests.S2RulesViewsTests.S2Bilder" methodname="S2Bilder" classname="Luneraria.UI.Tests.S2RulesViewsTests" runstate="Explicit" seed="1706347263" result="Skipped" label="Explicit" start-time="2026-10-11 15:08:27Z" end-time="2026-10-11 15:08:27Z" duration="0.000001" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="600000" />
|
||||||
|
<property name="_SKIPREASON" value="Bildwerkzeug: nur gezielt per -testFilter" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1034" name="S2Hud" fullname="Luneraria.UI.Tests.S2RulesViewsTests.S2Hud" methodname="S2Hud" classname="Luneraria.UI.Tests.S2RulesViewsTests" runstate="Runnable" seed="1522956290" result="Passed" start-time="2026-10-11 15:08:27Z" end-time="2026-10-11 15:08:27Z" duration="0.317689" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="600000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1036" name="S3RulesViewsTests" fullname="Luneraria.UI.Tests.S3RulesViewsTests" classname="Luneraria.UI.Tests.S3RulesViewsTests" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 15:08:27Z" end-time="2026-10-11 15:08:29Z" duration="1.541816" total="2" passed="1" failed="0" inconclusive="0" skipped="1" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1038" name="S3Bilder" fullname="Luneraria.UI.Tests.S3RulesViewsTests.S3Bilder" methodname="S3Bilder" classname="Luneraria.UI.Tests.S3RulesViewsTests" runstate="Explicit" seed="1027170100" result="Skipped" label="Explicit" start-time="2026-10-11 15:08:27Z" end-time="2026-10-11 15:08:27Z" duration="0.000001" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="600000" />
|
||||||
|
<property name="_SKIPREASON" value="Bildwerkzeug: nur gezielt per -testFilter" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1037" name="S3Hud" fullname="Luneraria.UI.Tests.S3RulesViewsTests.S3Hud" methodname="S3Hud" classname="Luneraria.UI.Tests.S3RulesViewsTests" runstate="Runnable" seed="1749301029" result="Passed" start-time="2026-10-11 15:08:27Z" end-time="2026-10-11 15:08:29Z" duration="1.539165" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="600000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1039" name="StartScreenTests" fullname="Luneraria.UI.Tests.StartScreenTests" classname="Luneraria.UI.Tests.StartScreenTests" runstate="Runnable" testcasecount="1" result="Passed" start-time="2026-10-11 15:08:29Z" end-time="2026-10-11 15:08:39Z" duration="10.733619" total="1" passed="1" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1040" name="StartScreenLeadsIntoTheMatchAndBack" fullname="Luneraria.UI.Tests.StartScreenTests.StartScreenLeadsIntoTheMatchAndBack" methodname="StartScreenLeadsIntoTheMatchAndBack" classname="Luneraria.UI.Tests.StartScreenTests" runstate="Runnable" seed="1557917727" result="Passed" start-time="2026-10-11 15:08:29Z" end-time="2026-10-11 15:08:39Z" duration="10.730807" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="300000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_SMOKE ok Startbildschirm sichtbar
|
||||||
|
LUNE_SMOKE ok Partie wartet: Spielcontroller und Treiber aus
|
||||||
|
LUNE_SMOKE ok vor dem Start kein HUD
|
||||||
|
LUNE_SMOKE ok „Allein spielen“ bedienbar
|
||||||
|
LUNE_SMOKE ok Offline: Startbildschirm verborgen
|
||||||
|
LUNE_SMOKE ok Offline: Spielcontroller und Treiber laufen
|
||||||
|
LUNE_SMOKE ok Offline: HUD sichtbar
|
||||||
|
LUNE_SMOKE ok Offline: neue Partie, Sitz 1 (Mid)
|
||||||
|
LUNE_SMOKE ok Offline: Planung
|
||||||
|
LUNE_SMOKE ok Offline: lokale Sitzung
|
||||||
|
LUNE_SMOKE ok „Startaufstellung“ bedienbar
|
||||||
|
LUNE_SMOKE ok Startaufstellung gekauft (3 Einheiten)
|
||||||
|
LUNE_SMOKE ok „Bereit“ bedienbar
|
||||||
|
LUNE_SMOKE ok Bereit: Kampf beginnt
|
||||||
|
LUNE_SMOKE ok Kampf: Figuren im Feld
|
||||||
|
LUNE_SMOKE ok „Menü“ bedienbar
|
||||||
|
LUNE_SMOKE ok Verlassen-Dialog mit „Zum Menü“
|
||||||
|
LUNE_SMOKE ok Zurück: Startbildschirm sichtbar
|
||||||
|
LUNE_SMOKE ok Zurück: HUD verborgen
|
||||||
|
LUNE_SMOKE ok Zurück: Spielcontroller und Treiber aus
|
||||||
|
LUNE_SMOKE ok Zurück: Sitzung beendet
|
||||||
|
LUNE_SMOKE ok Zurück: keine Figuren im Feld
|
||||||
|
LUNE_SMOKE ok Zurück: Kamera ruht
|
||||||
|
LUNE_SMOKE ok Zurück: „Allein spielen“ bedienbar
|
||||||
|
LUNE_SMOKE ok Zweite Partie: Startbildschirm verborgen, HUD sichtbar
|
||||||
|
LUNE_SMOKE ok Zweite Partie: neue Partie in der Planung
|
||||||
|
LUNE_SMOKE_PASS 26 ok, 0 Fehler
|
||||||
|
LUNE_START_SCREEN 26 checks passed
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1041" name="UiToolkitProbeTests" fullname="Luneraria.UI.Tests.UiToolkitProbeTests" classname="Luneraria.UI.Tests.UiToolkitProbeTests" runstate="Runnable" testcasecount="1" result="Passed" start-time="2026-10-11 15:08:39Z" end-time="2026-10-11 15:08:40Z" duration="0.119090" total="1" passed="1" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1042" name="PanelRendersIntoTexture" fullname="Luneraria.UI.Tests.UiToolkitProbeTests.PanelRendersIntoTexture" methodname="PanelRendersIntoTexture" classname="Luneraria.UI.Tests.UiToolkitProbeTests" runstate="Runnable" seed="1992924022" result="Passed" start-time="2026-10-11 15:08:39Z" end-time="2026-10-11 15:08:40Z" duration="0.118672" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_SPIKE corner RGBA(0.565, 0.635, 0.506, 1.000) panel RGBA(0.196, 0.227, 0.204, 1.000) layout (x:12.44, y:12.44, width:760.00, height:530.67)
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="Assembly" id="1051" name="Luneraria.View.Tests.PlayMode.dll" fullname="/private/tmp/lune-konzept/Library/ScriptAssemblies/Luneraria.View.Tests.PlayMode.dll" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 15:08:40Z" end-time="2026-10-11 15:13:23Z" duration="283.158390" total="2" passed="2" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_PID" value="33438" />
|
||||||
|
<property name="_APPDOMAIN" value="Unity Child Domain" />
|
||||||
|
<property name="platform" value="PlayMode" />
|
||||||
|
<property name="EditorOnly" value="False" />
|
||||||
|
</properties>
|
||||||
|
<test-suite type="TestSuite" id="1052" name="Luneraria" fullname="Luneraria" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 15:08:40Z" end-time="2026-10-11 15:13:23Z" duration="283.156447" total="2" passed="2" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1053" name="View" fullname="Luneraria.View" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 15:08:40Z" end-time="2026-10-11 15:13:23Z" duration="283.154829" total="2" passed="2" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1054" name="Tests" fullname="Luneraria.View.Tests" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 15:08:40Z" end-time="2026-10-11 15:13:23Z" duration="283.154156" total="2" passed="2" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestFixture" id="1047" name="SceneFrameRateTests" fullname="Luneraria.View.Tests.SceneFrameRateTests" classname="Luneraria.View.Tests.SceneFrameRateTests" runstate="Runnable" testcasecount="1" result="Passed" start-time="2026-10-11 15:08:40Z" end-time="2026-10-11 15:10:30Z" duration="110.535256" total="1" passed="1" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1048" name="SceneMatchIsTheSameAtRealFrameRates" fullname="Luneraria.View.Tests.SceneFrameRateTests.SceneMatchIsTheSameAtRealFrameRates" methodname="SceneMatchIsTheSameAtRealFrameRates" classname="Luneraria.View.Tests.SceneFrameRateTests" runstate="Runnable" seed="636271957" result="Passed" start-time="2026-10-11 15:08:40Z" end-time="2026-10-11 15:10:30Z" duration="110.533471" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_SCENE_FPS 30 fps: 815 frames in 27.1 s = 30.0 fps, up to 21 steps per frame, hash DCE95C96556F3A1A, same=True
|
||||||
|
LUNE_SCENE_FPS 60 fps: 1627 frames in 27.1 s = 60.0 fps, up to 10 steps per frame, hash DCE95C96556F3A1A, same=True
|
||||||
|
LUNE_SCENE_FPS 120 fps: 3222 frames in 26.9 s = 119.8 fps, up to 8 steps per frame, hash DCE95C96556F3A1A, same=True
|
||||||
|
LUNE_SCENE_FPS unlimited: 82796 frames in 26.9 s = 3082.0 fps, up to 9 steps per frame, hash DCE95C96556F3A1A, same=True
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1049" name="VerticalFunctionTests" fullname="Luneraria.View.Tests.VerticalFunctionTests" classname="Luneraria.View.Tests.VerticalFunctionTests" runstate="Runnable" testcasecount="1" result="Passed" start-time="2026-10-11 15:10:30Z" end-time="2026-10-11 15:13:23Z" duration="172.618257" total="1" passed="1" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1050" name="BotMatchesRunVisiblyAndMatchTheCore" fullname="Luneraria.View.Tests.VerticalFunctionTests.BotMatchesRunVisiblyAndMatchTheCore" methodname="BotMatchesRunVisiblyAndMatchTheCore" classname="Luneraria.View.Tests.VerticalFunctionTests" runstate="Runnable" seed="2051854219" result="Passed" start-time="2026-10-11 15:10:30Z" end-time="2026-10-11 15:13:23Z" duration="172.612144" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="3600000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_U2D shot 01-runde1-aufmarsch round 1 Combat
|
||||||
|
LUNE_U2D shot 02-runde1-mid-kampf round 1 Combat
|
||||||
|
LUNE_U2D shot 03-turm-faellt round 7 Combat
|
||||||
|
LUNE_U2D shot 04-turm-ruine round 7 Combat
|
||||||
|
LUNE_U2D shot 05-grotte-bosskampf round 8 Combat
|
||||||
|
LUNE_U2D shot 06-held-kaempft round 9 Combat
|
||||||
|
LUNE_U2D shot 07-boss-auf-der-lane round 9 Combat
|
||||||
|
LUNE_U2D shot 08-ancient-faellt round 9 Over
|
||||||
|
LUNE_U2D shot 09-ancient-ruine round 9 Over
|
||||||
|
LUNE_U2D shot 10-ende-uebersicht round 9 Over
|
||||||
|
LUNE_U2D shot 11-welle21-uebersicht round 21 Combat
|
||||||
|
LUNE_U2D shot 12-welle21-kampf round 21 Combat
|
||||||
|
LUNE_U2D shot 13-ancient-rot-faellt round 22 Over
|
||||||
|
LUNE_U2D shot 14-welle-ende round 22 Over
|
||||||
|
Saving results to: /Users/martin/Library/Application Support/DefaultCompany/luneraria-unity/TestResults.xml
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-run>
|
||||||
11
docs/port/logs/h2/scene-frame-rates.json
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"match": "seed 2, bots, speed 24x",
|
||||||
|
"core_hash": "DCE95C96556F3A1A",
|
||||||
|
"core_steps": 12690,
|
||||||
|
"runs": [
|
||||||
|
{"target": "30 fps", "frames": 815, "seconds": 27.146, "measured_fps": 30.023, "max_steps_per_frame": 21, "steps": 12690, "hash": "DCE95C96556F3A1A", "winner": 1, "same_as_core": true},
|
||||||
|
{"target": "60 fps", "frames": 1627, "seconds": 27.101, "measured_fps": 60.034, "max_steps_per_frame": 10, "steps": 12690, "hash": "DCE95C96556F3A1A", "winner": 1, "same_as_core": true},
|
||||||
|
{"target": "120 fps", "frames": 3222, "seconds": 26.901, "measured_fps": 119.773, "max_steps_per_frame": 8, "steps": 12690, "hash": "DCE95C96556F3A1A", "winner": 1, "same_as_core": true},
|
||||||
|
{"target": "unlimited", "frames": 82796, "seconds": 26.865, "measured_fps": 3081.963, "max_steps_per_frame": 9, "steps": 12690, "hash": "DCE95C96556F3A1A", "winner": 1, "same_as_core": true}
|
||||||
|
]
|
||||||
|
}
|
||||||
16
docs/port/logs/h2/vertical-function-test.json
Normal 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": 48435, "fps": 2421.738, "frame_ms_avg": 0.413, "frame_ms_p95": 0.424, "simulation_ms_per_frame": 0.004, "views_ms_per_frame": 0.14, "units_alive_max": 116}}
|
||||||
|
]
|
||||||
|
}
|
||||||
20
docs/port/logs/s4/core-tests-dotnet.json
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"suites": [
|
||||||
|
{"suite": "content", "checks": 77, "failures": 0, "seconds": 0.02, "failed": [], "notes": ["map geometry: largest deviation lanes 0.00E+000 m, buildings 0.00E+000 m"]},
|
||||||
|
{"suite": "core", "checks": 91, "failures": 0, "seconds": 1.69, "failed": [], "notes": ["full match seed 2 -> Rot after 9 rounds"]},
|
||||||
|
{"suite": "m2", "checks": 73, "failures": 0, "seconds": 0.39, "failed": [], "notes": []},
|
||||||
|
{"suite": "golden", "checks": 157, "failures": 0, "seconds": 1.55, "failed": [], "notes": ["golden values compared: 51221", "largest deviation angle: 0.00E+000 over 1140 values (tolerance 1E-004)", "largest deviation effect: 0.00E+000 over 264 values (tolerance 1E-006)", "largest deviation hp: 0.00E+000 over 5679 values (tolerance 1E-002)", "largest deviation other: 0.00E+000 over 34 values (tolerance 1E-006)", "largest deviation position: 0.00E+000 over 3420 values (tolerance 1E-003)", "largest deviation time: 0.00E+000 over 780 values (tolerance 1E-006)", "domain ancients: 246 values, 0 differences, largest numeric deviation 0.00E+000", "domain announcements: 44 values, 0 differences, largest numeric deviation 0.00E+000", "domain boss: 1559 values, 0 differences, largest numeric deviation 0.00E+000", "domain combat: 676 values, 0 differences, largest numeric deviation 0.00E+000", "domain commands: 410 values, 0 differences, largest numeric deviation 0.00E+000", "domain events: 6937 values, 0 differences, largest numeric deviation 0.00E+000", "domain facing: 1140 values, 0 differences, largest numeric deviation 0.00E+000", "domain gold: 3584 values, 0 differences, largest numeric deviation 0.00E+000", "domain heroes: 1512 values, 0 differences, largest numeric deviation 0.00E+000", "domain hp: 3420 values, 0 differences, largest numeric deviation 0.00E+000", "domain other: 119 values, 0 differences, largest numeric deviation 0.00E+000", "domain positions: 3420 values, 0 differences, largest numeric deviation 0.00E+000", "domain purchases: 9311 values, 0 differences, largest numeric deviation 0.00E+000", "domain rounds: 119 values, 0 differences, largest numeric deviation 0.00E+000", "domain targets: 1140 values, 0 differences, largest numeric deviation 0.00E+000", "domain towers: 1994 values, 0 differences, largest numeric deviation 0.00E+000", "domain units: 14164 values, 0 differences, largest numeric deviation 0.00E+000", "domain waves: 731 values, 0 differences, largest numeric deviation 0.00E+000", "domain winner: 695 values, 0 differences, largest numeric deviation 0.00E+000"]},
|
||||||
|
{"suite": "determinism", "checks": 6, "failures": 0, "seconds": 1.52, "failed": [], "notes": []},
|
||||||
|
{"suite": "net", "checks": 43, "failures": 0, "seconds": 0.01, "failed": [], "notes": []},
|
||||||
|
{"suite": "net_rounds", "checks": 12, "failures": 0, "seconds": 0.07, "failed": [], "notes": []},
|
||||||
|
{"suite": "h1", "checks": 42, "failures": 0, "seconds": 1.27, "failed": [], "notes": ["sylvara-bot match seed 12: 15/1"]},
|
||||||
|
{"suite": "s1", "checks": 31, "failures": 0, "seconds": 0.43, "failed": [], "notes": ["extended seed 17: 10/0, income bonus 24,0,24,0,0,15, blessing 0/0"]},
|
||||||
|
{"suite": "s2", "checks": 34, "failures": 0, "seconds": 2.10, "failed": [], "notes": ["12 extended matches: expeditions 12, Mondsegen 4, recipe heroes 0, glyphs 19, Ancient levels 34; seed 1 10/0"]},
|
||||||
|
{"suite": "s3", "checks": 31, "failures": 0, "seconds": 0.61, "failed": [], "notes": []},
|
||||||
|
{"suite": "h2", "checks": 22, "failures": 0, "seconds": 0.00, "failed": [], "notes": []},
|
||||||
|
{"suite": "s4", "checks": 8, "failures": 0, "seconds": 0.00, "failed": [], "notes": []}
|
||||||
|
],
|
||||||
|
"runtime": ".NET 8.0.27",
|
||||||
|
"label": ".NET 8.0.27, Release",
|
||||||
|
"os": "Darwin 27.0.0 Darwin Kernel Version 27.0.0: Tue Aug 11 21:02:59 PDT 2026; root:xnu-13432.1.9~1/RELEASE_ARM64_T8142 Arm64"
|
||||||
|
}
|
||||||
379
docs/port/logs/s4/editmode-results.xml
Normal file
|
|
@ -0,0 +1,379 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<test-run id="2" testcasecount="35" result="Passed" total="35" passed="35" failed="0" inconclusive="0" skipped="0" asserts="0" engine-version="3.5.0.0" clr-version="4.0.30319.42000" start-time="2026-10-11 15:44:34Z" end-time="2026-10-11 15:46:18Z" duration="103.3902789">
|
||||||
|
<test-suite type="TestSuite" id="1000" name="luneraria-unity" fullname="luneraria-unity" runstate="Runnable" testcasecount="35" result="Passed" start-time="2026-10-11 15:44:34Z" end-time="2026-10-11 15:46:18Z" duration="103.390279" total="35" passed="35" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="platform" value="EditMode" />
|
||||||
|
</properties>
|
||||||
|
<test-suite type="Assembly" id="1018" name="Luneraria.Core.Tests.dll" fullname="/private/tmp/lune-konzept/Library/ScriptAssemblies/Luneraria.Core.Tests.dll" runstate="Runnable" testcasecount="15" result="Passed" start-time="2026-10-11 15:44:34Z" end-time="2026-10-11 15:45:53Z" duration="78.283975" total="15" passed="15" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_PID" value="37834" />
|
||||||
|
<property name="_APPDOMAIN" value="Unity Child Domain" />
|
||||||
|
<property name="platform" value="EditMode" />
|
||||||
|
<property name="EditorOnly" value="True" />
|
||||||
|
</properties>
|
||||||
|
<test-suite type="TestSuite" id="1019" name="Luneraria" fullname="Luneraria" runstate="Runnable" testcasecount="15" result="Passed" start-time="2026-10-11 15:44:34Z" end-time="2026-10-11 15:45:53Z" duration="78.283704" total="15" passed="15" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1020" name="Core" fullname="Luneraria.Core" runstate="Runnable" testcasecount="15" result="Passed" start-time="2026-10-11 15:44:34Z" end-time="2026-10-11 15:45:53Z" duration="78.283495" total="15" passed="15" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1021" name="Tests" fullname="Luneraria.Core.Tests" runstate="Runnable" testcasecount="15" result="Passed" start-time="2026-10-11 15:44:34Z" end-time="2026-10-11 15:45:53Z" duration="78.283229" total="15" passed="15" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestFixture" id="1001" name="CoreIntegrationTests" fullname="Luneraria.Core.Tests.CoreIntegrationTests" classname="Luneraria.Core.Tests.CoreIntegrationTests" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 15:44:34Z" end-time="2026-10-11 15:44:34Z" duration="0.071599" total="2" passed="2" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1003" name="CoreFloatArithmeticMatchesGodot" fullname="Luneraria.Core.Tests.CoreIntegrationTests.CoreFloatArithmeticMatchesGodot" methodname="CoreFloatArithmeticMatchesGodot" classname="Luneraria.Core.Tests.CoreIntegrationTests" runstate="Runnable" seed="107261932" result="Passed" start-time="2026-10-11 15:44:34Z" end-time="2026-10-11 15:44:34Z" duration="0.066655" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[float probe: length 4000/4000, length_squared 4000/4000, distance_to 4000/4000, distance_squared_to 4000/4000, dot 4000/4000, normalized 4000/4000, lerp 4000/4000, limit_length 4000/4000, multiply 4000/4000, divide 4000/4000, sub_normalized 4000/4000, atan2 4000/4000
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1002" name="CoreHasNoEngineReferences" fullname="Luneraria.Core.Tests.CoreIntegrationTests.CoreHasNoEngineReferences" methodname="CoreHasNoEngineReferences" classname="Luneraria.Core.Tests.CoreIntegrationTests" runstate="Runnable" seed="903255537" result="Passed" start-time="2026-10-11 15:44:34Z" end-time="2026-10-11 15:44:34Z" duration="0.000311" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1004" name="CoreSuiteTests" fullname="Luneraria.Core.Tests.CoreSuiteTests" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" testcasecount="13" result="Passed" start-time="2026-10-11 15:44:34Z" end-time="2026-10-11 15:45:53Z" duration="78.210803" total="13" passed="13" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1005" name="Content" fullname="Luneraria.Core.Tests.CoreSuiteTests.Content" methodname="Content" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="930309601" result="Passed" start-time="2026-10-11 15:44:34Z" end-time="2026-10-11 15:44:34Z" duration="0.013726" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[content: map geometry: largest deviation lanes 0.00E+000 m, buildings 0.00E+000 m
|
||||||
|
LUNE_U1_PASS content: 77 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1006" name="CoreRules" fullname="Luneraria.Core.Tests.CoreSuiteTests.CoreRules" methodname="CoreRules" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="1436593523" result="Passed" start-time="2026-10-11 15:44:34Z" end-time="2026-10-11 15:44:40Z" duration="5.321400" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[core: full match seed 2 -> Rot after 9 rounds
|
||||||
|
LUNE_U1_PASS core: 91 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1009" name="Determinism" fullname="Luneraria.Core.Tests.CoreSuiteTests.Determinism" methodname="Determinism" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="2053697287" result="Passed" start-time="2026-10-11 15:44:40Z" end-time="2026-10-11 15:44:53Z" duration="13.730174" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_U1_PASS determinism: 6 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1008" name="GoldenReplays" fullname="Luneraria.Core.Tests.CoreSuiteTests.GoldenReplays" methodname="GoldenReplays" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="1627200637" result="Passed" start-time="2026-10-11 15:44:53Z" end-time="2026-10-11 15:45:07Z" duration="13.868623" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[golden: golden values compared: 51221
|
||||||
|
golden: largest deviation angle: 0.00E+000 over 1140 values (tolerance 1E-004)
|
||||||
|
golden: largest deviation effect: 0.00E+000 over 264 values (tolerance 1E-006)
|
||||||
|
golden: largest deviation hp: 0.00E+000 over 5679 values (tolerance 1E-002)
|
||||||
|
golden: largest deviation other: 0.00E+000 over 34 values (tolerance 1E-006)
|
||||||
|
golden: largest deviation position: 0.00E+000 over 3420 values (tolerance 1E-003)
|
||||||
|
golden: largest deviation time: 0.00E+000 over 780 values (tolerance 1E-006)
|
||||||
|
golden: domain ancients: 246 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain announcements: 44 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain boss: 1559 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain combat: 676 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain commands: 410 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain events: 6937 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain facing: 1140 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain gold: 3584 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain heroes: 1512 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain hp: 3420 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain other: 119 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain positions: 3420 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain purchases: 9311 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain rounds: 119 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain targets: 1140 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain towers: 1994 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain units: 14164 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain waves: 731 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
golden: domain winner: 695 values, 0 differences, largest numeric deviation 0.00E+000
|
||||||
|
LUNE_U1_PASS golden: 157 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1012" name="H1Heroes" fullname="Luneraria.Core.Tests.CoreSuiteTests.H1Heroes" methodname="H1Heroes" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="408816745" result="Passed" start-time="2026-10-11 15:45:07Z" end-time="2026-10-11 15:45:19Z" duration="11.554235" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[h1: sylvara-bot match seed 12: 15/1
|
||||||
|
LUNE_U1_PASS h1: 42 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1016" name="H2Heroes" fullname="Luneraria.Core.Tests.CoreSuiteTests.H2Heroes" methodname="H2Heroes" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="375337043" result="Passed" start-time="2026-10-11 15:45:19Z" end-time="2026-10-11 15:45:19Z" duration="0.014546" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_U1_PASS h2: 22 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1007" name="M2Rules" fullname="Luneraria.Core.Tests.CoreSuiteTests.M2Rules" methodname="M2Rules" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="415400525" result="Passed" start-time="2026-10-11 15:45:19Z" end-time="2026-10-11 15:45:22Z" duration="3.399756" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_U1_PASS m2: 73 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1010" name="NetProtocol" fullname="Luneraria.Core.Tests.CoreSuiteTests.NetProtocol" methodname="NetProtocol" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="1971154753" result="Passed" start-time="2026-10-11 15:45:22Z" end-time="2026-10-11 15:45:22Z" duration="0.068419" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_U1_PASS net: 43 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1011" name="NetRounds" fullname="Luneraria.Core.Tests.CoreSuiteTests.NetRounds" methodname="NetRounds" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="1317151176" result="Passed" start-time="2026-10-11 15:45:22Z" end-time="2026-10-11 15:45:23Z" duration="0.581983" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_U1_PASS net_rounds: 12 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1013" name="S1Rules" fullname="Luneraria.Core.Tests.CoreSuiteTests.S1Rules" methodname="S1Rules" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="1057465390" result="Passed" start-time="2026-10-11 15:45:23Z" end-time="2026-10-11 15:45:27Z" duration="3.850179" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[s1: extended seed 17: 10/0, income bonus 24,0,24,0,0,15, blessing 0/0
|
||||||
|
LUNE_U1_PASS s1: 31 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1014" name="S2Rules" fullname="Luneraria.Core.Tests.CoreSuiteTests.S2Rules" methodname="S2Rules" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="137525762" result="Passed" start-time="2026-10-11 15:45:27Z" end-time="2026-10-11 15:45:47Z" duration="19.941361" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[s2: 12 extended matches: expeditions 12, Mondsegen 4, recipe heroes 0, glyphs 19, Ancient levels 34; seed 1 10/0
|
||||||
|
LUNE_U1_PASS s2: 34 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1015" name="S3Rules" fullname="Luneraria.Core.Tests.CoreSuiteTests.S3Rules" methodname="S3Rules" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="1328749086" result="Passed" start-time="2026-10-11 15:45:47Z" end-time="2026-10-11 15:45:53Z" duration="5.853746" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_U1_PASS s3: 31 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1017" name="S4Net" fullname="Luneraria.Core.Tests.CoreSuiteTests.S4Net" methodname="S4Net" classname="Luneraria.Core.Tests.CoreSuiteTests" runstate="Runnable" seed="1242366733" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.004941" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_U1_PASS s4: 8 checks
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="Assembly" id="1027" name="Luneraria.Net.Tests.dll" fullname="/private/tmp/lune-konzept/Library/ScriptAssemblies/Luneraria.Net.Tests.dll" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.127653" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_PID" value="37834" />
|
||||||
|
<property name="_APPDOMAIN" value="Unity Child Domain" />
|
||||||
|
<property name="platform" value="EditMode" />
|
||||||
|
<property name="EditorOnly" value="True" />
|
||||||
|
</properties>
|
||||||
|
<test-suite type="TestSuite" id="1028" name="Luneraria" fullname="Luneraria" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.029621" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1029" name="Net" fullname="Luneraria.Net" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.028425" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1030" name="Tests" fullname="Luneraria.Net.Tests" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.028061" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestFixture" id="1022" name="LuneWireTests" fullname="Luneraria.Net.Tests.LuneWireTests" classname="Luneraria.Net.Tests.LuneWireTests" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.027878" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1023" name="CommandRoundTrips" fullname="Luneraria.Net.Tests.LuneWireTests.CommandRoundTrips" methodname="CommandRoundTrips" classname="Luneraria.Net.Tests.LuneWireTests" runstate="Runnable" seed="1394399232" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.013068" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1026" name="LobbyAndOptionsRoundTrip" fullname="Luneraria.Net.Tests.LuneWireTests.LobbyAndOptionsRoundTrip" methodname="LobbyAndOptionsRoundTrip" classname="Luneraria.Net.Tests.LuneWireTests" runstate="Runnable" seed="914420489" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.001439" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1024" name="StateRoundTrips" fullname="Luneraria.Net.Tests.LuneWireTests.StateRoundTrips" methodname="StateRoundTrips" classname="Luneraria.Net.Tests.LuneWireTests" runstate="Runnable" seed="382721647" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.006154" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1025" name="UnitsAndFrameRoundTrip" fullname="Luneraria.Net.Tests.LuneWireTests.UnitsAndFrameRoundTrip" methodname="UnitsAndFrameRoundTrip" classname="Luneraria.Net.Tests.LuneWireTests" runstate="Runnable" seed="993999595" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.005527" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="Assembly" id="1044" name="Luneraria.UI.Tests.EditMode.dll" fullname="/private/tmp/lune-konzept/Library/ScriptAssemblies/Luneraria.UI.Tests.EditMode.dll" runstate="Runnable" testcasecount="12" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.249808" total="12" passed="12" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_PID" value="37834" />
|
||||||
|
<property name="_APPDOMAIN" value="Unity Child Domain" />
|
||||||
|
<property name="platform" value="EditMode" />
|
||||||
|
<property name="EditorOnly" value="True" />
|
||||||
|
</properties>
|
||||||
|
<test-suite type="TestSuite" id="1045" name="Luneraria" fullname="Luneraria" runstate="Runnable" testcasecount="12" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.249371" total="12" passed="12" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1046" name="UI" fullname="Luneraria.UI" runstate="Runnable" testcasecount="12" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.249141" total="12" passed="12" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1047" name="Tests" fullname="Luneraria.UI.Tests" runstate="Runnable" testcasecount="12" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.248918" total="12" passed="12" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestFixture" id="1031" name="HudModelTests" fullname="Luneraria.UI.Tests.HudModelTests" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" testcasecount="12" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.248454" total="12" passed="12" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1036" name="AnnouncedDangersRaiseTheThreat" fullname="Luneraria.UI.Tests.HudModelTests.AnnouncedDangersRaiseTheThreat" methodname="AnnouncedDangersRaiseTheThreat" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="935837599" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.012518" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1037" name="BattlefieldCountsTheLaneUnits" fullname="Luneraria.UI.Tests.HudModelTests.BattlefieldCountsTheLaneUnits" methodname="BattlefieldCountsTheLaneUnits" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="9670403" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.047628" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1034" name="BossLaneChoiceIsPrivateToTheChooser" fullname="Luneraria.UI.Tests.HudModelTests.BossLaneChoiceIsPrivateToTheChooser" methodname="BossLaneChoiceIsPrivateToTheChooser" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="1339201813" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.004828" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1038" name="BossStatesFromPublicState" fullname="Luneraria.UI.Tests.HudModelTests.BossStatesFromPublicState" methodname="BossStatesFromPublicState" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="950009974" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.000792" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1043" name="BotMatchStillStartsByItself" fullname="Luneraria.UI.Tests.HudModelTests.BotMatchStillStartsByItself" methodname="BotMatchStillStartsByItself" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="1059707782" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.001952" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1032" name="EverySeatSeesTheSamePublicPicture" fullname="Luneraria.UI.Tests.HudModelTests.EverySeatSeesTheSamePublicPicture" methodname="EverySeatSeesTheSamePublicPicture" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="1032970802" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.046867" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1042" name="HumanSeatPlanningWaitsForReady" fullname="Luneraria.UI.Tests.HudModelTests.HumanSeatPlanningWaitsForReady" methodname="HumanSeatPlanningWaitsForReady" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="1176788613" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.062748" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1035" name="LaneThreatFollowsTowerHealth" fullname="Luneraria.UI.Tests.HudModelTests.LaneThreatFollowsTowerHealth" methodname="LaneThreatFollowsTowerHealth" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="2070107633" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.001146" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1039" name="NextWaveIsTheRulesWave" fullname="Luneraria.UI.Tests.HudModelTests.NextWaveIsTheRulesWave" methodname="NextWaveIsTheRulesWave" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="251806882" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.001697" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1041" name="NumbersAreFormattedAsInGodot" fullname="Luneraria.UI.Tests.HudModelTests.NumbersAreFormattedAsInGodot" methodname="NumbersAreFormattedAsInGodot" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="1315738708" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.000560" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1033" name="OtherSeatsPlansStayPrivateUntilCombat" fullname="Luneraria.UI.Tests.HudModelTests.OtherSeatsPlansStayPrivateUntilCombat" methodname="OtherSeatsPlansStayPrivateUntilCombat" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="1277302636" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.064264" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1040" name="ReadyLocksThePlan" fullname="Luneraria.UI.Tests.HudModelTests.ReadyLocksThePlan" methodname="ReadyLocksThePlan" classname="Luneraria.UI.Tests.HudModelTests" runstate="Runnable" seed="1134601554" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.000917" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="Assembly" id="1053" name="Luneraria.View.Tests.EditMode.dll" fullname="/private/tmp/lune-konzept/Library/ScriptAssemblies/Luneraria.View.Tests.EditMode.dll" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:46:18Z" duration="24.725799" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_PID" value="37834" />
|
||||||
|
<property name="_APPDOMAIN" value="Unity Child Domain" />
|
||||||
|
<property name="platform" value="EditMode" />
|
||||||
|
<property name="EditorOnly" value="True" />
|
||||||
|
</properties>
|
||||||
|
<test-suite type="TestSuite" id="1054" name="Luneraria" fullname="Luneraria" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:46:18Z" duration="24.712838" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1055" name="View" fullname="Luneraria.View" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:46:18Z" duration="24.712619" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1056" name="Tests" fullname="Luneraria.View.Tests" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:46:18Z" duration="24.712403" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestFixture" id="1048" name="FrameRateIndependenceTests" fullname="Luneraria.View.Tests.FrameRateIndependenceTests" classname="Luneraria.View.Tests.FrameRateIndependenceTests" runstate="Runnable" testcasecount="4" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:46:18Z" duration="24.712227" total="4" passed="4" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1052" name="ClockRunsWholeStepsOnly" fullname="Luneraria.View.Tests.FrameRateIndependenceTests.ClockRunsWholeStepsOnly" methodname="ClockRunsWholeStepsOnly" classname="Luneraria.View.Tests.FrameRateIndependenceTests" runstate="Runnable" seed="1388069764" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:45:53Z" duration="0.000929" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1049" name="FullBotMatchSeed2IsTheSameAtEveryFrameRate" fullname="Luneraria.View.Tests.FrameRateIndependenceTests.FullBotMatchSeed2IsTheSameAtEveryFrameRate" methodname="FullBotMatchSeed2IsTheSameAtEveryFrameRate" classname="Luneraria.View.Tests.FrameRateIndependenceTests" runstate="Runnable" seed="1268957414" result="Passed" start-time="2026-10-11 15:45:53Z" end-time="2026-10-11 15:46:03Z" duration="9.669904" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_FPS seed 2 30 fps: 19315 frames, 12690 steps, hash DCE95C96556F3A1A (core DCE95C96556F3A1A)
|
||||||
|
LUNE_FPS seed 2 60 fps: 38597 frames, 12690 steps, hash DCE95C96556F3A1A (core DCE95C96556F3A1A)
|
||||||
|
LUNE_FPS seed 2 120 fps: 77169 frames, 12690 steps, hash DCE95C96556F3A1A (core DCE95C96556F3A1A)
|
||||||
|
LUNE_FPS seed 2 unlimited (0.4-3.9 ms jitter): 569627 frames, 12690 steps, hash DCE95C96556F3A1A (core DCE95C96556F3A1A)
|
||||||
|
LUNE_FPS seed 2 stutter (stalls up to 0.4 s): 26845 frames, 12690 steps, hash DCE95C96556F3A1A (core DCE95C96556F3A1A)
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1050" name="HighWaveMatchFromRound21IsTheSameAtEveryFrameRate" fullname="Luneraria.View.Tests.FrameRateIndependenceTests.HighWaveMatchFromRound21IsTheSameAtEveryFrameRate" methodname="HighWaveMatchFromRound21IsTheSameAtEveryFrameRate" classname="Luneraria.View.Tests.FrameRateIndependenceTests" runstate="Runnable" seed="517063560" result="Passed" start-time="2026-10-11 15:46:03Z" end-time="2026-10-11 15:46:08Z" duration="5.480644" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_FPS seed 9 30 fps: 6342 frames, 4195 steps, hash 7B8E43AEFC0D60C5 (core 7B8E43AEFC0D60C5)
|
||||||
|
LUNE_FPS seed 9 60 fps: 12678 frames, 4195 steps, hash 7B8E43AEFC0D60C5 (core 7B8E43AEFC0D60C5)
|
||||||
|
LUNE_FPS seed 9 120 fps: 25352 frames, 4195 steps, hash 7B8E43AEFC0D60C5 (core 7B8E43AEFC0D60C5)
|
||||||
|
LUNE_FPS seed 9 unlimited (0.4-3.9 ms jitter): 99090 frames, 4195 steps, hash 7B8E43AEFC0D60C5 (core 7B8E43AEFC0D60C5)
|
||||||
|
LUNE_FPS seed 9 stutter (stalls up to 0.4 s): 8796 frames, 4195 steps, hash 7B8E43AEFC0D60C5 (core 7B8E43AEFC0D60C5)
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1051" name="MatchSpeedDoesNotChangeTheMatch" fullname="Luneraria.View.Tests.FrameRateIndependenceTests.MatchSpeedDoesNotChangeTheMatch" methodname="MatchSpeedDoesNotChangeTheMatch" classname="Luneraria.View.Tests.FrameRateIndependenceTests" runstate="Runnable" seed="926040479" result="Passed" start-time="2026-10-11 15:46:08Z" end-time="2026-10-11 15:46:18Z" duration="9.557888" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_FPS seed 2 30 fps: 2418 frames, 12690 steps, hash DCE95C96556F3A1A (core DCE95C96556F3A1A)
|
||||||
|
LUNE_FPS seed 2 60 fps: 4831 frames, 12690 steps, hash DCE95C96556F3A1A (core DCE95C96556F3A1A)
|
||||||
|
LUNE_FPS seed 2 120 fps: 9658 frames, 12690 steps, hash DCE95C96556F3A1A (core DCE95C96556F3A1A)
|
||||||
|
LUNE_FPS seed 2 unlimited (0.4-3.9 ms jitter): 37713 frames, 12690 steps, hash DCE95C96556F3A1A (core DCE95C96556F3A1A)
|
||||||
|
LUNE_FPS seed 2 stutter (stalls up to 0.4 s): 3428 frames, 12690 steps, hash DCE95C96556F3A1A (core DCE95C96556F3A1A)
|
||||||
|
Saving results to: /Users/martin/Library/Application Support/DefaultCompany/luneraria-unity/TestResults.xml
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-run>
|
||||||
15
docs/port/logs/s4/player-benchmark-brunhild-run1.json
Normal 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 2, army held_brunhild x6, speed 1x, measured after 10 s of combat",
|
||||||
|
// moving units at the start of the first window: w04 11, w06 11, g04 10, g02 9, g06 9, e01 7, w02 7, brunhild 6, g08 4, g10 4, w08 4, w10 3
|
||||||
|
"windows": [
|
||||||
|
{"view": "overview (zoom 64)", "frames": 3030, "fps": 151.5, "frame_ms_avg": 6.60, "frame_ms_median": 2.91, "frame_ms_p95": 22.00, "frame_ms_p99": 28.61, "frame_ms_max": 52.39, "frames_over_16_7_ms": 307, "of_them_with_simulation_step": 24, "gc_collections": 20, "simulation_ms_per_frame": 0.059, "views_ms_per_frame": 0.219, "ui_ms_per_frame": 0.058, "units_alive_max": 85},
|
||||||
|
// timings overview (zoom 64): main thread avg 2.26 / median 2.14 / p95 3.10 ms, render thread avg 1.66 / median 1.65 / p95 1.96 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.33 / median 0.27 / p95 19.63 ms
|
||||||
|
{"view": "mid lane close (zoom 22)", "frames": 1652, "fps": 165.0, "frame_ms_avg": 6.06, "frame_ms_median": 2.91, "frame_ms_p95": 21.41, "frame_ms_p99": 28.50, "frame_ms_max": 37.30, "frames_over_16_7_ms": 154, "of_them_with_simulation_step": 13, "gc_collections": 8, "simulation_ms_per_frame": 0.037, "views_ms_per_frame": 0.190, "ui_ms_per_frame": 0.043, "units_alive_max": 38}
|
||||||
|
// timings mid lane close (zoom 22): main thread avg 1.82 / median 1.71 / p95 2.68 ms, render thread avg 1.32 / median 1.31 / p95 1.56 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.26 / median 0.99 / p95 19.39 ms
|
||||||
|
]
|
||||||
|
}
|
||||||
15
docs/port/logs/s4/player-benchmark-brunhild-run2.json
Normal 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 2, army held_brunhild x6, speed 1x, measured after 10 s of combat",
|
||||||
|
// moving units at the start of the first window: w04 11, w06 11, g04 10, g02 9, g06 9, e01 7, w02 7, brunhild 6, g08 4, g10 4, w08 4, w10 3
|
||||||
|
"windows": [
|
||||||
|
{"view": "overview (zoom 64)", "frames": 2974, "fps": 148.6, "frame_ms_avg": 6.73, "frame_ms_median": 2.90, "frame_ms_p95": 21.52, "frame_ms_p99": 27.56, "frame_ms_max": 37.02, "frames_over_16_7_ms": 328, "of_them_with_simulation_step": 23, "gc_collections": 20, "simulation_ms_per_frame": 0.062, "views_ms_per_frame": 0.222, "ui_ms_per_frame": 0.059, "units_alive_max": 85},
|
||||||
|
// timings overview (zoom 64): main thread avg 2.30 / median 2.21 / p95 3.11 ms, render thread avg 1.71 / median 1.70 / p95 1.99 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.42 / median 0.25 / p95 19.22 ms
|
||||||
|
{"view": "mid lane close (zoom 22)", "frames": 1635, "fps": 163.4, "frame_ms_avg": 6.12, "frame_ms_median": 2.70, "frame_ms_p95": 21.19, "frame_ms_p99": 29.10, "frame_ms_max": 32.90, "frames_over_16_7_ms": 164, "of_them_with_simulation_step": 27, "gc_collections": 8, "simulation_ms_per_frame": 0.037, "views_ms_per_frame": 0.187, "ui_ms_per_frame": 0.042, "units_alive_max": 38}
|
||||||
|
// timings mid lane close (zoom 22): main thread avg 1.78 / median 1.70 / p95 2.49 ms, render thread avg 1.33 / median 1.32 / p95 1.56 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.36 / median 0.46 / p95 19.07 ms
|
||||||
|
]
|
||||||
|
}
|
||||||
15
docs/port/logs/s4/player-benchmark-brunhild-run3.json
Normal 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 2, army held_brunhild x6, speed 1x, measured after 10 s of combat",
|
||||||
|
// moving units at the start of the first window: w04 11, w06 11, g04 10, g02 9, g06 9, e01 7, w02 7, brunhild 6, g08 4, g10 4, w08 4, w10 3
|
||||||
|
"windows": [
|
||||||
|
{"view": "overview (zoom 64)", "frames": 2990, "fps": 149.4, "frame_ms_avg": 6.69, "frame_ms_median": 2.90, "frame_ms_p95": 22.31, "frame_ms_p99": 28.33, "frame_ms_max": 47.03, "frames_over_16_7_ms": 333, "of_them_with_simulation_step": 33, "gc_collections": 20, "simulation_ms_per_frame": 0.061, "views_ms_per_frame": 0.220, "ui_ms_per_frame": 0.058, "units_alive_max": 85},
|
||||||
|
// timings overview (zoom 64): main thread avg 2.28 / median 2.18 / p95 3.10 ms, render thread avg 1.68 / median 1.67 / p95 1.97 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.40 / median 0.26 / p95 19.90 ms
|
||||||
|
{"view": "mid lane close (zoom 22)", "frames": 1673, "fps": 167.3, "frame_ms_avg": 5.98, "frame_ms_median": 2.69, "frame_ms_p95": 20.81, "frame_ms_p99": 31.71, "frame_ms_max": 38.50, "frames_over_16_7_ms": 152, "of_them_with_simulation_step": 16, "gc_collections": 8, "simulation_ms_per_frame": 0.036, "views_ms_per_frame": 0.186, "ui_ms_per_frame": 0.039, "units_alive_max": 38}
|
||||||
|
// timings mid lane close (zoom 22): main thread avg 1.73 / median 1.67 / p95 2.39 ms, render thread avg 1.32 / median 1.31 / p95 1.54 ms, gpu avg 0.00 / median 0.00 / p95 0.00 ms, present wait avg 4.26 / median 0.91 / p95 19.17 ms
|
||||||
|
]
|
||||||
|
}
|
||||||
11
docs/port/logs/s4/player-smoke.json
Normal 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"
|
||||||
|
}
|
||||||
471
docs/port/logs/s4/playmode-results.xml
Normal file
|
|
@ -0,0 +1,471 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<test-run id="2" testcasecount="33" result="Passed" total="33" passed="20" failed="0" inconclusive="0" skipped="13" asserts="0" engine-version="3.5.0.0" clr-version="4.0.30319.42000" start-time="2026-10-11 15:46:36Z" end-time="2026-10-11 15:51:50Z" duration="313.7388335">
|
||||||
|
<test-suite type="TestSuite" id="1061" name="luneraria-unity" fullname="luneraria-unity" runstate="Runnable" testcasecount="33" result="Passed" start-time="2026-10-11 15:46:36Z" end-time="2026-10-11 15:51:50Z" duration="313.738834" total="33" passed="20" failed="0" inconclusive="0" skipped="13" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="platform" value="PlayMode" />
|
||||||
|
</properties>
|
||||||
|
<test-suite type="Assembly" id="1046" name="Luneraria.UI.Tests.PlayMode.dll" fullname="/private/tmp/lune-konzept/Library/ScriptAssemblies/Luneraria.UI.Tests.PlayMode.dll" runstate="Runnable" testcasecount="31" result="Passed" start-time="2026-10-11 15:46:36Z" end-time="2026-10-11 15:47:07Z" duration="30.547717" total="31" passed="18" failed="0" inconclusive="0" skipped="13" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_PID" value="38117" />
|
||||||
|
<property name="_APPDOMAIN" value="Unity Child Domain" />
|
||||||
|
<property name="platform" value="PlayMode" />
|
||||||
|
<property name="EditorOnly" value="False" />
|
||||||
|
</properties>
|
||||||
|
<test-suite type="TestSuite" id="1047" name="Luneraria" fullname="Luneraria" runstate="Runnable" testcasecount="31" result="Passed" start-time="2026-10-11 15:46:36Z" end-time="2026-10-11 15:47:07Z" duration="30.547432" total="31" passed="18" failed="0" inconclusive="0" skipped="13" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1048" name="UI" fullname="Luneraria.UI" runstate="Runnable" testcasecount="31" result="Passed" start-time="2026-10-11 15:46:36Z" end-time="2026-10-11 15:47:07Z" duration="30.547212" total="31" passed="18" failed="0" inconclusive="0" skipped="13" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1049" name="Tests" fullname="Luneraria.UI.Tests" runstate="Runnable" testcasecount="31" result="Passed" start-time="2026-10-11 15:46:36Z" end-time="2026-10-11 15:47:07Z" duration="30.546809" total="31" passed="18" failed="0" inconclusive="0" skipped="13" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestFixture" id="1001" name="ArmyViewsTests" fullname="Luneraria.UI.Tests.ArmyViewsTests" classname="Luneraria.UI.Tests.ArmyViewsTests" runstate="Explicit" testcasecount="1" result="Skipped" label="Explicit" site="SetUp" start-time="2026-10-11 15:46:36Z" end-time="2026-10-11 15:46:36Z" duration="0.002862" total="1" passed="0" failed="0" inconclusive="0" skipped="1" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_SKIPREASON" value="Bildwerkzeug: nur gezielt per -testFilter" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
<test-case id="1002" name="Glutpakt" fullname="Luneraria.UI.Tests.ArmyViewsTests.Glutpakt" methodname="Glutpakt" classname="Luneraria.UI.Tests.ArmyViewsTests" runstate="Runnable" seed="1410751918" result="Skipped" label="Explicit" site="Parent" start-time="0001-01-01 00:00:00Z" end-time="0001-01-01 00:00:00Z" duration="0.000000" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1003" name="FigureViewsTests" fullname="Luneraria.UI.Tests.FigureViewsTests" classname="Luneraria.UI.Tests.FigureViewsTests" runstate="Explicit" testcasecount="1" result="Skipped" label="Explicit" site="SetUp" start-time="2026-10-11 15:46:36Z" end-time="2026-10-11 15:46:36Z" duration="0.000074" total="1" passed="0" failed="0" inconclusive="0" skipped="1" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_SKIPREASON" value="Bildwerkzeug: nur gezielt per -testFilter" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
<test-case id="1004" name="Kohlenbeisser" fullname="Luneraria.UI.Tests.FigureViewsTests.Kohlenbeisser" methodname="Kohlenbeisser" classname="Luneraria.UI.Tests.FigureViewsTests" runstate="Runnable" seed="1327504255" result="Skipped" label="Explicit" site="Parent" start-time="0001-01-01 00:00:00Z" end-time="0001-01-01 00:00:00Z" duration="0.000000" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1005" name="H1HeroViewsTests" fullname="Luneraria.UI.Tests.H1HeroViewsTests" classname="Luneraria.UI.Tests.H1HeroViewsTests" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 15:46:36Z" end-time="2026-10-11 15:46:39Z" duration="2.687648" total="2" passed="1" failed="0" inconclusive="0" skipped="1" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1007" name="SylvaraBilder" fullname="Luneraria.UI.Tests.H1HeroViewsTests.SylvaraBilder" methodname="SylvaraBilder" classname="Luneraria.UI.Tests.H1HeroViewsTests" runstate="Explicit" seed="1513690794" result="Skipped" label="Explicit" start-time="2026-10-11 15:46:36Z" end-time="2026-10-11 15:46:36Z" duration="0.000180" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
<property name="_SKIPREASON" value="Bildwerkzeug: nur gezielt per -testFilter" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1006" name="SylvaraHud" fullname="Luneraria.UI.Tests.H1HeroViewsTests.SylvaraHud" methodname="SylvaraHud" classname="Luneraria.UI.Tests.H1HeroViewsTests" runstate="Runnable" seed="1076625979" result="Passed" start-time="2026-10-11 15:46:36Z" end-time="2026-10-11 15:46:39Z" duration="2.685073" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="600000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1008" name="H2HeroViewsTests" fullname="Luneraria.UI.Tests.H2HeroViewsTests" classname="Luneraria.UI.Tests.H2HeroViewsTests" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 15:46:39Z" end-time="2026-10-11 15:46:39Z" duration="0.465161" total="2" passed="1" failed="0" inconclusive="0" skipped="1" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1010" name="BrunhildBilder" fullname="Luneraria.UI.Tests.H2HeroViewsTests.BrunhildBilder" methodname="BrunhildBilder" classname="Luneraria.UI.Tests.H2HeroViewsTests" runstate="Explicit" seed="1843788356" result="Skipped" label="Explicit" start-time="2026-10-11 15:46:39Z" end-time="2026-10-11 15:46:39Z" duration="0.000001" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
<property name="_SKIPREASON" value="Bildwerkzeug: nur gezielt per -testFilter" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1009" name="BrunhildHud" fullname="Luneraria.UI.Tests.H2HeroViewsTests.BrunhildHud" methodname="BrunhildHud" classname="Luneraria.UI.Tests.H2HeroViewsTests" runstate="Runnable" seed="500166216" result="Passed" start-time="2026-10-11 15:46:39Z" end-time="2026-10-11 15:46:39Z" duration="0.461230" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="600000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1011" name="HudCaptureTests" fullname="Luneraria.UI.Tests.HudCaptureTests" classname="Luneraria.UI.Tests.HudCaptureTests" runstate="Runnable" testcasecount="1" result="Passed" start-time="2026-10-11 15:46:39Z" end-time="2026-10-11 15:46:40Z" duration="0.395429" total="1" passed="1" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1012" name="PlanningHudOverTheScene" fullname="Luneraria.UI.Tests.HudCaptureTests.PlanningHudOverTheScene" methodname="PlanningHudOverTheScene" classname="Luneraria.UI.Tests.HudCaptureTests" runstate="Runnable" seed="156569232" result="Passed" start-time="2026-10-11 15:46:39Z" end-time="2026-10-11 15:46:40Z" duration="0.391472" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="600000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_HUD syncs 1 sync ms 0.167 portraits 15 scale 1 size (1706.67, 960.00)
|
||||||
|
LUNE_HUD region top (x:425.78, y:12.44, width:855.11, height:83.56)
|
||||||
|
LUNE_HUD region system (x:1559.11, y:12.44, width:136.00, height:35.56)
|
||||||
|
LUNE_HUD region left (x:12.44, y:12.44, width:312.00, height:466.67)
|
||||||
|
LUNE_HUD region right (x:1372.44, y:56.00, width:322.67, height:248.00)
|
||||||
|
LUNE_HUD region bottom (x:12.44, y:761.78, width:1432.00, height:186.67)
|
||||||
|
LUNE_HUD region ready (x:1455.11, y:616.00, width:240.00, height:84.44)
|
||||||
|
LUNE_HUD region minimap (x:1455.11, y:708.44, width:240.00, height:240.00)
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1013" name="HudPlaytest" fullname="Luneraria.UI.Tests.HudPlaytest" classname="Luneraria.UI.Tests.HudPlaytest" runstate="Explicit" testcasecount="1" result="Skipped" label="Explicit" site="SetUp" start-time="2026-10-11 15:46:40Z" end-time="2026-10-11 15:46:40Z" duration="0.000086" total="1" passed="0" failed="0" inconclusive="0" skipped="1" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_SKIPREASON" value="Spieltest: wartet auf Befehlsdateien" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Spieltest: wartet auf Befehlsdateien]]></message>
|
||||||
|
</reason>
|
||||||
|
<test-case id="1014" name="Play" fullname="Luneraria.UI.Tests.HudPlaytest.Play" methodname="Play" classname="Luneraria.UI.Tests.HudPlaytest" runstate="Runnable" seed="1750787280" result="Skipped" label="Explicit" site="Parent" start-time="0001-01-01 00:00:00Z" end-time="0001-01-01 00:00:00Z" duration="0.000000" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="2147483647" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Spieltest: wartet auf Befehlsdateien]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1015" name="HudVerifyTests" fullname="Luneraria.UI.Tests.HudVerifyTests" classname="Luneraria.UI.Tests.HudVerifyTests" runstate="Runnable" testcasecount="9" result="Passed" start-time="2026-10-11 15:46:40Z" end-time="2026-10-11 15:46:52Z" duration="12.116958" total="9" passed="9" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1016" name="A_Layout" fullname="Luneraria.UI.Tests.HudVerifyTests.A_Layout" methodname="A_Layout" classname="Luneraria.UI.Tests.HudVerifyTests" runstate="Runnable" seed="1474983886" result="Passed" start-time="2026-10-11 15:46:40Z" end-time="2026-10-11 15:46:44Z" duration="4.502641" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="1800000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_VERIFY A: 585 checks, 0 failed
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1017" name="B_Status" fullname="Luneraria.UI.Tests.HudVerifyTests.B_Status" methodname="B_Status" classname="Luneraria.UI.Tests.HudVerifyTests" runstate="Runnable" seed="615242257" result="Passed" start-time="2026-10-11 15:46:44Z" end-time="2026-10-11 15:46:44Z" duration="0.417089" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_VERIFY B: 21 checks, 0 failed
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1018" name="C_HeroItemsUnits" fullname="Luneraria.UI.Tests.HudVerifyTests.C_HeroItemsUnits" methodname="C_HeroItemsUnits" classname="Luneraria.UI.Tests.HudVerifyTests" runstate="Runnable" seed="2115775" result="Passed" start-time="2026-10-11 15:46:44Z" end-time="2026-10-11 15:46:45Z" duration="0.756387" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_VERIFY C: 23 checks, 0 failed
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1019" name="D_ChampionsAndBoss" fullname="Luneraria.UI.Tests.HudVerifyTests.D_ChampionsAndBoss" methodname="D_ChampionsAndBoss" classname="Luneraria.UI.Tests.HudVerifyTests" runstate="Runnable" seed="1226437700" result="Passed" start-time="2026-10-11 15:46:45Z" end-time="2026-10-11 15:46:46Z" duration="0.558635" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_VERIFY D: 16 checks, 0 failed
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1020" name="E_ReadyBotsPrivacy" fullname="Luneraria.UI.Tests.HudVerifyTests.E_ReadyBotsPrivacy" methodname="E_ReadyBotsPrivacy" classname="Luneraria.UI.Tests.HudVerifyTests" runstate="Runnable" seed="1073391563" result="Passed" start-time="2026-10-11 15:46:46Z" end-time="2026-10-11 15:46:47Z" duration="1.411138" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_VERIFY E: 17 checks, 0 failed
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1021" name="F_Input" fullname="Luneraria.UI.Tests.HudVerifyTests.F_Input" methodname="F_Input" classname="Luneraria.UI.Tests.HudVerifyTests" runstate="Runnable" seed="19796220" result="Passed" start-time="2026-10-11 15:46:47Z" end-time="2026-10-11 15:46:51Z" duration="3.426542" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_VERIFY F: 18 checks, 0 failed
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1022" name="G_EventsAndMotion" fullname="Luneraria.UI.Tests.HudVerifyTests.G_EventsAndMotion" methodname="G_EventsAndMotion" classname="Luneraria.UI.Tests.HudVerifyTests" runstate="Runnable" seed="2106235626" result="Passed" start-time="2026-10-11 15:46:51Z" end-time="2026-10-11 15:46:51Z" duration="0.537718" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_VERIFY G: 14 checks, 0 failed
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1023" name="H_RatesAndPortraits" fullname="Luneraria.UI.Tests.HudVerifyTests.H_RatesAndPortraits" methodname="H_RatesAndPortraits" classname="Luneraria.UI.Tests.HudVerifyTests" runstate="Runnable" seed="1076750353" result="Passed" start-time="2026-10-11 15:46:51Z" end-time="2026-10-11 15:46:51Z" duration="0.202539" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_VERIFY rates planning 18/2s combat 10/2s sync 0.221 ms portraits 16
|
||||||
|
LUNE_VERIFY H: 5 checks, 0 failed
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1024" name="I_Field" fullname="Luneraria.UI.Tests.HudVerifyTests.I_Field" methodname="I_Field" classname="Luneraria.UI.Tests.HudVerifyTests" runstate="Runnable" seed="1119995107" result="Passed" start-time="2026-10-11 15:46:51Z" end-time="2026-10-11 15:46:52Z" duration="0.300928" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="900000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_VERIFY I: 19 checks, 0 failed
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1025" name="HudViewsTests" fullname="Luneraria.UI.Tests.HudViewsTests" classname="Luneraria.UI.Tests.HudViewsTests" runstate="Explicit" testcasecount="4" result="Skipped" label="Explicit" site="SetUp" start-time="2026-10-11 15:46:52Z" end-time="2026-10-11 15:46:52Z" duration="0.000216" total="4" passed="0" failed="0" inconclusive="0" skipped="4" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_SKIPREASON" value="Bildwerkzeug: nur gezielt per -testFilter" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
<test-case id="1028" name="Motifs_1280x720" fullname="Luneraria.UI.Tests.HudViewsTests.Motifs_1280x720" methodname="Motifs_1280x720" classname="Luneraria.UI.Tests.HudViewsTests" runstate="Runnable" seed="481465809" result="Skipped" label="Explicit" site="Parent" start-time="0001-01-01 00:00:00Z" end-time="0001-01-01 00:00:00Z" duration="0.000000" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="1800000" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1026" name="Motifs_1920x1080" fullname="Luneraria.UI.Tests.HudViewsTests.Motifs_1920x1080" methodname="Motifs_1920x1080" classname="Luneraria.UI.Tests.HudViewsTests" runstate="Runnable" seed="712636040" result="Skipped" label="Explicit" site="Parent" start-time="0001-01-01 00:00:00Z" end-time="0001-01-01 00:00:00Z" duration="0.000000" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="1800000" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1029" name="Motifs_2560x1080" fullname="Luneraria.UI.Tests.HudViewsTests.Motifs_2560x1080" methodname="Motifs_2560x1080" classname="Luneraria.UI.Tests.HudViewsTests" runstate="Runnable" seed="1149282381" result="Skipped" label="Explicit" site="Parent" start-time="0001-01-01 00:00:00Z" end-time="0001-01-01 00:00:00Z" duration="0.000000" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="1800000" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1027" name="Motifs_2560x1440" fullname="Luneraria.UI.Tests.HudViewsTests.Motifs_2560x1440" methodname="Motifs_2560x1440" classname="Luneraria.UI.Tests.HudViewsTests" runstate="Runnable" seed="1710397216" result="Skipped" label="Explicit" site="Parent" start-time="0001-01-01 00:00:00Z" end-time="0001-01-01 00:00:00Z" duration="0.000000" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="1800000" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1030" name="S1RulesViewsTests" fullname="Luneraria.UI.Tests.S1RulesViewsTests" classname="Luneraria.UI.Tests.S1RulesViewsTests" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 15:46:52Z" end-time="2026-10-11 15:46:53Z" duration="1.665708" total="2" passed="1" failed="0" inconclusive="0" skipped="1" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1032" name="S1Bilder" fullname="Luneraria.UI.Tests.S1RulesViewsTests.S1Bilder" methodname="S1Bilder" classname="Luneraria.UI.Tests.S1RulesViewsTests" runstate="Explicit" seed="1307412873" result="Skipped" label="Explicit" start-time="2026-10-11 15:46:52Z" end-time="2026-10-11 15:46:52Z" duration="0.000001" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="600000" />
|
||||||
|
<property name="_SKIPREASON" value="Bildwerkzeug: nur gezielt per -testFilter" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1031" name="S1Hud" fullname="Luneraria.UI.Tests.S1RulesViewsTests.S1Hud" methodname="S1Hud" classname="Luneraria.UI.Tests.S1RulesViewsTests" runstate="Runnable" seed="1524292985" result="Passed" start-time="2026-10-11 15:46:52Z" end-time="2026-10-11 15:46:53Z" duration="1.663693" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="600000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1033" name="S2RulesViewsTests" fullname="Luneraria.UI.Tests.S2RulesViewsTests" classname="Luneraria.UI.Tests.S2RulesViewsTests" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 15:46:53Z" end-time="2026-10-11 15:46:54Z" duration="0.321237" total="2" passed="1" failed="0" inconclusive="0" skipped="1" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1035" name="S2Bilder" fullname="Luneraria.UI.Tests.S2RulesViewsTests.S2Bilder" methodname="S2Bilder" classname="Luneraria.UI.Tests.S2RulesViewsTests" runstate="Explicit" seed="1661918112" result="Skipped" label="Explicit" start-time="2026-10-11 15:46:53Z" end-time="2026-10-11 15:46:53Z" duration="0.000003" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="600000" />
|
||||||
|
<property name="_SKIPREASON" value="Bildwerkzeug: nur gezielt per -testFilter" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1034" name="S2Hud" fullname="Luneraria.UI.Tests.S2RulesViewsTests.S2Hud" methodname="S2Hud" classname="Luneraria.UI.Tests.S2RulesViewsTests" runstate="Runnable" seed="803820144" result="Passed" start-time="2026-10-11 15:46:53Z" end-time="2026-10-11 15:46:54Z" duration="0.317082" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="600000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1036" name="S3RulesViewsTests" fullname="Luneraria.UI.Tests.S3RulesViewsTests" classname="Luneraria.UI.Tests.S3RulesViewsTests" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 15:46:54Z" end-time="2026-10-11 15:46:55Z" duration="1.552592" total="2" passed="1" failed="0" inconclusive="0" skipped="1" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1038" name="S3Bilder" fullname="Luneraria.UI.Tests.S3RulesViewsTests.S3Bilder" methodname="S3Bilder" classname="Luneraria.UI.Tests.S3RulesViewsTests" runstate="Explicit" seed="958100196" result="Skipped" label="Explicit" start-time="2026-10-11 15:46:54Z" end-time="2026-10-11 15:46:54Z" duration="0.000001" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="600000" />
|
||||||
|
<property name="_SKIPREASON" value="Bildwerkzeug: nur gezielt per -testFilter" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1037" name="S3Hud" fullname="Luneraria.UI.Tests.S3RulesViewsTests.S3Hud" methodname="S3Hud" classname="Luneraria.UI.Tests.S3RulesViewsTests" runstate="Runnable" seed="910466762" result="Passed" start-time="2026-10-11 15:46:54Z" end-time="2026-10-11 15:46:55Z" duration="1.548971" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="600000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1039" name="S4PolishViewsTests" fullname="Luneraria.UI.Tests.S4PolishViewsTests" classname="Luneraria.UI.Tests.S4PolishViewsTests" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 15:46:55Z" end-time="2026-10-11 15:46:56Z" duration="0.558907" total="2" passed="1" failed="0" inconclusive="0" skipped="1" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1041" name="S4Bilder" fullname="Luneraria.UI.Tests.S4PolishViewsTests.S4Bilder" methodname="S4Bilder" classname="Luneraria.UI.Tests.S4PolishViewsTests" runstate="Explicit" seed="927200824" result="Skipped" label="Explicit" start-time="2026-10-11 15:46:55Z" end-time="2026-10-11 15:46:55Z" duration="0.000002" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="600000" />
|
||||||
|
<property name="_SKIPREASON" value="Bildwerkzeug: nur gezielt per -testFilter" />
|
||||||
|
</properties>
|
||||||
|
<reason>
|
||||||
|
<message><![CDATA[Bildwerkzeug: nur gezielt per -testFilter]]></message>
|
||||||
|
</reason>
|
||||||
|
</test-case>
|
||||||
|
<test-case id="1040" name="S4Views" fullname="Luneraria.UI.Tests.S4PolishViewsTests.S4Views" methodname="S4Views" classname="Luneraria.UI.Tests.S4PolishViewsTests" runstate="Runnable" seed="349829057" result="Passed" start-time="2026-10-11 15:46:55Z" end-time="2026-10-11 15:46:56Z" duration="0.557132" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="600000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1042" name="StartScreenTests" fullname="Luneraria.UI.Tests.StartScreenTests" classname="Luneraria.UI.Tests.StartScreenTests" runstate="Runnable" testcasecount="1" result="Passed" start-time="2026-10-11 15:46:56Z" end-time="2026-10-11 15:47:06Z" duration="10.705268" total="1" passed="1" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1043" name="StartScreenLeadsIntoTheMatchAndBack" fullname="Luneraria.UI.Tests.StartScreenTests.StartScreenLeadsIntoTheMatchAndBack" methodname="StartScreenLeadsIntoTheMatchAndBack" classname="Luneraria.UI.Tests.StartScreenTests" runstate="Runnable" seed="1636570169" result="Passed" start-time="2026-10-11 15:46:56Z" end-time="2026-10-11 15:47:06Z" duration="10.703321" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="300000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_SMOKE ok Startbildschirm sichtbar
|
||||||
|
LUNE_SMOKE ok Partie wartet: Spielcontroller und Treiber aus
|
||||||
|
LUNE_SMOKE ok vor dem Start kein HUD
|
||||||
|
LUNE_SMOKE ok „Allein spielen“ bedienbar
|
||||||
|
LUNE_SMOKE ok Offline: Startbildschirm verborgen
|
||||||
|
LUNE_SMOKE ok Offline: Spielcontroller und Treiber laufen
|
||||||
|
LUNE_SMOKE ok Offline: HUD sichtbar
|
||||||
|
LUNE_SMOKE ok Offline: neue Partie, Sitz 1 (Mid)
|
||||||
|
LUNE_SMOKE ok Offline: Planung
|
||||||
|
LUNE_SMOKE ok Offline: lokale Sitzung
|
||||||
|
LUNE_SMOKE ok „Startaufstellung“ bedienbar
|
||||||
|
LUNE_SMOKE ok Startaufstellung gekauft (3 Einheiten)
|
||||||
|
LUNE_SMOKE ok „Bereit“ bedienbar
|
||||||
|
LUNE_SMOKE ok Bereit: Kampf beginnt
|
||||||
|
LUNE_SMOKE ok Kampf: Figuren im Feld
|
||||||
|
LUNE_SMOKE ok „Menü“ bedienbar
|
||||||
|
LUNE_SMOKE ok Verlassen-Dialog mit „Zum Menü“
|
||||||
|
LUNE_SMOKE ok Zurück: Startbildschirm sichtbar
|
||||||
|
LUNE_SMOKE ok Zurück: HUD verborgen
|
||||||
|
LUNE_SMOKE ok Zurück: Spielcontroller und Treiber aus
|
||||||
|
LUNE_SMOKE ok Zurück: Sitzung beendet
|
||||||
|
LUNE_SMOKE ok Zurück: keine Figuren im Feld
|
||||||
|
LUNE_SMOKE ok Zurück: Kamera ruht
|
||||||
|
LUNE_SMOKE ok Zurück: „Allein spielen“ bedienbar
|
||||||
|
LUNE_SMOKE ok Zweite Partie: Startbildschirm verborgen, HUD sichtbar
|
||||||
|
LUNE_SMOKE ok Zweite Partie: neue Partie in der Planung
|
||||||
|
LUNE_SMOKE_PASS 26 ok, 0 Fehler
|
||||||
|
LUNE_START_SCREEN 26 checks passed
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1044" name="UiToolkitProbeTests" fullname="Luneraria.UI.Tests.UiToolkitProbeTests" classname="Luneraria.UI.Tests.UiToolkitProbeTests" runstate="Runnable" testcasecount="1" result="Passed" start-time="2026-10-11 15:47:06Z" end-time="2026-10-11 15:47:07Z" duration="0.073319" total="1" passed="1" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1045" name="PanelRendersIntoTexture" fullname="Luneraria.UI.Tests.UiToolkitProbeTests.PanelRendersIntoTexture" methodname="PanelRendersIntoTexture" classname="Luneraria.UI.Tests.UiToolkitProbeTests" runstate="Runnable" seed="1446584506" result="Passed" start-time="2026-10-11 15:47:06Z" end-time="2026-10-11 15:47:07Z" duration="0.072836" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_SPIKE corner RGBA(0.565, 0.635, 0.506, 1.000) panel RGBA(0.196, 0.227, 0.204, 1.000) layout (x:12.44, y:12.44, width:760.00, height:530.67)
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="Assembly" id="1054" name="Luneraria.View.Tests.PlayMode.dll" fullname="/private/tmp/lune-konzept/Library/ScriptAssemblies/Luneraria.View.Tests.PlayMode.dll" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 15:47:07Z" end-time="2026-10-11 15:51:50Z" duration="283.187951" total="2" passed="2" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_PID" value="38117" />
|
||||||
|
<property name="_APPDOMAIN" value="Unity Child Domain" />
|
||||||
|
<property name="platform" value="PlayMode" />
|
||||||
|
<property name="EditorOnly" value="False" />
|
||||||
|
</properties>
|
||||||
|
<test-suite type="TestSuite" id="1055" name="Luneraria" fullname="Luneraria" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 15:47:07Z" end-time="2026-10-11 15:51:50Z" duration="283.187234" total="2" passed="2" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1056" name="View" fullname="Luneraria.View" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 15:47:07Z" end-time="2026-10-11 15:51:50Z" duration="283.187042" total="2" passed="2" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestSuite" id="1057" name="Tests" fullname="Luneraria.View.Tests" runstate="Runnable" testcasecount="2" result="Passed" start-time="2026-10-11 15:47:07Z" end-time="2026-10-11 15:51:50Z" duration="283.186772" total="2" passed="2" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-suite type="TestFixture" id="1050" name="SceneFrameRateTests" fullname="Luneraria.View.Tests.SceneFrameRateTests" classname="Luneraria.View.Tests.SceneFrameRateTests" runstate="Runnable" testcasecount="1" result="Passed" start-time="2026-10-11 15:47:07Z" end-time="2026-10-11 15:48:57Z" duration="110.620354" total="1" passed="1" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1051" name="SceneMatchIsTheSameAtRealFrameRates" fullname="Luneraria.View.Tests.SceneFrameRateTests.SceneMatchIsTheSameAtRealFrameRates" methodname="SceneMatchIsTheSameAtRealFrameRates" classname="Luneraria.View.Tests.SceneFrameRateTests" runstate="Runnable" seed="1733368402" result="Passed" start-time="2026-10-11 15:47:07Z" end-time="2026-10-11 15:48:57Z" duration="110.618331" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_SCENE_FPS 30 fps: 815 frames in 27.1 s = 30.0 fps, up to 19 steps per frame, hash DCE95C96556F3A1A, same=True
|
||||||
|
LUNE_SCENE_FPS 60 fps: 1626 frames in 27.1 s = 60.0 fps, up to 11 steps per frame, hash DCE95C96556F3A1A, same=True
|
||||||
|
LUNE_SCENE_FPS 120 fps: 3222 frames in 26.9 s = 119.7 fps, up to 10 steps per frame, hash DCE95C96556F3A1A, same=True
|
||||||
|
LUNE_SCENE_FPS unlimited: 84176 frames in 26.8 s = 3138.1 fps, up to 8 steps per frame, hash DCE95C96556F3A1A, same=True
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
<test-suite type="TestFixture" id="1052" name="VerticalFunctionTests" fullname="Luneraria.View.Tests.VerticalFunctionTests" classname="Luneraria.View.Tests.VerticalFunctionTests" runstate="Runnable" testcasecount="1" result="Passed" start-time="2026-10-11 15:48:57Z" end-time="2026-10-11 15:51:50Z" duration="172.566075" total="1" passed="1" failed="0" inconclusive="0" skipped="0" asserts="0">
|
||||||
|
<properties />
|
||||||
|
<test-case id="1053" name="BotMatchesRunVisiblyAndMatchTheCore" fullname="Luneraria.View.Tests.VerticalFunctionTests.BotMatchesRunVisiblyAndMatchTheCore" methodname="BotMatchesRunVisiblyAndMatchTheCore" classname="Luneraria.View.Tests.VerticalFunctionTests" runstate="Runnable" seed="748549110" result="Passed" start-time="2026-10-11 15:48:57Z" end-time="2026-10-11 15:51:50Z" duration="172.561288" asserts="0">
|
||||||
|
<properties>
|
||||||
|
<property name="_JOINTYPE" value="UnityCombinatorial" />
|
||||||
|
<property name="Timeout" value="3600000" />
|
||||||
|
<property name="retryIteration" value="0" />
|
||||||
|
<property name="repeatIteration" value="0" />
|
||||||
|
</properties>
|
||||||
|
<output><![CDATA[LUNE_U2D shot 01-runde1-aufmarsch round 1 Combat
|
||||||
|
LUNE_U2D shot 02-runde1-mid-kampf round 1 Combat
|
||||||
|
LUNE_U2D shot 03-turm-faellt round 7 Combat
|
||||||
|
LUNE_U2D shot 04-turm-ruine round 7 Combat
|
||||||
|
LUNE_U2D shot 05-grotte-bosskampf round 8 Combat
|
||||||
|
LUNE_U2D shot 06-held-kaempft round 9 Combat
|
||||||
|
LUNE_U2D shot 07-boss-auf-der-lane round 9 Combat
|
||||||
|
LUNE_U2D shot 08-ancient-faellt round 9 Over
|
||||||
|
LUNE_U2D shot 09-ancient-ruine round 9 Over
|
||||||
|
LUNE_U2D shot 10-ende-uebersicht round 9 Over
|
||||||
|
LUNE_U2D shot 11-welle21-uebersicht round 21 Combat
|
||||||
|
LUNE_U2D shot 12-welle21-kampf round 21 Combat
|
||||||
|
LUNE_U2D shot 13-ancient-rot-faellt round 22 Over
|
||||||
|
LUNE_U2D shot 14-welle-ende round 22 Over
|
||||||
|
Saving results to: /Users/martin/Library/Application Support/DefaultCompany/luneraria-unity/TestResults.xml
|
||||||
|
]]></output>
|
||||||
|
</test-case>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-suite>
|
||||||
|
</test-run>
|
||||||
11
docs/port/logs/s4/scene-frame-rates.json
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"match": "seed 2, bots, speed 24x",
|
||||||
|
"core_hash": "DCE95C96556F3A1A",
|
||||||
|
"core_steps": 12690,
|
||||||
|
"runs": [
|
||||||
|
{"target": "30 fps", "frames": 815, "seconds": 27.142, "measured_fps": 30.027, "max_steps_per_frame": 19, "steps": 12690, "hash": "DCE95C96556F3A1A", "winner": 1, "same_as_core": true},
|
||||||
|
{"target": "60 fps", "frames": 1626, "seconds": 27.12, "measured_fps": 59.956, "max_steps_per_frame": 11, "steps": 12690, "hash": "DCE95C96556F3A1A", "winner": 1, "same_as_core": true},
|
||||||
|
{"target": "120 fps", "frames": 3222, "seconds": 26.91, "measured_fps": 119.733, "max_steps_per_frame": 10, "steps": 12690, "hash": "DCE95C96556F3A1A", "winner": 1, "same_as_core": true},
|
||||||
|
{"target": "unlimited", "frames": 84176, "seconds": 26.824, "measured_fps": 3138.057, "max_steps_per_frame": 8, "steps": 12690, "hash": "DCE95C96556F3A1A", "winner": 1, "same_as_core": true}
|
||||||
|
]
|
||||||
|
}
|
||||||
16
docs/port/logs/s4/vertical-function-test.json
Normal 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": 48567, "fps": 2428.338, "frame_ms_avg": 0.412, "frame_ms_p95": 0.414, "simulation_ms_per_frame": 0.004, "views_ms_per_frame": 0.147, "units_alive_max": 116}}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -1296,6 +1296,199 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "brunhild",
|
||||||
|
"kind": "skinned",
|
||||||
|
"ok": true,
|
||||||
|
"checks": [
|
||||||
|
{
|
||||||
|
"check": "blender_checks_passed",
|
||||||
|
"ok": true,
|
||||||
|
"detail": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "imported",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "\"Assets/Luneraria/Art/Characters/brunhild.fbx\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "import_rules_applied",
|
||||||
|
"ok": true,
|
||||||
|
"detail": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "root_transform_identity",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "\"brunhild 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": "\"28706 unity / 28706 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 (-0.448, 0.000, -0.638) (0.509, 1.801, 1.293)\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "skinned_mesh",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "bone_names BrunhildBody_LOD0",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "root_bone BrunhildBody_LOD0",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "\"Root\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "bone_names BrunhildBody_LOD1",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "root_bone BrunhildBody_LOD1",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "\"Root\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "bone_names BrunhildSpeer_LOD0",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "root_bone BrunhildSpeer_LOD0",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "\"Root\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "bone_names BrunhildSpeer_LOD1",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "root_bone BrunhildSpeer_LOD1",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "\"Root\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "generic_avatar",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "\"brunhildAvatar\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"check": "clips",
|
||||||
|
"ok": true,
|
||||||
|
"detail": "[]"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"facts": {
|
||||||
|
"triangles": 28706,
|
||||||
|
"renderers": 4,
|
||||||
|
"meshes_without_uv_and_tangents": 0,
|
||||||
|
"degenerate_triangles_dropped": 0,
|
||||||
|
"bounds_min": [
|
||||||
|
-0.447806716,
|
||||||
|
2.66768126E-07,
|
||||||
|
-0.637885153
|
||||||
|
],
|
||||||
|
"bounds_max": [
|
||||||
|
0.5085536,
|
||||||
|
1.80075514,
|
||||||
|
1.29309094
|
||||||
|
],
|
||||||
|
"clips": [
|
||||||
|
{
|
||||||
|
"name": "ability",
|
||||||
|
"length": 1.0,
|
||||||
|
"loop": false,
|
||||||
|
"events": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "attack_a",
|
||||||
|
"length": 0.9583333,
|
||||||
|
"loop": false,
|
||||||
|
"events": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "attack_b",
|
||||||
|
"length": 1.0,
|
||||||
|
"loop": false,
|
||||||
|
"events": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "death",
|
||||||
|
"length": 2.41666675,
|
||||||
|
"loop": false,
|
||||||
|
"events": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "hit",
|
||||||
|
"length": 0.5,
|
||||||
|
"loop": false,
|
||||||
|
"events": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "idle",
|
||||||
|
"length": 4.0,
|
||||||
|
"loop": true,
|
||||||
|
"events": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ultimate",
|
||||||
|
"length": 1.29166663,
|
||||||
|
"loop": false,
|
||||||
|
"events": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "walk",
|
||||||
|
"length": 1.29166663,
|
||||||
|
"loop": true,
|
||||||
|
"events": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "funkenlanze",
|
"id": "funkenlanze",
|
||||||
"kind": "skinned",
|
"kind": "skinned",
|
||||||
|
|
|
||||||
BIN
docs/port/screenshots/h2/ablauf/01-runde1-aufmarsch.jpg
Normal file
|
After Width: | Height: | Size: 583 KiB |
BIN
docs/port/screenshots/h2/ablauf/02-runde1-mid-kampf.jpg
Normal file
|
After Width: | Height: | Size: 599 KiB |