Martico2432 commited on
Commit
13ca567
Β·
verified Β·
1 Parent(s): a291054

Create game_config.py

Browse files
Files changed (1) hide show
  1. game_config.py +106 -0
game_config.py ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # ─────────────────────────────────────────────
2
+ # game_config.py – all balance numbers live here
3
+ # ─────────────────────────────────────────────
4
+
5
+ STARTING_MONEY: float = 100.0
6
+
7
+ # ── Upgrades ────────────────────────────────
8
+ # Each upgrade has a list of levels.
9
+ # level 0 = not purchased (baseline)
10
+ # level 1+ = purchased tiers
11
+ #
12
+ # quality_score : additive contribution to total_quality (0–100 scale)
13
+ # cost : price to buy that tier (cumulative spend per tier, not total)
14
+
15
+ UPGRADES: dict = {
16
+ "model_size": {
17
+ "label": "Model Size",
18
+ "icon": "⬑",
19
+ "description": "Number of parameters in your model",
20
+ "levels": [
21
+ {"name": "Nano (7M)", "cost": 0, "quality_score": 0},
22
+ {"name": "Small (70M)", "cost": 20, "quality_score": 8},
23
+ {"name": "Medium (500M)", "cost": 60, "quality_score": 18},
24
+ {"name": "Large (3B)", "cost": 150, "quality_score": 32},
25
+ {"name": "Giant (30B)", "cost": 400, "quality_score": 50},
26
+ ],
27
+ },
28
+ "dataset_size": {
29
+ "label": "Dataset Size",
30
+ "icon": "β—ˆ",
31
+ "description": "Tokens of training data",
32
+ "levels": [
33
+ {"name": "Scraps (1B)", "cost": 0, "quality_score": 0},
34
+ {"name": "Common (10B)", "cost": 15, "quality_score": 6},
35
+ {"name": "Large (100B)", "cost": 45, "quality_score": 14},
36
+ {"name": "Massive (1T)", "cost": 120, "quality_score": 26},
37
+ {"name": "Web-scale (10T)", "cost": 300, "quality_score": 40},
38
+ ],
39
+ },
40
+ "dataset_quality": {
41
+ "label": "Data Quality",
42
+ "icon": "β—‰",
43
+ "description": "Curation and filtering pipeline",
44
+ "levels": [
45
+ {"name": "Raw dump", "cost": 0, "quality_score": 0},
46
+ {"name": "Deduplicated", "cost": 10, "quality_score": 5},
47
+ {"name": "Filtered", "cost": 30, "quality_score": 12},
48
+ {"name": "Curated", "cost": 80, "quality_score": 22},
49
+ {"name": "RLHF-aligned", "cost": 200, "quality_score": 35},
50
+ ],
51
+ },
52
+ "architecture": {
53
+ "label": "Architecture",
54
+ "icon": "β—¬",
55
+ "description": "Model architecture design",
56
+ "levels": [
57
+ {"name": "Vanilla LSTM", "cost": 0, "quality_score": 0},
58
+ {"name": "GPT-style", "cost": 25, "quality_score": 10},
59
+ {"name": "Flash-Attn", "cost": 70, "quality_score": 20},
60
+ {"name": "MoE layers", "cost": 180, "quality_score": 33},
61
+ {"name": "Custom SSM", "cost": 450, "quality_score": 48},
62
+ ],
63
+ },
64
+ "hardware": {
65
+ "label": "Hardware",
66
+ "icon": "β–£",
67
+ "description": "Training compute",
68
+ "levels": [
69
+ {"name": "CPU cluster", "cost": 0, "quality_score": 0},
70
+ {"name": "GTX 1080 Γ—4", "cost": 30, "quality_score": 7},
71
+ {"name": "A100 Γ—8", "cost": 90, "quality_score": 17},
72
+ {"name": "H100 pod", "cost": 250, "quality_score": 30},
73
+ {"name": "Custom silicon", "cost": 600, "quality_score": 45},
74
+ ],
75
+ },
76
+ }
77
+
78
+ # Max quality score achievable (sum of all top-tier quality_scores)
79
+ # Used to normalise quality to 0–1. Recomputed at runtime, but shown here for reference.
80
+ # = 50 + 40 + 35 + 48 + 45 = 218
81
+
82
+ # ── Training economics ───────────────────────
83
+ BASE_TRAIN_COST: float = 10.0 # $ cost at level-0 everything
84
+ TRAIN_COST_QUALITY_SCALE: float = 0.15 # extra cost per quality point
85
+
86
+ BASE_REWARD: float = 25.0 # $ reward at level-0 everything
87
+ QUALITY_EXPONENT: float = 2.2 # reward grows super-linearly with quality
88
+ MAX_QUALITY_REWARD_MULT: float = 40.0 # cap multiplier at max quality
89
+
90
+ REWARD_NOISE_PCT: float = 0.12 # Β±12 % random variance per run
91
+
92
+ # ── Cloud Inference ──────────────────────────
93
+ CLOUD_UNLOCK_COST: float = 150.0 # one-time cost to unlock
94
+ CLOUD_BASE_REVENUE: float = 8.0 # $ per tick (every 8 s) at quality 0
95
+ CLOUD_QUALITY_MULT: float = 0.06 # additional revenue per quality point
96
+ CLOUD_TICK_SECONDS: int = 8 # JS poll interval hint (stored here for reference)
97
+
98
+ # ── Chat temperature mapping ─────────────────
99
+ # quality_ratio = total_quality / max_quality (0.0 – 1.0)
100
+ # temperature = lerp between TEMP_MAX and TEMP_MIN based on quality_ratio
101
+ CHAT_TEMP_MAX: float = 2.0 # chaotic gibberish at quality 0
102
+ CHAT_TEMP_MIN: float = 0.3 # coherent at max quality
103
+
104
+ # ── HuggingFace model ────────────────────────
105
+ HF_MODEL_ID: str = "FlameF0X/Qwen3-4B-Distilled-Claude-4.6"
106
+ HF_MAX_NEW_TOKENS: int = 400