02/2010
60
Programowanie gier
Xcode
www.sdjournal.org
61
D
o napisania gry wymagany jest
komputer Mac, co może wiązać
się z wydatkiem zaczynającym się
w okolicach dwóch tysięcy złotych. Do testo-
wania dzieła na pewno też dobrze mieć do-
celowe urządzenie – iPhone’a lub iPoda To-
uch. Gdy już te absolutnie podstawowe wa-
runki zostają spełnione, nic (lub prawie nic)
nie stoi na przeszkodzie, by rozpocząć pracę
nad grą marzeń. Z tym, co stanąć może, po-
staramy się rozprawić w poniższym artykule.
Zapraszamy do lektury.
Krok pierwszy
– rejestracja na portalu
Czas zacząć. Zdecydowanie pierwszym kro-
kiem powinno być zarejestrowanie na oficjal-
nym portalu developerskim Apple dostęp-
nym pod adresem:
http://developer.apple.com/iphone/
Dzięki temu developer będzie mógł korzy-
stać ze wszystkich zasobów i informacji poma-
gających w programowaniu na iPhone OS. Sa-
ma rejestracja podzielona jest na dwie części.
Pierwsza darmowa umożliwia ściąganie SDK
i uruchamianie aplikacji na symulatorze. Dru-
ga płatna w wysokości $99 (lub 299 dla du-
żych firm) pozwala na uruchamianie aplikacji
na sprzęcie i późniejszą dystrybucję aplikacji
na App Store. Prócz tego płatna rejestracja da-
je większy dostęp do bazy wiedzy i przykładów
przygotowanych przez Apple. Niezbędne będą
takie dane, jak numery konta, informacje o ban-
ku. Należy przy tym pamiętać, że wszelkie przy-
chody z App Store należy rozliczyć z Urzędem
Skarbowym. Tak głosi prawo.
Krok drugi
– ściągnięcie i zainstalowanie
odpowiednich materiałów
Po pomyślnej rejestracji na portalu pracę czas
zacząć! W zależności od zainstalowanego OS-u
na Macu należy ściągnąć i zainstalować SDK
w wersji Leopard bądź Snow Leopard. SDK
zawiera:
• Xcode – środowisko pozwalające
na
programowanie/kompilowanie/
uruchamianie stworzonej aplikacji,
• iPhone simulator – symulator iPhone po-
zwalający na uruchomienie stworzonej
aplikacji, jej testowanie i debugowanie,
• Tools – zestaw dodatkowych narzędzi
pozwalających na łatwiejsze i sprawniej-
sze programowanie i tworzenie aplika-
cji. Jednym z ciekawszych narzędzi jest
Instruments pozwalający na dokładne i
Xcode
iPhone i App Store to światowy fenomen. Firma Apple dokonała
niemożliwego i uwolniła wielką siłę niezależnych developerów mogących
od teraz spełniać swoje wizje i tworzyć gry jak dawniej, w pojedynkę lub
w małych zespołach, siedząc nad nimi po pracy, w garażach.
Dowiesz się:
• Co potrzebne jest do programowania gier
na iPhone’a;
• Jak zacząć pracę nad grą i jakie są etapy jej
produkcji;
• Jak warto zorganizować sobie strukturę pro-
jektu.
Powinieneś wiedzieć:
• Podstawy obsługi Xcode;
• Znać podstawy C++ i Objective-C;
• Przeczytać artykuł dotyczący programowa-
nia na iPhone;
• Podstawowe informacje na temat develop-
mentu gier.
Poziom
trudności
Xcode – oto czytelnik. Czytelniku – oto Xcode. Poznajcie się.
Wprowadzenie do programowania najpopularniejszego
urządzenia mobilnego na świecie.
Rysunek 1. Ekran powitalny Xcode IDE
02/2010
60
Programowanie gier
Xcode
www.sdjournal.org
61
szybkie namierzenie problemów związa-
nych z zarządzaniem pamięcią.
Krok trzeci
– odpalenie środowiska i stwo-
rzenie przykładowej aplikacji
Do tego celu służy środowisko Xcode. Jest to
główne narzędzie SDK pozwalające na tworze-
nie aplikacji, testowanie, uruchamianie i przy-
gotowywanie wersji na urządzenie. Sercem ze-
stawu narzędzi Xcode jest Xcode IDE – graficz-
ny kombajn zawierający profesjonalny text editor,
system tworzenia aplikacji, debugger oraz kom-
pilator. Więcej o Xcode można przeczytać pod
adresem: http://developer.apple.com/tools/Xcode/.
Stwórzmy grę!
Wiele gier powstaje, bazując na już istnieją-
cych produktach. Warto jednak sięgnąć po
własny produkt, którym zawojujemy rynek.
Pomysł – skąd go wziąć?
• burza mózgów.
Twórcze głowy zasiadają do stołu (na łące,
w pubie itd.) i snują pomysły, dzieląc się swo-
imi przemyśleniami. Wyznaczona osoba no-
tuje. Zakaz krytykowania i wyśmiewania
pod groźbą stawiania kolejki.
• analiza rynku (co na rynku robi konku-
rencja, na co jest popyt, czego brakuje?);
• przypadkowe olśnienie. Czasami uderza
znienacka, czasami pod wpływem jakiejś
innej gry. App Store pełen jest takich gier,
wiele z nich odnosi sukces właśnie dzięki
nieprzewidywalności i oryginalności.
Strona organizacyjna produkcji gry
Czasy, w których każda gra powstawała w zaci-
szu domowym i była tworzona przez jedną lub
dwie osoby, dawno odeszły do lamusa. Aktual-
nie w tworzenie gry bardzo często zaangażowa-
nych jest wiele osób. W zależności od wielkości
projektu może to być 4 lub nawet 400 osób.
Aby poprawnie zarządzać taką ekipą, trzeba
nie lada doświadczenia i wiedzy. Profesjonalne
i zdroworozsądkowe podejście do sprawy wy-
maga stworzenia planu produkcji gry. Dzieje się
to w pierwszym etapie zwanym zazwyczaj pre-
produkcją. Podczas tego etapu liderzy projektu
wraz z producentem, bazując na GDD i TDD,
gry przygotowują zadania dla poszczególnych
członków zespołu.
Niezbędne narzędzia
w procesie developmentu gry
Do sprawnej organizacji całego przedsięwzię-
cia przydadzą się różne narzędzia. Pozwolą
one na łatwiejszą, sprawniejszą i szybszą pra-
cę całego zespołu. W dzisiejszych dniach two-
rzenie gry wymaga takich narzędzi jak:
• Managing tools – pozwalają na stworze-
nie planu, przydzielenia zadań członkom
zespołu i koordynację całego procesu pro-
dukcji. Najbardziej znanym komercyjnym
rozwązaniem jest Microsoft Project. Ist-
nieją także alternatywne darmowe roz-
wiązania takie jak np. dotProject.;
• Bugtracking – dzięki niemu zarządzanie
błędami, które mogą wystąpić w trakcie
trwania projektu staje się dużo prostsze,
przejrzystsze i szybsze. Do najpopular-
niejszych bugtrackerów należą: Mantis,
Bugzilla czy Track Studio;
Rysunek 2. Ekran powitalny symulatora iPhone
Rysunek 3. Boozle – gra firmy Vivid Games
inspirowana pomysłami z firmowej imprezy
Na Skróty
• SDK (ang. Software Development Kit) – Zestaw narzędzi dla programistów niezbędny do stworzenia aplikacji korzystającej z określonych
funkcji pod określonym systemem operacyjnym.
• App Store – Sklep online firmy Apple pozwalający na zakup cyfrowych produktów, między innymi gier na iPhone’a.
• GDD (ang. Game Design Document) – Dokument zawierający wszystkie wymagane informacje pozwalające na stworzenie gry. Tworzony jest
przez “Game Designera”
• TDD (ang. Technical Design Document) – Techniczna wersja GDD opisująca wszelkie zagadnienia dotyczące gry od strony technicznej.
• API (ang. Application Programming Interface) – Interfejs programowania aplikacji umożliwiający komunikację z systemem operacyjnym, bi-
blioteką bądź innym zewnętrznym systemem.
• Cocoa – Jedno z pięciu głównych API systemu operacyjnego Mac OS X firmy Apple,
• Xcode – Zintegrowane środowisko programistyczne firmy Apple. Służy do tworzenia aplikacji i innego oprogramowania przeznaczonego
m. in. na system Mac OS X.
• UML (ang. Unified Modeling Language) – Zunifikowany Język Modelowania służący do opisu świata obiektów w analizie obiektowej oraz
programowaniu obiektowym.
Rysunek 4. Przykładowy szkielet głównej klasy w grze zaprojektowany za pomocą UML
����
����������
�����������������
�����������
����������������
�����������������
��������������
������������������������������
����������������������������
�������������������������
��������������������������������������������������������������������
������������������������������
���������������������������
����������������������������������
02/2010
62
Programowanie gier
Xcode
www.sdjournal.org
63
• Time manager – zestaw narzędzi pozwa-
lający na organizację czasu pracowni-
ków, ich czasu pracy przy projekcie. Bar-
dzo często zintegrowany jest on bezpo-
średnio z narzędziami służącymi do za-
rządzania projektem.
Tworzenie gry krok po kroku
Etapy produkcji gry dzieli się na następujące
fazy produkcji:
• Preproduction – Etap planowania gry.
W trakcie jego trwania powstaje cały
plan produkcji i lista zadań do wyko-
nania przez poszczególnych członków
zespołu.
• First playable – wynikiem tego etapu
jest pierwsza wersja gry pozwalająca
na sprawdzenie, czy założenia dotyczą-
ce grywalności ustalone w czasie pre-
produkcji sprawdzają się w rzeczywi-
stości.
• Alpha – Na zakończenie tej części pro-
jektu powstaje pełna wersja gry, mo-
że jednak ona zawierać różnego rodzaju
błędy w funkcjonalności. Według najpo-
pularniejszych metod prowadzenia pro-
jektów, wersja Alpha powinna jednak
być już całkowicie wyposażona w tryby
gry, teksty, grafiki itd.
• Beta – Etap projektu, w którym głów-
ną uwagę spędza się na naprawianiu błę-
dów i szlifowaniu finalnego produktu.
• Release Candidate – Po zakończeniu te-
go etapu powstaje pierwsza wersja będąca
kandydatem do wydania gry. Jest to w peł-
ni stabilna, niezawierająca błędów gra.
• Gold Master – Powstający w tym czasie
produkt jest finalną wersją gry, która do-
stępna jest dla graczy.
• Localization – Etap, w którym gra jest lo-
kalizowana na różne języki. W tym cza-
sie powstają alternatywne wersje języko-
we gry bądź jedna wersja z możliwością
wyboru języków.
• Marketing – Po zakończonych etapach
ukończony produkt jest gotowy do wyda-
nia, aby jednak osiągnął sukces, muszą po-
wstać odpowiednie materiały marketin-
gowe służące do reklamowania i promocji
gry. Bardzo często zdarza się, że materia-
ły marketingowe powstają dużo wcześniej
lub równolegle z procesem produkcyjnym
gry. Kontakt z mediami i fanami powinien
zostać zawiązany znacznie wcześniej, by
o grze było wiadomo cokolwiek, zanim po-
jawi się ona na rynku.
Etapy tworzenia kodu gry
Podział prac pomiędzy programistami
Lider programistów wraz z project manage-
rem w czasie planowania projektu rozdzie-
lają poszczególnym członkom zespołu za-
dania. Dobry podział zadań to połowa suk-
cesu. Ważne jest to, aby każdy z programi-
stów miał swoje pole działania, a współpra-
ca pomiędzy kodem poszczególnych progra-
mistów odbywała się za pomocą określone-
go interfejsu.
Rysunek 5. Przykładowy szkielet głównej klasy w grze w języku Java
Debugowanie i naprawianie błędów
Pakiet Xcode zawiera w swoim zestawie bardzo ciekawą i pomocną aplikację o nazwie In-
struments. Dzięki niej jesteśmy w stanie podglądać wiele rzeczy podczas pracy aplikacji na
symulatorze bądź na iPhonie. Program ten pozwala między innymi na:
•
przeglądanie stanu pamięci
Możesz śledzić zmiany alokacji pamięci dla wybranej aplikacji. Dzięki temu łatwo i przyjemnie
można namierzyć największe „pochłaniacze” pamięci. Jest to dość istotne, gdyż należy pamię-
tać, że iPhone to tylko telefon i jego zasoby są ograniczone. Najbezpieczniejszą granicą, której
nie warto przekraczać, to zużycie 30MB realnej pamięci.
•
znajdowanie wycieków pamięci
Opcja bardzo przydatna dla mniej wprawionych programistów. Bardzo często zapomina się o
tak ważnej rzeczy jak zwalnianie zaalokowanej pamięci. Szczególnie zarażeni są tym progra-
miści Java przesiadający się na C++. W Javie menadżer pamięci czyści ją za nich, tutaj trzeba
pamiętać o tym samemu. Skutkiem tego bardzo często zdarzają się wycieki pamięci, które w
większych projektach jest bardzo ciężko namierzyć. Tutaj z pomocą przychodzi nam opcja Ac-
tivity Monitora. Dzięki niej dokładnie możemy zlokalizować wyciek cennych bajtów. Program
wskaże nam dokładną linijkę w kodzie, gdzie wyciek nastąpił. Co ciekawe, wycieki pamięci
zdarzają się też w samym OS-ie.
•
analizę zużycia czasu procesora
Jest to narzędzie podobne do Task Managera znanego z Windowsa. Dzięki niemu może-
my sprawdzić poziom zużycia pamięci realnej i wirtualnej, a także czas zużycia procesora dla
wszystkich aplikacji uruchomionych na iPhonie.
•
obserwowanie file systemu i dostępu do plików
Pozwala na przejrzenie wszystkich operacji dyskowych/plikowych, jakie występują od urucho-
mienia aplikacji na iPhonie. Jest to rzadziej używana opcja, jednakże pozwala ona programi-
ście na obserwację zachodzących procesów związanych z plikami.
02/2010
62
Programowanie gier
Xcode
www.sdjournal.org
63
Tworzenie szkieletu klas w UML
bazując na TDD przez programistów
Najwygodniejszym i najszybszym sposo-
bem na sprawne zaplanowanie rozłożenia
klas pomiędzy programistami jest stwo-
rzenie szkieletu całego projektu. Czy wy-
obrażacie sobie tworzenie go bezpośrednio
w kodzie? Byłoby to bardzo czasochłonne i
trudne. W tym momencie z pomocą przy-
chodzi nam UML. Dzięki niemu tworzenie
zarysu kodu staje się dużo wygodniejsze, a
dowolną zmianę można zrobić dosłownie
w chwilę.
Recenzja, ewentualne zmiany
i finalizowanie klas w UML przez lidera
W tworzeniu kodu uczestniczą wszyscy pro-
gramiści. Po podzieleniu poszczególnych za-
dań przez lidera każdy z nich tworzy szkie-
let klas mu przydzielonych. Na końcu ca-
łość zostaje złożona i dopracowania pod ką-
tem interfejsów i komunikacji. Bazując na do-
kumentacji programiści są w stanie szybko
wprowadzić zmiany w kodzie, tak aby speł-
niał on wymagania projektu. Na tym pozio-
mie projektowania powstają także komen-
tarze do klas, metod i argumentów, które w
późniejszej produkcji znacznie usprawnią
pracę z kodem.
Generowanie kodu
wraz z komentarzami z UML
Dodatkową zaletą UML-a jest możliwość wyge-
nerowania kodu w prawie dowolnym języku pro-
gramowania. Dzięki temu po fazie projektowej
programiści mają gotowy kod, który muszą tylko
uzupełnić. Wszelkie hierarchie, interfejsy itp. są
już określone i praca jest dużo wygodniejsza.
Programowanie
poszczególnych metod i funkcji
Bazując na specyfikacji przygotowanej podczas
preprodukcji oraz na strukturze kodu zapro-
jektowanej w UML, dalsza praca to już „buł-
ka z masłem”. Niestety, jednak podczas two-
rzenia gry bardzo często zmieniają się części
projektu, wprowadzane są udoskonalenia i po-
prawiona zostaje grywalność. Dlatego właśnie
pierwszym ważnym etapem programowania
jest przygotowanie grywalnej wersji gry. To ona
pozwoli ocenić całemu zespołowi, czy gra jest
fajna, czy może coś będzie trzeba zmieniać i
dopracowywać. To w tym etapie programista
powinien jak najwięcej czasu poświęcić na gry-
walność, a mniej przejmować się błędami.
Gdy okaże się, że pierwsza wersja to praw-
dziwy hit, pozostaje nic innego, jak zakasać
rękawy i przejść do programowania. Tutaj
praca jest już bardziej nudna. Bazując na spe-
cyfikacji, należy przygotować wszystkie me-
chanizmy pozwalające obsłużyć całą grę.
Warto pomyśleć także o nowinkach do gry,
które popularne są na iPhonie. Są to między
innymi:
• Facebook – obsługa konta facebook, ofi-
cjalna strona, zapisywanie wyników na
facebook itp.,
• iTunes library – funkcjonalność w aplikacji
pozwalająca na słuchanie plików muzycz-
nych zapisanych na swoim iPhone podczas
gry (zamiast oryginalnej muzyki z gry),
• More games – opcja pozwalająca graczowi
na zapoznanie się z ofertą gier producenta.
Zakończenie
• Testy i polishing gry.
• Stworzenie finalnej wersji gry.
• Wydanie gry na AppStore.
Bez wątpienia tworzenie gier na iPhone’a to do-
skonała zabawa, przygoda i szansa dla nieza-
leżnych developerów. Dziesiątki tysięcy (dane
wskazują, że już ponad 100!) aplikacji nie wzię-
ły się znikąd. Każdy szuka swojej niszy i prze-
błysku geniuszu. Powodzenia z projektami i do
zobaczenia na szczycie listy Top 10!
PATRYK BUKOWIECKI
Specjalista ds. PR i marketingu, manager, czujny
obserwator branży gier video, socjolog, redaktor
i wieloletni współpracownik Neo Plus, gracz, pił-
karz. W Vivid Games na stanowiskach producent
i PR and Marketing Manager.
JAROSŁAW WOJCZAKOWSKI
CTO w firmie Vivid Games, programista/project
manager z kilkunastoletnim doświadczeniem,
współwłaściciel firmy Vivid Games, wesoły i po-
godny człowiek, otwarty na nowe rozwiązania.
Rysunek 6. Ekran powitalny aplikacji Instruments
Rysunek 7. Przykładowy wyciek pamięci w OS