Uruchamianie gry, pętla frame, rendering 2.5D, input i streaming danych świata.
- start aplikacji i pętla runtime,
- podpięcie danych symulacji,
- fundament pod 60 FPS.
- okno Win32 + software rendering (GDI + backbuffer DIB),
- top-down grid (Factorio-like), kafle kwadratowe + proste nakładki (belty/items),
- duży pass grafiki/FPS:
- adaptacyjna jakość renderu (HIGH/BALANCED/PERF-CRITICAL) zależna od FPS,
- szybsze prymitywy pikselowe (clipped fill dla prostokątów/okręgów, mniej kosztownego
PutPixel), - bardziej organiczne patch'e rud (maska radialna + noise),
- mocniejsze odszumienie siatki kafli (flip/offset/transpose tekstur + blend narożników),
- tańsze shoreline i tańszy haze przy niskim FPS (checkerboard w trybie krytycznym),
- AI-like generator tekstur materiałowych oparty o latent seed,
- opcjonalny loader zewnętrznego atlasu tekstur (
assets/generated/runtime_texture_atlas.bin), - cache tekstur per
VisualKind+ wariant, - sygnatury rozpoznawalności surowców:
- iron: chłodne żyły,
- copper: ciepły odcień + oksydacja,
- coal: ciemny materiał z pęknięciami,
- HUD runtime (metryki, paski stanu, skróty sterowania),
- integracja live z Rust sym:
sim_tick(1/60),sim_set_policy,sim_generate_planet,sim_generate_system.
W/A/S/D— płynny ruch graczaShift— sprint- kamera płynnie podąża za graczem (smooth follow)
E— ręczne wydobycieF— wytopiron plateB— postaw/usun extractorN— postaw/usun furnaceT— postaw/usun beltC— zetnij drzewo (wood)R— obrót kierunku budowy (belty/wyjścia maszyn)P— nowy seed stylu świata (wizualny reroll)H— przełącz HUD (hidden/compact/debug)F7— auto governor jakości/FPS (ON/OFF)F8— render resolution: fixed (szybciej) ↔ native (ostrzej, wolniej)- HUD pokazuje aktualny profil jakości renderu:
HIGH,BALANCEDlubPERF-CRITICAL Q/Esc— wyjście
- inwentarz runtime: iron/copper/coal + iron plates,
- wydobycie ręczne z pola gracza,
- smelting iron plates,
- proste maszyny wydobywcze (extractor) działające w czasie,
- HUD z widokiem zasobów, maszyn i statusu akcji.
Runtime został podzielony na moduły:
runtime_state.h— wspólny stan i typy runtime,world.*— generacja świata, tile access, status i seed stylu,gameplay.*— akcje gracza i logika maszyn,render.*— rendering mapy/HUD i obsługa backbuffera,main.cpp— bootstrap DLL + pętla aplikacji.
Dzięki temu kolejne iteracje M8/M9 są prostsze i mniej ryzykowne.
- render jest teraz terrain-first (biom najpierw, surowiec jako patch),
- mapa jest bardziej płaska (2.5D), z okazjonalnymi górami,
- surowce tworzą bardziej spójne klastry i są czytelniejsze.
Runtime wspiera dwa tryby:
- Procedural fallback (bez plików wejściowych) — obecny generator C++.
- External atlas mode — atlas wygenerowany skryptem Python i ładowany automatycznie przy starcie.
Przygotowanie atlasu (osobny trainer AI):
dotnet run --project .\tools-csharp\ai-trainer\FactorioPt.AiTrainer.csproj -- `
--dataset-root .\assets\style-dataset `
--output .\assets\generated\runtime_texture_atlas.bin `
--variants 8Generowanie seamless HQ tiles (32/64, teren + rudy):
dotnet run --project .\tools-csharp\ai-trainer\FactorioPt.AiTrainer.csproj -- `
--export-hq-tiles .\assets\generated\hq-tiles `
--tile-sizes 64 `
--tile-variants 12 `
--style-shots-dir .\ `
--style-blend 0.32 `
--seed 20260508Uruchomienie:
powershell -ExecutionPolicy Bypass -File .\scripts\package-runtime-release.ps1
.\dist\runtime-win64\factorio_pt_runtime.exe.\scripts\build.ps1 -Configuration Debug
.\build\runtime\factorio_pt_runtime.exe- Główna technologia: C++
- Integracje: Rust (symulacja), C# (asset/data tooling output)
in progress (M7 complete + M8 gameplay core; kolejny etap: sprite atlas + obiekty produkcyjne)