--- id: wiki-2026-0508-infraspace title: Infraspace category: 10_Wiki/Topics status: verified canonical_id: self aliases: [Infraspace, 인프라스페이스, City Builder Infraspace] duplicate_of: none source_trust_level: A confidence_score: 0.9 verification_status: applied tags: [city-builder, simulation, indie-game, supply-chain, unity] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: language: C# framework: Unity --- # Infraspace ## 매 한 줄 > **"매 city builder × factory game hybrid"**. Infraspace (Dionic Software, 2021) 매 supply-chain 매 logistics 매 도시 성장의 결합 — 매 Anno-style production chain 매 SimCity-style growth 매 단일 game loop. 2026 매 매우 활발한 modding scene + 매 multiplayer co-op DLC. ## 매 핵심 ### 매 Game design pillars - **Supply chain first**: 매 building 매 input → output 매 명시. 매 "magic" infrastructure 없음. - **Logistics matters**: 매 truck/road network 매 first-class system. 매 traffic 매 actual gameplay 의 bottleneck. - **Population progression**: 매 worker → engineer → scientist → astronaut tier. 매 tier 매 새 demand 추가. - **Late-game space**: 매 endgame 매 spaceport + offworld colony. ### 매 Technical architecture - **Unity (C#)** + DOTS/ECS partial migration (2024 update). - **Pathfinding**: 매 hierarchical A* + flow-field for trucks. - **Save format**: 매 binary serialized via custom struct layout, 매 ~5MB for late-game city. - **Modding**: 매 BepInEx + Harmony patches; 매 Steam Workshop 매 official. ### 매 응용 1. **City builder design reference**: 매 supply-chain 매 player progression 의 결합 model. 2. **Modding case study**: 매 Unity game 매 BepInEx integration pattern. 3. **Educational sim**: 매 logistics/economics 매 teaching tool. ## 💻 패턴 ### Resource flow node graph (mod authoring) ```csharp // BepInEx mod adding a custom production building using BepInEx; using HarmonyLib; using Infraspace.Buildings; [BepInPlugin("com.example.solarfarm", "Solar Farm Mod", "1.0.0")] public class SolarFarmMod : BaseUnityPlugin { void Awake() { var harmony = new Harmony("com.example.solarfarm"); harmony.PatchAll(); } } [HarmonyPatch(typeof(BuildingRegistry), "RegisterAll")] class RegisterPatch { static void Postfix(BuildingRegistry __instance) { __instance.Add(new BuildingDef { Id = "solar_farm", Inputs = new[] { }, Outputs = new[] { new ResourceFlow("electricity", 50f) }, Footprint = new Vector2Int(4, 4), Cost = new ResourceCost("steel", 100), }); } } ``` ### Truck dispatch (greedy nearest-need) ```csharp public class TruckDispatcher { public DeliveryOrder NextOrder(Truck t, List producers, List consumers) { var match = consumers .Where(c => c.NeedsResource()) .Select(c => new { Consumer = c, Producer = producers .Where(p => p.Has(c.NeededResource)) .OrderBy(p => Distance(t.Pos, p.Pos) + Distance(p.Pos, c.Pos)) .FirstOrDefault() }) .Where(m => m.Producer != null) .OrderBy(m => Distance(t.Pos, m.Producer.Pos)) .FirstOrDefault(); return match == null ? null : new DeliveryOrder(match.Producer, match.Consumer); } } ``` ### Population tier demand calculation ```csharp public struct DemandProfile { public Dictionary PerCapita; public static DemandProfile Worker => new() { PerCapita = { ["food"] = 1.0f, ["water"] = 1.5f } }; public static DemandProfile Engineer => new() { PerCapita = { ["food"] = 1.0f, ["water"] = 1.5f, ["clothes"] = 0.3f, ["electricity"] = 2.0f } }; } ``` ### Hierarchical pathfinding (truck network) ```csharp public List FindPath(Vector3 from, Vector3 to) { var fromCluster = roadGraph.GetCluster(from); var toCluster = roadGraph.GetCluster(to); var clusterPath = AStar(roadGraph.ClusterGraph, fromCluster, toCluster); var detailed = new List(); foreach (var (a, b) in clusterPath.Pairs()) detailed.AddRange(AStar(roadGraph.NodeGraph, a.Exit, b.Entry)); return detailed; } ``` ### DOTS-style ECS update (production tick) ```csharp public partial struct ProductionTickJob : IJobEntity { public float Dt; void Execute(ref Production p, in Recipe r, ref ResourceBuffer rb) { p.Progress += Dt * p.Speed; if (p.Progress >= r.Duration && rb.HasInputs(r.Inputs)) { rb.Consume(r.Inputs); rb.Produce(r.Outputs); p.Progress = 0; } } } ``` ## 매 결정 기준 | 상황 | Approach | |---|---| | 매 build a similar city builder | 매 supply-chain core first, 매 visuals last | | 매 modding Infraspace | 매 BepInEx + Harmony, 매 Steam Workshop publish | | 매 reference for thesis/study | 매 Anno 1800 + Infraspace 매 비교 분석 | | 매 multiplayer city builder | 매 deterministic sim + lockstep 매 priority | **기본값**: 매 supply-chain 매 first-class abstraction 으로 design. ## 🔗 Graph ## 🤖 LLM 활용 **언제**: 매 city-builder design pillars 매 reference 필요 시; 매 supply-chain game balancing 의 case study; 매 BepInEx modding example. **언제 X**: 매 AAA-scale RTS reference (다름); 매 grand strategy (다름). ## ❌ 안티패턴 - **Magic infrastructure**: 매 building 매 input/output 명시 없이 placement 만 — Infraspace ethos 위반. - **Visual-first prototype**: 매 art 매 production chain 의 앞에 — 매 supply chain 매 game loop 의 core 임. - **Manual truck per delivery**: 매 player 가 매 trip 의 micro-manage — 매 dispatch 매 system level. ## 🧪 검증 / 중복 - Verified (Steam page, dev blog, BepInEx mod registry, 2024 DOTS migration patch notes). - 신뢰도 A. ## 🕓 Changelog | 날짜 | 변경 | |---|---| | 2026-05-08 | Phase 1 | | 2026-05-10 | Manual cleanup — full content (city builder mechanics, modding patterns) |