Kolejna recenzja kolejnej przeczytanej książki 🔔! Sięgnąłem po raz drugi po lekturę dotyczącą silnika "Unity" i tak oto masz przed sobą pełną oraz (mam nadzieję) rzetelną recenzję lektury "Unity na start! Programowanie dla nastolatków" ❤️! Usiądź sobie wygodnie na czymkolwiek i dowiedz się jak odbieram wspomniany tytuł stworzony zarówno dla dzieci, jak i rodziców 😉!
RECENZJA KSIĄŻKI "UNITY NA START! PROGRAMOWANIE DLA NASTOLATKÓW"
Zaraz sobie wyjaśnimy czy rzeczywiście książka "Unity na start! Programowanie dla nastolatków" jest dobra na start 😄, lecz w pierwszej kolejności pójdzie ta sama treść celem jasnego określenia mojego zamiaru 👇:
Recenzując książkę autorstwa Pana Jacka Rossa oraz Ksawerego Rossa i prezentując swoje zdanie na jej temat, nie leżało w mojej intencji żadne złośliwe wytykanie błędów. Jedynym moim celem publikacji recenzji było przedstawienie swojej opinii oraz sprostowanie pewnych przytoczonych treści, aby ewentualne ponowne wydanie książki było pozbawione wskazanych błędów, jeśli faktycznie takimi są (bo sam mogę się mylić!).
A teraz do recenzji ▶️!
Dzieło jest już drugim przeze mnie przeczytanym z rzędu, który napisał Pan Jacek Ross ℹ️. Książka wyróżnia się od innych sposobem przekazu informacji, tak aby zrozumiał i opanował je każdy czytelnik, niezależnie od wieku. Uwzględniono 2 punkty widzenia, gdyby lekturę trzymał w rękach rodzic lub podopieczny 👍.
Z CZEGO SKŁADA SIĘ KSIĄŻKA "UNITY NA START! PROGRAMOWANIE DLA NASTOLATKÓW"?
Ujmując w olbrzymim skrócie, książka jest pół-podręcznikiem, pół-powieścią. Co każdy rozdział mamy coś w rodzaju wątku fabularnego (pojawia się narrator i są dialogi), a później są kroki do wykonania jeden po drugim ujęte już bardziej formalnie co należy zrobić 📜. Całość kręci się wokół projektowania zabawnego projektu, w którym gracz steruje hamburgerem 🍔 i strzela pysznym mięskiem 🥩 w zdrowe warzywa 🤣. A to wszystko przy pomocy znakomitego pakietu opracowanego przez samych twórców "Unity", "Unity Playground" - on pozwala na tworzenie powiązań pomiędzy obiektami bez dotykania kodu źródłowego 🏆!
Co zatem znajdziesz w książce "Unity na start! Programowanie dla nastolatków" 👇?
- jak rozpocząć przygotowania do rozpoczęcia prac nad grą (podstawy planowania),
- jak pobrać pakiet "Unity Playground" i wgrać go do projektu,
- skąd możesz pobrać dobrej jakości grafiki do gry oraz dlaczego tak ważne jest zwracanie uwagi na licencję i prawa autorskie,
- jak umieszczać obiekty na scenie i jak manipulować ich właściwościami,
- w jaki sposób określać kolejność rysowania przecinających się między sobą obiektów,
- jak dodawać sterowanie do obiektu jakim ma kierować gracz przy pomocy klawiatury,
- jak stworzyć zachowanie wrogów poruszających się po ścieżce, które ma na celu utrudnienie gry,
- w jaki sposób utworzyć eksplozje po kontakcie z wrogiem bądź po jego zniszczeniu,
- jak dodać strzelanie wołowiną przez burgera 😄,
- jak sprawić, aby wrogowie pojawiali się na scenie dynamicznie ("spawnowali się").
i parę innych zagadnień 📖.
Wszystko jest ładnie opisane i przedstawione od A do Z - od zbierania zasobów do gry z domeny publicznej, przez tworzenie interakcji pomiędzy obiektami przy użyciu "Unity Playground" z gotowymi skryptami (zmodyfikowanymi lub od nowa przygotowanymi przez autora 🙂), aż do utworzenia walki z bossem razem z przejściem do następnego poziomu 😇. A na deser jest prezentacja budowy gry na system Windows, także treść tej książki na pewno nie należy do ubogich 💛.
Całość wieńczy słowniczek pojęć, które znajdują się w fabule opisującej dyskusję pomiędzy ojcem a synem, kilkanaście pytań i odpowiedzi na styl FAQ (najczęściej zadawane pytania) oraz lista kodów źródłowych (część stanowi zmodyfikowane komponenty "Unity Playground", a część została napisana od początku) ✅.
Poznasz także parę porad jak się uczyć tworzenia gier (które są zawarte w finalnym rozdziale) oraz szczegóły pakietu "Unity Playground", więc jeżeli chcesz postawić pierwszy krok w kierunku tworzenia gier, to może to być dobra pozycja dla Ciebie 😊. Choć jak to w każdej lekturze, pojawiło się wiele "ale" 😳.
Startujemy z ujawnianiem błędów lektury "Unity na start! Programowanie dla nastolatków" 😄!
JAKIE WADY MA KSIĄŻKA "UNITY NA START! PROGRAMOWANIE DLA NASTOLATKÓW"?
Niestety tutaj znalazło się całkiem sporo "chochlików" mogących popsuć przyjemność ze studiowania tej lektury ⛔. Są literówki, pomieszanie spolszczonych nazw z oryginalnymi jakie możesz znaleźć w edytorze "Unity" i takie tam, natomiast są o wiele poważniejsze kwestie, o których piszę niżej 😟. To, czy nazwy komponentów potraktować jak błędy, może być do dyskusji, ponieważ w "Unity" komponenty skryptowe przyjmują obie formy nazw ℹ️. W plikach zasobów (ang. assets) nazwy trzymają się konwencji "PascalCase", a jako komponent w menu inspektora słowa są już oddzielane spacją.
Natomiast to nie o tym 🙂.
ZŁE PODEJŚCIE DO SKALOWANIA
Strona #52 dała mi do myślenia 🧠. Mowa o skalowaniu obiektu robiącego za niewidzialną ścianę, na którą nałożono komponent "BoxCollider2D" ℹ️. Zastanowiło mnie po co skalować cały obiekt, jak wystarczy tylko zmienić rozmiar samego wykrywacza kolizji (atrybut "Size") 🤔? Gdyby nałożyło się jakąś grafikę, to raczej dostosowywałoby się wykrywacz kolizji do grafiki, a nie rozciągało cały "sprite" 😊.
"WOLNA AMERYKANKA" Z USTAWIENIAMI
To jest problem, który "rozlewa się" na rekordową liczbę stron w tej książce 😟.
Często doświadczyłem sytuacji, w której, gdy starałem się domyślić poszczególnych kroków z samej historyjki, zanim przeszło się do "Kroków do wykonania" w ujęciu "samouczkowym" (zrób to, zrób tamto 🙂), zdarzało się, że trzeba było ponownie przejść przez wszystkie kroki, gdyż po stronie historyjki była tylko opisana czynność, a dopiero po stronie listy kroków były konkretne liczby lub ustawienia dla pozycji, atrybutów i tym podobnych rzeczy 😐.
Chodzi o to, że dopiero pod koniec rozdziału pojawiały się szczegóły odnośnie wprowadzanych wartości ℹ️. Ja wiem, że nie wszystkie są obowiązkowe, jednak gdy czytelnik jest kompletnie zielony i chce się nauczyć przedstawionych zagadnień, będzie z pewnością naśladować wykonywane czynności napisane przez autora 🎯. I jak będzie napisane o pozycji X równej 5.5, to znaczy że najlepiej taką wprowadzić 👀.
Choć rodzi to irytującą konieczność powracania do poprzednich kroków i edytowanie wartości, to rozumiem, że ciężko można temu w pełni zapobiec, bo dialog prezentuje zagadnienie w wersji "łagodnej" w formie historyjki, więc trudno się spodziewać sztywnego formalnego słownika (choć pojawia się część obcojęzycznych fraz i niezrozumiałych wyrazów). Wspomniany problem jest na tyle poważny, że niektóre wartości przeczą tym podanym w dialogu 😑. Mianowicie 👇:
- brak informacji o przesunięciu obiektu "PanBurgerDol" w osi X (str. #38 w porównaniu ze str. #41),
- niespójność przypisywanych wartości atrybutom "Linear Drag" i "Speed" (str. #47 w porównaniu ze str. #51 i #52),
- niespójność przypisywanej wartości tekstowi wyświetlającemu punkty zdrowia gracza (najpierw minuskuły, a potem majuskuły, str. #60 w porównaniu ze str. #65).
Także muszę zmartwić, że nawet czytanie z pełnym skupieniem nie uchroni Cię przed zakłopotaniem i powtórnym czytaniem paru fragmentów książki, bo po przedstawieniu czegoś okaże się, że albo miało być inaczej, albo jest bardziej doprecyzowane, tylko parę stron dalej jak już zdążyłeś(-aś) wprowadzić zmiany do projektu 🙄.
WYBRAKOWANE INSTRUKCJE
I to jest druga największa "pięta achillesowa" tej książki 👠. W każdym rozdziale, po części dialogowej pomiędzy ojcem a synem, występuje część zwana "Kroki do wykonania", w której znajduje się uszczegółowienie czynności do wykonania w ujęciu już bardziej technicznym (krok po kroku) 🔧. Nie będzie przesadą stwierdzenie, że w wielu miejscach znajdują się poważne błędy w postaci źle użytego bądź brakującego określenia 😞.
Dopatrzyłem się następujących sformułowań wymagających poprawki 👇:
- str. #41 ("Przesuń obiekt PanBurgerGora do wnętrza PanBurgerCaly, ponad obiekt PanBurgerDol."),
- brak informacji o konieczności zresetowania komponentu "Transform", gdyż wartości niezerowe mogą później wpływać na obiekt potomny (obiekt będący częścią innego obiektu),
- str. #43 ("Pole widzenia ustawia się w polu "FieldOfView"),
- brak informacji o tym, że pole "Field of View" jest widoczne tylko dla kamery z trybem "Perspective" (widok 3D) w polu "Projection", a cała gra tworzona jest w trybie "Orthographic" (widok 2D),
- str. #83 ("Wrzuć więc na scenę kawałek mięsa z zasobów graficznych [...]"),
- brak informacji w tym miejscu o nazwie prefabrykatu jaki zostaje utworzony dla pocisku z wołowiny ("StrzalWolowina") - znajduje się dopiero pod koniec str. #84 (pojawia się zbyt późno gdy już Czytelnik zdąży stworzyć ten obiekt, a sam fragment jest tak napisany, jakbyśmy już byli wprowadzeni wcześniej w temat, a nigdzie wcześniej nie ma podanej nazwy),
- str. #125 ("Kliknij obiekt StrzałSer w oknie hierarchii i wybierz Prefab/Unpack Completely."),
- brak informacji o tym, że aby otworzyć menu kontekstowe posiadające opcję "Prefab/Unpack Completely", należy kliknąć prawym przyciskiem myszy,
- str. #126 ("Przejdź do inspektora i zaznacz pole Filter By Tag, a w polu Filter Tag wpisz wartość Player."),
- brak informacji o komponencie "Modify Health", które posiada wspomniane atrybuty "Filter By Tag" oraz "Filter Tag",
- rysunek na str. #128,
- brak polecenia przypisania wartości "Size" w osi Y w komponencie "Collider2D" równej 10,
- brak polecenia zaznaczenia opcji "Relative To This Object" w komponencie "Create Object",
- str. #145,
- brak polecenia utworzenia prefabrykatu obiektu "PociskChili" (w ostatnim punkcie występuje zdanie: "[...] zmień wartości pola Prefab To Spawn komponentu Object Creator Area na PociskChili.", co sugeruje konieczność uprzedniego utworzenia prefabrykatu),
- str. #152 ("Dodaj obiektowi ScianaSygnal komponenty: Collider 2D i Rigidbody 2D"),
- brak doprecyzowania jaki to ma być konkretnie komponent wykrywacza kolizji ("Collider2D" jest klasą nadrzędną wszystkich rodzajów).
Zostawiam to na wypadek, gdybyś natrafił(a) na wyżej wymienione podpunkty ℹ️.
"TERRARIUM" BŁĘDÓW W KODACH ŹRÓDŁOWYCH
To jest kolejna rzecz, której należy się spodziewać sięgając po ten tytuł 😬. Trochę czasu programuję, aby zwracać szczególną uwagę na jakość kodu i nie mogłem przejść obojętnie obok tych szczegółów 😔. "Unity na start! Programowanie dla nastolatków" czeka "generalny remont" jednym zdaniem, jeśli chodzi o zaprezentowane na końcu zbiory kodów źródłowych 🧰. Co prawda nie ma ani jednego zdania na temat pisania własnego kodu do projektu, aczkolwiek na zakończenie treści zgromadzono wszystkie skrypty oparte o "Unity Playground", które zostały przerobione przez autora, Jacka Rossa, na potrzeby projektu ℹ️.
Oto co mi nie pasowało 👇:
- dane składowe pisane dużą literą (niezgodnie z konwencją nazewniczą w języku C#),
- brak odstępów pomiędzy różnymi rodzajami instrukcji,
- odstępy pomiędzy nazwami metod, a nawiasem otwierającym,
- stosowanie niewłaściwej metody do przemieszczania obiektu przy użyciu komponentu "Transform" ("FixedUpdate", zamiast "Update"),
- brak mnożenia zmiany pozycji przez właściwość "Time.deltaTime",
- brak przechowywania referencji do komponentów w zmiennych,
- zła nazwa skryptu sugerująca wyszukiwanie samych przeciwników ("FindEnemyTarget" lepiej byłoby nazwać "FindTargetByTag"),
- zbyt dużo instrukcji w niektórych metodach (np. "Update"),
- korzystanie z pustego łańcucha znaków, zamiast z właściwości "Empty",
- nieprawidłowe wcięcia niektórych metod,
- instrukcje warunkowe w pętli "for" w metodzie "Start", powinny być jednym blokiem połączonym słowami kluczowymi "else if" (i tak nie będzie miała miejsca sytuacja, w której jeden obiekt posiada dwie różne nazwy),
- porównywanie łańcuchów znaków używając operatora porównania, zamiast metody "Equals",
- powielanie identycznych lub podobnych do siebie instrukcji,
- brak zdefiniowanego modyfikatora dostępu dla danej składowej,
- porównywanie tagów używając operatora porównania, zamiast metody CompareTag,
- mieszanie danych składowych prywatnych z publicznymi,
- brak odstępów pomiędzy operatorami, a operandami (argumentami),
- nadmiarowość niektórych zmiennych lokalnych.
Jak sam(a) widzisz, jest dużo wymienionych uwag, które w mojej ocenie świadczą o źle napisanym kodzie ❌. Natomiast nie zrażaj się tym i nie bierz tego pod uwagę przy podejmowaniu decyzji o zakupie ⚠️. Te kody źródłowe zostały przedstawione na końcu książki wyłącznie w celu pokazania Ci jakie zmiany zostały wprowadzone. Nie ma nigdzie fragmentu w treści o pisaniu czy przepisywaniu kodu ℹ️.
CZY KSIĄŻKA "UNITY NA START! PROGRAMOWANIE DLA NASTOLATKÓW" JEST WARTA ZAKUPU?
Raz kolejny: to zależy 🧐. Zależy czy zadowolisz się tworzeniem gier z użyciem wyłącznie modułu "Unity Playground", bo wokół niego kręci się co najmniej 90% mechaniki projektu z Panem Burgerem w roli głównej 🍔.
Nie znajdziesz w niej żadnych wątków na temat nauki programowania w C#. Są tylko na końcu kody źródłowe autorstwa Pana Jacka Rossa ℹ️. Wtedy lepiej poszukać innych bardziej technicznych tytułów. Jeżeli jednak nie zależy Ci wcale na nauce kodowania, tylko chcesz pobawić się wspomnianym pakietem, to zakup może być dobrym pomysłem 👍.
Po jej przeczytaniu będziesz mieć pojęcie o tym, jak zacząć projekt, jak go skończyć i zbudować grę w postaci pełnoprawnej aplikacji w postaci pliku wykonywalnego "exe". Jednak pamiętaj - Twoja zdolność do tworzenia gier będzie się ograniczać do korzystania z pakietu "Unity Playground" ⚠️!
Decyzja należy do Ciebie 🫵!
![]() |
"Unity na start! Programowanie dla nastolatków" okaże się dla Ciebie dobrym zakupem, jeśli nie interesuje Cię ręczne programowanie funkcjonalności i masz świadomość, że ukazywane treści tworzonej gry nie wychodzą poza wykorzystywanie pakietu "Unity Playground".
Tak się sprawy mają 🙂. Kolejny raz z mojej strony wyraz nadziei, że ta recenzja pomoże w podjęciu słusznej decyzji czy książkę kupić, czy nie, bo to nie tylko inwestycja pieniężna 💵, lecz też czasowa ⌚. A czas to najważniejsza waluta człowieka 💲.
