Z warsztatu twórców

Jak powstało Widnokrąg: Jura i Śląsk z lotu ptaka

Darmowy symulator lotu w przeglądarce, w którym całe Śląskie, Jura po Kraków i kawałek Czech i Słowacji są zbudowane z prawdziwych zdjęć lotniczych, lidaru i państwowych modeli 3D budynków. Opowiadam, skąd wziął się pomysł, jak z otwartych danych powstał świat 172 × 212 km i co było najtrudniejsze.

@widnokrag · · 6 min czytania

Widok z symulatora Widnokrąg: ruiny zamku Ogrodzieniec na wapiennych skałach Jury, obok zabudowa Podzamcza, dalej pola, lasy i chmury cumulus nad horyzontem.

Skąd wziął się pomysł na tę grę?

Pochodzę z Jury Krakowsko-Częstochowskiej i przez lata latałem dronem nad moją okolicą. Zdjęcia z tych lotów wrzucałem do sieci i regularnie słyszałem, że inni też chcieliby zobaczyć swoje strony z góry, ale dron to spory wydatek i nie każdy ma czas czy warunki, żeby nim latać. Pomyślałem, że skoro potrafię programować, mogę zrobić coś, co trafi do każdego: widok z lotu ptaka dla każdego, za darmo, na zwykłym telefonie.

Punktem wyjścia nie była żadna konkretna gra, tylko pytanie, czy da się zbudować prawdziwy kawałek Polski wyłącznie z otwartych danych publicznych. Okazało się, że Polska ma pod tym względem świetne zasoby: Geoportal udostępnia ortofotomapę, lotnicze skanowanie laserowe terenu i modele 3D budynków na licencji CC BY 4.0, a OpenStreetMap dokłada drogi, tory, rzeki i nazwy. Moment "to jest to" przyszedł, kiedy pierwszy raz przeleciałem w przeglądarce nad zamkiem Ogrodzieniec i rozpoznałem każdy dom w Podzamczu.

Jak wyglądał pierwszy grywalny prototyp?

Pierwsza wersja wrzucona do repozytorium 21 października 2026, była grywalna: Cessna startowała z trawiastego lądowiska Niegowoniczki (gmina Łazy), pod nią leżał teren z lidaru pokryty ortofotomapą, stały budynki 3D z Geoportalu, były drogi z jeżdżącymi samochodami, jazda autem i zmiana pór roku. Obszar obejmował wtedy tylko okolice Jury.

Od tego momentu wszystko szło bardzo szybko: w kolejnych dniach doszły drzewa z prawdziwą wysokością koron z lidaru, chmury i pogoda, kolejne maszyny, misje, radio lotnicze, a świat urósł do całego województwa śląskiego, Jury po Kraków i pasa Czech i Słowacji przy granicy.

Na czym zbudowana jest gra i dlaczego?

  • Babylon.js 9 i WebGL2: gra działa w przeglądarce, bez instalacji i bez konta, na komputerze, tablecie i telefonie. Dla mnie to był warunek, bo celem było "pod strzechy", a nie dla posiadaczy mocnego PC. Babylon ma dojrzałe cienie kaskadowe, postprocessing i dobrą wydajność na telefonach.
  • Vite do budowania, JavaScript w grze, Python i Node.js w skryptach przygotowujących dane.
  • Cloudflare Pages: statyczne pliki na sieci CDN, bez serwera gry i bez kosztów. Ograniczenia (20 tys. plików, 25 MiB na plik) mocno wpłynęły na architekturę danych.
  • Dane: ortofotomapa, lidar, modele 3D budynków (LoD2) i BDOT10k z GUGiK, OpenStreetMap, rejestr zabytków NID, Copernicus, pogoda na żywo z Open-Meteo, za granicą zdjęcia ČÚZK i GKÚ.
  • Dźwięk i radio: komunikaty lotnicze wygenerowane syntezą mowy Piper i sprawdzone rozpoznawaniem mowy whisper.cpp, dźwięki otoczenia z wolnych licencji.

Fizyka lotu jest własna: bryła sztywna z sześcioma stopniami swobody, osobne parametry dla każdej z kilkunastu maszyn, od Cessny przez szybowiec i śmigłowce po balon i drona FPV.

Jaką rolę odegrało AI?

Ogromną i nie ukrywam tego. Kod pisałem razem z asystentem AI (Claude): ja decydowałem, co i jak ma działać, testowałem, latałem, porównywałem ze zdjęciami i z rzeczywistością, a AI pisało sporą część kodu, skrypty do przetwarzania danych i pomagało szukać źródeł danych i licencji.

Co AI robiło dobrze: szybkie przekładanie pomysłu na działający kod, łączenie wielu formatów danych (CityGML, GeoTIFF, GeoPackage, kafle map), pisanie shaderów, tłumaczenia na angielski, czeski i słowacki, a nawet przegląd własnej pracy na zrzutach ekranu.

Gdzie trzeba było poprawiać: AI nie zna okolicy. To ja wiedziałem, że wieżowiec przy Spodku wygląda jak trzy różne klocki, że w tunelu w Katowicach coś migocze, a bazylika w Zawierciu ma zielone hełmy z miedzi. Bez tego oka z miejsca świat byłby poprawny technicznie, ale nie "nasz". Grafika w grze nie jest generowana przez AI: to prawdziwe zdjęcia lotnicze i dane pomiarowe.

Co było najtrudniejsze?

Zmieszczenie prawdziwego świata w przeglądarce telefonu i na darmowym hostingu.

Sama ortofotomapa dla obszaru 172 × 212 km to około 2,3 miliona kafli zdjęć. Cloudflare Pages przyjmuje najwyżej 20 tysięcy plików, a telefon ma ograniczoną pamięć. Rozwiązaniem okazały się duże paczki: kafle zdjęć są sklejone w kilkaset plików z tabelą przesunięć na początku, a gra pobiera z nich tylko potrzebne fragmenty zapytaniami HTTP Range. Pod samolotem są zdjęcia najwyższej rozdzielczości (ok. 0,4 m na piksel), dalej coraz mniej szczegółowe, aż po horyzont 30 km za granicą świata. Budynki, drogi i drzewa wczytują się kaflami 4 × 4 km wokół kamery i są zwalniane, gdy samolot odleci.

Drugą stroną tego samego problemu było łączenie danych. Każdy zbiór powstawał w innych latach i z inną dokładnością: państwowe modele budynków potrafią być sprzed przebudowy, mapa nie mówi, jak wysoki jest nowy budynek, a lidar widzi drzewo nad domem jako dach. Dużo pracy poszło w reguły, które to godzą, np. wysokości 31 tysięcy budynków z nowszego skanowania z odrzuceniem koron drzew na podstawie starszego.

Co wypadło z gry?

  • Opisy drzewostanów z Lasów Państwowych: dostępne tylko na zamówienie dla każdego nadleśnictwa, więc rodzaj lasu bierze się z danych Copernicusa.
  • Pierwotna nazwa i zasięg: na początku był to symulator lotu nad samą Jurą, pod inną nazwą i adresem. Gdy świat objął cały Śląsk, zmieniłem nazwę na Widnokrąg, a stare linki przekierowują na nowy adres.

Ile to trwało i kto nad tym pracował?

Ekipa: solo, z asystentem AI.Wersja 0.5.3 wyszła 29 października: po drodze było niemal 390 zmian i osiemnaście wydanych wersji, a kod gry i skryptów danych to ponad 33 tysiące linii. Do tego godziny obliczeń: pobieranie milionów kafli zdjęć, przetwarzanie lidaru i budowanie świata, które często trwały całe noce.

Co dziś zrobiłoby się inaczej?

Od pierwszego dnia projektowałbym dane pod ograniczenia hostingu i telefonów, a nie dopiero wtedy, gdy przestało się mieścić. Paczki zdjęć, limit plików i pamięć telefonu wymusiły kilka przebudów, których dałoby się uniknąć. Mapę wysokości od początku zrobiłbym w kafelkach wczytywanych wokół samolotu, bo jeden prostokąt na cały świat rośnie z każdym rozszerzeniem i obciąża każdy telefon.

Druga rada: wcześniej pokazać grę ludziom z konkretnych miejscowości. Najlepsze poprawki przyszły od mieszkańców i urzędów, którzy wiedzą, jak naprawdę wygląda ich kościół, szyb czy tunel.

Co dalej z grą?

Najbliższa wersja 0.5.4 to Podhale, Tatry, Poprad i Pieniny ze Szczawnicą. Po słowackiej stronie Tatr dokładam słowacki lidar (ÚGKK SR), żeby góry były równie dokładne po obu stronach granicy, a na lotnisku Poprad-Tatry pojawi się radio, także po słowacku. Do tego kamera z pierwszej osoby i sterowanie myszą w dronie FPV oraz realistyczne pułapy maszyn.

Dalej: większe paczki danych i mapa wysokości w kafelkach, co otworzy drogę do kolejnych regionów. Nowe miejsca w dużej mierze dodaję na podstawie zgłoszeń: urzędy z Milówki, Pszowa i Zawiercia przysłały listy atrakcji i zdjęcia, z których powstały nowe modele. Zapraszam na Discorda projektu: https://discord.gg/CwH8XKRnpz

Widnokrąg jest bezpłatny, bez reklam i bez rejestracji: https://widnokrag.net. Ma na dzień dzisiejszy 749 miejsc do odwiedzenia, każde z linkiem, który od razu startuje lot nad nim, lekcję pierwszego lotu dla osób, które nigdy nie grały, i działa po polsku, angielsku, czesku i słowacku. Jeśli brakuje czegoś z Twojej okolicy, napisz: kontakt@widnokrag.net.

Podobał się wpis?

Kliknij - @widnokrag zobaczy, że warto było pisać.

Grałeś w Widnokrąg: Jura i Śląsk z lotu ptaka? Opisz swoje wrażenia na blogu - twórca na pewno przeczyta.

Napisz artykuł

Komentarze (0)

Komentarze są publiczne. Pisz o tekście, nie o ludziach. Oznacz kogoś przez @nick.

Nikt jeszcze nie skomentował. Bądź pierwszy!

Czytaj dalej

Z redakcji

Jak powstało naszegierki.pl i po co ten blog

Zrobiłem katalog polskich gier indie, bo dobre małe gry często giną zaraz po premierze. Teraz ruszamy z blogiem - tu twórcy opowiedzą, jak powstały ich gry.

@mateuszczechowski · · 3 min czytania