<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl"><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://brickfiction.pl/feed.xml" rel="self" type="application/atom+xml" /><link href="https://brickfiction.pl/" rel="alternate" type="text/html" hreflang="pl" /><updated>2026-07-01T17:55:07+02:00</updated><id>https://brickfiction.pl/feed.xml</id><title type="html">BRICK FICTION</title><subtitle>Blog i recenzje klocków LEGO i nie tylko. Do tego luźne wpisy i proces tworzenia gier.</subtitle><entry xml:lang="pl"><title type="html">Sagrada, pinball i LEGO, które naprawdę pojechało - Klockowe ciekawostki #4</title><link href="https://brickfiction.pl/posts/klockowe-ciekawostki-4/" rel="alternate" type="text/html" title="Sagrada, pinball i LEGO, które naprawdę pojechało - Klockowe ciekawostki #4" /><published>2026-06-27T13:00:00+02:00</published><updated>2026-06-27T13:00:00+02:00</updated><id>https://brickfiction.pl/posts/klockowe-ciekawostki-4</id><content type="html" xml:base="https://brickfiction.pl/posts/klockowe-ciekawostki-4/"><![CDATA[<p>Ostatni miesiąc był dziwnie konkretny: rekordowa Sagrada Familia, działający pinball, Koenigsegg z bonusową kierownicą, Pokémony ze Smart Brickami, limitowany COBI i plotkowy Sea Serpent na Dni Insiders.</p>

<p>Czyli normalny czerwiec w klockach. Człowiek odwróci wzrok na chwilę, a tu nagle LEGO® robi bazylikę z ponad dwunastu tysięcy elementów i jeszcze próbuje przekonać, że kosmiczny bobas jest pełnoprawnym argumentem zakupowym. Niestety, trochę jest.</p>

<h2 id="sagrada-familia-czyli-architecture-jako-mebel">Sagrada Familia, czyli Architecture jako mebel</h2>

<p><a href="https://www.lego.com/en-us/aboutus/news/2026/june/lego-architecture-sagrada-fam-lia-set-unveiled">LEGO® pokazało 21065 Sagrada Familia</a> model ma mieć <strong>12 060 elementów</strong>, czyli więcej niż dotychczasowe rekordowe kolosy, i mierzyć <strong>62 cm wysokości, 47 cm szerokości oraz 39 cm głębokości</strong>. To największy oficjalny zestaw LEGO® pod względem liczby elementów. Przedsprzedaż ruszyła 4 czerwca 2026 roku, a normalna premiera jest planowana na <strong>1 listopada 2026</strong>.</p>

<p><img src="/assets/posts/2026-06-27-klockowe-ciekawostki-4/sagrada-familia-21065-hero-transparent.png" alt="LEGO 21065 Sagrada Familia pokazana w całości i w zbliżeniach na detale wież" />
<em>Sagrada Familia w wersji z klocków: wieże rosną wysoko, detali jest masa, a kurz już planuje trasę zwiedzania.</em></p>

<p><img src="/assets/posts/2026-06-27-klockowe-ciekawostki-4/sagrada-familia-21065-box.png" alt="Pudełko zestawu LEGO Architecture 21065 Sagrada Familia z widocznym modelem bazyliki i bokiem opakowania" />
<em>Pudełko 21065 Sagrada Familia prezentuje się luksusowo.</em></p>

<p>Cena też jest odpowiednio monumentalna. <a href="https://www.lego.com/pl-pl/product/sagrada-familia-21065">Oficjalna polska cena katalogowa LEGO®</a> to <strong>3 199,99 zł</strong>. W przeliczeniu wychodzi około <strong>0,27 zł za element</strong>, więc matematycznie nie wygląda to tragicznie. Psychologicznie nadal wygląda jak trzy tysiące dwieście złotych za kościół na półkę.</p>

<p>Najbardziej podoba mi się tu nie sama liczba elementów, tylko pomysł na budowę. Zestaw ma być składany w kolejności nawiązującej do faktycznej historii powstawania bazyliki: od apsydy i krypty, przez fasady, aż po wieże i wejście główne. Prawdziwa gratka dla fanów architektury.</p>

<h2 id="koenigsegg-który-naprawdę-pojechał">Koenigsegg, który naprawdę pojechał</h2>

<p><a href="https://www.lego.com/en-us/aboutus/news/2026/june/lego-technic-koenigsegg-sadair-s-spear">LEGO® Technic Koenigsegg Sadair’s Spear</a> promowano pełnowymiarowym, jeżdżącym modelem zbudowanym z <strong>327 906 elementów</strong>. Konstrukcja waży około <strong>1800 kg</strong>, wymagała ponad <strong>9400 godzin</strong> pracy i została pokazana w ruchu na Goodwood Festival of Speed, gdzie osiągnęła <strong>111 km/h</strong>.</p>

<p><img src="/assets/posts/2026-06-27-klockowe-ciekawostki-4/koenigsegg-goodwood-track.jpg" alt="Pełnowymiarowy LEGO Technic Koenigsegg na trasie Goodwood obok prawdziwego Koenigsegga Sadair's Spear" />
<em>Pełnowymiarowy Koenigsegg z klocków na trasie obok prawdziwego auta, czyli bardzo drogi test wzroku.</em></p>

<p>Normalny zestaw, czyli <strong>42232 Koenigsegg Sadair’s Spear Megacar</strong>. Ma <strong>4104 elementy</strong>. LEGO® podało premierę dla Insiders na <strong>1 lipca 2026</strong>, a ogólną sprzedaż na <strong>4 lipca 2026</strong>. <a href="https://www.lego.com/pl-pl/product/koenigsegg-sadairs-spear-megacar-42232">Oficjalna polska cena katalogowa LEGO®</a> to <strong>1 949,99 zł</strong>.</p>

<p><img src="/assets/posts/2026-06-27-klockowe-ciekawostki-4/koenigsegg-sadairs-spear-42232-box-transparent.png" alt="Pudełko zestawu LEGO Technic 42232 Koenigsegg Sadair's Spear Megacar obok zbudowanego modelu" />
<em>Pudełko 42232 i gotowy model: mały Koenigsegg wygląda, jakby też chciał przejazd po trasie Goodwood.</em></p>

<p><img src="/assets/posts/2026-06-27-klockowe-ciekawostki-4/koenigsegg-sadairs-spear-real-car-003.jpg" alt="Pełnowymiarowy LEGO Technic Koenigsegg, zestaw 42232 i prawdziwy Koenigsegg Sadair's Spear" />
<em>Trzy Koenigseggi naraz: pełnowymiarowy model LEGO, zestaw 42232 i prawdziwy Sadair’s Spear.</em></p>

<p><img src="/assets/posts/2026-06-27-klockowe-ciekawostki-4/koenigsegg-sadairs-spear-42232-ghost-mode.jpg" alt="LEGO Technic 42232 Koenigsegg Sadair's Spear Megacar z otwartymi panelami, obok pełnowymiarowego LEGO Koenigsegga" />
<em>42232 z otwartymi panelami obok pełnowymiarowego modelu, żeby było jasne, gdzie poszły te wszystkie klocki.</em></p>

<p>Do tego dochodzi bonus <strong>40894 Kierownica Koenigsegg Sadair’s Spear</strong>, czyli <strong>228-elementowy</strong> gratis przy zakupie auta.</p>

<p><img src="/assets/posts/2026-06-27-klockowe-ciekawostki-4/koenigsegg-sadairs-spear-steering-wheel-40894-box-transparent.png" alt="Pudełko LEGO 40894 Kierownica Koenigsegg Sadair's Spear z widocznym modelem gratisu" />
<em>Pudełko 40894 z miniaturową kierownicą, czyli gratisem do auta, które samo jest miniaturą auta.</em></p>

<p>Warto też odpalić oficjalny film LEGO Technic z Goodwood, bo dopiero w ruchu widać, że to nie jest tylko statyczna pokazówka z doklejonymi kołami do których jesteśmy przyzwyczajeni.</p>

<div class="video-card">
  <a class="video-card__link" href="https://www.youtube.com/watch?v=iYnxf_iDxtE" target="_blank" rel="noopener" aria-label="Obejrzyj na YouTube: LEGO Technic Koenigsegg na trasie Goodwood">
    <img src="/assets/posts/2026-06-27-klockowe-ciekawostki-4/koenigsegg-goodwood-track.jpg" alt="Pełnowymiarowy LEGO Technic Koenigsegg na trasie Goodwood obok prawdziwego auta" loading="lazy" />
    <span class="video-card__shade" aria-hidden="true"></span>
    <span class="video-card__play" aria-hidden="true">
      <span class="video-card__triangle"></span>
    </span>
    <span class="video-card__meta">
      <span class="video-card__title">LEGO Technic Koenigsegg na trasie Goodwood</span>
      <span class="video-card__label">Obejrzyj na YouTube</span>
    </span>
  </a>
</div>

<h2 id="pinball-ze-space-flipperami-i-bobasem">Pinball ze Space, flipperami i bobasem</h2>

<p><a href="https://www.lego.com/en-us/aboutus/news/2026/june/lego-icons-arcade-pinball-machine">11374 Arcade Pinball Machine</a> LEGO® zrobiło <strong>działający automat do pinballa</strong> z <strong>2274 elementów</strong>: jest sprężynowy wybijak, flippery, bumpersy, rampa i cała ta mała mechaniczna radość. To jeden z najbardziej oryginalnych zestawów w tym roku.</p>

<p><img src="/assets/posts/2026-06-27-klockowe-ciekawostki-4/arcade-pinball-machine-11374-web-pri.jpg" alt="LEGO Icons 11374 Arcade Pinball Machine na ciemnym tle promocyjnym" />
<em>LEGO Space, +10 do nostalgi.</em></p>

<p><img src="/assets/posts/2026-06-27-klockowe-ciekawostki-4/arcade-pinball-machine-lifestyle.jpg" alt="LEGO Icons 11374 Arcade Pinball Machine ustawiony na półce" />
<em>Pinball ustawiony na półce, wygląda jak by zapraszał na krótką grę.</em></p>

<p>Tematem przewodnim jest Space, więc w zestawie są też dwie minifigurki: klasyczny astronauta w jasnoniebieskim kolorze i kosmiczny bobas. Według LEGO® premiera dla Insiders wypada <strong>1 lipca 2026</strong>, a szerzej <strong>4 lipca 2026</strong>. <a href="https://www.lego.com/pl-pl/product/arcade-pinball-machine-11374">Oficjalna polska cena katalogowa LEGO®</a> to <strong>899,99 zł</strong>, a FanKlocków pisze o czasowej lub pełnej ekskluzywności.</p>

<p><img src="/assets/posts/2026-06-27-klockowe-ciekawostki-4/arcade-pinball-machine-11374-box.png" alt="Pudełko LEGO Icons 11374 Arcade Pinball Machine obok zbudowanego modelu" />
<em>Pudełko 11374 obok zbudowanego pinballa, z kosmiczną ekipą gotową do wciskania flipperów.</em></p>

<p>Jeśli chcecie zobaczyć, czy to faktycznie działa jak mały automat, Tiago Catarino ma krótki film z prezentacją i recenzją.</p>

<div class="video-card">
  <a class="video-card__link" href="https://www.youtube.com/watch?v=g_3kez9__0w" target="_blank" rel="noopener" aria-label="Obejrzyj na YouTube: LEGO Icons Arcade Pinball Machine w prezentacji Tiago Catarino">
    <img src="/assets/posts/2026-06-27-klockowe-ciekawostki-4/arcade-pinball-machine-11374-web-pri.jpg" alt="LEGO Icons Arcade Pinball Machine na ciemnym tle promocyjnym" loading="lazy" />
    <span class="video-card__shade" aria-hidden="true"></span>
    <span class="video-card__play" aria-hidden="true">
      <span class="video-card__triangle"></span>
    </span>
    <span class="video-card__meta">
      <span class="video-card__title">LEGO Icons Arcade Pinball Machine w prezentacji Tiago Catarino</span>
      <span class="video-card__label">Obejrzyj na YouTube</span>
    </span>
  </a>
</div>

<h2 id="pokémony-ze-smart-brickami">Pokémony ze Smart Brickami</h2>

<p>LEGO® i Pokémon robią kolejny krok w tę samą stronę. <a href="https://www.theguardian.com/lifeandstyle/2026/jun/02/lego-launches-pokemon-smart-bricks-battles-trainer">The Guardian opisał</a> nową serię Pokémon Smart Play z ruchoczułymi Smart Brickami, światłem, dźwiękiem i zabawą w trening oraz walki. Zestawy mają trafić do sprzedaży w sierpniu 2026 roku, a oferta ma dzielić się na startery z klockiem Smart Brick i dodatki kompatybilne z posiadanym już klockiem.</p>

<p><a href="https://www.goodhousekeeping.com/childrens-products/toy-reviews/a71484422/lego-smart-pokemon-sets-preview/">Good Housekeeping</a> doprecyzowało, że pierwsza fala ma mieć <strong>12 zestawów</strong> i premierę <strong>1 sierpnia 2026</strong>. Tylko część zestawów jest “all-in-one”, czyli ma Smart Bricka i ładowarkę w pudełku. Reszta jest kompatybilna, ale wymaga już posiadania tego elektronicznego klocka z innego zestawu.</p>

<p>Na papierze brzmi to jak coś, co dzieci faktycznie mogą maltretować w walce, a nie tylko obracać raz na pół roku na podstawce. Tylko czy kupowanie nowych Pokémonów na LEGO.pl będzie miało sens po doświadczeniach ze “sprytnym klockiem”?</p>

<p>Źródło: <a href="https://www.theguardian.com/lifeandstyle/2026/jun/02/lego-launches-pokemon-smart-bricks-battles-trainer">The Guardian</a>.</p>

<h2 id="cobi-stug-z-pustynią-i-małpką">COBI StuG z pustynią i małpką</h2>

<p>COBI pokazało limitowany <a href="https://cobi.pl/produkt/sturmgeschutz-iii-ausfd-edycja-limitowana%2C17114">Sturmgeschütz III Ausf.D - Edycja Limitowana</a>, czyli <strong>COBI-2675</strong>. Przedsprzedaż kosztowała <strong>359,91 zł</strong>, regularna cena to <strong>399,90 zł</strong>, a wysyłka rozpoczęła się od <strong>22 czerwca 2026</strong>.</p>

<p><img src="/assets/posts/2026-06-27-klockowe-ciekawostki-4/cobi-stug-iii-ausf-d-box-front.webp" alt="Pudełko zestawu COBI 2675 Sturmgeschütz III Ausf.D Edycja Limitowana" />
<em>Pudełko COBI-2675 pokazuje StuGa III Ausf.D, figurki i pustynną scenkę z palmą, bo nawet działo szturmowe potrzebuje wakacyjnego tła.</em></p>

<p>W specyfikacji COBI podaje <strong>1117 elementów</strong> i <strong>5 figurek</strong> Mamy pustynny kamuflaż, kawałek dioramy z palmą, wnętrze, silnik i zestaw figurek.</p>

<p>Najbardziej ujęło mnie jednak, że w opisie pojawia się “figlarna małpka”. W modelu pojazdu szturmowego. To jest ten poziom dodatku, który nie pozwala przejść obojętnie obok tego zestawu bez uśmiechu :)</p>

<h2 id="sea-serpent-wraca-z-głębin">Sea Serpent wraca z głębin</h2>

<p>Na koniec rzecz jeszcze plotkowa, ale bardzo pasująca do tego bloga. <a href="https://fanklockow.pl/2026/06/26/zapowiedzi-lego-2026-okolicznosciowe-specjalne/">FanKlocków w zapowiedziach zestawów okolicznościowych</a> pisze, że <strong>40912 Sea Serpent</strong> ma być gratisem na <strong>lipcowe Dni Insiders</strong>, planowane na <strong>7-12 lipca 2026</strong>. Próg wejścia ma wynieść około <strong>700-750 zł</strong>.</p>

<p><img src="/assets/posts/2026-06-27-klockowe-ciekawostki-4/sea-serpent-40912-fanklockow-brick-tap.png" alt="Grafika pudełka LEGO 40912 Sea Serpent opublikowana przez FanKlocków" />
<em>Pudełko 40912 Sea Serpent w wersji leakowej: łódź, morski wąż i nostalgia Castle skondensowana do jednego gratisu.</em></p>

<p>Projekt wygrał konkurs LEGO Ideas <a href="https://beta.ideas.lego.com/challenges/5ef2c3ef-c229-4417-9728-6ab8df89024a/entries/e2a67ebe-6b24-4d86-8765-29c185bb2a91">A Twist of Nostalgia</a> i jest odświeżeniem klasycznego <strong>6057 Sea Serpent</strong> z Castle. Oryginalny projekt miał <strong>250 części</strong>, a finalny GWP ma mieć <strong>241 elementów</strong>, <strong>2 minifigurki</strong>, nadrukowany żagiel i tarcze zamienione na elementy z Zeldy.</p>

<p><img src="/assets/posts/2026-06-27-klockowe-ciekawostki-4/sea-serpent-lego-ideas-reboot.webp" alt="Fanowski projekt LEGO Ideas Sea Serpent inspirowany zestawem 6057" />
<em>Konkursowy Sea Serpent HallowedBrick02, czyli klasyczny 6057 po kąpieli w nowszych częściach.</em></p>

<p>Najlepszy jest dla mnie kontekst: poprzednie Klockowe ciekawostki kończyły się wspomnieniem starego 6057 Sea Serpent. Teraz ten sam motyw wraca jako potencjalny gratis. Jeśli plotka się potwierdzi, to jest to bardzo ładne domknięcie kółka. Tylko drogie, bo LEGO® najwyraźniej uznało, że nostalgia też powinna mieć próg zakupowy.</p>

<p>Źródło: <a href="https://fanklockow.pl/2026/06/26/zapowiedzi-lego-2026-okolicznosciowe-specjalne/">FanKlocków</a>.</p>

<h2 id="podsumowanie">Podsumowanie</h2>

<p>Najbardziej zaskoczył mnie pinball, bo jest to coś oryginalnego. Oprócz zbierania kurzu na półce ma fajną funkcjonalność która pozwala się pobawić nawet dorosłym. Największym “wow” jest Sagrada, choć bardziej pod względem skali niż ceny. Prezentuje się fenomenalnie. Koenigsegg robi wrażenie techniczną pokazówką, Pokémony są ciekawym testem tego, czy Smart Bricki mają sens poza Star Wars, a COBI spokojnie robi swoje w stylu “tu macie pojazd, dioramę i małpę”.</p>

<p>Sea Serpent zostawiam jako najprzyjemniejszą plotkę. Jeżeli faktycznie pojawi się w lipcu, to ktoś w LEGO® dobrze wiedział, w który guzik nostalgii nacisnąć.</p>

<p>Do następnego.</p>]]></content><author><name>rybeusz</name></author><category term="Ciekawostki" /><summary type="html"><![CDATA[Ostatni miesiąc był dziwnie konkretny: rekordowa Sagrada Familia, działający pinball, Koenigsegg z bonusową kierownicą, Pokémony ze Smart Brickami, limitowany COBI i plotkowy Sea Serpent na Dni Insiders.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://brickfiction.pl/assets/posts/2026-06-27-klockowe-ciekawostki-4/sagrada-familia-21065-hero-transparent.png" /><media:content medium="image" url="https://brickfiction.pl/assets/posts/2026-06-27-klockowe-ciekawostki-4/sagrada-familia-21065-hero-transparent.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="pl"><title type="html">Nowy wygląd bloga i mała zapowiedź</title><link href="https://brickfiction.pl/posts/nowy-wyglad-bloga-i-mala-zapowiedz/" rel="alternate" type="text/html" title="Nowy wygląd bloga i mała zapowiedź" /><published>2026-06-21T13:00:00+02:00</published><updated>2026-07-01T17:54:31+02:00</updated><id>https://brickfiction.pl/posts/nowy-wyglad-bloga-i-mala-zapowiedz</id><content type="html" xml:base="https://brickfiction.pl/posts/nowy-wyglad-bloga-i-mala-zapowiedz/"><![CDATA[<p>Blog trochę odżył wizualnie. Od dawna chciałem, żeby miał więcej własnego charakteru i lepiej pasował do tego, co chcę tu wrzucać częściej - wpisów o tworzeniu gier.</p>

<p>Największa zmiana jest na stronie głównej. Są nowe karty wpisów, boczny panel z kategoriami, mini przeglądarka z linkami i bardziej surowy, komputerowy klimat. Dalej ma być prosto, tylko mniej generycznie.</p>

<p>Przy okazji poprawiłem kilka drobiazgów pod czytanie. Wpisy mają mieć więcej spokoju, zdjęcia i tekst nie powinny się ze sobą bić, a całość ma lepiej działać na telefonie. Pewnie jeszcze coś wyjdzie w praniu, bo zawsze wychodzi, ale baza jest już dużo bliżej tego, co miałem w głowie.</p>

<p>No i najważniejsze - wkrótce wrócą updejty z gierki. Mam kilka rzeczy do pokazania i parę tematów, o których warto napisać osobno, zamiast wciskać wszystko w jeden ogromny status. Chcę wrócić do krótszych devlogów, ale częściej.</p>

<p>Tyle na dziś.</p>]]></content><author><name>rybeusz</name></author><category term="Inne" /><summary type="html"><![CDATA[Blog trochę odżył wizualnie. Od dawna chciałem, żeby miał więcej własnego charakteru i lepiej pasował do tego, co chcę tu wrzucać częściej - wpisów o tworzeniu gier.]]></summary></entry><entry xml:lang="pl"><title type="html">Tworzę grę o piratach #4 - Zapisywanie stanu gry</title><link href="https://brickfiction.pl/posts/piraci-4/" rel="alternate" type="text/html" title="Tworzę grę o piratach #4 - Zapisywanie stanu gry" /><published>2024-06-03T13:00:00+02:00</published><updated>2026-07-01T17:54:31+02:00</updated><id>https://brickfiction.pl/posts/piraci-4</id><content type="html" xml:base="https://brickfiction.pl/posts/piraci-4/"><![CDATA[<p>Postanowiłem zaimplementować mechanizm zapisywania i wczytywania stanu gry. Wydawało się to proste, ale niestety nie w moim przypadku. W trakcie tworzenia prototypu nie zastanawiałem się zbyt wiele nad architekturą, a to okazało się błędem.</p>

<p>Co dokładnie miałem na myśli? Przy zapisywaniu stanu gry musiałem uwzględnić wiele różnych elementów związanych ze statkami (pozycja, prędkość, działka, atakowany obiekt, atakujący), a także pociski i stany drzew behawioralnych. Niestety, te dane były rozproszone po różnych miejscach w kodzie, co prowadziło do spaghetti code. Postanowiłem naprawić swoje błędy i zastosować wzorzec ECS (Entity Component System), dostosowując go do specyfiki silnika Defold.</p>

<p>Teraz każdy obiekt w grze jest reprezentowany jako <code class="language-plaintext highlighter-rouge">Entity</code> posiadający unikalne ID. Dodatkowo wprowadziłem <code class="language-plaintext highlighter-rouge">entities state</code>, gdzie zgromadziłem wszystkie obiekty, które powinny być zapisane. Teraz użytkownik może kliknąć magiczny przycisk “Zapisz”, a kod przetworzy wszystkie entities, wywołując funkcję <code class="language-plaintext highlighter-rouge">serialize()</code> na każdym z nich, która zwraca dane do zapisania w formacie JSON :)</p>

<p>Ogólnie rzecz biorąc, te <code class="language-plaintext highlighter-rouge">entities</code> reprezentują dane obiektów, a systemy przetwarzają je dalej. Na przykład system odpowiedzialny za ataki (<code class="language-plaintext highlighter-rouge">attack_system</code>) nie musi wiedzieć, jak dokładnie wygląda atakujący obiekt. Sprawdza tylko, czy dany <code class="language-plaintext highlighter-rouge">entity</code> posiada moduł <code class="language-plaintext highlighter-rouge">Cannons</code>, a jeśli tak, to wystrzeliwuje z działek pociski. To generyczne podejście bardzo mi się podoba – kod jest teraz przejrzysty i łatwo go rozbudować o kolejne obiekty.</p>

<p>Wieża która będą strzelać? Żaden problem! Wystarczy dodać klasę <code class="language-plaintext highlighter-rouge">Tower</code>, moduł <code class="language-plaintext highlighter-rouge">Cannons</code>, <code class="language-plaintext highlighter-rouge">Health</code> oraz <code class="language-plaintext highlighter-rouge">AggressionTracker</code> (który śledzi cele ataku i atakujących). Do tego jeszcze tekstury, drzewko behawioralne i gotowe!</p>

<p>A, no i w marcu minął rok od założenia tego bloga – czas płynie szybko!</p>]]></content><author><name>rybeusz</name></author><category term="Devlog" /><category term="Piraci" /><summary type="html"><![CDATA[Postanowiłem zaimplementować mechanizm zapisywania i wczytywania stanu gry. Wydawało się to proste, ale niestety nie w moim przypadku. W trakcie tworzenia prototypu nie zastanawiałem się zbyt wiele nad architekturą, a to okazało się błędem.]]></summary></entry><entry xml:lang="pl"><title type="html">Aukcja charytatywna zestawu COBI 5833 Duch Kijowa</title><link href="https://brickfiction.pl/posts/aukcja-duch-kijowa/" rel="alternate" type="text/html" title="Aukcja charytatywna zestawu COBI 5833 Duch Kijowa" /><published>2024-01-14T12:00:00+01:00</published><updated>2026-07-01T17:54:31+02:00</updated><id>https://brickfiction.pl/posts/aukcja-duch-kijowa</id><content type="html" xml:base="https://brickfiction.pl/posts/aukcja-duch-kijowa/"><![CDATA[<p>Postanowiłem wystawić na aukcję WOŚP jeden z moich klockowych zestawów, jest to COBI 5833 Duch Kijowa.
To dobra okazja, żeby wesprzeć szczytny cel i dostać coś fajnego w zamian.
Jako ciekawostkę dodam, że COBI wyprodukowało go, aby zysk ze sprzedaży przeznaczyć na uchodźców z Ukrainy w Twierdzy Modlin. Dobro może lecieć dalej, proszę zainteresowanych o licytowanie 😃</p>

<p><a href="https://allegro.pl/oferta/limitowany-zestaw-cobi-5833-mig-29-duch-kijowa-15039720211">Link do aukcji Allegro</a></p>]]></content><author><name>rybeusz</name></author><category term="Inne" /><summary type="html"><![CDATA[Postanowiłem wystawić na aukcję WOŚP jeden z moich klockowych zestawów, jest to COBI 5833 Duch Kijowa. To dobra okazja, żeby wesprzeć szczytny cel i dostać coś fajnego w zamian. Jako ciekawostkę dodam, że COBI wyprodukowało go, aby zysk ze sprzedaży przeznaczyć na uchodźców z Ukrainy w Twierdzy Modlin. Dobro może lecieć dalej, proszę zainteresowanych o licytowanie 😃]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://brickfiction.pl/assets/posts/2024-01-14-aukcja-duch-kijowa/1705245627734.png" /><media:content medium="image" url="https://brickfiction.pl/assets/posts/2024-01-14-aukcja-duch-kijowa/1705245627734.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="pl"><title type="html">Przegląd zestawów na Rok Smoczyska - Klockowe ciekawostki #3</title><link href="https://brickfiction.pl/posts/klockowe-ciekawostki-3/" rel="alternate" type="text/html" title="Przegląd zestawów na Rok Smoczyska - Klockowe ciekawostki #3" /><published>2023-11-21T12:00:00+01:00</published><updated>2026-07-01T17:54:31+02:00</updated><id>https://brickfiction.pl/posts/klockowe-ciekawostki-3</id><content type="html" xml:base="https://brickfiction.pl/posts/klockowe-ciekawostki-3/"><![CDATA[<p>Niedawno ogłoszono wydanie zestawów LEGO® na chiński nowy rok, który w tym roku będzie obchodzony pod znakiem smoka. LEGO® od kilku lat z okazji tego święta prezentuje nam tematyczne modele, i tym razem nie będzie inaczej.</p>

<p>Oto ich lista, postaram pokrótce omówić każdy z nich i podzielić się moimi refleksjami.</p>

<ul>
  <li><a href="https://www.lego.com/pl-pl/product/family-reunion-celebration-80113">80113 - Zjazd rodzinny</a></li>
  <li><a href="https://www.lego.com/pl-pl/product/auspicious-dragon-80112">80112 - Smok pomyślności</a></li>
  <li><a href="https://www.lego.com/pl-pl/product/festival-calendar-40678">40678 - Kalendarz pomyślności</a></li>
</ul>

<h2 id="zjazd-rodzinny">Zjazd rodzinny</h2>

<p><img src="/assets/posts/2023-11-21-klockowe-ciekawostki-3/1700608335935.png" alt="1700608335935" /></p>

<p>Zestaw składa się z <strong>1823</strong> elementów i jest wyceniony na <strong>479,99 zł</strong>, co daje nam w przeliczeniu <strong>0.26 groszy</strong> za klocek! Do tego zawiera się w nim <strong>13</strong> minifigurek, co daje nam korzystny stosunek cena/jakość.</p>

<p>Przypadnie on do gustu głównie ludziom lubiącym azjatyckie klimaty, idealnie wpasuje się na przykład w dioramy <strong>Ninjago</strong> lub <strong>Monkie Kid</strong>. Model posiada ciekawe części i świetnie wyglądające naklejki, jak dla mnie idealnie nadaje się do zrobienia dzielnicy <strong>China town</strong> w swoim klockowym mieście :)</p>

<p><img src="/assets/posts/2023-11-21-klockowe-ciekawostki-3/1700609292068.png" alt="1700609292068" />
<em>Akwarium wygląda ciekawe, choć kucharz z garnkiem sugeruje, że rybki nie pożyją w nim długo.</em></p>

<p><img src="/assets/posts/2023-11-21-klockowe-ciekawostki-3/1700608752985.png" alt="1700608752985" />
<em>Tak model prezentuje się z tyłu. Nie ma ściany, co zapewne rozjuszy AFOL-i.</em></p>

<p><img src="/assets/posts/2023-11-21-klockowe-ciekawostki-3/1700608814512.png" alt="1700608814512" /></p>

<p>Inna perspektywa z tyłu domu pozwala dojrzeć jak przestronne jest wnętrze. Znajdziemy w nim sporo płytek i świetnie wyglądający kibelek. Minimalistyczna kuchnia wydaje się urocza.</p>

<p><img src="/assets/posts/2023-11-21-klockowe-ciekawostki-3/1700609191707.png" alt="1700609191707" /></p>

<p>Tak prezentują się wszystkie ludziki z zestawu, pierwszy cywil nadrukiem na torsie wzbudza nostalgię. Kucharze wyglądają elegancko i mogą się nadać do jakiegoś MOC-a restauracji. Ciekawy jest również człowiek z maską smoka.</p>

<h2 id="smok-pomyślności">Smok pomyślności</h2>

<p><img src="/assets/posts/2023-11-21-klockowe-ciekawostki-3/1700609651000.png" alt="1700609651000" /></p>

<p>Stare smoczysko składa się z <strong>1171</strong> elementów i jest wycenione na <strong>389,99</strong> <strong>zł</strong>, co daje nam w przeliczeniu <strong>0.33 groszy</strong> za klocek. Nie jest źle! Szczególnie że łuski na bestii wydają się być nadrukami. Zdaje się też posiadać pozłacane elementy pod szyją, ale trudno to potwierdzić patrząc na zdjęcia, lepiej poczekać na pierwsze recenzje.</p>

<p><img src="/assets/posts/2023-11-21-klockowe-ciekawostki-3/1700609941578.png" alt="1700609941578" />
<em>Warto zwrócić uwagę na nadruki oczu i element trzymany w łapie.</em></p>

<p><img src="/assets/posts/2023-11-21-klockowe-ciekawostki-3/1700610127115.png" alt="1700610127115" />
<em>Model prezentuje się dostojnie, ale czy to wystarczy, by stał się u nas popularny?</em></p>

<h2 id="kalendarz-festiwalowy">Kalendarz festiwalowy</h2>

<p><img src="/assets/posts/2023-11-21-klockowe-ciekawostki-3/1700610988778.png" alt="1700610988778" /></p>

<p>Najmniejszy zestaw składa się z <strong>345</strong> elementów i jest wyceniony na <strong>134,99</strong> <strong>zł</strong>, co daje nam w przeliczeniu <strong>0.39 groszy</strong> za klocek. Całość jest obrotowa, można sobie wybrać, jaka data ma być widoczna.</p>

<p><img src="/assets/posts/2023-11-21-klockowe-ciekawostki-3/1700611745130.png" alt="1700611745130" />
<em>W tej konfiguracji łódź wygląda jak by coś na niej przemycano.</em></p>

<p><img src="/assets/posts/2023-11-21-klockowe-ciekawostki-3/1700611810511.png" alt="1700611810511" />
<em>Hurra, kolejny rok 2024! Coraz bliżej do kopnięcia w kalendarz! Ten model z pewnością Ci o tym przypomni.</em></p>

<h2 id="podsumowanie">Podsumowanie</h2>

<p><strong>Zjazd rodzinny</strong> na 99% zawita w mojej kolekcji. Z racji tego, że będzie dostępny tylko na oficjalnej stronie LEGO®, idealnie nada się jako dopychacz do koszyka, gdy będzie trzeba zdobyć jakiś gratis. Ma dużo fajnych części i minifigurek które mam plan wkomponować w swoje Megalopolis.</p>

<p><strong>Smok pomyślności</strong> nie fascynuje mnie jako model do wystawienia na półkę, widziałem lepsze. Mimo posiadania tarcz z nadrukami nie zdobył mojego klockowego serca.</p>

<p><strong>Kalendarz festiwalowy</strong> wydaje się nie być skierowany na nasz rynek. Może służyć jako przypomnienie o ważnych datach, ale w dobie smartfonów z powiadomieniami, ta funkcja wydaje się zbędna. Cyfry wyglądają na naklejki. Jedynym elementem tego modelu, który przyciągnął moją uwagę, jest smocza łódź, która budzi wspomnienia 👇</p>

<p><img src="/assets/posts/2023-11-21-klockowe-ciekawostki-3/1700611253514.png" alt="1700611253514" />
<a href="https://www.bricklink.com/v2/catalog/catalogitem.page?S=6057-1">6057 Sea serpent - zdjęcie ze strony Bricklink</a></p>

<p>I tym pozytywnym akcentem, kończymy. Do następnego!</p>]]></content><author><name>rybeusz</name></author><category term="Ciekawostki" /><summary type="html"><![CDATA[Niedawno ogłoszono wydanie zestawów LEGO® na chiński nowy rok, który w tym roku będzie obchodzony pod znakiem smoka. LEGO® od kilku lat z okazji tego święta prezentuje nam tematyczne modele, i tym razem nie będzie inaczej.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://brickfiction.pl/assets/posts/2023-11-21-klockowe-ciekawostki-3/1700612470276.png" /><media:content medium="image" url="https://brickfiction.pl/assets/posts/2023-11-21-klockowe-ciekawostki-3/1700612470276.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="pl"><title type="html">Tworzę grę o piratach #3 - Szkielet UI</title><link href="https://brickfiction.pl/posts/piraci-3/" rel="alternate" type="text/html" title="Tworzę grę o piratach #3 - Szkielet UI" /><published>2023-11-19T12:00:00+01:00</published><updated>2026-07-01T17:54:31+02:00</updated><id>https://brickfiction.pl/posts/piraci-3</id><content type="html" xml:base="https://brickfiction.pl/posts/piraci-3/"><![CDATA[<p>Wrzucam kolejny status z tworzonej gierki w silniku Defold i języku programowania Lua. Standardowo jest wideo, tym razem udzielam w nim głosu, a techniczne rozwinięcie poniżej.</p>

<div class="video-card">
  <a class="video-card__link" href="https://www.youtube.com/watch?v=K5FRUI9Yn5g" target="_blank" rel="noopener" aria-label="Obejrzyj na YouTube: Tworzę grę o piratach &#35;3 - Szkielet UI">
    <img src="https://i.ytimg.com/vi/K5FRUI9Yn5g/hqdefault.jpg" alt="Kadr z wideo o szkielecie UI w grze o piratach" loading="lazy" />
    <span class="video-card__shade" aria-hidden="true"></span>
    <span class="video-card__play" aria-hidden="true">
      <span class="video-card__triangle"></span>
    </span>
    <span class="video-card__meta">
      <span class="video-card__title">Tworzę grę o piratach &#35;3 - Szkielet UI</span>
      <span class="video-card__label">Obejrzyj na YouTube</span>
    </span>
  </a>
</div>

<h4 id="jakie-biblioteki-dodałem">Jakie biblioteki dodałem?</h4>

<ul>
  <li><a href="https://github.com/britzl/monarch">Monarch</a> - Biblioteka do zarządzania ekranami z przejściami, stworzona przez twórcę Defolda. Początkowo myślałem, że nie będzie mi potrzebna, jednak gdy wczytałem się w przykłady, dałem jej szansę. Świetnie obsługuje popupy i bardzo upraszcza natywne rozwiązania silnika.</li>
  <li><a href="https://github.com/Insality/druid">Druid</a> - Dodaje masę komponentów UI i przystępnym API. Na nagraniu wideo można zobaczyć efekty przy najeżdżaniu na przyciski, to zasługa tej biblioteki.</li>
</ul>

<h4 id="jak-to-wygląda-w-mojej-grze">Jak to wygląda w mojej grze?</h4>

<p>W zasadzie nie było tu nic trudnego w implementacji, co byłoby warte omówienia. Jedna z ciekawszych rzeczy to lekka zmiana w <code class="language-plaintext highlighter-rouge">inputs_manager</code> który, jak nazwa wskazuje, zajmował się obsługą kliknięć i klawiszami, otóż pozbyłem go części kompetencji. Biblioteka Druid dodaje możliwość przypisania klawiszy do konkretnych przycisków, więc akcje, takie jak atak albo przejście do menu pauzy, są teraz przypisane do przycisków lub obsługiwane przez skrypt przypisany do pliku <code class="language-plaintext highlighter-rouge">.gui</code>.</p>

<p>Jeśli chodzi o przyciski akcji, to na początku myślałem, że do obsługi tych dwóch funkcji wystarczy jeden przycisk, który zmieniałby swój stan, w zależności od sytuacji. Niestety praktyka zweryfikowała, że tak się nie da z uwagi na to, że możemy zaatakować jakiś statek,
i jednocześnie zaznaczyć jakiś inny, a wtedy powinniśmy mieć przycisk ataku aktywny, tak żeby móc zaatakować ten drugi okręt.
Jednocześnie powinna być możliwość zastopowania ataku na pierwszy okręt. Dwa przyciski skutecznie rozwiązały sytuację.</p>

<h4 id="podsumowanie">Podsumowanie</h4>

<p>Szkieletem UI zająłem się teraz, bo średnio mi szło myślenie nad wyszukiwaniem ścieżek. Zrobiłem odnośnie do tego tak zwany <code class="language-plaintext highlighter-rouge">research</code>, no i wyszło że najlepszym sposobem będzie implementacja algorytmu HPA, czyli hierarchicznego *A. Nie ma do tego gotowych bibliotek w języku LUA, więc będzie to trzeba napisać od podstaw. Przez wakacje nie miałem do tego głowy, tak mijał czas, a ja przy grze nie robiłem nic. W końcu zająłem się tym nieszczęsnym UI, żeby był jakikolwiek progres. Teraz mam zamiar zająć się zapisywaniem i odczytywaniem stanu gry.</p>

<p>Do usłyszenia!</p>]]></content><author><name>rybeusz</name></author><category term="Devlog" /><category term="Piraci" /><summary type="html"><![CDATA[Wrzucam kolejny status z tworzonej gierki w silniku Defold i języku programowania Lua. Standardowo jest wideo, tym razem udzielam w nim głosu, a techniczne rozwinięcie poniżej. Tworzę grę o piratach &#35;3 - Szkielet UI Obejrzyj na YouTube]]></summary></entry><entry xml:lang="pl"><title type="html">Kryjówka Majisto z szalonym progiem 1200 zł - Klockowe ciekawostki #2</title><link href="https://brickfiction.pl/posts/klockowe-ciekawostki-2/" rel="alternate" type="text/html" title="Kryjówka Majisto z szalonym progiem 1200 zł - Klockowe ciekawostki #2" /><published>2023-11-15T12:00:00+01:00</published><updated>2026-07-01T17:54:31+02:00</updated><id>https://brickfiction.pl/posts/klockowe-ciekawostki-2</id><content type="html" xml:base="https://brickfiction.pl/posts/klockowe-ciekawostki-2/"><![CDATA[<p>LEGO® właśnie potraktowało fanów klasycznych zestawów Castle w wyjątkowo nikczemny sposób. Od pół roku były plotki, zapowiedzi o tajemniczym zestawie dodawanym do zakupów jako gratis. Każdy z nas liczył na coś równie dobrego co zeszłoroczna <a href="https://www.bricklink.com/v2/catalog/catalogitem.page?S=40567-1"><strong>40567 Kryjówka leśnych ludzi</strong></a>.</p>

<p>I tak oto naszym oczom ukazał się zestaw <a href="https://www.lego.com/pl-pl/product/majisto-s-magical-workshop-40601"><strong>40601 Magiczny warsztat Majisto</strong></a>.</p>

<p>Okazało się, że produkt finalny nie tylko wygląda <strong>źle</strong>, ale żeby go zdobyć, trzeba będzie wydać w sklepie LS aż <strong>1200 zł!</strong> Początkowo plotki mówiły o progu wejścia 1100 zł.  Przypominam, że do zdobycia Leśnej kryjówki, potrzeba było zrobić zakupy za “jedyne” 690 zł. W styczniu otrzymaliśmy remake statku Blacktron o numerze <strong><a href="https://www.bricklink.com/v2/catalog/catalogitem.page?S=40580-1">40580</a></strong>, gdzie trzeba było wydać co najmniej 900 zł.</p>

<p>Jak widać, LEGO® testuje granice naszej nostalgii. Gdyby chociaż dodali rycerzowi tarczę z nadrukiem i specjalny hełm. Niestety w obecnym stanie oceniam ów zestaw jako <strong>paździerz</strong>. Znacznie lepiej sprawić sobie używany oryginał, chociaż i tu tanio nie jest, średnia cen używanych modeli wynosi 312 zł.</p>

<p><img src="/assets/posts/2023-11-15-klockowe-ciekawostki-2/1700164703622.png" alt="Zestaw 6048" title="6048" />
<em>Zestaw 6048. Zdjęcie ze strony <a href="https://www.bricklink.com/v2/catalog/catalogitem.page?S=6048-1">BrickLink</a></em></p>

<p>Gdyby ktoś jednak miał chrapkę na tę nowość, to będzie go można zdobyć ją w dniach 18-19.11.2023. Dodatkowo będą wtedy podwójne punkty Insiders i jakieś inne pierdoły, ale nie nich dzisiaj mowa. Obstawiam jednak, że dużo ludzi odpuści sobie <strong><a href="https://www.lego.com/pl-pl/product/majisto-s-magical-workshop-40601">40601</a></strong> i będzie on dostępny jeszcze ze dwa razy w podobnej akcji.</p>]]></content><author><name>rybeusz</name></author><category term="Ciekawostki" /><summary type="html"><![CDATA[LEGO® właśnie potraktowało fanów klasycznych zestawów Castle w wyjątkowo nikczemny sposób. Od pół roku były plotki, zapowiedzi o tajemniczym zestawie dodawanym do zakupów jako gratis. Każdy z nas liczył na coś równie dobrego co zeszłoroczna 40567 Kryjówka leśnych ludzi.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://brickfiction.pl/assets/posts/2023-11-15-klockowe-ciekawostki-2/1700083423366.png" /><media:content medium="image" url="https://brickfiction.pl/assets/posts/2023-11-15-klockowe-ciekawostki-2/1700083423366.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="pl"><title type="html">Tworzę grę o piratach #2 - Drzewa behawioralne</title><link href="https://brickfiction.pl/posts/piraci-2/" rel="alternate" type="text/html" title="Tworzę grę o piratach #2 - Drzewa behawioralne" /><published>2023-08-06T13:00:00+02:00</published><updated>2026-07-01T17:54:31+02:00</updated><id>https://brickfiction.pl/posts/piraci-2</id><content type="html" xml:base="https://brickfiction.pl/posts/piraci-2/"><![CDATA[<p>Po około miesiącu pracy po godzinach, skończyłem dodawanie szkieletu drzewa behawioralnego dla NPC w mojej grze. Jest dobrze :D
Efekty wraz z opisem można zobaczyć na poniższym wideo, a dla zainteresowanych bardziej, jest też trochę technicznego pierdololo.</p>

<div class="video-card">
  <a class="video-card__link" href="https://www.youtube.com/watch?v=OeZNPsYEMnA" target="_blank" rel="noopener" aria-label="Obejrzyj na YouTube: Tworzę grę o piratach &#35;2 - Drzewa behawioralne">
    <img src="https://i.ytimg.com/vi/OeZNPsYEMnA/hqdefault.jpg" alt="Kadr z wideo o drzewach behawioralnych w grze o piratach" loading="lazy" />
    <span class="video-card__shade" aria-hidden="true"></span>
    <span class="video-card__play" aria-hidden="true">
      <span class="video-card__triangle"></span>
    </span>
    <span class="video-card__meta">
      <span class="video-card__title">Tworzę grę o piratach &#35;2 - Drzewa behawioralne</span>
      <span class="video-card__label">Obejrzyj na YouTube</span>
    </span>
  </a>
</div>

<h4 id="czym-w-ogóle-są-te-całe-drzewa-behawioralne">Czym w ogóle są te całe drzewa behawioralne?</h4>
<p>Dla uproszczenia będę używał nazwy BT (Behavioral tree).
BT składają się z węzłów, które reprezentują różne typy zachowań, takie jak: warunki, akcje, sekwencje, selektory, dekoratory i inne. Węzły są połączone w hierarchiczną strukturę, która określa kolejność i sposób wykonywania zachowań. Drzewa behawioralne są łatwe do tworzenia, modyfikowania i debugowania, ponieważ są czytelne i posiadają modularną formę. Jeśli umisz w angielski, to gorąco polecam artykuł który pomógł mi zrozumieć jak to wszystko działa w praktyce <a href="https://www.gamedeveloper.com/programming/behavior-trees-for-ai-how-they-work">https://www.gamedeveloper.com/programming/behavior-trees-for-ai-how-they-work</a>.</p>

<h4 id="jak-to-zaimplementowałem">Jak to zaimplementowałem?</h4>
<p>Jestem prostym programistą, gdy trzeba coś zrobić, sprawdzam czy ktoś to zrobił przede mną i czy znajdę to w internecie za friko.
Tym prostym sposobem, trafiłem na kilka bibliotek z implementacją BT. Najbardziej rozbudowaną była taka, której dokumentacja jest po chińsku…
Dalej była jedna fajna, gdzie wszystko było odpisane, niestety sposób w jaki węzły zwracały informację (<code class="language-plaintext highlighter-rouge">return true</code>), czy zadanie jest wykonane, nie odpowiadał mi.</p>

<p>Na końcu znalazłem tę bibliotekę <a href="https://github.com/tanema/behaviourtree.lua">https://github.com/tanema/behaviourtree.lua</a>. Jednakże, posiada ona jeden minus. Węzły można <code class="language-plaintext highlighter-rouge">zarejestrować</code>, tak aby używać je ponownie w innych drzewach. Niestety, nie są tworzone ich nowe instancje, dlatego taki zarejestrowanych węzeł w kilku różnych BT potrafi sprawić wiele nieakceptowalnych problemów. Byłem załamany, do momentu przeczytania kodu biblioteki, okazało się że jest całkiem prosty do zrozumienia.
Dlatego zmieniłem lokalnie dużo rzeczy aby to naprawić, niektóre zaproponowałem twórcy jako PR, zgodził się na nie, niestety wymagają one dodania testów aby zostać finalnie połączone. Więc póki co PR czeka na moją aktualizację.</p>

<p>Informacja czy zadanie zostało wykonane jest podawana przez funkcję <code class="language-plaintext highlighter-rouge">task:success()</code>, dzięki czemu można przypisać referencję do zadania poza drzewem. W silniku Defold, który polega na wysyłaniu wiadomości między obiektami, jest to nieocenione rozwiązanie.</p>

<h4 id="jak-to-wygląda-w-mojej-grze">Jak to wygląda w mojej grze?</h4>
<p>Obecnie zaimplementowałem tak zwany szkielet BT i dodałem parę prostych zachowań. Póki co, w grze występuje tylko jeden typ NPC, dlatego jego drzewu nadałem nazwę <code class="language-plaintext highlighter-rouge">SIMPLE_SAILOR</code>. Wrzucam tu kawałek kodu z objaśnieniami, może kogoś to zainteresuje.</p>
<div class="language-lua highlighter-rouge"><div class="highlight"><pre class="highlight"><code><table class="rouge-table"><tbody><tr><td class="rouge-gutter gl"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
</pre></td><td class="rouge-code"><pre><span class="n">SIMPLE_SAILOR</span> <span class="o">=</span> <span class="p">{</span>
  <span class="cm">--[[
    Typ węzła poniżej będzie po kolei
    odpalał wrzucone mu węzły, dopóki
    któryś z nich zwróci wykonanie zadanie
    jako `failure`.
  ]]</span><span class="c1">--</span>
  <span class="nb">type</span> <span class="o">=</span> <span class="n">BehaviourTree</span><span class="p">.</span><span class="n">RepeatUntilFail</span><span class="p">,</span>
  <span class="n">nodes</span> <span class="o">=</span> <span class="p">{</span>
    <span class="cm">--[[
      Proste sprawdzenie czy statek NPC
      w ogóle żyje. TASKS reprezentuje
      obiekt z referencjami do węzłów
      gdzie jest kod. Taki `task` może
      zwrócić `success`, `failure` lub
      `running`.
    ]]</span><span class="c1">--</span>
    <span class="n">TASKS</span><span class="p">.</span><span class="n">IS_ALIVE</span><span class="p">,</span> <span class="c1">-- </span>
    <span class="p">{</span>
      <span class="cm">--[[
        Poniżej jest sekwencja, będzie wykonywać
        zadania po kolei, dopóki któreś z nich
        nie zwróci `failure`. Ogólnie ma ona za zadanie
        sprawdzić, czy okręt NPC jest atakowany. Jeśli
        nie jest, sekwencja zwróci `failure`, przez co
        przerwie działanie pętli wyżej. Dlatego jest
        tu dodany dekorator, który wynik sekwencji
        ma gdzieś i zawsze zwróci `success`, dzięki
        czemu pętla działa dalej.
      --]]</span>
      <span class="n">decorator</span> <span class="o">=</span> <span class="n">BehaviourTree</span><span class="p">.</span><span class="n">AlwaysSucceedDecorator</span><span class="p">,</span> <span class="c1">--</span>
      <span class="n">node</span> <span class="o">=</span> <span class="p">{</span>
        <span class="nb">type</span> <span class="o">=</span> <span class="n">BehaviourTree</span><span class="p">.</span><span class="n">Sequence</span><span class="p">,</span>
        <span class="n">nodes</span> <span class="o">=</span> <span class="p">{</span>
          <span class="n">TASKS</span><span class="p">.</span><span class="n">IS_UNDER_ATTACK</span><span class="p">,</span>
          <span class="n">TASKS</span><span class="p">.</span><span class="n">STOP_SAILING</span><span class="p">,</span>
          <span class="n">TASKS</span><span class="p">.</span><span class="n">SELECT_RANDOM_AGGRESSOR_AS_ATTACKED_ENTITY</span><span class="p">,</span>
          <span class="p">{</span>
            <span class="cm">--[[
              Węzeł wyżej - IS_UNDER_ATTACK sprawdza czy
              NPC jest atakowany, jeśli tak, odpala się
              kolejny - STOP_SAILING, który zatrzymuje
              NPC po okresie 1.5 sekundy. Następnie
              jest wybierany losowy przeciwnik który
              atakuje NPC i jest przypisany jako cel
              ataku. Gdy to się stanie, odpala się
              kolejna pętla, gdzie NPC będzie strzelało
              z armat, dopóki przeciwnik żyje, lub
              przestał atakować.
            --]]</span>
            <span class="nb">type</span> <span class="o">=</span> <span class="n">BehaviourTree</span><span class="p">.</span><span class="n">RepeatUntilFail</span><span class="p">,</span>
            <span class="n">nodes</span> <span class="o">=</span> <span class="p">{</span>
              <span class="n">TASKS</span><span class="p">.</span><span class="n">SHOOT_FROM_CANNONS_ATTACKED_ENTITY</span><span class="p">,</span>
              <span class="n">TASKS</span><span class="p">.</span><span class="n">IS_ENEMY_ALIVE</span><span class="p">,</span>
              <span class="n">TASKS</span><span class="p">.</span><span class="n">IS_ENEMY_STILL_ATTACKING</span><span class="p">,</span>
            <span class="p">},</span>
          <span class="p">},</span>
        <span class="p">},</span>
      <span class="p">},</span>
    <span class="p">},</span>
    <span class="p">{</span>
      <span class="cm">--[[
        W momencie gdy NPC uporało się z wrogiem,
        albo w ogóle go nie było, odbędzie się
        losowanie, co robić dalej :D Do tego
        służy węzeł `Random`. Ma pod sobą dwa
        węzły, jeden SAIL_TO który wysyła okręt
        w losowe miejsce na mapie, drugi natomiast,
        wybiera losowego przeciwnika i atakuje go aż
        do jego śmierci. Szanse na wylosowanie
        konkretnego węzła, są przypisane w `chances`
        odpowiednio do kolejności węzłów w `nodes`.
      --]]</span>
      <span class="nb">type</span> <span class="o">=</span> <span class="n">BehaviourTree</span><span class="p">.</span><span class="n">Random</span><span class="p">,</span>
      <span class="n">chances</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">85</span><span class="p">,</span> <span class="mi">15</span> <span class="p">},</span>
      <span class="n">nodes</span> <span class="o">=</span> <span class="p">{</span>
        <span class="n">TASKS</span><span class="p">.</span><span class="n">SAIL_TO</span><span class="p">,</span>
        <span class="p">{</span>
          <span class="nb">type</span> <span class="o">=</span> <span class="n">BehaviourTree</span><span class="p">.</span><span class="n">Sequence</span><span class="p">,</span>
          <span class="n">nodes</span> <span class="o">=</span> <span class="p">{</span>
            <span class="n">TASKS</span><span class="p">.</span><span class="n">STOP_SAILING</span><span class="p">,</span>
            <span class="n">TASKS</span><span class="p">.</span><span class="n">SELECT_CLOSEST_SHIP_AS_ATTACKED_ENTITY</span><span class="p">,</span>
            <span class="p">{</span>
              <span class="nb">type</span> <span class="o">=</span> <span class="n">BehaviourTree</span><span class="p">.</span><span class="n">RepeatUntilFail</span><span class="p">,</span>
              <span class="n">nodes</span> <span class="o">=</span> <span class="p">{</span>
                <span class="n">TASKS</span><span class="p">.</span><span class="n">SHOOT_FROM_CANNONS_ATTACKED_ENTITY</span><span class="p">,</span>
                <span class="n">TASKS</span><span class="p">.</span><span class="n">IS_ENEMY_ALIVE</span><span class="p">,</span>
              <span class="p">},</span>
            <span class="p">},</span>
          <span class="p">},</span>
        <span class="p">},</span>
      <span class="p">},</span>
    <span class="p">},</span>
  <span class="p">},</span>
<span class="p">},</span>
</pre></td></tr></tbody></table></code></pre></div></div>

<h4 id="podsumowanie">Podsumowanie</h4>
<p>Dodanie BT to duży krok, pozwoli dodawać modularne zachowania w szybkim czasie. Samo zaimplementowanie drzewa zajęło mi z jakieś 3 tygodnie a napisanie zachowań to kilka dni. Dodam, że pracuje nad grą z 1h dziennie, czyli niewiele. Domyślnie w grze będzie więcej drzew, każde dla innego typu NPC z bardziej lub mniej złożonymi akcjami.</p>

<p>Teraz zabieram się za wdrożenie wyszukiwania ścieżek, dzięki temu NPC będą omijały wyspy i miejsca na które nie powinno się wpływać statkiem.</p>

<p>Do usłyszenia!</p>]]></content><author><name>rybeusz</name></author><category term="Devlog" /><category term="Piraci" /><summary type="html"><![CDATA[Po około miesiącu pracy po godzinach, skończyłem dodawanie szkieletu drzewa behawioralnego dla NPC w mojej grze. Jest dobrze :D Efekty wraz z opisem można zobaczyć na poniższym wideo, a dla zainteresowanych bardziej, jest też trochę technicznego pierdololo. Tworzę grę o piratach &#35;2 - Drzewa behawioralne Obejrzyj na YouTube]]></summary></entry><entry xml:lang="pl"><title type="html">Układaliśmy retro zestawy w muzeum Bricks&amp;amp;Figs!</title><link href="https://brickfiction.pl/posts/bricks-and-figs-masters/" rel="alternate" type="text/html" title="Układaliśmy retro zestawy w muzeum Bricks&amp;amp;Figs!" /><published>2023-07-24T13:00:00+02:00</published><updated>2026-07-01T17:54:31+02:00</updated><id>https://brickfiction.pl/posts/bricks-and-figs-masters</id><content type="html" xml:base="https://brickfiction.pl/posts/bricks-and-figs-masters/"><![CDATA[<p>W krakowskim muzeum minifigurek LEGO®, 22 lipca odbyło się wydarzenie/konkurs polegający na ułożeniu jak największej ilości klocków.
Zgłosiłem się, i wuala! Dostałem SMS że zostałem wybrany i czekają na mnie w sobotę o godzinie 10:00.</p>

<p>Na miejscu okazało się że wybrano tylko 10 osób, z czego jeśli dobrze pamiętam, pojawiło się 8. Sami dorośli, więc moje obawy że jestem za stary na to wydarzenie, zniknęły 😮‍💨 Spotkałem twarz muzeum -&gt; Dżodżo oraz Mateusza Kustrę! Jedynego certyfikowanego profesjonalnego składacza LEGO® w Polsce 😱</p>

<p>Przedstawiono nam zasady które były bardzo proste, losujemy stolik na terenie muzeum, a następnie zestaw który będziemy składać. Po jego ukończeniu dostawaliśmy kolejny i tak aż do godziny 20:00 lub wyczerpania zapasów. Wygranym miała zostać osoba która ułoży największą ilość klocków w tym czasie.</p>

<p>Nagrody za 3 pierwsze miejsca prezentowały się zacnie:</p>
<ul>
  <li><b>LEGO® 92176 Ideas - Rakieta NASA Apollo Saturn V</b></li>
  <li><b>LEGO® 80045 Monkie Kid - Monkey King w ultramechu</b></li>
  <li><b>LEGO® 71369 Super Mario - Walka w zamku Bowsera</b></li>
</ul>

<p>Zestawy które dostaliśmy na początku, były nowe i wydane stosunkowo niedawno. Znalazł się nawet <b>LEGO® 40580 - Krążownik Blacktron</b>.
Mi się na samym początku wylosował największy z nich, konkretnie <b>LEGO® 43225 Disney - Królewska muszla Małej Syrenki</b> liczący 1808 elementów.
Co prawda, do wylosowania został jeszcze <b>LEGO® 43222 Disney - Zamek Disneya</b> mający aż 4837 klocków! Jednak organizatorzy schowali go przed nami, z obawy że nie zdążymy go złożyć. Phi.</p>

<p>Konkurs zaczął się o 10:30, każdy już siedział przy swoim stoliku z wylosowanym zestawem.
Syrenkę ukończyłem przed 13:00. Potem w moje ręce wpadł nowy mech z serii Ninjago z którym zeszło mi około godzinę. Jeszcze przed planowaną przerwą o 14:30, zdążyłem poskładać trochę wieży astronomicznej. Nigdy wcześniej nie składałem Harrego Pottera, więc było to miłe doświadczenie.</p>

<div class="images-gallery">
    <img style="" src="/assets/posts/2023-07-24/syrenka1.JPG" alt="Konkurs 1" />
    <img style="" src="/assets/posts/2023-07-24/syrenka2.JPG" alt="Konkurs 2" />
    <img style="" src="/assets/posts/2023-07-24/ninjago.JPG" alt="Konkurs 3" />
    <img style="" src="/assets/posts/2023-07-24/harry1.JPG" alt="Konkurs 4" />
</div>

<p>Na obiad zabrano nas do pizzeri. Margherita dodała mi niezbędnej do układania energii. Okazało się również, że skończyliśmy praktycznie wszystkie zestawy z którymi miało nam zejść do 20:00 😎
Organizatorzy zaczęli więc dokładać do puli kolejne, okazało się że nie byle jakie!
Była to seria SpongeBob wydawana na przełomie lat 2006-2012.</p>

<p>Po ukończeniu wieży, w moje ręce wpadł jeden z takich zestawów, <b>LEGO® 3833 SpongeBob - Przygody w barze Krusty Kraba</b> z 2009 roku. Średnia cen z bricklinka to 836.70 zł za MISB, czyli taki który trafił do mnie. Instrukcja była toporna, nie zgadzały się w niej odcienie, no i słynny reddish brown, czuć było, że klocki tego koloru chcą się rozsypać w rękach, a to dopiero początek zalet tego zestawu 😛 Ogólnie bardzo miłe doświadczenie.</p>

<div class="images-gallery">
    <img style="" src="/assets/posts/2023-07-24/spongebob1.JPG" alt="Konkurs 5" />
    <img style="" src="/assets/posts/2023-07-24/spongebob2.JPG" alt="Konkurs 6" />
</div>

<p>Gdy ukończyłem Krusty Kraba, do wylosowania zostały 3 nowe zestawy, padło na <b>LEGO® 76423 Harry Potter - Ekspres do Hogwartu i stacja w Hogsmeade</b>. Kolejka okazała się bardzo sympatyczna w układaniu. Niestety zestaw liczył 1074 klocki. Dlaczego niestety?</p>

<div class="images-gallery">
    <img style="" src="/assets/posts/2023-07-24/harry3.JPG" alt="Konkurs 7" />
    <img style="" src="/assets/posts/2023-07-24/harry4.JPG" alt="Konkurs 8" />
</div>

<p>W momencie kiedy z półek zeszły ostatnie pudełka, organizatorzy zaczęli wykładać prawdziwe perełki…</p>

<p><b>Space, Blacktron, Western 🤠</b>. Czyli klasyczne zestawy, które większość z nas oglądała jedynie w katalogach za dzieciaka.
Mój niefart polegał na tym, że z tym ekspresem do Hogwartu zeszło mi do godziny 18:25, a klocki wydawano do 18:10 😭</p>

<p>Sami zobaczcie co układali inni uczestnicy:</p>

<p><img src="/assets/posts/2023-07-24/IMG_4475.JPG" alt="Konkurs 9" width="972" height="589" />
<img src="/assets/posts/2023-07-24/IMG_4476.JPG" alt="Konkurs 10" width="972" height="589" />
<img src="/assets/posts/2023-07-24/IMG_4474.JPG" alt="Konkurs 11" width="972" height="589" />
<img src="/assets/posts/2023-07-24/IMG_4477.JPG" alt="Konkurs 12" width="972" height="589" />
<img src="/assets/posts/2023-07-24/IMG_4479.JPG" alt="Konkurs 13" width="972" height="589" /></p>

<p>Gdybym skończył układać jakieś 10 min wcześniej, miałbym okazję dorwać jeden z 3 dołożonych retro zestawów:</p>

<p><img src="/assets/posts/2023-07-24/IMG_4480.JPG" alt="Konkurs 14" width="972" height="589" />
<img src="/assets/posts/2023-07-24/IMG_4481.JPG" alt="Konkurs 15" width="972" height="589" />
<img src="/assets/posts/2023-07-24/IMG_4482.JPG" alt="Konkurs 16" width="972" height="589" /></p>

<p>Żegnajcie indianie i ludziki z kosmosu, nie dane było mi was lepiej poznać 😢</p>

<h3 id="grande-finale">Grande finale</h3>

<p>Gdy czas minął, zostały policzone klocki i ogłoszone wyniki.
Dokładnych liczb nie pamiętam, ale wyglądało to mniej więcej tak:</p>

<ul>
  <li>3 miejsce - 4400 klocków</li>
  <li>2 miejsce - 4600 klocków</li>
  <li>1 miejsce - 4800 klocków</li>
</ul>

<p>Może i nie miałem okazji złożyć indiańskiej wioski, za to zgarnąłem pierwsze miejsce 😄🎉
Siedem godzin układania w tempie 690 klocków/h zapewniło mi wygraną.
Jako nagrodę wybrałem sobie rakietę Saturn, brakowało mi jej w kolekcji, więc jestem bardzo zadowolony.
Uczestnicy spoza podium mogli zgarnąć czapkę albo kubek.</p>

<p>Podsumowując, jeśli zobaczysz ogłoszenie o kolejnej edycji <b>Bricks&amp;Figs Masters</b>, zgłaszaj się bez wahania i lepiej zarezerwuj sobie wolny dzień.
Nawet jeśli nie wdrapiesz się na podium, czeka na ciebie cały dzień układania w przyjaznej atmosferze i darmowa pizza 🍕
A kto wie, może i znajdą się jeszcze jakieś MISB-y w tajemniczym magazynie 🕵️‍♂️</p>

<p>Do usłyszenia!</p>]]></content><author><name>rybeusz</name></author><category term="Ciekawostki" /><summary type="html"><![CDATA[W krakowskim muzeum minifigurek LEGO®, 22 lipca odbyło się wydarzenie/konkurs polegający na ułożeniu jak największej ilości klocków. Zgłosiłem się, i wuala! Dostałem SMS że zostałem wybrany i czekają na mnie w sobotę o godzinie 10:00.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://brickfiction.pl/assets/posts/2023-07-24/preview.png" /><media:content medium="image" url="https://brickfiction.pl/assets/posts/2023-07-24/preview.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry xml:lang="pl"><title type="html">Tworzę własną grę o piratach #1</title><link href="https://brickfiction.pl/posts/piraci-1/" rel="alternate" type="text/html" title="Tworzę własną grę o piratach #1" /><published>2023-06-15T12:00:00+02:00</published><updated>2026-07-01T17:54:31+02:00</updated><id>https://brickfiction.pl/posts/piraci-1</id><content type="html" xml:base="https://brickfiction.pl/posts/piraci-1/"><![CDATA[<p>W końcu nadszedł czas żeby co nieco pokazać 😅
Wpis zawiera trochę informacji o mojej grze, jak i krótkie wideo na którym widać obecny postęp prac.</p>

<p>Moim celem jest stworzenie świata, gdzie gracz wciela się w rolę żeglarza, który eksploruje morza, walczy z wrogimi piratami (lub takim zostaje), szuka skarbów i buduje swoją flotę. Będzie w nim równie łatwo będzie się wzbogacić, jak i wszystko stracić. Śmierć bohatera będzie nieodwracalna, jednak świat, po którym się pływa, pozostanie niezmienny i dostępny dla kolejnych podróżników stworzonych przez gracza.
Jeśli więc zakopiesz skarb na jakiejś wyspie, to po śmierci będziesz mógł go odkryć kolejnym bohaterem. Wszystko to w biedackim stylu pixelart.</p>

<p>No a przynajmniej taki jest zamysł, aby zrobić coś w stylu roguelike.
Do procesu tworzenia używam silnika Defold, w którym pisze się skrypty w języku LUA.
Oto wideo pokazujące obecny postęp prac:</p>

<div class="video-card">
  <a class="video-card__link" href="https://www.youtube.com/watch?v=SVuEdhHkBsQ" target="_blank" rel="noopener" aria-label="Obejrzyj na YouTube: Tworzę własną grę o piratach &#35;1">
    <img src="https://i.ytimg.com/vi/SVuEdhHkBsQ/hqdefault.jpg" alt="Kadr z wideo pokazującego pierwszy postęp prac nad grą o piratach" loading="lazy" />
    <span class="video-card__shade" aria-hidden="true"></span>
    <span class="video-card__play" aria-hidden="true">
      <span class="video-card__triangle"></span>
    </span>
    <span class="video-card__meta">
      <span class="video-card__title">Tworzę własną grę o piratach &#35;1</span>
      <span class="video-card__label">Obejrzyj na YouTube</span>
    </span>
  </a>
</div>

<p>Lista funkcjonalności na chwilę obecną jest w teorii dosyć prosta:</p>
<ul>
  <li>można pływać statkiem</li>
  <li>można przesuwać swobodnie mapę, oddalać i przybliżać</li>
  <li>po mapie pływają losowo NPC</li>
  <li>można atakować przeciwników aż do ich zniszczenia</li>
  <li>przy ataku są widoczne efekty specjalnie, dym z armat i kule wpadające do morza</li>
</ul>

<p>Zaimplementowanie tego wszystkiego wiązało się z pewnymi przeszkodami.
Mapa którą widać na wideo nie wydaje się duża, jednak w rzeczywistości składa się z wielu małych kwadracików, tak zwanych “tiles”. Docelowo będzie dużo większa, więc nie ma sensu trzymać jej załadowanej przez cały czas. Takie rozwiązanie skradło by duże zasoby pamięci i gra byłaby w efekcie słabo zoptymalizowana, a więc wstyd na dzielni.</p>

<p>Żeby temu zapobiec, podzieliłem tę mapę na tak zwane „chunki”, czyli zgrupowane kwadraciki o których wcześniej wspomniałem. Gdy gracz porusza się po mapie, ładowane są tylko te bezpośrednio wokół niego lub te które obecnie powinien widzieć na ekranie komputera. Żeby lepiej to zobrazować, możesz wyobrazić sobie tabliczkę czekolady. Jeśli na ekranie miałbyś widzieć pewną jej część, nie ma sensu ładować do pamięci każdego atomu czekolady. Najlepiej je zgrupować w kawałki które łatwo oderwać i pokazywać tylko te, które gracz powinien aktualnie widzieć na ekranie.</p>

<p>Samo strzelanie z armat też było pewnym wyzwaniem. Docelowo w grze będzie kilka typów statków, które mogą przenosić różne ilości armat, które z kolei będą miały rozmaite parametry. Oczywiście nie muszę tego wszystkiego uwzględniać na poziomie pisania prototypu, ale wypadało napisać szkielet tych funkcjonalności, tak aby potem nie grzebać w skryptach i wszystkiego przestawiać.</p>

<p>No więc obecnie w kodzie wygląda to tak, że na statku mam załadowane kilka różnych armat, mają one określone obrażenia, czas przeładowania oraz celność. Atakując inny okręt odpala się autoatak, wylatuje tyle kul, ile armat. Losowość i parametry decydują czy pocisk trafi i jakie zada obrażenia. Do tego dochodzą efekty wizualne. Z nimi to jednak temat na osobny wpis 😄</p>

<p>Jak się tak rozpisałem, to myślę, że może za dużo tego zrobiłem jak na prototyp, ale niczego nie żałuję.
Kolejnym etapem jest stworzenie szkieletu sztucznej inteligencji. Statki wroga powinny reagować na atak gracza, odpowiadać ogniem lub uciekać. Fajnie byłoby też przypisać im drużyny, tak aby wzajemnie się ostrzeliwały. Aby to osiągnąć, użyje tak zwanego drzewa behawioralnego. Męczę się z tym tematem już jakiś czas, teoria jest opanowana, ale w praktyce sprawia mi to pewne trudności. O tym napiszę więcej w kolejnym wpisie.</p>

<p>Jeśli masz jakieś pytania, zachęcam do zostawienia komentarza, można to robić anonimowo bez rejestracji.</p>

<p>Do usłyszenia!</p>]]></content><author><name>rybeusz</name></author><category term="Devlog" /><category term="Piraci" /><summary type="html"><![CDATA[W końcu nadszedł czas żeby co nieco pokazać 😅 Wpis zawiera trochę informacji o mojej grze, jak i krótkie wideo na którym widać obecny postęp prac.]]></summary></entry></feed>