Portal dla programistów - artykuły, tutoriale, porady
September 10, 2010, 5:50 pm

Xcode

1 Gwiazdka2 Gwiazdki3 Gwiazdki4 Gwiazdki5 Gwiazdek (Brak ocen)

Xcode – oto czytelnik. Czytelniku – oto Xcode. Poznajcie się. Wprowadzenie do programowania najpopularniejszego urządzenia mobilnego na świecie.

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.

Autorzy: Patryk Bukowiecki, Jarosław Wojczakowski
Źródło: Software Developer’s Journal 02/2010 (182) http://sdjournal.org

Do 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 testowania dzieła na pewno też dobrze mieć docelowe urządzenie – iPhone’a lub iPoda Touch. Gdy już te absolutnie podstawowe warunki zostają spełnione, nic (lub prawie nic) nie stoi na przeszkodzie, by rozpocząć pracę nad grą marzeń. Z tym, co stanąć może, postaramy się rozprawić w poniższym artykule. Zapraszamy do lektury.

Krok pierwszy – rejestracja na portalu
Czas zacząć. Zdecydowanie pierwszym krokiem powinno być zarejestrowanie na oficjalnym portalu developerskim Apple dostępnym pod adresem: http://developer.apple.com/iphone/

Dzięki temu developer będzie mógł korzystać ze wszystkich zasobów i informacji pomagających w programowaniu na iPhone OS. Sama rejestracja podzielona jest na dwie części. Pierwsza darmowa umożliwia ściąganie SDK i uruchamianie aplikacji na symulatorze. Druga 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 daje 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 banku. Należy przy tym pamiętać, że wszelkie przychody z App Store należy rozliczyć z Urzędem Skarbowym. Tak głosi prawo.

Rysunek 1. Ekran powitalny Xcode IDE

Rysunek 1. Ekran powitalny Xcode IDE

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 pozwalający na uruchomienie stworzonej aplikacji, jej testowanie i debugowanie,
• Tools – zestaw dodatkowych narzędzi pozwalających na łatwiejsze i sprawniejsze programowanie i tworzenie aplikacji.

Jednym z ciekawszych narzędzi jest Instruments pozwalający na dokładne i szybkie namierzenie problemów związanych z zarządzaniem pamięcią.

Krok trzeci – odpalenie środowiska i stworzenie przykładowej aplikacji
Do tego celu służy środowisko Xcode. Jest to główne narzędzie SDK pozwalające na tworzenie aplikacji, testowanie, uruchamianie i przygotowywanie wersji na urządzenie. Sercem zestawu narzędzi Xcode jest Xcode IDE – graficzny kombajn zawierający profesjonalny text editor, system tworzenia aplikacji, debugger oraz kompilator. Więcej o Xcode można przeczytać pod adresem: http://developer.apple.com/tools/Xcode/.

Rysunek 2. Ekran powitalny symulatora iPhone

Rysunek 2. Ekran powitalny symulatora iPhone

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ę swoimi przemyśleniami. Wyznaczona osoba notuje. Zakaz krytykowania i wyśmiewania pod groźbą stawiania kolejki.
• analiza rynku (co na rynku robi konkurencja, 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 zaciszu domowym i była tworzona przez jedną lub dwie osoby, dawno odeszły do lamusa. Aktualnie w tworzenie gry bardzo często zaangażowanych 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 wymaga stworzenia planu produkcji gry. Dzieje się to w pierwszym etapie zwanym zazwyczaj preprodukcją. 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.

Rysunek 3. Boozle – gra firmy Vivid Games inspirowana pomysłami z firmowej imprezy

Rysunek 3. Boozle – gra firmy Vivid Games inspirowana pomysłami z firmowej imprezy

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ą pracę całego zespołu. W dzisiejszych dniach tworzenie gry wymaga takich narzędzi jak:
• Managing tools – pozwalają na stworzenie planu, przydzielenia zadań członkom zespołu i koordynację całego procesu produkcji. Najbardziej znanym komercyjnym rozwązaniem jest Microsoft Project. Istnieją także alternatywne darmowe rozwią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 najpopularniejszych bugtrackerów należą: Mantis, Bugzilla czy Track Studio;
• Time manager – zestaw narzędzi pozwalający na organizację czasu pracowników, ich czasu pracy przy projekcie. Bardzo często zintegrowany jest on bezpośrednio z narzędziami służącymi do zarządzania projektem.

Rysunek 4. Przykładowy szkielet głównej klasy w grze zaprojektowany za pomocą UML

Rysunek 4. Przykładowy szkielet głównej klasy w grze zaprojektowany za pomocą UML

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 wykonania 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 preprodukcji sprawdzają się w rzeczywistości.
• Alpha – Na zakończenie tej części projektu powstaje pełna wersja gry, może jednak ona zawierać różnego rodzaju błędy w funkcjonalności. Według najpopularniejszych metod prowadzenia projektów, wersja Alpha powinna jednak być już całkowicie wyposażona w tryby gry, teksty, grafiki itd.
• Beta – Etap projektu, w którym główną uwagę spędza się na naprawianiu błędów i szlifowaniu finalnego produktu.
• Release Candidate – Po zakończeniu tego 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 dostępna jest dla graczy.
• Localization – Etap, w którym gra jest lokalizowana na różne języki. W tym czasie powstają alternatywne wersje językowe gry bądź jedna wersja z możliwością wyboru języków.
• Marketing – Po zakończonych etapach ukończony produkt jest gotowy do wydania, aby jednak osiągnął sukces, muszą powstać odpowiednie materiały marketingowe 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 pojawi się ona na rynku.

Rysunek 5. Przykładowy szkielet głównej klasy w grze w języku Java

Rysunek 5. Przykładowy szkielet głównej klasy w grze w języku Java

Etapy tworzenia kodu gry

Podział prac pomiędzy programistami
Lider programistów wraz z project managerem w czasie planowania projektu rozdzielają poszczególnym członkom zespołu zadania. Dobry podział zadań to połowa sukcesu. Ważne jest to, aby każdy z programistów miał swoje pole działania, a współpraca pomiędzy kodem poszczególnych programistów odbywała się za pomocą określonego interfejsu.

Tworzenie szkieletu klas w UML bazując na TDD przez programistów
Najwygodniejszym i najszybszym sposobem na sprawne zaplanowanie rozłożenia klas pomiędzy programistami jest stworzenie szkieletu całego projektu. Czy wyobrażacie sobie tworzenie go bezpośrednio w kodzie? Byłoby to bardzo czasochłonne i trudne. W tym momencie z pomocą przychodzi 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 programiści. Po podzieleniu poszczególnych zadań przez lidera każdy z nich tworzy szkielet klas mu przydzielonych. Na końcu całość zostaje złożona i dopracowania pod kątem interfejsów i komunikacji. Bazując na dokumentacji programiści są w stanie szybko wprowadzić zmiany w kodzie, tak aby spełniał on wymagania projektu. Na tym poziomie projektowania powstają także komentarze do klas, metod i argumentów, które w późniejszej produkcji znacznie usprawnią pracę z kodem.

Rysunek 6. Ekran powitalny aplikacji Instruments

Rysunek 6. Ekran powitalny aplikacji Instruments

Generowanie kodu wraz z komentarzami z UML
Dodatkową zaletą UML-a jest możliwość wygenerowania kodu w prawie dowolnym języku programowania. 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 zaprojektowanej w UML, dalsza praca to już „bułka z masłem”. Niestety, jednak podczas tworzenia gry bardzo często zmieniają się części projektu, wprowadzane są udoskonalenia i poprawiona 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 grywalność, a mniej przejmować się błędami.

Gdy okaże się, że pierwsza wersja to prawdziwy hit, pozostaje nic innego, jak zakasać rękawy i przejść do programowania. Tutaj praca jest już bardziej nudna. Bazując na specyfikacji, należy przygotować wszystkie mechanizmy 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, oficjalna strona, zapisywanie wyników na facebook itp.,
• iTunes library – funkcjonalność w aplikacji pozwalająca na słuchanie plików muzycznych zapisanych na swoim iPhone podczas gry (zamiast oryginalnej muzyki z gry),
• More games – opcja pozwalająca graczowi na zapoznanie się z ofertą gier producenta.

Rysunek 7. Przykładowy wyciek pamięci w OS

Rysunek 7. Przykładowy wyciek pamięci w OS

Zakończenie
• Testy i polishing gry.
• Stworzenie finalnej wersji gry.
• Wydanie gry na AppStore.

Bez wątpienia tworzenie gier na iPhone’a to doskonała zabawa, przygoda i szansa dla niezależ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 przebłysku geniuszu. Powodzenia z projektami i do zobaczenia na szczycie listy Top 10!

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, biblioteką 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.

Debugowanie i naprawianie błędów
Pakiet Xcode zawiera w swoim zestawie bardzo ciekawą i pomocną aplikację o nazwie Instruments. 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 programiś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 Activity 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żemy 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 uruchomienia 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.

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 pogodny człowiek, otwarty na nowe rozwiązania.

Podziel się na:
  • Wykop
  • Digg
  • Facebook
  • Google Bookmarks
  • Śledzik
  • Gadu-Gadu Live
  • Blip
  • Grono.net
  • PDF
  • Print
  • RSS

Wpisy autorstwa Beata Łagocka.

Zostaw odpowiedź

Comment moderation is enabled. Your comment may take some time to appear.