NEON CITYmaking of
03 / 07

Grafika

Grafika na zamówienie, sprawdzana jak kod

Broń, zombie i tramwaje przechodzą tę samą drogę: brief, paczka, plansze kontrolne, odbiór, a dopiero potem integracja. Każda poprawka ma numer wersji i porównanie z poprzednią.

3.1 Szablon kadru broni

Broń w pierwszej osobie jest malowana w 2D, ale każda musi „siedzieć” w tym samym miejscu ekranu. Dlatego zamówienie zaczyna się od szablonu: kadr 1920×1080, oś lufy przechodząca przez celownik na środku, wyznaczone strefy wylotu, dłoni i rękawa przy prawej krawędzi.

Do każdej broni powstaje plansza kontrolna z tymi liniami nałożonymi na malunek. Odbiór polega na sprawdzeniu planszy – bez uruchamiania gry. Ten sam kadr trafia potem do atlasów w dwóch profilach: desktop 1024² i mobile 512².

Wyjątki są jawne. Złamana dwururka podczas ładowania nie celuje, więc jej klatki 6 i 8–10 są wypisane w pliku walidacji paczki jako zwolnione z reguły osi.

Plansza kontrolna Vulcana: działko obrotowe w prawym dolnym rogu, ukośna linia osi lufy biegnąca do środka kadru i prostokąty stref wokół wylotu i dłoni
Vulcan – plansza kontrolna 1920×1080. Linia: oś lufy przez celownik. Prostokąty: strefa wylotu i dłoni.
Plansza kontrolna Pulsara z osią lufy przez środek kadru
Pulsar – ten sam szablon.
Plansza kontrolna dwururki z osią lufy i strefami
Dwururka – paczka W2c v2.
Plansza kontrolna wyrzutni rakiet z sześcioma rurami i osią celowania
Wyrzutnia – paczka W2c v2.

Dowód ruchu, nie tylko obrazek

Cztery klatki Vulcana obok siebie: obrót pakietu luf o 0, 90, 180 i 270 stopni, jedna lufa przebarwiona
Cztery malowane fazy obrotu luf. Jedna lufa jest celowo przebarwiona, żeby było widać, że pakiet naprawdę się obraca, a nie migocze.
Pełny cykl luf bez błysku – efekt strzału nie zasłania ruchu.

3.2 Paczki i iteracje

Grafika przychodzi w paczkach z wersją, manifestem, sumami SHA-256, plikiem walidacji i katalogiem podglądów. Paczka nie nadpisuje po cichu poprzedniej: zachowuje indeksy klatek i układ atlasów, a każda zmiana jest wypisana z sumami przed i po.

  1. Katana · rewizja 2

    24 klatki jako sztywna animacja jednego malunku: tylko obrót, przesunięcie i jednakowa skala. Walidator porównuje piksele atlasu z ponownie przeliczonym masterem.

  2. Pistolet · rewizja 1 → 1b

    Klatki z zamkniętym i otwartym zamkiem różniły się rękawicami, więc obraz przeskakiwał przy każdym strzale. W 1b wszystkie 7 klatek pochodzi z jednego mastera, a podmieniany jest tylko pas zamka.

  3. W2b v1 → v1.1

    Vulcan: nowy pakiet luf i cztery fazy obrotu. Wyrzutnia: nowe przeładowanie, pocisk wchodzi do rury od strony gracza. Pulsar: malowane impulsy strzału. Dwururka: nowy, płytszy kadr.

  4. W2c C+D v1

    Dwururka: poprawione klatki ładowania 8–10 i rękaw. Wyrzutnia: wyłącznie domalowany rękaw – wszystkie wcześniejsze nieprzezroczyste piksele pozostały identyczne. Sprawdzono 48 kombinacji klatka/profil.

  5. W2c C+D v2

    Tylko lewa rękawica dwururki w klatkach 8–9 i szew na zawiasie. Reszta przyjętej paczki bez zmian.

Porównanie Vulcana: wersja v1 po lewej, v1.1 po prawej, w tym samym kadrze kontrolnym
v1 → v1.1Vulcan – ten sam kadr, nowy pakiet luf.
Cztery klatki ładowania dwururki z poprawioną lewą rękawicą w wersji v2
v2Dwururka – poprawka ograniczona do rękawicy w klatkach ładowania.
Porównanie wyrzutni rakiet: v1 po lewej, v1.1 po prawej
v1 → v1.1Wyrzutnia – nowy komplet póz spoczynku i przeładowania.
Siatka wszystkich trzynastu klatek Vulcana: spoczynek, rozkręcanie, strzał, wygaszanie
Vulcan – wszystkie 13 klatek na jednej planszy.
Arkusz klatek pistoletu: siedem malowanych póz dłoni z pistoletem na szarym tle
Pistolet – 7 klatek rewizji 1b z jednego mastera.
Przegląd klatek katany: ostrze w kolejnych fazach ciosów rozmieszczone na planszy
Katana – 24 klatki ciosów, sztywna animacja malunku.
Siatka klatek dwururki: zmiana broni, strzał, złamanie luf, ładowanie dwóch nabojów, zamknięcie
Dwururka – wszystkie pozy, ładowanie w klatkach 8–11.
Zwolnione przeładowanie dwururki – odbiór zaczyna się od wersji wolnej.
Przeładowanie wyrzutni – pocisk wchodzi do dolnej lewej rury.

3.3 Zombie: od konceptu do modelu z kodu

Zombie zaczęły się od plansz konceptu: cztery rodzaje sylwetek (A–D), ubrania, głowy, palety i test nocny. Koncept od razu niesie liczby, których potrzebuje gra – wzrost około 1,70 m, niezmienione strefy trafień ciała i głowy, plan 18 kości, osiem odcieni skóry niezależnych od dziesięciu palet ubrań.

Modele 3D nie są rzeźbione ręcznie. Powstają z kodu, a walidator sprawdza je klatka po klatce – na przykład czy czaszka mieści się w strefie trafienia głowy w każdej stojącej animacji, przy skrajnych skalach.

Na montażach po lewej jest plansza konceptu, po prawej render z gry z tej samej odległości i kąta kamery. Jak horda wyglądała wcześniej, jako płaskie sprite’y, pokazuje suwak w sekcji 6.

Plansza przeglądowa konceptu zombie: lineup czterech rodzajów sylwetek, ubrania, głowy, palety kolorów i test nocny
konceptPlansza przeglądowa E1.1.
Lineup konceptu: osiem postaci zombie od przodu na skali wzrostu
konceptLineup od przodu na skali wzrostu.
Montaż: po lewej postacie z planszy konceptu, po prawej te same rodzaje zombie wyrenderowane w grze
koncept | graLineup A–D w dwóch paletach: plansza konceptu i render z kodu, kamera 40 m, wąski kąt.
Montaż nocny: dwanaście kombinacji zombie na planszy konceptu i te same kombinacje w grze o 22:00
koncept | graNoc, 22:00: te same 12 kombinacji rodzaju, ubrania, głowy i palety. Mapa: © OpenStreetMap contributors (ODbL).

3.4 Tramwaje

Trzy typy tramwajów (T1–T3) mają pełne modele, uproszczone wersje LOD na dalszy plan i wspólny bank zasobów. Pełny model pojawia się tam, gdzie gracz patrzy z bliska: przy drzwiach, na postoju i na łuku. W zwykłym meczu jeżdżą najwyżej trzy pełne instancje naraz.

Tory biegną po rzeczywistych odcinkach linii z OpenStreetMap, a perony i wiaty powstają tylko tam, gdzie dane potwierdzają długość i stronę peronu. Jak tramwaj „wie”, gdzie jest, opisuje sekcja 2.4.

Kraków w dzień: tramwaj stoi na przystanku przy wiacie, w tle kamienice
Kraków – postój przy peronie. Mapa: © OpenStreetMap contributors (ODbL).
Galeria modeli: kilka składów tramwajowych ustawionych obok siebie na placu w mieście z lotu ptaka
Galeria modeli – sześć modeli, 42 klipy animacji, niezależne szkielety.
Łódź: skład tramwajowy na łuku toru
Łódź – łuk; pełny model zamiast uproszczonego LOD. Mapa: © OpenStreetMap contributors (ODbL).
Kraków nocą na telefonie w poziomie: tramwaj z otwartymi drzwiami i przyciski sterowania dotykowego
Kraków, 22:00 – telefon w poziomie, jakość Niska. Mapa: © OpenStreetMap contributors (ODbL).
Widok z góry na ulicę w Łodzi: przed tramwajem widać pomarańczowy pas korytarza ostrzegawczego
Korytarz ostrzegawczy po poprawce – historia w sekcji 4. Mapa: © OpenStreetMap contributors (ODbL).

Prawa i źródła. Grafiki, modele i plansze: autor Marcin Krzętowski, wykonane z pomocą narzędzi AI (lokalny model językowy wspierany modelami w chmurze: OpenAI image_gen i Codex, Claude). Wszelkie prawa zastrzeżone.

Zrzuty i montaże z gry: Setech Game Studio. Mapa: © OpenStreetMap contributors (ODbL).