C++ w programowaniu gier - Adam Sawicki

C++ w programowaniu gier - Adam Sawicki

C++ w programowaniu gier Adam Sawicki - www.asawicki.info - 30 padziernika 2010 Dlaczego C++? W jakim jzyku pisze si gry? Powane tytuy na PC i konsole - tylko C++! Inne platformy rnie iPhone, iPad Objective C (oraz C++) Android Java (oraz C++) Web ActionScript (Flash), JavaScript, Amatorskie projekty dowolnie XNA, Java, Python, cokolwiek 2 Dlaczego C++? C++ to nie najwaniejszy jzyk na wiecie. TIOBE Programming Community Index for October

2010 [TIOBE] 3 Dlaczego C++? C++ nie jest idealny [C++FQA] Jest trudny i obszerny Np. wskaniki, szablony, przecienia Wiele rzeczy nieustandaryzowane Np. stringi, kontenery, obsuga bdw, brak ABI Uboga biblioteka standardowa

Niski poziom 4 Potrzeba duo kodu, eby cokolwiek napisa atwo o rnorodne bdy, np. w zarzdzaniu pamici Dlaczego C++? Jednak C++ to najlepszy/jedyny wybr do gier Dostatecznie wysoki poziom, by pisa zoone programy Np. programowanie obiektowe Dostatecznie niski poziom, by pisa wydajny kod

Np. wskaniki, brak wirtualnej maszyny, rczne zarzdzanie pamici Jest szeroko wspieranym standardem API, biblioteki i silniki do gier maj zwykle interfejs do C/ C++ Istniej kompilatory na interesujce nas platformy 5 PC/Windows, Xbox 360, PlayStation 3 Nie kombinuj

W programowaniu gier chodzi o to, eby napisa gr Warto pisa wszystko jak najprociej Dlatego nie kombinuj! Nie musisz by mistrzem inynierii oprogramowania Nie powiniene przekombinowa z programowaniem obiektowym i wzorcami projektowymi Nie musisz zna na pami standardu C++ 6 Nie powiniene przekombinowa z preprocesorem,

szablonami i przecianiem operatorw C++ a programowanie gier Programowanie gier dopiero zaczyna si tam, gdzie koczy si nauka C++ Problem z konstruktorem klasy? Zrobi metod Init! Problem z const correctness? Immutability, koncepcja deskryptora. Problem z singletonem? Jawnie inicjalizowa i finalizowa podsystemy! Za duo getterw i setterw? Pisa struktury, pola publiczne! Wiele zagadnie typowych w programowaniu gier [GPPATTERNS] 7

Np. podwjne buforowanie, architektura komponentowa, pula obiekw Data-Driven "Boss": { "Life": 1000, "Armor": 200, "Weapon": "Laser" }, "Laser": { "ParticleEffect": "LaserEffect02", "Damage": 1000, "Duration": 2.5,

"Cooldown": 0.7 } 8 Optymalizacja Optymalizacja co w praktyce oznacza? Jednym kojarzy si z doborem algorytmu o dobrej zoonoci asymptotycznej Innym kojarzy si z przepisaniem algorytmu na asembler Prawda ley porodku! Due obiekty przekazywa i zwraca przez wskanik lub referencj, nie przez warto Upraszcza obliczenia matematyczne, mnoy zamiast dzieli Nie definiowa zoonych zmiennych wewntrz

ptli Nie ufa optymalizacji kompilatora 9 Wydajno Do da wa nie, ode jmo wa nie, Dzielenie, mn funkcje oe

transcendentaln nie e Branching, metody wirtualne, skok pod wskanik Dynamiczna alokacja pamici Zasoby systemowe tekstury, wtki, gniazda Wejcie-wyjcie pliki, sie 10 Optymalizacja Nietrafienie w pami podrczn cache miss

1980: Odwoanie do pamici RAM 1 cykl procesora 2009: Odwoanie do pamici RAM 400 cykli procesora [POOP] 11 Optymalizacja Lokalno odwoa waniejsza, ni ilo oblicze Programowanie obiektowe Programowanie zorientowane na dane Obiekty alokowane osobno, rozrzucone po pamici Obiekty w tablicy, w cigym obszarze pamici Pakowanie danych

12 short, char Flagi bitowe Pola bitowe Nawet zmiana kolejnoci pl moe wpyn na wydajno! Najlepsza optymalizacja Najszybszy kod to taki, ktry nigdy si nie wykonuje Precalc przygotowa dane wczeniej, nie liczy za kadym razem Podczas wczytywania gry NIE parsowa plikw tekstowych, XML, modeli OBJ, tekstur PNG, nie kompilowa shaderw Edytor lub inne narzdzia powinny przygotowa assety w

docelowym formacie: modele do wczytania prosto do VB/VBO, tekstury w DDS (ewentualnie JPEG), wasne formaty plikw, VFS Podczas dziaania gry NIE liczy w kadej klatce tego, co mona przygotowa raz lub policzy raz na jaki czas (np. w AI) Stosowa culling i podzia przestrzeni, aby nie przetwarza tego, czego nie wida lub co nie jest istotne LOD Level od Detail kiedy mimo wszystko trzeba przetwarza duo danych, mona mniej szczegowo 13 Wyjtki W kodzie powanej gry wyjtki powinny by nieuywane, a ich obsuga wyczona Brak standardowego sposobu obsugi bdw w C++ Niedoskonao wyjtkw C++ - brak finally, RAII nie

jest powszechne Pojcie bdu w grze nie ma takiego sensu jak w programie Wczone wsparcie dla wyjtkw w kompilatorze C++ to dua strata wydajnoci, nawet kiedy wyjtki nie s faktycznie uywane Kompilatory C++ na konsolach nie wspieraj wyjtkw [KosztWyjtkw] 14 STL STL-a te czsto nie uywa si w programowaniu gier Wprawdzie warto mie szablony kontenerw i mog

15 dziaa wydajnie, jednak STL robi zbyt duo dynamicznych alokacji pamici. Stringw uywa tylko do pokazywania tekstu uytkownikowi, nie wewntrznie w kodzie gry Unika std::list, std::set, std::map, najlepszy jest std::vector EASTL implementacja STL dostosowana do programowania gier [EASTL], udostpniona ostatnio za darmo [EASTL/GIT] Programowanie rwnolege To dziedzina obszerna, trudna, wci

dojrzewajca, ale bardzo wana, opacalna i ju obowizkowa! Wtki i muteksy to dopiero pocztek 16 Narzdzia Jedyna suszna platforma: Windows :) Jedyne suszne IDE: Visual C++ :) Narzdzia pomocnicze: ledzenie wyciekw pamici: wasny alokator pamici, Visual Leak Detector Profilowanie: wasna instrumentacja, Very Sleepy, AMD CodeAnalyst, Intel Vtune Debugowanie bibliotek: Debug version of Direct3D, PIX, PhysX Visual Debugger Statyczna analiza kodu: CppCheck

17 Bibliografia [TIOBE] TIOBE Programming Community Index for October 2010 http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html [C++FQA] C++ FQA, Yossi Kreinin http://yosefk.com/c++fqa/ [GPPATTERNS] Game Programming Patterns, Robert Nystrom http://gameprogrammingpatterns.com/ [POOP] Pitfalls of Object Oriented Programming, Tony Albrecht (Sony Computer Entertainment Europe) http://bit.ly/90fCdE [KosztWyjtkw] Koszt wyjtkw, forum.gamedev.pl http://forum.gamedev.pl/index.php/topic,19151.msg229335.html#msg229 335 [EASTL] EASTL -- Electronic Arts Standard Template Library

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html [EASTL/GIT] paulhodge / EASTL http://github.com/paulhodge/EASTL 18

Recently Viewed Presentations

  • The Practice of Yoga

    The Practice of Yoga

    Ashtanga Yoga . Also known as Power Yoga . Fast paced and intense . A series of poses that are always in the same order . Main Focus: synchronizing breath and movement from pose to pose
  • V. Anatomy and Innervation of Skeletal Muscle Tissue

    V. Anatomy and Innervation of Skeletal Muscle Tissue

    A motor neuron and muscle fibers it stimulates form a motor unit 2. A motor unit may innervate as few as 10 or as many as 2000 muscle fibers, with an average of about 150 per unit V. Anatomy and...
  • Instrument Ground Training Module 2 Randy Schoephoerster www.airtreknorth.com

    Instrument Ground Training Module 2 Randy Schoephoerster www.airtreknorth.com

    EXAMPLE: A 150° heading change using a standard-rate turn would take 50 sec.(150° * 3°/sec. = 50 sec.) Rule of Thumb: (Airspeed/10) +7 = Standard Rate Turn Bank Angle. 2. A turn and slip indicator may be calibrated as 2...
  • WELCOME REVELATION Pastor Bill Cell Phone (714) 328-9719

    WELCOME REVELATION Pastor Bill Cell Phone (714) 328-9719

    WELCOME REVELATION Pastor Bill Cell Phone (714) 328-9719 Call Anytime
  • Data Modeling - Temple MIS

    Data Modeling - Temple MIS

    Data is raw, unorganized facts that need to be processed. Data can be something simple and seemingly random and useless until it is organized. For example, When data is processed, organized, structured or presented in a given context so as...
  • Are we ready for an Outcomes-based Regulatory Framework?

    Are we ready for an Outcomes-based Regulatory Framework?

    ot possible to identify or assess outcomes accurately, and simple rules is considered to be the most efficient way of achieving an outcome. Where there are . limited ways . to achieve an outcome. Where uncertainty needs to be reduced...
  • Susur Galur Penyelidikan

    Susur Galur Penyelidikan

    A good first sentence might be, "The research objective of this proposal is..." Do not use the word "develop" in the statement of your research objective. * 6. FRAME YOUR PROJECT AROUND THE WORK OF OTHERS Remember that research builds...
  • Snímek 1 - unob.cz

    Snímek 1 - unob.cz

    1994 - 1996 Police contingent in Mostar. Policejní mise a správa Mostaru. 1997 - 2001 PM Albania. Policejní mise v Albánie, výcvik pořádkových sil. 1999 - 2001 Demining Assistance Mission to Croatia. Likvidace min a čištění zaminovaných území