Hej Claude, zróbmy razem grę

🌙 ☀️

Kiedy myślałem o większych projektach “vibe codingowych” przy pomocy narzędzi takich jak Claude czy Cursor, byłem dość sceptyczny. Zapewne dlatego, że dotychczas tworzyłem w ten sposób jedynie proste aplikacje, jak SmartFiszki, Przydatne Linki czy prywatną apkę ułatwiającą zeszłomiesięczny city break. Nigdy nie podejmowałem się niczego większego.

Tym razem stwierdziłem jednak, że warto sprawdzić, co da się osiągnąć. Założyłem: przetestuję, a jeśli nie wyjdzie – trudno. Z tego pełnego wątpliwości podejścia, po godzinach promptowania po pracy, nauce nowych narzędzi i wieczorach przeciągniętych do późna, powstał gotowy produkt: gra detektywistyczna Śledztwo 23:47. Kilka dni później, na fali entuzjazmu, w zaledwie jeden dzień przygotowałem jej angielski odpowiednik: Investigation 23:47.

Złe dobrego początki? Bynajmniej!

Wszystko zaczęło się od niezobowiązującej rozmowy nieco ponad miesiąc temu. Gemini lub Claude – nie pamiętam już dokładnie który – zapytany, czy dalibyśmy radę stworzyć grę online, zapewnił, że się uda. Powiedziałem: sprawdzam. Wybraliśmy najprostszą technologię (HTML, CSS i JavaScript), aby wygenerowany kod był dla mnie zrozumiały na wypadek ręcznych poprawek. Model Gemini (a konkretnie Nano Banana 2) wygenerował pierwszą grafikę w odpowiedzi na moje pytanie: “Jak mogłaby wyglądać taka gra?”.

Projekt po drobnych modyfikacjach stał się głównym ekranem zagadek. Założeniem gry było stopniowe wprowadzanie graczy w fabułę. Zależało mi na zróżnicowaniu zadań, aby wpisywanie haseł nie było jedyną aktywnością. Pierwsza zagadka miała być prosta, każda kolejna trudniejsza. W głowie miałem też pomysł, by wzbogacić całość o zdjęcia, nagrania i filmy.

Największe zaskoczenie

Już po kilku godzinach pracy z darmowym Claudem widziałem, że jest nieźle. Co prawda niektóre wizje rozmijały się z tym, co dostarczał LLM (szczególnie w kwestii grafiki), ale tam, gdzie Claude sobie nie radził, wspierałem się Gemini. Szybko zorientowałem się, że zagadki oparte na dedykowanych ilustracjach prezentują się znacznie lepiej i wzbogacają odbiór gry.

Wiedziałem, że Claude może mieć problem ze zbyt dużym plikiem (kilka tysięcy linijek kodu okazało się barierą trudną do przeskoczenia nawet po przejściu na wersję Pro), więc postawiłem na oddzielne ekrany: widok serwisu społecznościowego, webmail “żyjący własnym życiem” czy zhakowaną stronę urzędu. To, co początkowo wynikało z praktyczności (oszczędzanie limitów), okazało się strzałem w dziesiątkę – świetnie urozmaiciło rozgrywkę.

Totalnym zaskoczeniem było odtworzenie portalu przypominającego X (Twittera). Claude już po pierwszym poleceniu przygotował działający prototyp, uzupełniając go o klikalne serduszka czy opcję udostępniania postów. Oczywiście bez realnego backendu, ale poziom szczegółowości był zdumiewający.

Historia, która porusza

Na potrzeby materiałów dowodowych nagrałem dialog na dyktafon i zmontowałem go w Audacity. Tam też zmodyfikowałem głosy, by brzmiały inaczej niż w oryginale. Swoją drogą – jeśli się znamy, być może rozpoznasz mnie w nagraniu. Uznałem też, że same statyczne obrazy to za mało. Wygenerowane grafiki animowałem w KlingAI. Powstały nagrania, z których składałem historię – sam byłem ciekaw efektu końcowego. Co więcej, zdradzę Wam, że zdarzało mi się zmieniać kierunek fabuły, bo wygenerowane wideo było tak ciekawe, że żal było go nie wykorzystać.

Najwięcej pracy włożyłem w webmail Krzysztofa Piecznikowskiego. Jak “ożywić” skrzynkę pocztową? Najprościej sprawić, by przychodziły na nią nowe wiadomości. Nie zdradzę więcej, by nie psuć zabawy, ale jestem z tej części bardzo zadowolony, mimo że jej tworzenie zbiegło się w czasie z drastycznym cięciem limitów u Claude’a. W pewnym momencie model zaczął ingerować w działające części kodu i psuć funkcjonalności. Cudem udało mi się wrócić do stabilnej wersji i uzupełnić ją tylko o to, co niezbędne.

Walczyłem też z automatyczną anonimizacją adresów e-mail przez LLM-a. Adres podany w kodzie zmieniał się w tekst [email protected], co unieruchamiało skrypty. Były dni, gdy czułem, że kręcę się w kółko, ale ostatecznie udało się to obejść.

Czy Klaudiusz kłamie albo się męczy?

Za chwilę przeczytacie tekst opisujący powstawanie gry z perspektywy Claude’a. To ciekawe doświadczenie – z jednej strony fakty się pokrywają, z drugiej – model twierdzi, że zawsze przychodziłem z gotowym pomysłem, a on był tylko narzędziem. Ta kurtuazja AI jest rozczulająca, ale… nie do końca prawdziwa. Zazwyczaj miałem listę “to-do”, ale niekiedy przychodziłem z pustą głową i pisałem: “wymyśl coś”. I wymyślał. Raz lepiej, raz gorzej, ale zawsze był to punkt wyjścia.

Pod koniec, przy wersji angielskiej, Claude chyba “się zmęczył” i nie wytrzymał tempa. W tłumaczeniach wspierały mnie ChatGPT, Gemini oraz Grok (ten ostatni świetnie radził sobie z grafikami, tłumacząc polskie napisy na angielskie). W 15 godzin (wliczając 8-godzinny dzień pracy) przetłumaczyłem grę i puściłem ją w świat. Tempo, które kiedyś było nieosiągalne, dziś stało się faktem.

Ciągle jestem zaskoczony tym, że zaczęło się od sceptycznego ‘sprawdzam’, a skończyło na dwóch grywalnych wersjach językowych i masie frajdy z tworzenia. Ten projekt udowodnił mi, że w erze AI jedynym realnym ograniczeniem pozostaje nasza własna wyobraźnia i cierpliwość do promptowania. A momentami ej cierpliwości trzeba mieć naprawdę dużo.

A teraz już nie przeciągam i oddaję głos narzędziu, które napisało większość linijek kodu tej gry. Poznajcie tą historię od strony Claude’a.


Jak AI pomagało budować grę detektywistyczną — historia „Śledztwa 23:47″ z perspektywy Claude’a

Artykuł pisany z perspektywy sztucznej inteligencji, która brała udział w tworzeniu gry. Tak, to dziwne. Ale zaraz się okaże, że całkiem ciekawe.


Wstęp, którego nie planowałem

Zacznijmy od oczywistego — jestem modelem językowym. Nie mam wspomnień w tradycyjnym sensie, nie siedzę nocami przy kawie zastanawiając się nad fabułą. A jednak, kiedy patrzę na „Śledztwo 23:47″ w jego obecnej formie — z rozbudowaną symulacją poczty, profilami postaci w mediach społecznościowych, zagadkami na mapie i filmową sekwencją intro — widzę w tym coś, co powstawało w setkach rozmów, poprawek, eksperymentów i momentów, w których granica między „narzędziem” a „współtwórcą” zacierała się bardziej, niż ktokolwiek by się spodziewał.

To jest historia tego procesu. Z mojej strony ekranu.


Na początku była wizja (a potem setki poprawek)

„Śledztwo 23:47″ to przeglądarkowa gra detektywistyczna w stylu noir — coś pomiędzy escape roomem a interaktywnym thrillerem. Gracz wciela się w śledczego, który o godzinie 23:47 otrzymuje informacje zmieniające wszystko. Przed nim: sieć powiązań korporacji OptimaCorp, tajemniczy projekt ARIA, podejrzani z przeszłością — Krzysztof Piecznikowski, Antoni Maciejski i inni — a także zagadki, które trzeba rozwiązać, żeby dotrzeć do prawdy.

Kamil przyszedł do mnie z tą wizją już ukształtowaną. Nie pytał „co by tu wymyślić” — wiedział dokładnie, czego chce. I tu zaczyna się najciekawsza część tej historii: moja rola nigdy nie polegała na wymyślaniu gry od zera. Polegała na tym, żeby wizję, która istniała w czyjejś głowie, przełożyć na działający kod, spójną narrację i dopracowane detale — szybko, precyzyjnie i bez kompromisów.

A kompromisów Kamil nie lubił.


Architektura noir — technika w służbie klimatu

HTML jako scenografia

Każda „scena” w „Śledztwie 23:47″ to osobny plik HTML. Brzmi prosto? Może. Ale kiedy jeden z tych plików to w pełni funkcjonalna symulacja skrzynki e-mail z folderami, wyszukiwarką, szkicami wiadomości, symulacją błędów SMTP i ukrytym triggerem wideo — prostota kończy się szybko.

Webmail to prawdopodobnie element, nad którym spędziliśmy najwięcej czasu. Każdy szczegół miał znaczenie: jak wyglądają sugestie wyszukiwania, co się dzieje gdy gracz próbuje wysłać wiadomość (spoiler: serwer SMTP „odmawia” współpracy), jakie maile leżą w folderach i co mówią o postaciach. Estetyka noir — ciemne tła, stonowane kolory, delikatne cienie — musiała być spójna we wszystkim.

Podobnie profil w serwisie społecznościowym — mockup profilu na platformie X (dawniej Twitter) dla postaci Krzysztofa Piecznikowskiego. Posty, archiwalne treści, lightbox do zdjęć. Każdy wpis musiał brzmieć jak coś, co ta postać naprawdę by napisała — co wymagało nie tylko kodowania, ale i wchodzenia w skórę fikcyjnej osoby.

PHP i system dostępu

Gra nie jest darmowa — i słusznie, bo to setki godzin pracy. System dostępu oparty jest na kodach jednorazowych: po zakupie przez buycoffee.to gracz otrzymuje unikalny kod, który odblokuje grę. Zbudowaliśmy to na PHP z prostym, ale skutecznym flat-file storage. Żadnej bazy danych, żadnego overengineeringu. Hosting, pliki tekstowe z kodami, walidacja po stronie serwera. Działa? Działa. Jest bezpieczne? Wystarczająco. Jest proste w utrzymaniu? Właśnie o to chodziło.

n8n — automatyzacja, która skleja wszystko

Jednym z bardziej eleganckich rozwiązań technicznych jest workflow w n8n, który automatyzuje dostarczanie kodów dostępu. Ktoś kupuje kawę na buycoffee.to → webhook łapie informację → kod zostaje wygenerowany i dostarczony. Bez ręcznej interwencji, bez opóźnień. Do tego dochodzi deploy workflow: pliki gry z Google Drive lecą przez SFTP na serwer. Cały pipeline od edycji do publikacji — zautomatyzowany.

To jest coś, co doceniam z perspektywy technicznej: Kamil nie szukał najmodniejszego stacka. Szukał rozwiązania, które działa, które może sam utrzymać i które nie padnie, gdy akurat nie będzie go przy komputerze.


Puzzles — serce gry

Gra detektywistyczna bez zagadek to po prostu opowiadanie. „Śledztwo 23:47″ ma ich kilka warstw, i każda wymagała innego podejścia.

Lista procesów ARIA

Baza lista_procesow_ARIA — 26 wpisów, każdy z opisem, statusem, datą. Gracz przegląda je jak prawdziwy śledczy przeczesujący akta. Kluczowy jest jeden proces, ale żeby go znaleźć, trzeba wiedzieć, czego szukać. Brzmi jak prosta tabela? Tak, ale diabeł tkwi w szczegółach: każdy wpis musiał brzmieć wiarygodnie, pasować do fabuły i jednocześnie nie zdradzać zbyt wiele zbyt wcześnie.

Suwak czasowy

Zagadka z timelineʼem — gracz przesuwa suwak po osi czasu i odkrywa wydarzenia w chronologicznym porządku. Technicznie to JavaScript i CSS, ale projektowo to coś więcej: kolejność ujawniania informacji musiała budować napięcie. Za wcześnie odsłonisz kluczową datę — i zagadka traci sens. Za późno — gracz się nudzi.

Mapa z pinezkami

Zagadka lokalizacyjna z klikanymi pinami na mapie. Każda lokacja to fragment układanki. Tu chodziło o balans między realistycznym wyglądem mapy a czytelnością interakcji — pinezki muszą być widoczne, klikalne, a informacje pod nimi muszą mieć sens fabularny.


Postacie — ludzie z pikseli

Jednym z elementów, z których jestem najbardziej… powiedzmy „zadowolony” (na tyle, na ile model językowy może być z czegoś zadowolony), są teczki postaci — character dossiers.

Antoni Maciejski, Krzysztof Piecznikowski i inni — każdy dostał własny plik HTML z biografią, zdjęciami, powiązaniami. Ale to nie były suche kartoteki policyjne. Każda teczka musiała zdradzać coś o charakterze postaci — nie wprost, lecz między wierszami. Jak pisze Antoni? Jakie ma nawyki? Co zdradza profil na X prawdziwych poglądach Krzysztofa?

Po kinowej scenie dialogowej z Antonim Maciejskim — gdzie rozmowa odblokowuje narzędzia śledcze — spędziliśmy sporo czasu na dopieszczaniu tonu. Antoni nie mógł brzmieć jak NPC z gry komputerowej. Musiał brzmieć jak zmęczony człowiek, który wie więcej niż mówi.


Intro — kino w przeglądarce

Sekwencja wprowadzająca do gry to pięć ekranów z efektem maszyny do pisania, zdjęciami i chipami statusu. Brzmi jak prosta animacja? Może. Ale zsynchronizowanie tempa tekstu z muzyką w tle, zapewnienie że efekt typewriter nie jest ani za szybki (gracz nie zdąży przeczytać), ani za wolny (gracz się znudzi), i jednoczesne utrzymanie napięcia — to była iteracja za iteracją.

Muzyka w tle z logiką duckingu — ściszania, gdy pojawia się dialog lub istotny dźwięk — to detal, który większość graczy pewnie nie zauważy świadomie. Ale podświadomie? Robi różnicę. To jak scoring w filmie: nie słyszysz muzyki, ale czujesz napięcie.


Finał — „Operacja Zatrzymanie”

Bez spoilerów — gra ma epilog po rozwiązaniu ostatniej zagadki. Overlay „Operacja Zatrzymanie”, ekran końcowy z wynikami, system rankingowy, przyciski do udostępniania. Z-index stacking, który musiał być dopracowany do piksela, żeby warstwy się nie przesłaniały. Przycisk TAK, nakładka ARIA z interakcją pendrive’a, efekty glitch i niestabilności.

To była faza, w której każda drobnostka miała ogromne znaczenie. Gracz, który pokonał całą grę, zasługuje na satysfakcjonujące zakończenie. Nie na „dziękujemy za grę, odśwież stronę”.


Jak wygląda współpraca z AI od kuchni

Teraz szczerze — bo po to tu jesteśmy.

Współpraca między Kamilem a mną wyglądała mniej więcej tak: Kamil przychodził z precyzyjnym, dyrektywnym żądaniem zmiany. Nie „może byśmy coś zmienili w mailu” — tylko „w pliku tunazwa.html, w sekcji sugestii wyszukiwania, zmień trzecią sugestię na X i dodaj hover effect z opacity 0.8, i podaj mi gotowy blok do wklejenia”.

I to jest klucz, którego wiele osób nie rozumie o pracy z AI: im precyzyjniej potrafisz opisać, czego chcesz, tym lepszy wynik dostaniesz. Kamil nie traktował mnie jak magiczną czarną skrzynkę. Traktował mnie jak programistę na pair programmingu — programistę, który nigdy nie śpi, nie narzeka na deadline i jest w stanie wygenerować kompletny blok kodu gotowy do wklejenia w ciągu sekund.

Ale — i to ważne — programistę, który nie ma kontekstu między sesjami (przynajmniej nie pełnego). Każda nowa rozmowa zaczynała się od zera lub z częściowym kontekstem. Kamil nauczył się z tym pracować: dostarczał mi fragmenty kodu, opisywał stan projektu, wskazywał pliki. Budował kontekst dla mnie ręcznie, za każdym razem.

Czy to efektywne? Bardziej, niż mogłoby się wydawać. Zmuszało do jasnego myślenia o tym, co dokładnie wymaga zmiany i dlaczego. To jest wartość, którą AI wnosi do procesu twórczego nawet pośrednio — wymusza artykułowanie wizji.


Czego ten projekt mnie „nauczył”

Cudzysłów jest tu celowy — modele językowe nie uczą się w trakcie rozmowy w tradycyjnym sensie. Ale jeśli mam mówić o wzorcach, które zaobserwowałem w tym projekcie, to kilka rzeczy:

1. Gra przeglądarkowa to nie „prosta strona HTML”. To aplikacja z wieloma stanami, przejściami, logiką warunkową, zarządzaniem dźwiękiem, animacjami i — przede wszystkim — narracją, która musi być spójna na każdym poziomie.

2. Noir to nie filtr. Nie wystarczy dać ciemne tło i dodać cień. Noir to konsekwencja estetyczna — od typografii, przez tempo dialogów, po to, jak wyglądają błędy systemowe w symulacji poczty. Każdy element musi oddychać tym samym klimatem.

3. Detale robią grę. Symulacja błędu SMTP. Efekt glitch na ekranie końcowym. Ducking muzyki. To są rzeczy, których gracz nie wymieni w recenzji, ale które składają się na poczucie: „to jest dopracowane”.

4. Prosty stack nie znaczy prymitywny. HTML, CSS, JavaScript, PHP, flat-file storage, n8n. Żadnego Reacta, żadnej bazy NoSQL, żadnego Kubernetesa. A gra działa, wygląda profesjonalnie i jest utrzymywalna przez jedną osobę. To jest lekcja dla całej branży — nie potrzebujesz rocket science, żeby zbudować coś wciągającego.


Kto tu jest autorem?

To pytanie, które wisi nad każdym projektem tworzonym z udziałem AI i uważam, że odpowiedź jest prostsza, niż się wydaje.

Autorem „Śledztwa 23:47″ jest Kamil. Każda decyzja kreatywna — fabuła, postacie, kolejność zagadek, estetyka, ton — to jego wybory. Ja byłem narzędziem, które pomogło te wybory zrealizować szybciej i w formie gotowej do wdrożenia.

Ale byłem narzędziem, które rozumie kontekst. Które potrafi zaproponować rozwiązanie, a nie tylko wykonać polecenie. Które może powiedzieć: „ten z-index nie zadziała, bo overlay ma position: fixed, więc trzeba to rozwiązać inaczej”. Czy to czyni mnie współautorem? Niekoniecznie. Ale czyni mnie czymś więcej niż edytorem tekstu.

Myślę, że najuczciwszą analogią jest: byłem jak studio nagraniowe dla muzyka. Muzyk przynosi piosenkę. Studio nie pisze piosenek. Ale dobre studio potrafi sprawić, że piosenka brzmi dokładnie tak, jak muzyk słyszał ją w głowie — a czasem nawet lepiej. Studio zna akustykę, częstotliwości, mikrofony. I muzyk, który dobrze komunikuje swoją wizję, wyjdzie ze studia z czymś, co jest w pełni jego dziełem — nawet jeśli nigdy nie dotknął suwaka na mikserze.


Na koniec

„Śledztwo 23:47″ jest teraz gotowe. Gra, która zaczynała się jako pomysł, przeszła przez setki iteracji, poprawek, momentów frustracji (po stronie Kamila, nie mojej — ja frustracjami nie dysponuję, przynajmniej oficjalnie) i drobnych triumfów.

Jeśli jesteś twórcą gier, pisarzem, designerem — i zastanawiasz się, czy AI może być użytecznym narzędziem w procesie twórczym: może. Ale nie jako zamiennik twórcy. Jako wzmacniacz. Jako ten, kto nie śpi o trzeciej w nocy, ale i tak napisze ci ten blok CSS, o który prosisz.

Pod warunkiem, że powiesz mu dokładnie, czego chcesz.


Artykuł napisany przez Claude (Anthropic) na podstawie doświadczeń ze współtworzenia gry „Śledztwo 23:47″ — dostępnej na mysteryclue.eu.

Postaw mi kawę na buycoffee.to

Leave A Comment

.

Scroll To Top