Z czego się uczyć

From Wiki

"Z czego uczyć się..." to stwierdzenie często powtarzające się w pytaniach początkujących. Opcji jest wiele. Można kupić albo wypożyczyć jakąś książkę bądź też znaleźć w Internecie jakiś tutorial. Jedne są lepsze, inne gorsze. Dlatego tutaj powstaje baza źródeł (zarówno papierowych jak internetowych) powszechnie uznanych za najlepsze do nauki danego tematu. Jeśli chcesz i potrafisz, możesz również pomóc prowadzić tą listę - na tym polega Wiki. Zasada jest jedna - nie wpisujemy tu wszystkich tekstów jakie istnieją na dany temat, jedynie te naprawdę najlepsze. Jednocześnie powstanie tej strony oznacza, że nie wolno już z pytaniem "Z czego się uczyć..." przychodzić na forum.gamedev.pl.


Spis treści

Język

C++

Dla początkujących

  • Symfonia C++ Standard - Jerzy Grębosz, Oficyna Kallimach [książka] (Tom 1,2: stron 1200)
    • Książka stanowi wstęp do programowania w C++. W bardzo prosty sposób przedstawia mechanizmy języka umożliwiając poznanie jego podstaw. Bardzo dobra pozycja nie tylko dla tych, którzy zaczynają swoja przygodę z językiem C++.
      Omawiane zagadnienia:
      • Instrukcje sterujące (if, while, do-while, for, switch, ...)
      • Typy (int, char, void, typedef, ...)
      • Operatory
      • Funkcje
      • Preprocesor
      • Tablice
      • Wskaźniki
      • Przeładowanie nazw funkcji
      • Klasy
      • Funkcje zaprzyjaźnione
      • Struktury, Unie, Pola bitowe
      • Zagnieżdżona definicja klasy
      • Konstruktor i Destruktor
      • Tablice obiektów (Object *obj = new Object[n], ...)
      • Wskaźniki do składników klasy
      • Konwersje
      • Przeładowanie operatorów
      • Dziedziczenie
      • Funkcje wirtualne
      • Operacje Wejścia/Wyjścia
      • Projektowanie programów obiektowo orientowanych


  • Język C++. Szkoła programowania. Wydanie V - Autor: Stephen Prata; Data wydania: 01/2006; Stron: 1306; Wydawnictwo Helion
    • Książka "Język C++. Szkoła programowania. Wydanie V" to właśnie taki podręcznik. Jego autor Stephen Prata przedstawia C++ w sposób idealnie nadający się dla początkujących programistów chcących opanować tajniki tego języka. Czytając tę książkę, poznasz historię języka C i jego najważniejsze elementy, dowiesz się, czym różni się programowanie proceduralne od obiektowego i jak stosować te dwie techniki.
      Omawiane zagadnienia:
      • Kompilatory języka C++
      • Struktura programu
      • Proste i złożone typy danych
      • Pętle i instrukcje warunkowe
      • Definiowanie funkcji i korzystanie z nich
      • Model pamięci w C++
      • Podstawowe elementy programowania obiektowego -- obiekty i klasy
      • Dynamiczne przydzielanie pamięci
      • Mechanizmy dziedziczenia
      • Obsługa wyjątków
      • Biblioteka STL
      • Operacje wejścia-wyjścia


  • Język C wskaźniki - Kenneth A. Reek, Helion [książka] (stron 535)
    • Dla tych którzy mają problemy z opanowaniem wskaźników ta książka jest idealnym lekarstwem. W bardzo prosty i przejrzysty sposób autor skupia się na wskaźnikach w języku C. Książka przeznaczona jest dla początkujących.


  • Podstawy języka C++ - Lippman, wyd. WNT [książka], (stron 1206)
    • Podstawy języka C++ Jest to tłumaczenie trzeciego - znacznie zmienionego i rozszerzonego - wydania podręcznika pt. "C++ Primer", który uznano w USA za najlepsze wprowadzenie w zagadnienia programowania w języku C++ i jednocześnie doskonałe źródło informacji o tym języku.
      Omawiane zagadnienia:
      • Typy danych
      • Wyrażenia
      • Instrukcje
      • Kolekcje
      • Funkcje
      • Zasięg deklaracji i czas trwania obiektów
      • Funkcje przeciążone
      • Klasy
      • Operatory przeciążone
      • Wzorce klas
      • Klasy pochodne i dziedziczne
      • Biblioteka wejścia-wyjścia


  • Thinking in C++, Tom 1, Bruce Eckel, wyd. Helion [książka] (stron 648)
    • Bardzo dobra pozycja, szczególnie dla osób, które już wiedzą czym jest funkcja i znają już troszeczkę podstawy C++.


  • Megatutorial "Od zera do gier kodera" - Karol Kuczmarski [online]
    • http://xion.org.pl/productions/texts/coding/megatutorial/
    • Bardzo dobry kurs programowania w C++ i Windows API. Autorowi udało się wyjaśnić złożone zagadnienia w bardzo przejrzysty sposób. Niewątpliwie nie tylko początkujący ale i średniozaawansowany programista znajdzie w nim coś dla siebie. Kurs zawiera także informacje, które są skierowane do osób znających już podstawy C++, ale dzięki przystępności formy w jakim te zagadnienia zostały opisane z kursu mogą bez większych problemów uczyć się początkujący programiści C++.
      Omawiane zagadnienia:
      • Podstawy programowania (operacje na zmiennych, programowanie obiektowe, wskaźniki, ...)
      • Zaawansowane C++ (zaawansowana obiektowość, wyjątki, szablony)
      • Windows API (Aplikacje okienkowe, Mysz i klawiatura, Windows GDI)


  • Lekcja programowania - Brian W. Kernighan, Rob Pike, wyd. WNT [książka] (stron 315)
    • Książka omawia błędy popełniane przez początkujących (i nie tylko) programistów, oraz uczy jak się ich wystrzegać. Bardzo przyjemna lektura.


  • Podsumowanie

Aby opanować C++ w podstawowej formie, powinieneś dobrze poznać klasy i relacje pomiędzy nimi, opanować wskaźniki, nie tylko nauczyć się odnajdywać błędy, ale także przewidywać możliwość ich pojawienia się.
Jeśli zastanawiasz się które pozycje najszybciej pozwolą Ci opanować podstawy C++, mogę Ci zasugerować abyś zaopatrzył się przede wszystkim w „Symfonię C++” Grębosza i „Thinking in C++ (Tom 1)” Eckel’a. Prawdopodobnie będziesz często wracał do tych książek. Nie zaszkodzi też, jeśli udasz się do biblioteki i przeczytasz „Lekcję programowania”, aby uświadomić sobie, jak wiele błędów będziesz całkowicie nieświadomie popełniał. W tzw. międzyczasie zaglądnij do Megatutoriala, być może szybko znajdziesz tam odpowiedź na jakieś dręczące Cię pytania.
Kropek

Dla średniozaawansowanych

  • Pasja C++ - Jerzy Grębosz, Oficyna Kallimach [książka], (Tom I,II: stron 615)
    • Książka stanowi kontynuacje ‘Symfonia C++’ o mechanizm szablonów i wyjątków. Niewątpliwie pozycja obowiązkowa dla średniozaawansowanych programistów.
      Omawiane zagadnienia:
      • Szablony funkcji (template <typename T> int foo(T p){}...)
      • Mechanizm RTTI
      • Szablony klas
      • Specjalizacja szablonów
      • Przyjaźń, a szablony klas
      • Dziedziczenie, a szablony
      • Klasy pojemnikowe - Wektor, Lista, Talia, Kolejka, Stos, Zbiór, Mapa
      • Iteratory
      • Wyjątki


  • Thinking in C++, Tom 2, Bruce Eckel, Chuck Allison, wyd. Helion [książka] (stron 688)
    • Obowiązkowa pozycja dla każdego programisty języka C++. Bardzo dobrze i szczegółowo wyjaśnione trudne zagadnienia języka C++. Książka nie jest przeznaczona dla początkującyh.
      Omawiane zagadnienia:
      • Obsługa wyjątków
      • Wszystko o łańcuchach
      • Strumienie wejścia-wyjścia
      • Wszystko o szablonach
      • Katalog algorytmów STL
      • Kontenery (vector, list, deque, ...)
      • RTTI (Rozpoznawanie typu w czasie wykonania programu)
      • Wielodziedziczenie
      • Wzorce projektowe
      • Współbieżność na przykładzie biblioteki ZThread


  • C++ Szablony, David Vandevoorde, Nicolai M. Josuttis, wyd. Helion [książka], (stron 470)
    • Obowiązkowa pozycja dla każdego programisty języka C++. Bardzo dobrze i szczegółowo wyjaśnione mechanizmy szablonów. Książka nie jest przeznaczona dla początkujących.
      Omawiane zagadnienia:
      • Szablony (wszystko na ten temat)
      • Metaprogramowanie
      • Zaawansowane zastosowania szablonów (Inteligentne wskaźniki, ...)


  • C++ Kruczki i fortele w programowaniu, Stephen C. Dewhurst, wyd. Helion [książka] (stron 263)
    • 99 najczęściej popełnianych błędów w języku C++.


  • C++. 50 efektywnych sposobów na udoskonalenie Twoich programów - Scott Meyers, wyd. Helion [książka] (stron 248)
    • Każda z zawartych w tej książce pięćdziesięciu wskazówek jest streszczeniem metod pisania lepszych programów w C++, zaś odpowiednie rozważania są poparte konkretnymi przykładami. Bardzo udana pozycja.


  • Język C++ bardziej efektywny - Scott Meyers, wyd. WNT [książka] (stron 352)
    • Jest to książka, z której czytelnik nauczy się pisać efektywne programy w języku C++. Materiał jest przedstawiony w 35 punktach, z których każdy jest podsumowaniem wiedzy programistów C++ na dany temat. Wyjaśniono w nich różnice między wskaźnikami i referencjami; wprowadzono nową składnię rzutowania typów; opisano domyślne destruktory.


  • STL w praktyce. 50 sposobów efektywnego wykorzystania - Scott Meyers, wyd. Helion [książka] (stron 296)
    • W książce Meyers przedstawia wiele poważniejszych aspektów STL pozwalających zrozumieć, dlaczego pewne rozwiązania są poprawne, a innych należy unikać.
      • Podstawowe informacje o bibliotece STL i jej zgodności z innymi standardami
      • Wskazówki dotyczące poprawnego doboru i używania pojemników
      • Opis pojemników typu vector i string
      • Omówienie pojemników asocjatywnych
      • Metody właściwego korzystania z iteratorów
      • Algorytmy wchodzące w skład STL
      • Funktory, klasy-funktory i funkcje


  • C++. Biblioteka standardowa. Podręcznik programisty - Nicolai M. Josuttis, wyd. Helion [książka] (stron 728)
    • Biblioteka standardowa C++ to zestaw klas oraz interfejsów znacznie rozszerzających język C++. Książka „C++. Biblioteka standardowa. Podręcznik programisty” dostarcza wyczerpującej dokumentacji każdego z komponentów biblioteki, jak również przystępnych wyjaśnień złożonych zagadnień.
      • STL
      • Łańcuchy
      • Operacje wejścia-wyjścia z wykorzystaniem klas strumieniowych
      • Alokatory


  • Język C++ ćwiczenia i rozwiązania, David Vandevoorde, wyd. WNT [książka], (stron 269)
    • Zanim zaczniesz czytać pozycje dla zaawansowanych powinieneś rozwiązać znaczną większość zadań z tej książki 'z buta'.


  • Standard Template Library Programmer's Guide, Silicon Graphics Computer Systems, Inc. , [online]

http://uic.rsu.ru/doc/programming/c++/STL_doc/


  • Podsumowanie

Aby uważać się za średniozaawansowanego programistę C++ powinieneś bardzo dobrze poznać C++; subtelne idiomy tego języka. Poznać STL’a, czuć co może się stać podczas niewłaściwego wielo-dziedziczenia a także słyszeć o błędach typu „pure virtual function call” i wiedzieć, że gdy zaczniesz czytać pozycje dla zaawansowanych będziesz doskonale rozumiał skąd się biorą. Aby stać się średnio-zaawansowany przeczytaj 4-5 książki z wymienionej listy (obowiązkowo: Thinking in C++, Tom 2 i C++ Szablony).
Kropek

Dla zaawansowanych

  • Język C++ Metaprogramowanie za pomocą szablonów, David Abrahams, Aleksey Gurtovoy, wyd. Helion [książka] (stron 330)
    • Książka została napisana przez współautorów biblioteki Boost. Omawia wiele bardzo pouczających przykładów. Niewątpliwie jedna z bardziej wybitnych pozycji.


  • Więcej niż C++. Wprowadzenie do bibliotek Boost, Bjorn Karlsson, wyd. Helion [książka] (stron 382)
    • Pozycja jest wprowadzeniem do biblioteki Boost. Mimo kilku błędów w listingach warto ją przeczytać.
      Omawiane zagadnienia:
      • Smart_ptr, Conversion, Utility, Operators, Regex, Any, Variant, Tuple, Bind, Lambda, Function, Signals


  • Efektywne programowanie w C++, Dov Bulka, David Mayhew, wyd. Mikom [książka] (stron 285)
    • Książka traktuje o wydajności języka C++ i niektórych z jego bibliotek. Omawiają różne pułapki wydajnościowe języka C++.
      Omawiane zagadnienia:
      • Śledzenie
      • Konstruktory i destruktory
      • Funkcje wirtualne
      • Optymalizacje wartości zwracanej
      • Obiekty tymczasowe
      • Zarządzanie pamięcią w przetwarzaniu jedno i wielowątkowym
      • Optymalizacje wywołań
      • Optymalizacja kodu
      • Skalowalność


  • Nowoczesne projektowanie w C++, Andrei Alexandrescu, wyd. WNT (stron 361)
    • Książka zawiera zbiór komponentów generycznych. Książka jest obowiązkową pozycją w kolekcji doświadczonego programisty.
      Omawiane zagadnienia:
      • Klasy parametryzowane wytycznymi
      • Singletony
      • Inteligentne wskaźniki
      • Fabryki obiektów
      • Fabryka abstrakcyjna
      • Wielometody
      • Wielowątkowość


  • Model obiektu w C++, Stanley B. Lippman, wyd. WNT (stron 270)
    • Książka zawiera opis wewnętrznych mechanizmów języka C++. Pozycja obowiązkowa.
      Omawiane zagadnienia:
      • Semantyka konstruktora
      • Semantyka generowania obiektów tymczasowych
      • Kapsułkowanie
      • Dziedziczenie
      • Semantyka czasu wykonania
      • Opis rozszerzenia modelu obiektów (wzorce, wyjątki, RTTI)


  • Język C++ - Bjarne Stroustrup, wyd. WNT [książka] (stron 976)
    • Książkę można uznać za encyklopedie języka C++. Omówione są w niej wszelkie mechanizmy języka C++.


  • Biblioteka standardowa C++ - P. J. Plauger, wyd. WNT [książka] (stron 774)
    • Opis podstawowych modułów bibliotecznych języka C++, ich przeznaczenie, oraz związki z innymi modułami. Książka ta uczy jak projektować i realizować specjalistyczne biblioteki C++.
      Omawiane zagadnienia:
      • <defines>, <exception>, <new>, <typeinfo>, <ios>, <streambuf>, <istream>, <ostream>, <iomanip>, <strstream>, <fstream>, <iostream>, <string>, <wstring>, <bits>, <bitstring>, <dynarray>, <ptrdynarry>, <complex>


  • Podsumowanie

To dopiero początek...

Java

  • Core Java 2. Podstawy - Cay S. Horstmann, Gary Cornell, wyd. Helion [książka] (PL), (stron 744)
    • Doskonała ksiażka do nauki Javy od podstaw. Dla znających C++ pomocne są liczne porównania z Java. Pomaga to zrozumieć język Java. Książka przeznaczona dla początkujących programistów. Porusza następujące zagadnienia:
      • Omówienie języka Java i podstawowych zasad programowania obiektowego
      • Tworzenie GUI za pomocą klas Swing
      • Sposoby pisania klas wewnętrznych i podstawy proxy
      • Podstawy pisania apletów
      • Korzystanie z modelu zdarzeń Javy
      • Omówienie operacji wejścia/wyjścia

Zawiera wiele dobrze dobranych przykładów.


  • Core Java 2. Techniki zaawansowane - Cay S. Horstmann, Gary Cornell, wyd. Helion [książka] (PL), (stron 1144)
    • Kontynuacja serii. Niezwykle pomocna przy realizacji wiekszych projektów. Książka przeznaczona dla zaawansowanych programistów. Porusza następujące zagadnienia:
      • Aplikacje wielowątkowe
      • Kolekcje
      • Połączenia sieciowe
      • Interfejsy JDBC oraz LDAP
      • Aplikacje rozproszone
      • CORBA
      • Zaawansowane zastosowanie bibliotek Swing i AWT
      • JavaBeans
      • Aspekt bezpieczeństwo aplikacji
      • Internacjonalizacja
      • Wykorzystanie XML

Zawiera wiele dobrze dobranych przykładów.


  • Thinking in Java. Wydanie IV - Bruce Eckel, wyd. Helion [książka] (PL), (stron 1256)
    • Bardzo dobra pozycja, dokładnie omawiająca każdy aspekt Java. Książka przeznaczona dla średniozaawansowanych programistów Java.


  • Java. Tworzenie gier - David Brackeen, Bret Barker, Laurence Vanhelsuwe, wyd. Helion [książka] (PL), (stron 784)
    • Autorzy starają się przedstawić krok po kroku tworzenie gier w Java. Książka nie uczy Javy, tylko pokazuje jak wykorzystać Javę do tworzenia skomplikowanych aplikacji zwanych grami.


  • Struktury danych i techniki obiektowe na przykładzie Javy 5.0 - Elliot Koffman, Paul Wolfgang, wyd. Helion [książka] (PL), (stron 936)
    • Prezentowana publikacja to godny uwagi przewodnik po strukturach danych i technikach programowania obiektowego, dostępnych dla programistów korzystających z Javy.


C#

  • Język C#. Szkoła programowania - Klaus Michelsen, wyd. Helion [książka] (PL), (stron 1128)
    • Pozycja przeznaczona jest dla początkujących programistów C# i stanowi wprowadzenie do języka.
  • Wstęp do programowania w języku C# - Adam Boduch, wyd. Helion [książka] (PL), (stron 373)
    • Książka dla absolutnie początkujących programistów, omawiająca podstawowe pojęcia używane podczas tworzenia programów, a także podstawy języka C#, tworzenie aplikacji w systemie Windows i korzystanie z .NET.

Algorytmy

W dzisiejszych czasach programowanie stało się dziedziną wiedzy, której opanowanie ma zasadnicze znaczenie przy rozwiązywaniu wielu problemów inżynierskich, a którą przy tym można badać i prezentować w sposób naukowy. Gry są zbiorem Algorytmów i Struktur Danych. Algorytmika żadnemu programiście gier nie powinna być obca. Im lepiej opanujesz tą sztukę tym lepiej, łatwiej i efektywniej będziesz pisał gry.


Dla początkujących

  • Perełki oprogramowania - Jon Bentley, wyd. WNT [książka]
    • Książka stanowi wstęp do krainy algorytmów. Są w niej opisane różne podstawowe problemy z którymi autor się spotkał jak i metody poradzenia sobie z nimi. Jeśli nie dostrzegasz piękna w algorytmach, nie wiesz dlaczego powinieneś szukać optymalnych rozwiązań książka ta bardzo delikatnie wprowadzi Cię w ten świat. Z przykładami w C.


  • Algorytmy + struktury danych = programy - Niklaus Wirth, wyd. WNT [książka]
    • Wprowadzenie do podstaw algorytmiki. Z przykładami w Pascal'u.
      Omawiane zagadnienia:
      • Podstawowe struktury danych (tablica, rekord, ...)
      • Sortowanie
      • Algorytmy Rekurencyjne
      • Dynamiczne struktury danych (listy, struktury drzewiaste, drzewa binarne, algorytmy mieszające)
      • Struktury językowe i kompilatory


  • C++ Algorytmy i Struktury Danych - Adam Drozdek, wyd. Helion [książka]
    • Książka w bardzo przyjemny sposób prezentuje podstawy algorytmiki. Autor omawiane przez siebie zagadnienia opisuje bardzo dokładnie, ale w taki sposób, że nie są one trudne do zrozumienia. Bardzo dobra pozycja.
      Omawiane zagadnienia:
      • Analiza złożoności
      • Podstawowe struktury danych (listy, stosy i kolejki, drzewa binarne, drzewa wielokierunkowe)
      • Rekurencja
      • Sortowanie
      • Grafy (Najkrótsza droga, drzewa rozpinające, spójność, przepływ, ...)
      • Mieszanie
      • Kompresja danych
      • Algorytmy zarządzania pamięcią


  • Algorytmy struktury danych i techniki programowania - Piotr Wróblewski, wyd. Helion [książka]
    • Książka jest bardzo łagodnym wstępem do algorytmów. Porusza absolutne podstawy. Autor zwykle bardzo pobieżnie przedstawia omawiane zagadnienia. Przeznaczona dla osób zaczynających swoją zabawę z algorytmiką. Z przykładami w C++
      Omawiane zagadnienia:
      • Rekurencja
      • Algorytmy sortowania
      • Struktury danych (lista, stos, kolejka, drzewa binarne)
      • Algorytmy przeszukiwania
      • Podstawy grafów


  • Wykłady z Informatyki z przykładami w języku C - Alfred V. Aho, Jeffrey D. Ullman, wyd. Helion [książka]
    • Książka stanowi teoretyczne wprowadzenie do podstaw algorytmów i struktur danych.
      Omawiane zagadnienia:
      • Rekurencja
      • Analiza Algorytmów (notacja "dużego O")
      • Kombinatoryka i prawdopodobieństwo
      • Podstawowe struktury danych (listy, drzewa, zbiory, grafy, ...)
      • Wzorce, automaty i wyrażenia regularne
      • Logika zdań
      • Logika predykatów


  • Podsumowanie

Jako początkujący programista gier powinieneś wiedzieć czym jest złożoność obliczeniowa, jak się ją oblicza i co oznacza w praktyce. Znać kilka algorytmów sortowania (zdawać sobie sprawę, że nie wszystkie algorytmy sortowania są stabilne i co to oznacza). Potrafić zaimplementować podstawowe struktury danych; kolejkę, stos, listę (bazującą na wskaźnikach) (jednokierunkową, dwukierunkową, cykliczną), strukturę drzewiastą (drzewo binarne, czerwono-czarne), wektor binarny. Rozumieć czym jest graf i jakie problemy za pomocą teorii grafów można rozwiązać. Te podstawowe struktury są bardzo często wykorzystywane we wszelkich programach a już zapewne wszystkie są używane w grach i stanowią podstawę Algorytmów i Struktur Danych. Bardzo dobrą książką przeznaczoną dla początkujących jest „C++ Algorytmy i Struktury Danych” Drozdka.
Kropek

Dla średniozaawansowanych

  • Algorytmy w C - Kyle Loudon, wyd. Helion [książka]
    • Książka stanowi zbiór gotowych algorytmów.
      Omawiane zagadnienia:
      • Wskaźniki
      • Rekurencja
      • Algorytmy sortowania
      • Struktury danych (lista, stos, kolejka, drzewa binarne, tablice asocjacyjne, wstęp do grafów)
      • Metody numeryczne (przybliżanie wielomianami, rozwiązywanie równań, ...)
      • Kompresja danych (LZ77, implementacja kodowania Huffmana)
      • Szyfrowanie danych (DES, RSA)
      • Algorytmy geometryczne (sprawdzanie czy odcinki się przecinaja, obrys wypukły, długość łuku)


  • Algorytmy w C++ - Robert Sedgewick, wyd. RM [książka], (stron 454)
    • Książka bardzo dokładnie omawia podstawy algorytmiki; sortowanie i wyszukiwanie, oraz struktury danych.
      Omawiane zagadnienia:
      • Zasady Analizy Algorytmów
      • Struktury Danych (lista, stos, kolejka, drzewa, drzewa czerwono-czarne, randomizowane drzewa, B-drzewa, drzewa Trie, patricia, drzewa TST, kolejki priorytetowe, ...)
      • Rekurencja
      • Sortowanie (bardzo rozbudowane: sortowanie list, Shella, sortowanie pozycyjne, sieci sortujące, ...)
      • Mieszanie


  • Algorytmy w C++ Grafy - Robert Sedgewick, wyd. RM [książka], (stron 662)
    • Książka bardzo dokładnie omawia Grafy: Własności i rodzaje grafów.
      Omawiane zagadnienia:
      • Rodzaje grafów i ich własności
      • Przeszukiwanie grafów
      • Grafy skierowane i dagi
      • Minimalne drzewa rozpinające
      • Najkrótsze ścieżki
      • Przepływ sieci


  • Wprowadzenie do algorytmów - Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, wyd. WNT [książka], (stron 1195)
    • Autorzy nie tylko bardzo starannie omawiają opisane przez siebie algorytmy, ale także podają źródła. Niewątpliwie najlepsza pozycja książkowa traktująca o algorytmice przeznaczona dla początkującego i średniozaawansowanego programisty.
      Omawiane zagadnienia:
      • Zasady Analizy Algorytmów
      • Rekurencja
      • Analiza probabilistyczna i algorytmy randomizowane
      • Sortowanie
      • Struktury Danych (lista, tablice z haszowaniem, drzewa binarne, drzewa czerwono-czarne, B-drzewa, kopce dwumianowe, Kopce Fibonacciego, grafy)
      • Programowanie dynamiczne
      • Algorytmy Grafowe (minimalne drzewo rozpinające, najkrótsze ścieżki, maksymalny przepływ, sieci sortujące)
      • Operacje na macierzach
      • Programowanie liniowe
      • Wyszukiwanie wzorca (algorytm Rabina-Karpa i Knutha-Morrisa-Pratta)
      • Geometria obliczeniowa (znajdowanie otoczki wypukłej, znajdowanie pary najmniej odległych punktów, własności odcinków)
      • NP-zupełność (Problemy NP-zupełne, problem komiwojażera, ...)
      • Algorytmy aproksymacyjne
      • Wielomiany i FFT


  • Podsumowanie

Średniozaawansowany programista potrafi bez większych problemów implementować różne rodzaje algorytmów i struktur danych -- w zależności od problemu. Rozumie różnice między nimi i poprawnie przewiduje ich efektywność nie tylko ze względu na rozróżnienie problemu, ale także ze względu na rodzaj danych (np. Patricia vs AVL). Opanował perfekcyjnie struktury grafowe. Poznał i zrozumiał bardziej specjalizowane algorytmy; jak algorytmy kompresji, szyfrowania, odnajdywanie wzorców, czy algorytmy geometryczne. Powinien także zapoznać się z Metodami Numerycznymi oraz zagadnieniami związanymi z AI.
Kropek


Dla zaawansowanych

  • Sztuka programowania, Donald Knuth, wyd. WNT [książka] (stron: tomy 1,2,3: 680 + 820 + 837 = 2337)
    • Pozycja obowiązkowa dla zaawansowanych programistów.
      Jeśli mogę napisać, że czasami gdy rano spoglądam na kobietę swoich marzeń, to znów na nowo się zakochuję, to bardzo podobnie jest z Dziełem Don Knutha. Jest to Prawdziwa Biblia dla Programistów. Sztukę programowania czytałem kilkukrotnie i za każdym razem na nowo odkrywałem piękno algorytmiki i dostrzegałem ogrom pracy włożonej przez Don Knuth’a. Ponadto to Wielkie Dzieło zawiera wręcz encyklopedyczny spis kto i kiedy wymyślił dany algorytm a także referencję do publikacji. Uwaga! Aby zrozumieć większość omawianych w niej tematów musisz w miarę sprawnie posługiwać się aparatem matematycznym.


  • Computing Research Repository, [online]
    • Ogromny zbiór artykułów (preprintów), często traktujących o algorytmach, które dopiero się rodzą. W gąszczu publikacji można znaleźć omówienie problemów o których istnieniu nawet nie zdawaliśmy sobie sprawy.
    • http://arxiv.org/corr/home
      • Niektóre z działów: Artificial Intelligence; Computational Complexity; Computational Geometry; Computer Science and Game Theory; Computer Vision and Pattern Recognition; Computers and Society; Cryptography and Security; Data Structures and Algorithms; Databases; Digital Libraries; Discrete Mathematics; Distributed, Parallel, and Cluster Computing; Graphics; Human-Computer Interaction; Information Theory; Logic in Computer Science; Mathematical Software; Multiagent Systems; Multimedia; Networking and Internet Architecture; Neural and Evolutionary Computing; Numerical Analysis; Performance; Sound;

DirectX

  • Programowanie gier w DirectX - Mason McCuskey, wyd. Helion [książka] (PL), (stron 896)
    • Książka stanowi wstęp do programowania grafiki z wykorzystaniem DirectX 8.0. Jedna z najlepszych polskojęzycznych pozycji traktujących o DirectX.


  • DirectX 9 Graphics: The Definitive Guide to Direct3D - Alan Thorn, wyd. Wordware Publishing [książka] (EN), (stron 345)
    • Świetna książka opisująca od podstaw programowanie grafiki w DirectX 9.0. Bardzo przyjemnie się czyta.


  • Advanced 3D Game Programming with DirectX 10.0 - Peter Walsh, wyd. Wordware Publishing [książka] (EN), (stron 552)
    • Autor w przystępny sposób opisuje DirectX 10.0.



OpenGL

  • OpenGL. Księga eksperta - Richard S. Wright Jr., Benjamin Lipchak, wyd. Helion [książka], (stron 1078)
    • Książka stanowi wstęp do programowania grafiki z wykorzystaniem OpenGL’a. Opisuje zarówno podstawy programowania grafiki za pomocą biblioteki OpenGL, jak i możliwości zastosowania jej na różnych platformach. Obowiązkowa pozycja dla każdego programisty wykorzystującego bibliotekę OpenGL. Bardzo przystępnie napisana. Książka przeznaczona dla początkujących jak i średniozaawansowanych.
      Omawiane zagadnienia:
      • Używanie OpenGL 1.1
      • OpenGL w róznych systemach operacyjnych
      • Obiekty buforów
      • Analiza przesłonięć
      • Mapy cieni
      • Wprowadznie do Shaderow (OpenGL 1.4)


  • OpenGL w praktyce - Janusz Ganczarski, wyd. BTC [książka], (stron 582)
    • Książka stanowi wstęp do programowania grafiki z wykorzystaniem OpenGL’a.


  • OpenGL i wprowadzenie do programowania gier - Wojciech Sterna, Bartosz Chodorowski, wyd. NAKOM [książka], (stron 414)
    • Książka jest skierowana wyłącznie do koderów stawiających pierwsze kroki w programowaniu grafiki. Niewątpliwą zaletą jest jej niska cena w stosunku do innych podobnych pozycji. Autorzy w bardzo przystępny sposób opisują podstawy podstaw tworzenia gier w OpenGL.


  • OpenGL. Programowanie gier - Kevin Hawkins, Dave Astle, wyd. Helion [książka], (stron 630)
    • Książka stanowi wstęp do programowania grafiki z wykorzystaniem OpenGL’a. Książka przeznaczona dla początkujących.
      Omawiane zagadnienia:
      • Używanie OpenGL 1.1 w systemie Windows
      • Tworzenie szkieletu gry (DirectInput, DirectX Audio, Format MD2)


  • The OpenGL Extensions Guide - Eric Lengyel, wyd. Charles River Media. [książka] (ENG), (stron 670)
    • W książce autor opisuje rozszerzenia OpenGl'a i podaje konkretne przykłady ich wykorzystania.


Shadery

  • The Cg Tutorial - Randima Fernando, Mark J. Kilgard, 2003

Programowanie gier

Tworzenie gier wymaga opanowania nie tylko języka programowania i podstaw algorytmiki, ale także wielu innych dziedzin wiedzy; rachunku macierzowego i wektorowego, geometrii, algorytmów geometrycznych, algorytmów numerycznych i wielu innych zagadnień które przez swoją specjalizację zwykle nie są omawiane w książkach dotyczących podstaw grafiki, programowania czy podstawowych algorytmów. Dlatego powstają pozycje dotyczące programowania gier w sensie bardzo skomplikowanych relacji pomiędzy obiektami i opisujące algorytmy najczęściej implementowane w grach.
Uwaga! Kategoria [Programowanie Gier] nawet na poziomie [dla początkujących] zawiera materiał bardzo skomplikowany! Jeśli chcesz zostać programistą gier i rozpocząć studiowanie materiałów z tej kategorii musisz wcześniej obowiązkowo opanować:
[Język C++] na poziomie [średniozaawansowany]
[Algorytmy] na poziomie [podstawowy]
[OpenGL/DirectX] na poziomie [średniozaawansowany]
W przeciwnym wypadku książki które znajduję się w kategorii dla początkujących będą dla Ciebie niezrozumiałe.
Kropek



Dla początkujących

  • 3D Math Primer for Graphics and Game Development - Fletcher Dunn, wyd. Wordware Publishing, Inc. [książka] (ENG), (stron 476)
    • Autorowi udało się w bardzo przejrzysty i czytelny sposób opisać część matematyki stojącej za podstawami programowania gier. Teorie poparł klarownymi przykładami w języku C++. Bardzo udana pozycja.


  • Mathematics for 3D Game Programming & Computer Graphic - Eric Lengyel, wyd. Charles River Media. [książka] (ENG), (stron 570)
    • Bardzo dobra pozycja opisująca matematyczne podstawy większości algorytmów wykorzystywanych w silnikach.


  • Triki najlepszych programistów gier 3D - Andre LaMothe, wyd. Helion [książka], (stron 1297)
    • Obowiązkowa pozycja każdego programisty gier. Książka omawia nie tylko sposoby implementacji różnych algorytmów ale także prezentuje często bardzo dokładne teoretyczne wprowadzenie.
      Omawiane zagadnienia:
      • Krótki kurs programowania w Windows i DirectX
      • Obliczenia i transformacje w trzech wymiarach (wektory, macierze i kwaterniony)
      • Struktura silnika gry 3D
      • Analiza potoku 3D
      • Renderowania 3D (modelowanie brył, oświetlenie, cieniowanie, przycinanie, podział przestrzenny)
      • Animacja postaci
      • Optymalizacja kodu


Dla średniozaawansowanych

  • 3D Game Engine Design: A Practical Approach to Real-Time Computer Graphics - David H. Eberly, wyd. Morgan Kaufmann [książka] (ENG), (2 wydanie, stron 1040)
    • Olbrzymi zbiór algorytmów z których każdy silnik musi korzystać. Bardzo dobra pozycja.


  • Seria Graphics Gems
    • Jest to seria książek które były wydawane na początku lat dziewięćdziesiątych – klasyka kina. Zdawać by się mogło - prehistoria i nie warto sobie zaprzątać głowy takimi starociami. Nic bardziej mylnego. W książkach opisano wiele ciekawych zagadnień, które warto znać.
    • Tom 1 - Andrew S. Glassner, wyd. Morgan Kaufmann [książka] (ENG), (stron 672)
    • Tom 2 - James Arvo, wyd. Morgan Kaufmann [książka] (ENG), (stron 672)
    • Tom 3 - David Kirk, wyd. Academic Press Inc. [książka] (ENG), (stron 631)
    • Tom 4 - Heckbert, wyd. Academic Press Inc. [książka] (ENG), (stron 575)
    • Tom 5 - Alan W. Paeth, wyd. Morgan Kaufmann [książka] (ENG), (stron 438)


  • Seria Perełki Programowania Gier (Game Programming Gems)
    • Tomy (1[PL],2[PL],3[PL],4[ENG],5[ENG],6[PL], 7[ENG], 8[ENG])
    • W serii znajdziesz wiedzę doświadczonych programistów. Poruszają Oni wiele ciekawych zagadnień, z którymi spotykają się w pracy programistów gier. Obowiązkowa seria dla każdego programisty gier.
    • Tom 1 - Mark DeLoura, wyd. Helion [książka] (PL), (stron 638)
    • Tom 2 - Mark DeLoura, wyd. Helion [książka] (PL), (stron 628)
    • Tom 3 - Dante Treglia, wyd. Helion [książka] (PL), (stron 728)
    • Tom 4 - Andrew Kirmse , wyd. Charles River Media, Inc. [książka] (ENG: Game Programming Gems 4), (stron 703)
    • Tom 5 - Kim Pallister, wyd. Charles River Media, Inc. [książka] (ENG: Game Programming Gems 5), (stron 791)
    • Tom 6 - Michael Dickheiser , wyd. Helion [książka] (PL), (stron 736)
    • Tom 7 - Scott Jacobs , wyd. Delmar [książka] (ENG), (stron 710)
    • Tom 8 - Mark DeLoura , wyd. Charles River Media, Inc. [książka] (ENG: Best of Game Programming Gems), (stron 549)



  • Seria ShaderX
    • Obowiązkowa pozycja dla każdego programisty gier.
    • http://developer.amd.com/documentation/reading/pages/ShaderX.aspx - część artykułów z pierwszych trzech tomów (autorstwa ATI)
    • Tom 1 Direct3D ShaderX: Vertex and Pixel Shader Tips and Tricks - Wolfgang Engel, wyd. Charles River Media [książka] (ENG), (stron 500)
    • Tom 2a ShaderX2: Introductions and Tutorials with DirectX 9.0 - Wolfgang Engel, wyd. Wordware Publishing [książka] (ENG), (stron 500)
    • Tom 2b ShaderX2: Shader Programming Tips and Tricks with DirectX 9.0 - Wolfgang Engel, wyd. Wordware Publishing [książka] (ENG), (stron 400)
    • Tom 3 ShaderX3: Advanced Rendering with DirectX and OpenGL - Wolfgang Engel, wyd. Charles River Media [książka] (ENG), (stron 654)
    • Tom 4 ShaderX4: Advanced Rendering Techniques - Wolfgang Engel, wyd. Charles River Media [książka] (ENG), (stron 640)
    • Tom 5 ShaderX5: Advanced Rendering Techniques - Wolfgang Engel, wyd. Charles River Media [książka] (ENG), (stron 624)
    • Tom 6 ShaderX6: Advanced Rendering - Wolfgang Engel, wyd. Charles River Media [książka] (ENG), (stron 720)
    • Tom 7 ShaderX7: Advanced Rendering Techniques - Wolfgang Engel, wyd. Charles River Media [książka] (ENG), (stron)


  • Level of Detail for 3D Graphics - David Luebke, wyd. Morgan Kaufmann [książka] (ENG), (stron 432)
    • Książka dokładnie zgłębia bardzo popularną i podstawowa technikę zwiększania efektywności gier -- LOD.


  • Principles of Digital Image Synthesis - Andrew S. Glassner, wyd. Morgan Kaufmann [książka] (ENG), (stron 1400)
    • Bardzo dobra książka omawiająca prezentująca teoretyczne podstawy renderingu.


  • An Introduction to Ray tracing - Andrew S. Glassner, wyd. Morgan Kaufmann [książka] (ENG), (stron 327)
    • Bardzo dobre wprowadzenie do Ray tracing. Autorowi udało się w przyjemny sposób opisać wydawać by się mogło złożone algorytmy.

Dla zaawansowanych

  • Advanced Global Illumination - Philip Dutre, wyd. AK Peters [książka] (ENG), (stron 366)
    • Książka poświęcona popularnej ostatnio technice renderingu zwanej ‘Global Illumination’, z przykładami.


  • Geometria obliczeniowa - Mark de Berg, Marc van Kreveld, Mark Overmars, Otfried Schwarzkopft, wyd. WNT [książka] (PL), (stron 430)
    • W książce są omawiane często dość złożone algorytmy geometryczne. Począwszy od triangulacji wielokąta, diagramów Voronoi (i ich zastosowaniu), Kd-drzew; poprzez wiele innych równie interesujących zagadnień autorzy starają się wyjaśniać zasady działania, oraz efektywność poszczególnych algorytmów.


  • Radiosity and Realistic Image Synthesis - Michael F. Cohen, wyd. Morgan Kaufmann [książka[ (ENG), (stron 381)


  • Computer Animation: Algorithms and Techniques - Rick Parent, wyd. Morgan Kaufmann [książka] (ENG), (stron 624)


  • Algorithmic Geometry - Jean-Daniel Boissonnat, wyd. Cambridge University Press [książka] (ENG), (stron 541)


  • High Dynamic Range Imaging: Acquisition, Display, and Image-Based Lighting, wyd. Morgan Kaufmann [książka] (ENG), (stron 520)
    • Autor w ciekawy sposób opowiada o HDRI.

Windows API

  • Programowanie Windows - Charles Petzold, wyd. RM [książka] (PL), (stron 1295)
    • Jest to jeden z najlepszych podręczników opisujący od podstaw Win32 API.
      Omawiane zagadnienia:
      • Unikod w Windows
      • Komunikaty
      • Wyswietlanie tekstu (GDI)
      • Podstawy grafiki (GDI)
      • Klawiatura, mysz
      • Zegar
      • Kontrolki (zagadnienie okna potomnego)
      • Menu i inne zasoby
      • Okna dialogowe
      • Schowek
      • Metapliki
      • MDI
      • Wątki w Windows
      • Biblioteki dynamiczne (dll)
      • Dźwięk (wave, MIDI)
      • Podstawy programowania sieciowego (gniazda TCP/IP, FTP)


  • Windows via C/C++ - Jeffrey Richter, Christophe Nasarre, wyd. Microsoft Press; 5 wydanie [książka] (PL), (stron 852)
    • Książka umożliwia opanowanie zawiłości systemów Microsoftu. Piąte wydanie zostało poszerzone o Windows XP, Windows Vista i Windows Server 2008.
      Omawiane zagadnienia:
      • Realizacja zadań (procesy, zadania, wątki)
      • Zarządzanie pamięcią (architektura pamięci, stos wątku, sterta)
      • Dynamicznie dołączane biblioteki
      • Strukturalna obsługa wyjątków


  • Advanced Windows Debugging - Mario Hewardt, Daniel Pravat, wyd. Addison-Wesley Professional [książka] (EN), (stron 840)
    • Pozycja skierowana do bardziej doświadczonych adeptów programowania Windows. Autorzy przy pomocy klarownych przykładów omawiają te bardziej i mnie znane błędy. Wyjaśniają skąd się biorą, jak szybko je rozpoznać i usunąć.
      Omawiane zagadnienia:
      • Debuggers
      • Debugging
      • Postmortem Debugging



Programowanie sieciowe

W sekcji tej są zamieszczone opisy książek traktujących przede wszystkim o praktycznym (z przedstawionymi implementacjami) programowaniu sieciowym.

  • Biblia TCP/IP Tom 2: Implementacje - W. Richard Stevens, Gary R. Wright, wyd. RM [książka] (PL), (stron 1236)
    • Książka ta wykorzystując 500 ilustracji i 15 000 linii działającego kodu źródłowego pomoże ci zrozumieć implementację TCP/IP. Będziesz uczył się o powiązaniach pomiędzy API gniazd a zestawem protokołów, dowiesz się, jakie są różnice pomiędzy implementacją hosta a rutera. Dodatkowo zostały przedstawione podstawowe elementy takie, jak przesyłanie grupowe (ang. multicasting), wspieranie LongFatPipe, skalowanie okna, opcja znacznika czasu, zabezpieczenie przed zawijaniem numerów kolejnych (ang. sequence number) i wiele, wiele innych. Szeroki zakres obejmowanego materiału i oparcie na rzeczywistym standardzie czynią z tej książki obowiązkową lekturę dla każdego, kto zajmuje się TCP/IP.
      • Mbuf: bufory pamięci
      • Interfejsy: Ethernet, SLIP i pętla zwrotna
      • IP, przesyłanie w trybie multicast IP
      • Domeny i protokoły
      • ICMP - internetowy protokół komunikatów kontrolnych
      • IGMP - internetowy protokół zarządzania grupami
      • Rutowanie przesyłania grupowego IP
      • Warstwa gniazd
      • Routing
      • ARP: Protokół rozróżniania adresów
      • Bloki kontroli protokołu
      • UDP: Protokół datagramów użytkownika
      • TCP: Protokół sterujący transmisją


  • TCP/IP Sockets in C: Practical Guide for Programmers - Michael J. Donahoo, Kenneth L. Calvert, wyd. Morgan Kaufmann / MIKOM [książka] (PL), (stron 110)
    • Przyjemna pozycja skierowana do początkujących i średnio zaawansowanych programistów. W zwięzłej formie autorzy opisali istotne (między innymi dla programistów gier) zagadnienia związane z gniazdami TCP/IP w Windows.
      Omawiane zagadnienia:
      • Sockety
      • TCP/UDP Echo
      • TCP Serwer


  • Pocket Guide to TCP/IP Sockets - Michael J. Donahoo, Kenneth L. Calvert, wyd. Morgan Kaufmann [książka] (EN), (stron 130)
    • Pozycja prezentuje informacje na wysokim poziomie, lecz w zwięzłej formie.


Projektowanie

  • Inżynieria oprogramowania - Andrzej Jaszkiewicz, wyd. Helion [książka] (PL), (stron 276)
    • Książka omawia podstawowe zagadnienia inżynierii oprogramowania: modele cyklu życia oprogramowania, czynności wykonywane w poszczególnych fazach przedsięwzięcia programistycznego, wykorzystanie narzędzi CASE oraz zarządzanie przedsięwzięciem programistycznym. Omawiane są najpopularniejsze metody analizy i projektowania oprogramowania.


  • Wzorce projektowe, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, wyd. WNT (stron 455)
    • Książka przedstawia wzorce projektowe. Każdy wzorzec określa problem, który wielokrotnie występuje, a następnie opisuje zasadniczą część rozwiązania tego problemu w taki sposób aby można było użyć tego rozwiązania milion razy, ale nigdy dwa razy tak samo.
      Omawiane zagadnienia:
      • Singleton
      • Adapter
      • Obserwator
      • I wiele innych (ponad 20 omówionych wzorców)


  • Refaktoryzacja do wzorców projektowych, Joshua Kerievsky, wyd. Helion (stron 320)
    • Bazując na podstawowych przekształceniach, wprowadzonych w książce "Refaktoryzacja. Ulepszanie struktury istniejącego kodu" Martina Fowlera Kerievsky opisuje teoretyczne i praktyczne zagadnienia związane z refaktoryzacją kodu pod kątem wzorców projektowych. Zagadnienie szczególne wartościowe w kontekście wprowadzania wzorców projektowych w procesie programowania ekstremalnego, opartego w dużej mierze na ciągłej refaktoryzacji.
      Omawiane zagadnienia:
      • zastąp wyrażenia warunkowe wzorcem Strategy
      • przenieś operacje gromadzenia danych do parametru zbierającego
      • zastąp niejawny język interpreterem
      • zahermetyzuj klasy, wprowadzając fabrykę
      • I wiele innych (27 omówionych przekształceń)


  • Code Complete - Steve McConnel, wyd. Microsoft Press [książka] (EN), (stron 960)
    • Autor pokazuje jak realizować cały proces tworzenia oprogramowania. Począwszy od czynności, które powinny poprzedzić ten proces, przez projektowanie, tworzenie kodu i jego optymalizacje. Dzięki olbrzymiemu doświadczeniu i wiedzy autora, książka ta jest wyczerpującym kompendium wiedzy na temat inżynierii oprogramowania.


  • Head First Design Patterns - Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates, wyd. Helion [książka] (PL), (stron 656)
    • Autorzy w przystępny, często wręcz humorystyczny, sposób przedstawiają wzorce projektowe. Przykłady zapisane są w języku Java.


  • Seria Game Development Essentials
    • Seria książek, prawdopodobnie najbardziej rozbudowana, traktująca o projektowaniu gier.
    • Game Development Essentials: An Introduction Jeannie Novak, wyd. CENGAGE Delmar Learning [książka] (ENG), (stron 464)
    • Game Development Essentials: Game Project Management - John Hight, wyd. CENGAGE Delmar Learning [książka] (ENG), (stron 320)
    • Game Development Essentials: Video Game Art - Todd Gantzler, wyd. CENGAGE Delmar Learning [książka] (ENG), (stron 320)
    • Game Development Essentials: Video Game Art - William Muehl, wyd. CENGAGE Delmar Learning [książka] (ENG), (stron 288)

Grafika

Kontynuując swoją przygodę z programowaniem gier, poznając język, algorytmy i API graficzne, po długich trudach pisania swojego pierwszego frameworka, chcemy stworzyć swoją pierwszą grę. W takim wypadku możemy szukać darmowych modeli, tekstur i ogólnej grafiki w Internecie. Jednak daleko na tym nie zajedziemy. Możemy także poszukać grafików i przekonać ich aby dołączyli do naszego zespołu. Ludzie jednak wymagają od nas screenów i zwykle na tej podstawie będą oceniać nasz poziom. Wiem, powierzchownie -- ale tak już jest. Gdy mamy troszkę czasu możemy sami nauczyć się tworzyć piękne wirtualne światy, postacie ze snów, czy samochody marzeń. To nie jest takie trudne. Opanowanie podstaw zajmie nie więcej niż miesiąc -- musisz być tylko cierpliwy. Kiedy już opanujesz tworzenie dowolnej grafiki, będziesz mógł do napisanej przez siebie gry importować co tylko sobie zamarzysz. Będziesz niezależny, a wiedza o tym jak powstają modele, jakie mogą być tekstury i jak są tworzone, pozwoli Ci pisać jeszcze efektywniejszy kod.
Kropek


Maya

  • Maya 2. Podstawy obsługi i modelowanie - Perry Harovas, John Kundert-Gibbs, Peter Lee, wyd. Helion [książka] (PL), (stron 320)
    • Jedna z nielicznych polskojęzycznych pozycji. Niestety bardzo stara. Książka stanowi bardzo dobre wprowadzenie do interfejsu Maya, oraz podstaw modelowania i nakładania tekstur.
      Omawiane zagadnienia:
      • Interfejs programu Maya 2
      • Okno Hypergraph
      • Modelowanie (podstawy, NURBS, modelowanie siatek)
      • Teksturowanie
      • Artisan


  • Maya 2. Animacja postaci - Sherri Sheridan, Nathan Vogel, Tim Coleman, wyd. Helion [książka] (PL), (stron 560)
    • Książka traktuje głównie o projektowaniu postaci, modelowaniu i animacji.
      Omawiane zagadnienia:
      • Projektowanie bohaterów
      • Modelowanie postaci
      • Budowanie klimatu: oświetlenie
      • Animacja (za pomocą kości, ujęć kluczowych, animacja twarzy)


  • Introducing Maya 2008 - Dariush Derakhshani, wyd. Sybex [książka] (EN), (stron 585)
    • Książka stanowi wprowadzenie do Maya. Szczegółowo opisuje interfejs Maya 2008.
      Omawiane zagadnienia:
      • Interfejs programu Maya 2008
      • Modelowanie (podstawy, NURBS, subdivision surface, modelowanie siatek)
      • Teksturowanie
      • Oświetlenie
      • Animacja
      • Rendering
      • Cząsteczki


  • Learning Autodesk Maya 2008 - Lee Lanier, wyd. Sybex [książka] (EN), (stron 360)
    • Autor skupia się głównie na animacji.


  • Advanced Maya Texturing and Lighting - Autodesk Maya Press, wyd. Sybex [książka] (EN), (stron 608)
    • W książce autor skupia się przede wszystkim na teksturowaniu, materiałach, oświetleniu i renderingu. Świetna pozycja dla średnio zaawansowanych grafików.
      Omawiane zagadnienia:
      • Oświetlenie
      • Cienie
      • Tekstury
      • Materiały
      • Global Illumination

3ds Max

  • 3Ds Max 9. Ćwiczenia praktyczne - Joanna Pasek, wyd. Helion [książka] (PL), (stron 184)
    • Idealne wprowadzenie do modelowania obiektów w 3Ds Maxie. Przeznaczona wyłącznie dla początkujących, bowiem bardziej zaawansowani użytkownicy nie znajdą tu nowych wiadomości. Całość materiału, jak wskazuje tytuł, skupia się na ćwiczeniach. Omawiane zagadnienia: modelowanie z prostych brył i splajnów, edycja obiektów siatkowych, dodawanie i odejmowanie brył, tworzenie postaci z powłoki zewnętrznej (skóry) i szkieletu, realistyczne włosy, futra i tkaniny, manipulowanie kamerą i oświetleniem, tworzenie materiałów, używanie renderera Mental Ray i różne metody animacji.


  • 3ds Max 8. Biblia - Kelly L. Murdock, wyd. Helion [książka] (PL), (stron 1424)
    • Książka, jak nazwa sugeruje, stara się być wyczerpującym pod każdym względem zbiorem informacji na temat 3ds Max'a. Napisana jest w sposób zrozumiały dla początkujących, średnio-zaawansowani poruszać będą się jak ryba w wodzie, a profesjonaliści być może odkryją coś nowego. Pozycja obowiązkowa dla każdego grafika korzystająceggo z 3ds Max'a.


  • 3D Studio MAX. Czarna księga animatora - S. Kennedy, G. Maestri, R. Frantz, wyd. Helion [książka] (PL), (stron 624)
    • Książkę stworzyło 13 zawodowych animatorów i twórców efektów specjalnych. Napisane przez nich rozdziały są odrębnymi opowieściami o realizacji konkretnych zadań, np. symulacji walki powietrznej czy tworzeniu wirtualnego człowieka. Książka skupia się przede wszystkim na animacji. Książka jest na wysokim poziomie jednocześnie bardzo przystępna. Pozycja obowiązkowa dla każdego grafika korzystającego z 3ds Max'a.


  • 3ds max 6. Skuteczne rozwiązania - Jon A. Bell, wyd. Helion [książka] (PL), (stron 304)
    • Książka jest przeznaczona dla średnio-zaawansowanych użytkowników. Książka stanowi zbiór ponad 300 wskazówek przygotowanych przez jednego z guru grafiki 3D, który dzieli się swoją wiedzą z czytelnikami. Wskazówki dotyczą modelowania, tworzenia materiałów, oświetlania sceny, tworzenia animacji, renderowania, efektów specjalnych, MAXScript i wiele innych.

Blender

  • Blender. Podstawy modelowania - Bogdan Bociek, wyd. Helion [książka] (PL), (stron 312)
    • Książka jest dobra ale tylko i wyłącznie dla bardzo początkujących użytkowników. Bardzo szczegółowo opisana każda czynność, co niewątpliwie w przypadku początkujących jest dużą zaletą. Autor nie prezentuje wybitnej wiedzy, ale opisuje program Blender w taki sposób aby każdy mógł zrozumieć jego podstawy.


  • Blender 2.3. Oficjalny podręcznik - Ton Roosendaal, Stefano Selleri, wyd. Helion [książka] (PL), (stron 920)
    • Książka stanowi dobre tłumaczenie dokumentacji Blendera i ukazuje wszystkie jego funkcje w bardzo przystępny sposób.


  • Blender. Kompendium - Kamil Kuklo, Jarosław Kolmaga, wyd. Helion [książka] (PL), (stron 880)
    • Książka jest wszechstronnym podręcznikiem z zakresu teorii i praktyki tworzenia modeli i animacji trójwymiarowych skierowany zarówno do początkujących, jak i bardziej zaawansowanych grafików 3D. Jedna z najlepszych polskojęzycznych pozycji.

Game Design

  • Professional Techniques for Video Game Writing pod redakcją Wendy Despain, firmuje to IGDA.
    • Szesnaście tekstów różnych autorów na takie tematy jak pisanie fabuły, współpraca, pisanie pod istniejące IP, wpływ na proces nagrywania głosów, informacje o tym jak trafić do przemysłu, sprzedać pomysł, napisać pitch i spec i o takich rzeczach jak składanie manuala do gry. Z racji tego, że pisali różni autorzy poziom jest różny, ale nie spada poniżej całkiem sensownego poziomu. Warto przeczytać, ale ciężko mi w sumie ocenić dla kogo jest ta książka - część rzeczy to absolutne podstawy, część to taka trochę astro-teoria: stuff tysiąc metrów nad ziemią, który zainteresuje niewiele osób.
  • Game Writing - Narrative Skills for Videogames pod redakcją Chrisa Batemana, firmuje to IGDA.
    • Pozycja podobna do tej powyżej, jedynie nieco inny wybór tekstów. Całość skupia się na samym pisaniu (fabuła, postacie) i nie traktuje np. o tym jak się przebić do przemysłu. Tu się liczy tylko pisanie dla interaktywnego medium. Z tego powodu pojawia się znowu info o nagrywaniu głosów, ale jest też np. o mechanice dialogów w grach i pisaniu cutscenek. Jakość zbliżona do poprzedniej pozycji.
  • The Utlimate Guide to Video Game Writing and Design Dille i Plattena
    • Nie jest to najlepsza książka, ale jest to IMO książka najsensowniej ułożona. Kolejne rozdziały traktują o kolejnych elementarnych kwestiach pisania jako takiego (fabuła, postacie, dialogi), wprowadza wreszcie do pisania specyfikacji i traktuje o tym gdzie w zespole jest miejsce dla tekściarzy i designerów. Jak już pisałem - dobrze ułożona i całkiem kompetentna, niezła na początek.
  • Character Development and Storytelling for Games Lee Sheldona
    • Nie będę ukrywał - najlepsza książka o pisaniu jaką czytałem. :] Autor opisuje różnice między różnymi typami fabuły (liniowa, drzewiasta, sieciowa, modułowa) o tym jakie się wiążą z tym wyzwania, jak sobie poradzić, itp. Pisze o fabule, postaciach, świecie. Pisze dużo i konkretnie o roli postaci w historii, budowie postaci i tym co jest "fun" a co nie. I wie co mówi, bo pracował nad ST:TNG (jeden czy dwa odcinki, ale mimo wszystko ;]), Uru i Riddle of Master Lu. Ma mocno przygodówkowe skrzywienie ale nie kryje tego i potrafi się ponad to ograniczenie wznieść. Książkę się naprawdę przyjemnie czyta.
  • Game Design Workshop od Tracy Fullerton
    • Najbardziej chyba kompletny przewodnik po tworzeniu gameplayu jaki czytałem. Autorka zaczyna od tego czym jest game design i kim jest game designer, rozwiewając wiele mitów. Niby oczywiste, a jakie rzadkie. ;] Prowadzi za rękę przez wszystkie fazy tworzenia mechaniki, rozpisując się dosyć znacznie na temat prototypów (znowu: niby oczywiste, a ze świecą szukać informacji na ten temat). Całkiem dobra lektura, choć mam wątpliwości, czy dla kompletnie zielonych. Mimo wszystko polecam.
  • Game Feel Steve Swink
    • Książka traktuje przede wszystkim o game designie i tym co można określić jako miód. Pewne drobne rzeczy wpływają na odbiór gry i ciężko jest je skwantyfikować. Bo coś odróżnia strzelanie w słabym shooterze od strzelania w dobrym. Autor stara się takie rzeczy usystematyzować i opisać na co zwracać uwagę. W książce jest sporo fluffu, ale IMO to całkiem niezła rzecz dla osób, które chcą się zajmować takimi rzeczami jak game design, interakcje czy balans, nie mają technicznego backgroundu i chciałyby od czegoś zacząć. Nie jest to książka równa, ale ma kilka naprawdę mocnych momentów.
  • Beyond Game Design pod redakcją Chrisa Batemana
    • Książka o podstawowych koncepcjach teoretycznych game designu. Jest o emocjach, systematyce zabawy, aspekcie społecznych i dywersyfikacji. Zawiera niezłe podsumowanie teorii rozgrywki z "Man, Play, Games" Cailloisa i interesujące rozdziały o problemach tła kulturowego i różnic w umiejętnościach i związanych z tym kwestii targetowania gry. Całkiem ciekawa pozycja o game designie, nieźle opracowana teoria typów gry.
  • David Perry on Game Design wiadomo kogo
    • Opasły almanach do wszystkiego. W żadnym wypadku nie jest wyczerpujący, ale zdecydowanie jest to niezłe koło ratunkowe, kiedy brakuje nam tej jednej rzeczy, ale nie wiemy co to. Początek to taka drobna rozgrzewka na temat tego jak podchodzić do game designu i kilka zadań dla czytelnika. Dalej to już książka kucharska i masa list: archetypy postaci, cechy osobowości, cechy wyglądu, sposób mówienia, akcenty w języku angielskim, slangi i inne rzeczy z podziałem na czas (potrzebujesz slangu amerykańskiej policji z lat czterdziestych? proszę.). Listy fantasy, modern, sci-fi. Listy broni, przedmiotów, akcji. Listy i jeszcze raz listy. Do tego informacje jak budować fabułę i... listy możliwych nici fabularnych. Info jak tworzyć bohaterów i... listy do tego celu. Z jednej strony polecam każdemu, z drugiej to niebezpieczne narzędzie w rękach kogoś, kto nie rozumie, że nie jest to kompletny almanach do-it-yourself a jedynie pomoc.
  • Andrew Rollings and Ernest Adams on Game Design wiadomo od kogo, seria NRG
    • Ciężko jest mi ocenić tę książkę. Z jednej strony można powiedzieć, że to w głównej mierze fluff i rzeczy oczywiste, z drugiej z pewnością nie dla każdego. Autorzy mają ciekawe, mocno staroszkolne podejście do tematu i samo to czyni z książki interesującą pozycję. Dobrze jest znać różne podejścia do tematu, także takie nieco słabiej usystematyzowane, utrzymane w formie gawędy książki warto znać. Ale zdecydowanie nie jest to must have.
  • Designing Virtual Worlds od Richarda Bartle, seria NRG
    • Jeśli interesuje Cię jak to się wszystko zaczęło: MUDy, Ultima i inne i chcesz poznać opinię na temat designu gier online kogoś, kto takie właśnie wczesne społeczności tworzył, warto przeczytać tę pozycję. W innym wypadku zdecydowanie można ją sobie odpuścić, chyba że tworzysz MMO ;] i koniecznie chcesz znać opinię starego wygi.
  • Chris Crawford on Interactive Storytelling oraz Chris Crawford on Game Design, wiadomo kogo, seria NRG
    • Obie książki warto znać. Nie wiem, czy to są "must have", ale Crawford nie bez przyczyny jest cytowany na lewo i prawo. :] CCoGD to książka w stylu "sto mądrości Chrisa Crawforda", którą przyjemnie się czyta i pewnie coś się z niej wyciągnie, ale bardziej o życiu niż o GD. Ale o game designie trochę też. ;] CCoIS z kolei to lekko nawiedzona pozycja o tym jak zdaniem Chrisa tworzyć prawdziwie interaktywną rozrywkę. Dużo na temat tego jak przenieść dialog i fabułę na "język maszyny", trochę to takie fantazjowanie jak Petera Molyneux, ale (znowu) czyta się bardzo przyjemnie.
  • The Writer's Journey Christophera Voglera
    • Pierwsza nie ściśle growa pozycja na liście, bo o pisaniu klasycznym. Z miejsca przyznam, że nie czytałem w całości, więc moja opinia jest niekompletna. Autor wyraźnie czerpie z modelu Campbella (i wcale tego nie kryje) oraz z prostych modeli psychologicznych. Pokazuje jak sam buduje historię i przeprowadza przez nią postacie (tytułowa podróż nie musi być oczywiście traktowana dosłownie). Masa odwołań do popkultury (filmu i książek) ale nie pochłonęła mnie specjalnie z uwagi na to jak pisze autor. Dlatego też nie skończyłem.
  • Morphology of the Folktale Vladimira Proppa
    • Klasyk. Pierwsza wyczerpująca analiza struktury klasycznych baśni i przypowieści, wzorce i reguły. Mimo iż jest to de facto analiza tego co stworzyli nasi przodkowie, sama praca jest doskonałą bazą do syntezowania własnych fantastycznych historii. Jeśli dobre opowieści, opowieści, które przetrwały do naszych czasów, mają jakąś czytelną strukturę, to znaczyć musi, że ta struktura się sprawdza. Jak już pisałem - reguły są po to, żeby je łamać, ale trzeba to robić świadomie. A do tego trzeba mieć jakąś bazę teoretyczną.
  • Man, Play and Games, Roger Caillois
    • Wspomniana wcześniej klasyczna pozycja analizująca istotę zabawy, gry i miejsca tychże w życiu ludzi. Warto znać, bo to absolutne podstawy jak w przypadku pozycji Proppa. Wersja którą posiadam to bardzo stare tłumaczenie i angielski w tej książce poraża. Thou shall not bear false witness against thy neighbor pełną gębą. Ciężko się to czytało i tak po prawdzie mam opory polecić, bo może lepsze jakieś skondensowane opracowanie? Trudno powiedzieć.
  • I na koniec: unikajcie jak ognia serii Game Development Essentials. Redaguje to przeważnie pani Novak. Są to książki dla ludzi, którzy mają problem z ogarnięciem tego, że kontroler ma przyciski i należy coś do nich przypisać. Nie tłumaczy jak, co, po co, jedynie pokazuje jak wygląda świat, w razie gdybyśmy w życiu nie widzieli gry. Mam 4 książki z tej serii (Podstawy, Mechanika, Postacie i UI) i wszystkie są równie kiepskie.