@aura3d/scripting 1.5.2 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/AnimationVisualNodes.d.ts +1 -1
- package/dist/Behavior.d.ts +1 -1
- package/dist/BehaviorHost.d.ts +1 -1
- package/dist/BehaviorRegistry.d.ts +1 -1
- package/dist/BehaviorSystem.d.ts +2 -2
- package/dist/HTN.d.ts +1 -1
- package/dist/ScriptContext.d.ts +1 -1
- package/dist/StateMachine.d.ts +1 -1
- package/dist/UtilityAI.d.ts +1 -1
- package/dist/VisualGraph.d.ts +2 -2
- package/dist/VisualGraphExecutor.d.ts +2 -2
- package/dist/VisualNodeCatalog.d.ts +1 -1
- package/dist/index.d.ts +37 -53
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/AdaptiveDifficultyFixtures.d.ts +0 -58
- package/dist/AdaptiveDifficultyFixtures.d.ts.map +0 -1
- package/dist/AdaptiveDifficultyFixtures.js +0 -228
- package/dist/AdaptiveDifficultyFixtures.js.map +0 -1
- package/dist/AnalyticsPrivacyFixtures.d.ts +0 -63
- package/dist/AnalyticsPrivacyFixtures.d.ts.map +0 -1
- package/dist/AnalyticsPrivacyFixtures.js +0 -120
- package/dist/AnalyticsPrivacyFixtures.js.map +0 -1
- package/dist/CartoonNodeCategories.d.ts +0 -3
- package/dist/CartoonNodeCategories.d.ts.map +0 -1
- package/dist/CartoonNodeCategories.js +0 -9
- package/dist/CartoonNodeCategories.js.map +0 -1
- package/dist/CartoonVisualNodes.d.ts +0 -3
- package/dist/CartoonVisualNodes.d.ts.map +0 -1
- package/dist/CartoonVisualNodes.js +0 -41
- package/dist/CartoonVisualNodes.js.map +0 -1
- package/dist/CloudServiceFixtures.d.ts +0 -81
- package/dist/CloudServiceFixtures.d.ts.map +0 -1
- package/dist/CloudServiceFixtures.js +0 -144
- package/dist/CloudServiceFixtures.js.map +0 -1
- package/dist/CulturalBehaviorFixtures.d.ts +0 -75
- package/dist/CulturalBehaviorFixtures.d.ts.map +0 -1
- package/dist/CulturalBehaviorFixtures.js +0 -180
- package/dist/CulturalBehaviorFixtures.js.map +0 -1
- package/dist/LearningAgentFixtures.d.ts +0 -60
- package/dist/LearningAgentFixtures.d.ts.map +0 -1
- package/dist/LearningAgentFixtures.js +0 -122
- package/dist/LearningAgentFixtures.js.map +0 -1
- package/dist/NetworkReplicationFixtures.d.ts +0 -82
- package/dist/NetworkReplicationFixtures.d.ts.map +0 -1
- package/dist/NetworkReplicationFixtures.js +0 -330
- package/dist/NetworkReplicationFixtures.js.map +0 -1
- package/dist/PlayerBehaviorTelemetryFixtures.d.ts +0 -74
- package/dist/PlayerBehaviorTelemetryFixtures.d.ts.map +0 -1
- package/dist/PlayerBehaviorTelemetryFixtures.js +0 -189
- package/dist/PlayerBehaviorTelemetryFixtures.js.map +0 -1
- package/dist/ProceduralContentAdaptationFixtures.d.ts +0 -52
- package/dist/ProceduralContentAdaptationFixtures.d.ts.map +0 -1
- package/dist/ProceduralContentAdaptationFixtures.js +0 -149
- package/dist/ProceduralContentAdaptationFixtures.js.map +0 -1
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
const collectivistCulture = {
|
|
2
|
-
id: "collective-formal",
|
|
3
|
-
name: "Collective Formal Fixture",
|
|
4
|
-
individualismScore: 0.28,
|
|
5
|
-
powerDistanceScore: 0.68,
|
|
6
|
-
uncertaintyAvoidanceScore: 0.74,
|
|
7
|
-
communicationStyle: "indirect",
|
|
8
|
-
personalSpacePreference: "distant",
|
|
9
|
-
eyeContactNorm: "moderate",
|
|
10
|
-
greetingStyle: "formal"
|
|
11
|
-
};
|
|
12
|
-
const directCulture = {
|
|
13
|
-
id: "direct-pragmatic",
|
|
14
|
-
name: "Direct Pragmatic Fixture",
|
|
15
|
-
individualismScore: 0.72,
|
|
16
|
-
powerDistanceScore: 0.36,
|
|
17
|
-
uncertaintyAvoidanceScore: 0.42,
|
|
18
|
-
communicationStyle: "direct",
|
|
19
|
-
personalSpacePreference: "medium",
|
|
20
|
-
eyeContactNorm: "high",
|
|
21
|
-
greetingStyle: "handshake"
|
|
22
|
-
};
|
|
23
|
-
export function sampleCulturalBehaviorFixture(options = {}) {
|
|
24
|
-
const seed = normalizeSeed(options.seed ?? 0xc017);
|
|
25
|
-
const relationship = options.relationship ?? "superior";
|
|
26
|
-
const initiatorPosition = options.initiatorPosition ?? [0, 0, 0];
|
|
27
|
-
const targetPosition = options.targetPosition ?? [0.82, 0, 0.34];
|
|
28
|
-
const initiator = {
|
|
29
|
-
id: "npc-diplomat",
|
|
30
|
-
cultureId: collectivistCulture.id,
|
|
31
|
-
position: initiatorPosition,
|
|
32
|
-
personalityVariance: Number((0.08 + seededUnit(seed) * 0.08).toFixed(3))
|
|
33
|
-
};
|
|
34
|
-
const target = {
|
|
35
|
-
id: "player-envoy",
|
|
36
|
-
cultureId: directCulture.id,
|
|
37
|
-
position: targetPosition,
|
|
38
|
-
personalityVariance: Number((0.1 + seededUnit(seed ^ 0x9e37) * 0.06).toFixed(3))
|
|
39
|
-
};
|
|
40
|
-
const distanceMeters = distance(initiator.position, target.position);
|
|
41
|
-
const acceptableDistanceMeters = acceptableDistance(collectivistCulture, relationship);
|
|
42
|
-
const comfort = comfortLevel(distanceMeters, acceptableDistanceMeters);
|
|
43
|
-
const approachAllowed = distanceMeters >= acceptableDistanceMeters * 0.7;
|
|
44
|
-
const formality = determineFormality(collectivistCulture, directCulture, relationship);
|
|
45
|
-
const input = options.message ?? "Could you help me with the gate plan?";
|
|
46
|
-
const formatted = formatMessage(input, collectivistCulture, directCulture, relationship, formality);
|
|
47
|
-
const normViolations = [
|
|
48
|
-
...(approachAllowed ? [] : ["personal-space-too-close"]),
|
|
49
|
-
...(relationship === "superior" && !formatted.toLowerCase().startsWith("please") ? ["missing-hierarchy-marker"] : [])
|
|
50
|
-
];
|
|
51
|
-
const selectedAction = !approachAllowed
|
|
52
|
-
? "request-distance"
|
|
53
|
-
: formality === "formal"
|
|
54
|
-
? "formal-greeting"
|
|
55
|
-
: "approach";
|
|
56
|
-
const core = {
|
|
57
|
-
relationship,
|
|
58
|
-
distanceMeters,
|
|
59
|
-
acceptableDistanceMeters,
|
|
60
|
-
comfort,
|
|
61
|
-
selectedAction,
|
|
62
|
-
formatted
|
|
63
|
-
};
|
|
64
|
-
return {
|
|
65
|
-
source: "origin-master-cultural-ai-adapted",
|
|
66
|
-
cultures: [collectivistCulture, directCulture],
|
|
67
|
-
entities: [initiator, target],
|
|
68
|
-
proxemics: {
|
|
69
|
-
relationship,
|
|
70
|
-
distanceMeters,
|
|
71
|
-
acceptableDistanceMeters,
|
|
72
|
-
zone: zoneForDistance(distanceMeters),
|
|
73
|
-
comfort,
|
|
74
|
-
approachAllowed
|
|
75
|
-
},
|
|
76
|
-
communication: {
|
|
77
|
-
input,
|
|
78
|
-
formatted,
|
|
79
|
-
directness: collectivistCulture.communicationStyle,
|
|
80
|
-
formality,
|
|
81
|
-
audienceAdapted: formatted !== input
|
|
82
|
-
},
|
|
83
|
-
socialNorms: {
|
|
84
|
-
greetingExpected: collectivistCulture.greetingStyle,
|
|
85
|
-
eyeContactExpected: collectivistCulture.eyeContactNorm,
|
|
86
|
-
hierarchyAware: relationship === "superior" || relationship === "subordinate",
|
|
87
|
-
normViolations
|
|
88
|
-
},
|
|
89
|
-
gesture: {
|
|
90
|
-
id: collectivistCulture.greetingStyle === "bow" ? "bow" : "measured-handshake",
|
|
91
|
-
allowed: comfort >= 0.35,
|
|
92
|
-
intensity: Number((0.42 + comfort * 0.38).toFixed(3))
|
|
93
|
-
},
|
|
94
|
-
decision: {
|
|
95
|
-
selectedAction,
|
|
96
|
-
score: Number(((approachAllowed ? 0.52 : 0.18) + comfort * 0.36 + (formality === "formal" ? 0.08 : 0)).toFixed(3)),
|
|
97
|
-
reason: normViolations.length > 0 ? normViolations.join(",") : "proxemics-and-formality-within-bounds"
|
|
98
|
-
},
|
|
99
|
-
productionReadiness: {
|
|
100
|
-
proxemicTelemetry: true,
|
|
101
|
-
communicationStyleTelemetry: true,
|
|
102
|
-
socialNormTelemetry: true,
|
|
103
|
-
gestureBoundaryTelemetry: true
|
|
104
|
-
},
|
|
105
|
-
blockedClaims: [
|
|
106
|
-
"real cultural modeling certification",
|
|
107
|
-
"LLM-driven NPC dialogue parity",
|
|
108
|
-
"Unity Behavior Designer or ML-Agents social AI parity",
|
|
109
|
-
"Unreal MassAI/SmartObject social simulation parity",
|
|
110
|
-
"human-subject validated intercultural behavior"
|
|
111
|
-
],
|
|
112
|
-
claimBoundary: "This fixture ports old cultural AI concepts into deterministic proxemics, communication-style, social-norm, gesture, and decision telemetry for runtime evidence. It does not claim validated cultural modeling, generated NPC dialogue, or Unity/Unreal social-AI parity.",
|
|
113
|
-
hash: stableHash(JSON.stringify(core))
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
function acceptableDistance(culture, relationship) {
|
|
117
|
-
const base = relationship === "family" ? 0.3 : relationship === "friend" ? 0.6 : relationship === "acquaintance" ? 1.0 : relationship === "superior" || relationship === "subordinate" ? 1.25 : 1.5;
|
|
118
|
-
const space = culture.personalSpacePreference === "close" ? 0.7 : culture.personalSpacePreference === "distant" ? 1.4 : 1;
|
|
119
|
-
const individualism = 1 - culture.individualismScore * 0.2;
|
|
120
|
-
const hierarchy = 1 + culture.powerDistanceScore * 0.15;
|
|
121
|
-
return Number((base * space * individualism * hierarchy).toFixed(3));
|
|
122
|
-
}
|
|
123
|
-
function formatMessage(message, speaker, audience, relationship, formality) {
|
|
124
|
-
let formatted = message.trim();
|
|
125
|
-
const indirect = speaker.communicationStyle === "indirect" || audience.communicationStyle === "indirect";
|
|
126
|
-
if (indirect && !/\b(could|would|might)\b/i.test(formatted)) {
|
|
127
|
-
formatted = `I was wondering if you might ${formatted.charAt(0).toLowerCase()}${formatted.slice(1)}`;
|
|
128
|
-
}
|
|
129
|
-
if (formality === "formal") {
|
|
130
|
-
formatted = formatted.replace(/\bhey\b/gi, "Hello").replace(/\byeah\b/gi, "yes").replace(/\bgonna\b/gi, "going to");
|
|
131
|
-
}
|
|
132
|
-
if (relationship === "superior" && !formatted.toLowerCase().startsWith("please")) {
|
|
133
|
-
formatted = `Please, ${formatted.charAt(0).toLowerCase()}${formatted.slice(1)}`;
|
|
134
|
-
}
|
|
135
|
-
return formatted;
|
|
136
|
-
}
|
|
137
|
-
function determineFormality(speaker, audience, relationship) {
|
|
138
|
-
if (relationship === "superior" || speaker.powerDistanceScore > 0.6 || audience.powerDistanceScore > 0.6)
|
|
139
|
-
return "formal";
|
|
140
|
-
if (relationship === "friend" || relationship === "family")
|
|
141
|
-
return "informal";
|
|
142
|
-
return "neutral";
|
|
143
|
-
}
|
|
144
|
-
function zoneForDistance(distanceMeters) {
|
|
145
|
-
if (distanceMeters < 0.45)
|
|
146
|
-
return "intimate";
|
|
147
|
-
if (distanceMeters < 1.2)
|
|
148
|
-
return "personal";
|
|
149
|
-
if (distanceMeters < 3.6)
|
|
150
|
-
return "social";
|
|
151
|
-
return "public";
|
|
152
|
-
}
|
|
153
|
-
function comfortLevel(distanceMeters, acceptableDistanceMeters) {
|
|
154
|
-
const deviation = Math.abs(distanceMeters - acceptableDistanceMeters);
|
|
155
|
-
return Number(Math.max(0, 1 - deviation / Math.max(0.001, acceptableDistanceMeters * 0.5)).toFixed(3));
|
|
156
|
-
}
|
|
157
|
-
function distance(left, right) {
|
|
158
|
-
return Number(Math.hypot(left[0] - right[0], left[1] - right[1], left[2] - right[2]).toFixed(3));
|
|
159
|
-
}
|
|
160
|
-
function normalizeSeed(seed) {
|
|
161
|
-
if (!Number.isInteger(seed) || seed < 0)
|
|
162
|
-
throw new Error("seed must be a non-negative integer.");
|
|
163
|
-
return seed >>> 0;
|
|
164
|
-
}
|
|
165
|
-
function seededUnit(seed) {
|
|
166
|
-
let value = seed >>> 0;
|
|
167
|
-
value ^= value << 13;
|
|
168
|
-
value ^= value >>> 17;
|
|
169
|
-
value ^= value << 5;
|
|
170
|
-
return (value >>> 0) / 0xffffffff;
|
|
171
|
-
}
|
|
172
|
-
function stableHash(value) {
|
|
173
|
-
let hash = 2166136261;
|
|
174
|
-
for (let index = 0; index < value.length; index += 1) {
|
|
175
|
-
hash ^= value.charCodeAt(index);
|
|
176
|
-
hash = Math.imul(hash, 16777619);
|
|
177
|
-
}
|
|
178
|
-
return (hash >>> 0).toString(16).padStart(8, "0");
|
|
179
|
-
}
|
|
180
|
-
//# sourceMappingURL=CulturalBehaviorFixtures.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CulturalBehaviorFixtures.js","sourceRoot":"","sources":["../../../../packages/scripting/src/CulturalBehaviorFixtures.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
export interface LearningAgentFixtureOptions {
|
|
2
|
-
readonly seed?: number;
|
|
3
|
-
readonly targetDistance?: number;
|
|
4
|
-
readonly health?: number;
|
|
5
|
-
readonly energy?: number;
|
|
6
|
-
readonly nearbyCount?: number;
|
|
7
|
-
}
|
|
8
|
-
export interface LearningAgentFixture {
|
|
9
|
-
readonly source: "origin-master-ml-agent-adapted";
|
|
10
|
-
readonly observation: {
|
|
11
|
-
readonly featureSize: number;
|
|
12
|
-
readonly normalizedPosition: readonly [number, number, number];
|
|
13
|
-
readonly normalizedVelocity: readonly [number, number, number];
|
|
14
|
-
readonly targetDistance: number;
|
|
15
|
-
readonly health: number;
|
|
16
|
-
readonly energy: number;
|
|
17
|
-
readonly nearbyEntitySlots: number;
|
|
18
|
-
readonly featureHash: string;
|
|
19
|
-
};
|
|
20
|
-
readonly behaviorCloning: {
|
|
21
|
-
readonly demonstrations: number;
|
|
22
|
-
readonly trainLoss: number;
|
|
23
|
-
readonly validationLoss: number;
|
|
24
|
-
readonly trainAccuracy: number;
|
|
25
|
-
readonly validationAccuracy: number;
|
|
26
|
-
readonly earlyStoppingEpoch: number;
|
|
27
|
-
readonly selectedAction: "move-to-target" | "hold-position" | "recover";
|
|
28
|
-
};
|
|
29
|
-
readonly reinforcementLearning: {
|
|
30
|
-
readonly gamma: number;
|
|
31
|
-
readonly lambda: number;
|
|
32
|
-
readonly clipRange: number;
|
|
33
|
-
readonly policyLoss: number;
|
|
34
|
-
readonly valueLoss: number;
|
|
35
|
-
readonly totalLoss: number;
|
|
36
|
-
readonly avgAdvantage: number;
|
|
37
|
-
readonly avgReturn: number;
|
|
38
|
-
readonly entropy: number;
|
|
39
|
-
readonly klDivergence: number;
|
|
40
|
-
readonly explainedVariance: number;
|
|
41
|
-
};
|
|
42
|
-
readonly reward: {
|
|
43
|
-
readonly progress: number;
|
|
44
|
-
readonly survival: number;
|
|
45
|
-
readonly energyPenalty: number;
|
|
46
|
-
readonly proximityBonus: number;
|
|
47
|
-
readonly total: number;
|
|
48
|
-
};
|
|
49
|
-
readonly productionReadiness: {
|
|
50
|
-
readonly featureExtractionTelemetry: true;
|
|
51
|
-
readonly behaviorCloningTelemetry: true;
|
|
52
|
-
readonly ppoStatsTelemetry: true;
|
|
53
|
-
readonly rewardBreakdownTelemetry: true;
|
|
54
|
-
};
|
|
55
|
-
readonly blockedClaims: readonly string[];
|
|
56
|
-
readonly claimBoundary: string;
|
|
57
|
-
readonly hash: string;
|
|
58
|
-
}
|
|
59
|
-
export declare function sampleLearningAgentFixture(options?: LearningAgentFixtureOptions): LearningAgentFixture;
|
|
60
|
-
//# sourceMappingURL=LearningAgentFixtures.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LearningAgentFixtures.d.ts","sourceRoot":"","sources":["../../../../packages/scripting/src/LearningAgentFixtures.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
export function sampleLearningAgentFixture(options = {}) {
|
|
2
|
-
const seed = normalizeSeed(options.seed ?? 0x1ea5);
|
|
3
|
-
const targetDistance = positive(options.targetDistance ?? 6.2, "targetDistance");
|
|
4
|
-
const health = clamp01(options.health ?? 0.72);
|
|
5
|
-
const energy = clamp01(options.energy ?? 0.58);
|
|
6
|
-
const nearbyEntitySlots = Math.max(0, Math.min(5, Math.trunc(options.nearbyCount ?? 3)));
|
|
7
|
-
const normalizedPosition = [
|
|
8
|
-
Number((seededUnit(seed) * 0.12).toFixed(4)),
|
|
9
|
-
0,
|
|
10
|
-
Number((seededUnit(seed ^ 0x5167) * 0.08).toFixed(4))
|
|
11
|
-
];
|
|
12
|
-
const normalizedVelocity = [
|
|
13
|
-
Number((0.06 + seededUnit(seed ^ 0x78ab) * 0.04).toFixed(4)),
|
|
14
|
-
0,
|
|
15
|
-
Number((seededUnit(seed ^ 0x4312) * 0.02).toFixed(4))
|
|
16
|
-
];
|
|
17
|
-
const featureCore = [
|
|
18
|
-
...normalizedPosition,
|
|
19
|
-
...normalizedVelocity,
|
|
20
|
-
1,
|
|
21
|
-
0,
|
|
22
|
-
0,
|
|
23
|
-
Number((targetDistance / 100).toFixed(4)),
|
|
24
|
-
health,
|
|
25
|
-
energy,
|
|
26
|
-
nearbyEntitySlots
|
|
27
|
-
];
|
|
28
|
-
const progress = Number(Math.max(0, 1 - targetDistance / 12).toFixed(4));
|
|
29
|
-
const survival = Number((health * 0.35).toFixed(4));
|
|
30
|
-
const energyPenalty = Number(((1 - energy) * -0.18).toFixed(4));
|
|
31
|
-
const proximityBonus = Number((nearbyEntitySlots > 0 ? 0.08 : 0).toFixed(4));
|
|
32
|
-
const totalReward = Number((progress + survival + energyPenalty + proximityBonus).toFixed(4));
|
|
33
|
-
const selectedAction = health < 0.35 ? "recover" : targetDistance > 1.5 ? "move-to-target" : "hold-position";
|
|
34
|
-
const behaviorCloning = {
|
|
35
|
-
demonstrations: 24 + nearbyEntitySlots * 4,
|
|
36
|
-
trainLoss: Number((0.18 - progress * 0.06).toFixed(4)),
|
|
37
|
-
validationLoss: Number((0.22 - progress * 0.05).toFixed(4)),
|
|
38
|
-
trainAccuracy: Number((0.74 + progress * 0.12).toFixed(4)),
|
|
39
|
-
validationAccuracy: Number((0.7 + progress * 0.1).toFixed(4)),
|
|
40
|
-
earlyStoppingEpoch: 7 + nearbyEntitySlots,
|
|
41
|
-
selectedAction
|
|
42
|
-
};
|
|
43
|
-
const reinforcementLearning = {
|
|
44
|
-
gamma: 0.99,
|
|
45
|
-
lambda: 0.95,
|
|
46
|
-
clipRange: 0.2,
|
|
47
|
-
policyLoss: Number((-0.04 - progress * 0.03).toFixed(4)),
|
|
48
|
-
valueLoss: Number((0.21 - totalReward * 0.08).toFixed(4)),
|
|
49
|
-
totalLoss: Number((0.15 - totalReward * 0.05).toFixed(4)),
|
|
50
|
-
avgAdvantage: Number((totalReward * 0.42).toFixed(4)),
|
|
51
|
-
avgReturn: totalReward,
|
|
52
|
-
entropy: Number((0.52 - progress * 0.08).toFixed(4)),
|
|
53
|
-
klDivergence: Number((0.009 + seededUnit(seed ^ 0xacab) * 0.004).toFixed(4)),
|
|
54
|
-
explainedVariance: Number((0.66 + progress * 0.18).toFixed(4))
|
|
55
|
-
};
|
|
56
|
-
const core = {
|
|
57
|
-
featureCore,
|
|
58
|
-
behaviorCloning,
|
|
59
|
-
reinforcementLearning,
|
|
60
|
-
reward: { progress, survival, energyPenalty, proximityBonus, total: totalReward }
|
|
61
|
-
};
|
|
62
|
-
return {
|
|
63
|
-
source: "origin-master-ml-agent-adapted",
|
|
64
|
-
observation: {
|
|
65
|
-
featureSize: 27,
|
|
66
|
-
normalizedPosition,
|
|
67
|
-
normalizedVelocity,
|
|
68
|
-
targetDistance,
|
|
69
|
-
health,
|
|
70
|
-
energy,
|
|
71
|
-
nearbyEntitySlots,
|
|
72
|
-
featureHash: stableHash(JSON.stringify(featureCore))
|
|
73
|
-
},
|
|
74
|
-
behaviorCloning,
|
|
75
|
-
reinforcementLearning,
|
|
76
|
-
reward: core.reward,
|
|
77
|
-
productionReadiness: {
|
|
78
|
-
featureExtractionTelemetry: true,
|
|
79
|
-
behaviorCloningTelemetry: true,
|
|
80
|
-
ppoStatsTelemetry: true,
|
|
81
|
-
rewardBreakdownTelemetry: true
|
|
82
|
-
},
|
|
83
|
-
blockedClaims: [
|
|
84
|
-
"real neural-network training",
|
|
85
|
-
"ONNX runtime inference parity",
|
|
86
|
-
"Unity ML-Agents parity",
|
|
87
|
-
"Unreal Learning Agents parity",
|
|
88
|
-
"production reinforcement-learning deployment"
|
|
89
|
-
],
|
|
90
|
-
claimBoundary: "This fixture ports old ML-agent concepts into deterministic feature-extraction, behavior-cloning, PPO-stat, and reward telemetry. It does not train neural networks, run ONNX inference, or claim Unity ML-Agents or Unreal Learning Agents parity.",
|
|
91
|
-
hash: stableHash(JSON.stringify(core))
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
function positive(value, name) {
|
|
95
|
-
if (!Number.isFinite(value) || value < 0)
|
|
96
|
-
throw new Error(`${name} must be a non-negative finite number.`);
|
|
97
|
-
return Number(value.toFixed(4));
|
|
98
|
-
}
|
|
99
|
-
function normalizeSeed(seed) {
|
|
100
|
-
if (!Number.isInteger(seed) || seed < 0)
|
|
101
|
-
throw new Error("seed must be a non-negative integer.");
|
|
102
|
-
return seed >>> 0;
|
|
103
|
-
}
|
|
104
|
-
function clamp01(value) {
|
|
105
|
-
return Math.max(0, Math.min(1, Number.isFinite(value) ? value : 0));
|
|
106
|
-
}
|
|
107
|
-
function seededUnit(seed) {
|
|
108
|
-
let value = seed >>> 0;
|
|
109
|
-
value ^= value << 13;
|
|
110
|
-
value ^= value >>> 17;
|
|
111
|
-
value ^= value << 5;
|
|
112
|
-
return (value >>> 0) / 0xffffffff;
|
|
113
|
-
}
|
|
114
|
-
function stableHash(value) {
|
|
115
|
-
let hash = 2166136261;
|
|
116
|
-
for (let index = 0; index < value.length; index += 1) {
|
|
117
|
-
hash ^= value.charCodeAt(index);
|
|
118
|
-
hash = Math.imul(hash, 16777619);
|
|
119
|
-
}
|
|
120
|
-
return (hash >>> 0).toString(16).padStart(8, "0");
|
|
121
|
-
}
|
|
122
|
-
//# sourceMappingURL=LearningAgentFixtures.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LearningAgentFixtures.js","sourceRoot":"","sources":["../../../../packages/scripting/src/LearningAgentFixtures.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
export type NetworkReplicationMode = "all-clients" | "owner-only" | "all-except-owner" | "none";
|
|
2
|
-
export interface NetworkReplicationFixtureOptions {
|
|
3
|
-
readonly seed?: number;
|
|
4
|
-
readonly tickRate?: number;
|
|
5
|
-
readonly latencyMs?: number;
|
|
6
|
-
readonly jitterMs?: number;
|
|
7
|
-
readonly interestRadius?: number;
|
|
8
|
-
readonly clientPosition?: readonly [number, number, number];
|
|
9
|
-
}
|
|
10
|
-
export interface NetworkInputFrame {
|
|
11
|
-
readonly sequence: number;
|
|
12
|
-
readonly timestampMs: number;
|
|
13
|
-
readonly forward: boolean;
|
|
14
|
-
readonly right: boolean;
|
|
15
|
-
readonly fire: boolean;
|
|
16
|
-
}
|
|
17
|
-
export interface NetworkEntityState {
|
|
18
|
-
readonly id: string;
|
|
19
|
-
readonly ownerId: string;
|
|
20
|
-
readonly replicationMode: NetworkReplicationMode;
|
|
21
|
-
readonly position: readonly [number, number, number];
|
|
22
|
-
readonly velocity: readonly [number, number, number];
|
|
23
|
-
readonly health: number;
|
|
24
|
-
readonly ammo: number;
|
|
25
|
-
readonly animation: string;
|
|
26
|
-
readonly timestampMs: number;
|
|
27
|
-
readonly lastProcessedInput: number;
|
|
28
|
-
}
|
|
29
|
-
export interface NetworkPredictionSummary {
|
|
30
|
-
readonly inputCount: number;
|
|
31
|
-
readonly predictedSequence: number;
|
|
32
|
-
readonly acknowledgedSequence: number;
|
|
33
|
-
readonly pendingInputs: number;
|
|
34
|
-
readonly predictionError: number;
|
|
35
|
-
readonly smoothCorrection: readonly [number, number, number];
|
|
36
|
-
readonly replayedPosition: readonly [number, number, number];
|
|
37
|
-
readonly reconciliationAccepted: boolean;
|
|
38
|
-
}
|
|
39
|
-
export interface NetworkDeltaSummary {
|
|
40
|
-
readonly changedFields: readonly string[];
|
|
41
|
-
readonly removedFields: readonly string[];
|
|
42
|
-
readonly fullSnapshotBytes: number;
|
|
43
|
-
readonly deltaBytes: number;
|
|
44
|
-
readonly compressionRatio: number;
|
|
45
|
-
readonly reconstructedMatches: boolean;
|
|
46
|
-
readonly bytesSaved: number;
|
|
47
|
-
}
|
|
48
|
-
export interface NetworkInterestSummary {
|
|
49
|
-
readonly playerId: string;
|
|
50
|
-
readonly radius: number;
|
|
51
|
-
readonly added: readonly string[];
|
|
52
|
-
readonly removed: readonly string[];
|
|
53
|
-
readonly unchanged: readonly string[];
|
|
54
|
-
readonly relevant: readonly string[];
|
|
55
|
-
readonly culled: readonly string[];
|
|
56
|
-
readonly gridCellCount: number;
|
|
57
|
-
}
|
|
58
|
-
export interface NetworkInterpolationSummary {
|
|
59
|
-
readonly sampleTimestampMs: number;
|
|
60
|
-
readonly beforeTimestampMs: number;
|
|
61
|
-
readonly afterTimestampMs: number;
|
|
62
|
-
readonly interpolatedPosition: readonly [number, number, number];
|
|
63
|
-
readonly extrapolatedPosition: readonly [number, number, number];
|
|
64
|
-
}
|
|
65
|
-
export interface NetworkReplicationFixture {
|
|
66
|
-
readonly source: "origin-master-net-prediction-replication-adapted";
|
|
67
|
-
readonly claimBoundary: string;
|
|
68
|
-
readonly blockedClaims: readonly string[];
|
|
69
|
-
readonly tickRate: number;
|
|
70
|
-
readonly latencyMs: number;
|
|
71
|
-
readonly jitterMs: number;
|
|
72
|
-
readonly inputFrames: readonly NetworkInputFrame[];
|
|
73
|
-
readonly clientPredicted: NetworkEntityState;
|
|
74
|
-
readonly serverAuthoritative: NetworkEntityState;
|
|
75
|
-
readonly prediction: NetworkPredictionSummary;
|
|
76
|
-
readonly delta: NetworkDeltaSummary;
|
|
77
|
-
readonly interest: NetworkInterestSummary;
|
|
78
|
-
readonly interpolation: NetworkInterpolationSummary;
|
|
79
|
-
readonly hash: string;
|
|
80
|
-
}
|
|
81
|
-
export declare function sampleNetworkReplicationFixture(options?: NetworkReplicationFixtureOptions): NetworkReplicationFixture;
|
|
82
|
-
//# sourceMappingURL=NetworkReplicationFixtures.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkReplicationFixtures.d.ts","sourceRoot":"","sources":["../../../../packages/scripting/src/NetworkReplicationFixtures.ts"],"names":[],"mappings":"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"}
|