Przejdź do treści
pikselarnia
Menu
zniwowo-1-pomysl/okladka.webp
Okładka wpisu: napis Devlog Żniwowo, Część 1 na ciemnym polu, a w rogu czerwony kombajn nocą z reflektorami oświetlającymi zboże.

Od pomysłu do koncepcji

· 6 min czytania

Pod wpisami o moich grach często pada pytanie, jak się je robi, czy to trudne i ile to trwa, więc zamiast odpowiadać w komentarzach pokażę to tutaj, krok po kroku, na przykładzie nowej gry, nad którą właśnie pracuję. Buduję ją z pomocą agentów AI (programów, które na podstawie opisu same piszą kod, uruchamiają go i sprawdzają wynik), dzięki którym praca idzie dużo szybciej, ale nie jest tak, że wystarczy jedno polecenie „zrób mi grę” i gotowe: każdy etap wymaga decyzji i wiąże się z jakimś ryzykiem, a czasem trzeba się z czegoś wycofać.

Gry z pomocą AI nie robi się jednym poleceniem, tylko serią decyzji, poprawek i zleceń dla agentów, a każde zlecenie kosztuje.

Na początku był sam pomysł

Punkt wyjścia był prosty: stary czerwony kombajn, pole zboża widziane z góry i żniwa, które trzeba skończyć, zanim opadnie rosa, zapadnie zmrok albo spadnie deszcz. Gra nazywa się Żniwowo (w pierwszych dokumentach miała jeszcze roboczą nazwę Kombajn), a jej strona, zniwowo.pl (otwiera się w nowej karcie), na razie tylko ją zapowiada.

Sam pomysł zmieścił się w kilku zdaniach: kombajn kosi zboże, a przeszkadza mu w tym kilka rzeczy.

  • Światło:w dzień widać wszystko, pod wieczór coraz mniej szczegółów, w nocy prawie nic.
  • Wilgotność:zboże kosi się inaczej, kiedy jest mokre, i inaczej, kiedy jest suche.
  • Kamienie:leżą w zbożu, a kiedy na któryś najedziesz, psujesz coś w maszynie i tracisz czas albo punkty.
  • Bociany:stoją w polu, ale na początku nie było wiadomo, jaką rolę miałyby odgrywać w grze.

Pomysł zostawiał też sporo miejsca na kolejne, a ja od początku zakładałem większą grę (taką jak Zenogród (otwiera się w nowej karcie) czy Grodowo (otwiera się w nowej karcie), z prawdziwym menu i własną domeną). Taką grę warto zbudować na kodzie Zenogrodu, bo koszenie już tam działa.

Najpierw koncepcja, potem kod

Z takiego pomysłu łatwo zrobić grę, która będzie tylko dobrze wyglądała, ale w którą nie będzie się chciało grać, dlatego zanim powstała pierwsza linijka kodu, poprosiłem agenta AI, żeby na podstawie pomysłu rozpisał koncepcję gry. To dokument, w którym jest opisane, o co w grze chodzi, na jakich zasadach się opiera, jak działa każdy mechanizm (światło, wilgotność, kamienie, bociany, zbiornik na ziarno) i czym gra ma nie być.

Dwie z pięciu zasad, które agent zapisał w koncepcji, opisują, co w tej grze ma być trudne. Według jednej z nich presja ma się brać z czasu, nie z kar: przegrana oznacza pole skoszone do połowy i ziarno sprzedane taniej, a nigdy ekran z napisem „koniec gry”. Druga dotyczy uczciwości: nic nie może się zepsuć bez ostrzeżenia, które gracz mógł zauważyć (w dzień kamień widać jako przerwę w zbożu albo błysk, o zmierzchu coraz trudniej go dostrzec, a w nocy widać go tylko w świetle reflektorów). Ciemność ma odbierać graczowi informacje, ale nie kontrolę nad maszyną.

koncepcja.html

Pillars

  • Cutting feels good on its own. Before any pressure is added, driving the combine through grain and leaving stripes must be a pleasure, as it is in Zenogród. Every other feature is built on top of that and the first milestone tests nothing else (M0).
  • Pressure comes from time, not from punishment. The day ends, the dew comes, the rain comes. Losing means a field half done and grain sold for less, never a game over screen.
  • Everything can be read before it hurts. A stone shows in the crop as a gap or a glint in daylight; dusk makes it harder to read, and night hides it unless the lights fall on it. Moisture is shown as a number and in the crop's colour. Nothing breaks without a warning the player could have seen. Darkness takes information away, never control.
  • One machine, one job. You are the village's combine operator, not a farmer: no sowing, no animals, no farm to run. That keeps the game a driving game and stops it turning into a farming simulator.
  • Phone and computer. Steering by dragging, like Zenogród, plus two or three buttons (header up, unload, lights). Sessions of one day each, ten to fifteen minutes, saved at any moment.
Fragment pierwszej wersji koncepcji: pięć zasad, na których opiera się gra. Dokumenty projektu prowadzę po angielsku, a wszystko, co widzi gracz, jest po polsku.

Mała gra na jeden przycisk czy pełna gra?

Pierwsze ważne pytanie dotyczyło skali. Zrobiłem już kilka małych gier na jeden przycisk, w których rozgrywka trwa około minuty, a gracz w kółko podejmuje tę samą decyzję (na przykład Dźwig i Latarnik, w które można zagrać tutaj, na Pikselarni). Zakładałem, że Żniwowo będzie czymś większym, a agent rozpisał w koncepcji, dlaczego to ma sens:

  1. Kombajnem jeździ się po całym polu, w dwóch wymiarach, tak jak kosiarką w Zenogrodzie, więc jeden przycisk by tu nie wystarczył.
  2. Przyjemność jest ta sama co w Zenogrodzie (zarośnięta powierzchnia zamienia się w równe pasy), a żeby ją poczuć, potrzeba kilku minut na jedno pole.
  3. Każdy pomysł z listy to osobny mechanizm, który wpływa na pozostałe: wilgotność zależy od pory dnia, a to, czy najedziesz na kamień, zależy od tego, jak dobrze go widać.
  4. Wilgotność i ciemność mają znaczenie tylko wtedy, gdy trzeba wybrać, kiedy pracować, a taki wybór ma sens dopiero wtedy, gdy liczy się też to, co będzie następnego dnia (prognoza pogody, kolejne zamówione pole albo koniec sezonu).

Zdecydowałem, że to będzie pełna gra, z menu, trybami i zapisem postępu, a według koncepcji ma to być gra osobna, nie kolejny tryb w Zenogrodzie. Zenogród obiecuje graczowi, że nie ma w nim punktów, limitu czasu ani przegranej, i właśnie na tej obietnicy opiera się cała ta gra. W Żniwowie prawie każdy mechanizm to presja, więc nowa gra bierze z Zenogrodu kod, ale nie zasady.

koncepcja.html

Verdict: a full game, not a Drobne one

This is a full game, a sibling of Zenogród, and it should be planned as one. The reasons, in the order they decide it:

  1. The control is steering on a plane. A Drobne game is one button and one repeated decision over 30 to 90 seconds, on a ray-cast scene (drobne). Harvesting is driving a machine across a field in two dimensions: that is Zenogród's control, and it cannot be squeezed into one button without losing the thing itself.
  2. A field takes minutes. The pleasure is the same as Zenogród's, a shaggy surface turned into neat stripes, and it needs a few minutes per field to land. A Drobne run is a minute.
  3. Every feature on the list is a system. The day's light, the crop's moisture, hidden stones with damage and repair, storks that move, the grain tank: each is a model with state that the others read. Five interacting systems are a game with a campaign, not a toy.
  4. The features need a reason to come back. Moisture and darkness only matter if there is a choice about when to work, and that choice only matters if tomorrow exists: a forecast, a booked field waiting, a season ending. That is a campaign layer, which a small game does not have.

Built from Zenogród's code, but its own game with its own domain. Not a mode inside Zenogród: Zenogród's promise is no score, no timer and no way to fail, and every feature here is pressure. Putting them in the same game would break the one promise that makes Zenogród work. What carries over is the code (the cut grid, the stripes, the steering, the renderer, the sound, the site), copied and then owned, as every game here does (lineage). See Plan: reuse.

Zenogród with a clock. The one-line pitch for anyone who knows the sibling: the same satisfying stripes, but now the grain has to be in before the dew, the dark and the rain, and the field hides things.

Werdykt z koncepcji: pełna gra, nie mała, z czterema powodami i jednym zdaniem dla kogoś, kto zna Zenogród (te same pasy, tylko z zegarem). Drobne to nazwa, pod którą w dokumentach występują moje gry na jeden przycisk.
Zrzut ekranu z gry Zenogród: częściowo skoszony trawnik w pasy, rabaty kwiatowe, jabłoń, krasnal ogrodowy i śpiący kot.GraZenogródKosisz zarośnięty trawnik i zostawiasz za sobą równe pasy. Bez punktów, bez limitu czasu i bez przegranej.zenogrod.plZagraj(otwiera się w nowej karcie)

Czym ta gra ma nie być

Od razu było też jasne, że grasz nie rolnikiem, tylko kombajnistą, który kosi pola całej wsi (sąsiedzi zamawiają u Ciebie żniwa, a Ty jeździsz od jednego pola do drugiego), więc nie ma tu siania, zwierząt ani prowadzenia gospodarstwa. Takie granice są ważne, bo gra łatwo się rozrasta, a każdy dodatek to kolejne zlecenia dla agentów, kolejne błędy do poprawienia i kolejne koszty. Pomysły, które pojawiły się przy okazji i nie dotyczą samej jazdy kombajnem, trafiły na osobną listę „może kiedyś” (koncepcja wymienia je tylko po to, żeby niczego z góry nie wykluczyć, i żaden z nich nie jest zaplanowany).

Najważniejszy sprawdzian

Pierwsza zasada koncepcji brzmi tak: koszenie ma sprawiać przyjemność samo w sobie, zanim do gry trafi jakakolwiek presja, a każdy kolejny mechanizm ma się opierać właśnie na koszeniu. Najbardziej interesuje mnie bardzo proste pytanie: czy pięć minut samego koszenia pola na telefonie, bez nocy, kamieni i bocianów, sprawia przyjemność, bo jeśli nie, żaden kolejny mechanizm tego nie naprawi.

Na tym etapie nie znałem jeszcze odpowiedzi, bo gra nie miała ani jednej linijki kodu, tylko dokument, w którym pomysł zamienił się w zasady i mechanizmy, ale... wiedziałem już, od jakiego pytania zacząć.

Przy tej grze korzystam z agentów AI w Claude Code (otwiera się w nowej karcie), narzędziu do programowania firmy Anthropic.

DevlogSeria: Żniwowo

  1. Część 1Od pomysłu do koncepcjiCzytasz teraz
  2. Część 2Plan, zanim powstał kod
  3. Część 3Pierwsze rysunki
  4. Część 4Kolejny wpis już wkrótce