"C++ in game programming" [Polish] Prezentacja do wykładu przygotowanego na Koło Naukowe Twórców Gier "Polygon" przy Politechnice Warszawskiej. Opisuje: dlaczego do programowania gier używa się właśnie języka C++, co stosować, a czego unikać, aby pisany kod był dobry i przede wszystkim wydajny w działaniu.
Date: 2010-10-30
With the introduction of multi-touch and gesture support coming in Qt, application developers now have the possibility of introducing new types of input and interaction to their applications. We will examine the various types of devices that one can expect to encounter in the multi-touch and gesture "world". This presentation will also introduce and explain the new API, walk through some example code, and show some demos of some of the possibilities we foresee with this technology.
Presentation by Jens Bache-Wiig held during Qt Developer Days 2009.
http://qt.nokia.com/developer/learning/elearning
Jak zacząć przygodę z tworzeniem dużych produkcji? Co zrobić, żeby stać się częścią branży gier? Prezentacja pokazuje możliwe ścieżki rozwoju dla programistów, pokazując przy tym, że gry mają znacznie więcej wspólnego z "poważnym" oprogramowaniem niż się może wydawać.
PSD do WP: od projektu graficznego do działającego serwisuKrzysztof Łęcki
Slajdy z prelekcji wygłoszonej na WordCamp 2016 w Gdyni (https://2016.gdynia.wordcamp.org)
Wyniki przemyśleń nt. procesu realizacji projektów po 11 latach programowania oraz kilku latach zarządzania projektami. Próba odpowiedzi na pytania m.in. jak optymalnie podejść do tworzenia dedykowanych motywów WP, jak rozwiązać problemy związane z pracą w wieloosobowych zespołach programistycznych (dostęp do bazy danych, konflikty w repozytorium). Prezentacja pomysłu na platformę łączącą agencje - potrzebujące doraźnego lub stałego wsparcia deweloperskiego - z programistami wyspecjalizowanymi w kodowaniu PSD do WP.
Artur Staszczyk: Optymalizacje i wydajność w grach komputerowych GameDesire Academy
Wydajność - słowo klucz wśród programistów. Jakie ma znaczenie w procesie tworzenia gry? Czy w dzisiejszych czasach, kiedy pamięć i moc obliczeniowa są relatywnie tanie, powinna być decydującym czynnikiem? Podczas prezentacji omówimy konkretny przykład i wspólnie go zoptymalizujemy. Pokażemy kolejne poziomy tego procesu i zastanowimy się, na które z nich trzeba kłaść nacisk. Oprócz tego omówimy takie tematy jak: profiler, cache-miss, wycieki pamięci czy optymalizacja grafik i dźwięków.
Profesjonalne programowanie. Część 1. Zrozumieć komputerWydawnictwo Helion
Chcesz zostać programistą doskonałym?
Zacznij od poznania szczegółów działania komputera
* Zapis wartości liczbowych oraz arytmetyka zmiennoprzecinkowa i binarna
* Organizacja dostępu do pamięci komputera
* Proces wykonywania programu oraz operacje wejścia i wyjścia
Kod napisany przez profesjonalnego programistę jest wydajny i efektywny. Aby tworzyć wydajny kod, należy poznać architekturę komputera i sposób, w jaki program jest wykonywany. Zrozumienie tego, w jaki sposób komputer realizuje kolejne instrukcje programu i jak słowa kluczowe języków wysokiego poziomu są przenoszone na rozkazy procesora, jest kluczem do napisania kodu, który po skompilowaniu da szybko i bezbłędnie działający program.
"Profesjonalne programowanie. Część 1. Zrozumieć komputer" to pierwszy tom serii książek przeznaczonych dla tych programistów, którzy chcą podnieść swoje kwalifikacje. Przedstawia wewnętrzną architekturę komputera od strony, której znajomość jest niezbędna programiście. Opisuje sposoby zapisu wartości liczbowych i tekstów, działania na liczbach binarnych i zmiennoprzecinkowych oraz logikę Boole’a. Czytając tę książkę, dowiesz się, w jaki sposób procesor przetwarza rozkazy asemblera, jak odbywa się dostęp do danych zapisanych w pamięci oraz jak przesyłane są dane do i z urządzeń zewnętrznych.
* Zapis liczb w systemie binarnym, ósemkowym i szesnastkowym
* Działania na liczbach binarnych i zmiennoprzecinkowych
* Sposoby reprezentacji danych znakowych
* Organizacja pamięci i tryby adresowania
* Złożone typy danych
* Projektowanie układów cyfrowych i logika Boole’a
* Architektura procesora i rozkazy asemblera
* Operacje wejścia i wyjścia
Jeśli chcesz, aby napisane przez Ciebie oprogramowanie budziło podziw, koniecznie przeczytaj tę książkę.
With the introduction of multi-touch and gesture support coming in Qt, application developers now have the possibility of introducing new types of input and interaction to their applications. We will examine the various types of devices that one can expect to encounter in the multi-touch and gesture "world". This presentation will also introduce and explain the new API, walk through some example code, and show some demos of some of the possibilities we foresee with this technology.
Presentation by Jens Bache-Wiig held during Qt Developer Days 2009.
http://qt.nokia.com/developer/learning/elearning
Jak zacząć przygodę z tworzeniem dużych produkcji? Co zrobić, żeby stać się częścią branży gier? Prezentacja pokazuje możliwe ścieżki rozwoju dla programistów, pokazując przy tym, że gry mają znacznie więcej wspólnego z "poważnym" oprogramowaniem niż się może wydawać.
PSD do WP: od projektu graficznego do działającego serwisuKrzysztof Łęcki
Slajdy z prelekcji wygłoszonej na WordCamp 2016 w Gdyni (https://2016.gdynia.wordcamp.org)
Wyniki przemyśleń nt. procesu realizacji projektów po 11 latach programowania oraz kilku latach zarządzania projektami. Próba odpowiedzi na pytania m.in. jak optymalnie podejść do tworzenia dedykowanych motywów WP, jak rozwiązać problemy związane z pracą w wieloosobowych zespołach programistycznych (dostęp do bazy danych, konflikty w repozytorium). Prezentacja pomysłu na platformę łączącą agencje - potrzebujące doraźnego lub stałego wsparcia deweloperskiego - z programistami wyspecjalizowanymi w kodowaniu PSD do WP.
Artur Staszczyk: Optymalizacje i wydajność w grach komputerowych GameDesire Academy
Wydajność - słowo klucz wśród programistów. Jakie ma znaczenie w procesie tworzenia gry? Czy w dzisiejszych czasach, kiedy pamięć i moc obliczeniowa są relatywnie tanie, powinna być decydującym czynnikiem? Podczas prezentacji omówimy konkretny przykład i wspólnie go zoptymalizujemy. Pokażemy kolejne poziomy tego procesu i zastanowimy się, na które z nich trzeba kłaść nacisk. Oprócz tego omówimy takie tematy jak: profiler, cache-miss, wycieki pamięci czy optymalizacja grafik i dźwięków.
Profesjonalne programowanie. Część 1. Zrozumieć komputerWydawnictwo Helion
Chcesz zostać programistą doskonałym?
Zacznij od poznania szczegółów działania komputera
* Zapis wartości liczbowych oraz arytmetyka zmiennoprzecinkowa i binarna
* Organizacja dostępu do pamięci komputera
* Proces wykonywania programu oraz operacje wejścia i wyjścia
Kod napisany przez profesjonalnego programistę jest wydajny i efektywny. Aby tworzyć wydajny kod, należy poznać architekturę komputera i sposób, w jaki program jest wykonywany. Zrozumienie tego, w jaki sposób komputer realizuje kolejne instrukcje programu i jak słowa kluczowe języków wysokiego poziomu są przenoszone na rozkazy procesora, jest kluczem do napisania kodu, który po skompilowaniu da szybko i bezbłędnie działający program.
"Profesjonalne programowanie. Część 1. Zrozumieć komputer" to pierwszy tom serii książek przeznaczonych dla tych programistów, którzy chcą podnieść swoje kwalifikacje. Przedstawia wewnętrzną architekturę komputera od strony, której znajomość jest niezbędna programiście. Opisuje sposoby zapisu wartości liczbowych i tekstów, działania na liczbach binarnych i zmiennoprzecinkowych oraz logikę Boole’a. Czytając tę książkę, dowiesz się, w jaki sposób procesor przetwarza rozkazy asemblera, jak odbywa się dostęp do danych zapisanych w pamięci oraz jak przesyłane są dane do i z urządzeń zewnętrznych.
* Zapis liczb w systemie binarnym, ósemkowym i szesnastkowym
* Działania na liczbach binarnych i zmiennoprzecinkowych
* Sposoby reprezentacji danych znakowych
* Organizacja pamięci i tryby adresowania
* Złożone typy danych
* Projektowanie układów cyfrowych i logika Boole’a
* Architektura procesora i rozkazy asemblera
* Operacje wejścia i wyjścia
Jeśli chcesz, aby napisane przez Ciebie oprogramowanie budziło podziw, koniecznie przeczytaj tę książkę.
Perełki programowania gier. Vademecum profesjonalisty. Tom 2Wydawnictwo Helion
Jeśli zajmujesz się lub zamierzasz się zająć programowaniem gier komputerowych, nie odkładaj tej książki na półkę. Znajdziesz w niej siedemdziesiąt rozwiązań rozmaitych problemów, przed którymi staje programista gier. Są to rozwiązania do natychmiastowego zastosowania lub pomysły, które mogą znacznie zredukować nakład pracy. Ich autorami są najwybitniejsi autorzy gier, współtwórcy wielu prawdziwych hitów. Dość powiedzieć, że redaktorami książki "Perełki programowania gier" są pracownicy firm takich jak Nintendo czy NVidia Corporation.
Autorzy postarali się, by przedstawiane przez nich perełki ukazywały praktyczne techniki programistyczne, możliwe do osiągnięcia przy użyciu aktualnie stosowanych technologii i pomagające przy pisaniu gier komputerowych. Przykładowe kody źródłowe opierają się na uznanych standardach: językach C i C++, interfejsy OpenGL i DirectX i nieodzownym, gdy chcemy uzyskać maksymalną wydajność asemblerze procesorów x86.
Porady i rozwiązania podzielone są na 6 części:
* Programowanie ogólne (projektowanie systemów testowych, wykorzystanie profilowania, rodzaje baz danych, biblioteki narzędzi, procedury obsługi zrzucania stosu, narzędzia dzienników zdarzeń, samomodyfikujący się kod)
* Matematyka (sztuczki z liczbami zmiennoprzecinkowymi w formacie IEEE, szybka interpolacja kwaternionowa, szybkie grupowanie przestrzeni, fraktale, fizyka, sztuczki z wektorami i płaszczyznami, rozwiązywanie przecięć krawędź-krawędź, algorytmy ruchu po krzywej)
* Sztuczna inteligencja (znajdowanie drogi, ocena strategiczna, mapy wpływu, systemy wyszukiwania i widoczności, automaty stanów rozmytych, ocena terenu, mikrowątki)
* Zarządzanie geometrią (zarządzanie całością geometrii, algorytmy poziomów szczegółowości, skompresowane drzewa prostopadłościanów otaczających wyrównywanych do osi, metody drzew czwórkowych, drzewa kul dla określania widoczności, śledzenie promieni, przeszukiwanie zakresowe, tworzenie teł na sześcianach, postacie rzucające cień na siebie, stosowanie plam na dowolnych powierzchniach)
* Grafika (metody renderingu, tworzenie proceduralnych chmur, maskowanie tekstur, metody dynamicznego oświetlania opartego na pikselach, mapowanie tekstur, programowalne shadery wierzchołków)
* Programowanie dźwięku (wzorce projektowe w programowaniu dźwięku, metody ponownego użycia głosów i prosty sekwenser muzyki bazujący na próbkach, programowe efekty DSP, interfejs programistyczny niskiego poziomu dla dźwięku)
Dołączony CD-ROM zawiera wszystkie kody źródłowe z książki, dema wielu przedstawionych technik, bibliotekę DirectX 8, instalator glSetup, bibliotekę narzędzi GLUT, obrazy z kolorowej wkładki w wysokiej rozdzielczości.
4Developers: Krzysztof Narkowicz- Programowanie w branży gier komputerowychPROIDEA
Celem wykładu jest pokazanie od kuchni jak wygląda programowanie w branży gier komputerowych i czym się różni od innych branż. Ogólnie opowiem o specyfice projektów w naszej multidyscyplinarnej branży oraz o poszczególnych specjalizacjach programistów i wyzwaniach z jakimi muszą się zmierzyć. Pokażę jak projektujemy kod aby był możliwie optymalny i jak wykorzystujemy wielowątkowość. Opowiem jakich narzędzi używamy, dlaczego lubimy wymyślać koło na nowo i piszemy wszystko sami, dlaczego nasza branża jest ostoją języków wizualnych, które zostały uznane za ślepy zaułek na początku lat 90, dlaczego dalej optymalizujemy ręcznie kod oraz dlaczego używamy kilku języków programowania w jednej grze.
SFI 2017: Deep Learning zmieniający branże przemysłuMatthew Opala
Każdy słyszał o sieciach neuronowych. W ostatnich latach przeżywają one swój renesans osiągając imponujące sukcesy jak pokonanie mistrza świata w Go. Rozpoznawanie mowy, rekomendacje filmów na Netflixie - to wszystko zawdzięczamy uczeniu maszynowemu, a w szczególności jego części zwanej Deep Learningiem. Czy zmiany dotkną również "stare" branże jak przemysł naftowy?
Poznaj niezawodne sposoby na wszystkie dolegliwości trapiące Twój komputer
* Reanimuj swój komputer biurowy i laptopa
* Usprawnij proces uruchamiania się komputera
* Odkryj tajniki BIOS-u
* Zoptymalizuj system plików
* Rozwiąż problemy z urządzeniami zewnętrznymi
* Skonfiguruj poprawnie połączenia sieciowe
Ile razy Twój komputer zawiesił się wtedy, gdy najmniej się tego spodziewałeś? Jak często masz ochotę wyrzucić na śmieci drukarkę, skaner, nagrywarkę CD lub klawiaturę? Mimo dynamicznego rozwoju technologii informatycznych nikomu nie udało się jeszcze znaleźć sposobu na stworzenie komputera niezawodnego, działającego bez zarzutu i prawidłowo współpracującego ze wszystkimi urządzeniami zewnętrznymi. Procesory stają się coraz szybsze, dyski twarde coraz pojemniejsze, ale nadal trzeba się męczyć z nie reagującymi na nic klawiaturami i myszami, przegrzewającymi się zasilaczami i bateriami laptopów, które wyczerpują się, zanim uruchomi się Windows.
Książka "Sposoby na hardware" to zestaw rad przydatnych każdemu, kto chce uporać się z "efektami specjalnymi", którymi komputery uatrakcyjniają nam pracę. Czytając tę książkę, dowiesz się, co zrobić z komputerem biurkowym i laptopem, aby działały właściwie, jak prawidłowo skonfigurować urządzenia zewnętrzne i jak poradzić sobie z oprogramowaniem, którego błędy (lub -- jak kto woli -- "nieudokumentowane cechy") skutecznie komplikują życie większości użytkowników komputerów.
* Montaż i konfigurowanie komputerów biurkowych
* Rozwiązywanie problemów z pamięcią i procesorem
* Przedłużanie żywotności baterii w laptopach
* Reanimowanie komputerów przenośnych (PDA)
* Prawidłowe konfigurowanie urządzeń multimedialnych
* Dyski twarde i napędy CD/DVD
* Optymalne działanie sieci komputerowej
* Drukowanie i skanowanie
Dzięki wiadomościom z tej książki rozwiążesz wszystkie problemy związane ze sprzętem i będziesz mógł skupić się na pracy, a nie na naprawianiu komputera.
Zmuś komputer, by pracował tak, jak chcesz.Wygraj walkę z opornym sprzętem.
O autorze:
Stephen J. Bigelow jest autorem wielu popularnych książek związanych tematycznie z naprawą i konserwacją komputerów, a także licznych artykułów na łamach poczytnych czasopism [więcej...]
Rynek gier mobilnych jest w fazie intensywnego wzrostu. Wg prognoz firmy badawczej Newzoo, sektor gier mobilnych rozrasta się tak szybko, że w 2015 będzie większy od konsolowego. Oznacza to, że gry mobilne staną się najbardziej dochodowym sektorem branży.
Prezentacja odpowie na szereg istotnych pytań związanym z procesem produkcji i publikacji aplikacji mobilnych, między innymi:
• Czym powinien kierować się developer wybierając technologię do tworzenia gry?
• Na którą platformę wydać grę w pierwszej kolejności: Androida czy na iOSa? Czy to ma znaczenie?
• Co robić po wydaniu gry, aby zwiększyć szansę na komercyjny sukces?
"Pitfalls of Object-Oriented Programming" [Polish] Prezentacja do wykładu przygotowanego na Koło Naukowe Twórców Gier "Polygon" na Politechnice Warszawskiej, a w drugiej wersji wygłoszonego także na AGH w Krakowie.
Opracowana na podstawie tekstu Fanatyzm obiektowy, przedstawia krytyczne podejście do projektowania i programowania obiektowego (m.in. pisania wrapperów na używane biblioteki, nadmiernej generalizacji, nadużywania dziedziczenia, enkapsulacji, wzorców projektowych) oraz jego negatywny wpływ na prostotę i czytelność kodu. Jako alternatywę prezentuje podejście DOD (Data-Oriented Design).
Published 2011-03-30
infoShare AI Roadshow 2018 - Michał Ćwiok (Clouds on Mars) - Usługi AI w chmurzeInfoshare
"Usługi AI w chmurze - sztuczna inteligencja jeszcze bardziej dostępna" to prezentacja wygłoszona przez Michała Ćwiok (Clouds on Mars) podczas meetupu infoShare AI Roadshow dnia 14.11.2018 w Krakowie.
Doskonały podręcznik dla początkujących programistów
* Typy danych i konstrukcje sterujące
* Programowanie proceduralne i obiektowe
* Biblioteka STL
* Obsługa plików
C++ to jeden z najpopularniejszych języków programowania, jego możliwości są ogromne. Używa się go do pisania aplikacji narzędziowych, gier, a nawet systemów operacyjnych. Nauka języka C++ jest jednak żmudnym i skomplikowanym procesem -- to prawdziwe wyzwanie dla programistów. Opanowanie potęgi C++ wymaga poznania zasad programowania obiektowego, korzystania z bibliotek i szablonów, obsługi błędów i wyjątków i wielu innych zagadnień. Ale odpowiednio napisany podręcznik, zawierający podstawową wiedzę na temat tego języka, zdecydowanie ułatwi przyswojenie sztuki programowania w C++.
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, korzystając z C++. Nauczysz się definiować klasy i obiekty, przydzielać zasoby pamięci dla aplikacji, korzystać ze wskaźników i implementować mechanizmy obsługi plików i strumieni wejścia-wyjścia.
* 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
Poznaj najważniejsze zasady programowania w C++.
Perełki programowania gier. Vademecum profesjonalisty. Tom 2Wydawnictwo Helion
Jeśli zajmujesz się lub zamierzasz się zająć programowaniem gier komputerowych, nie odkładaj tej książki na półkę. Znajdziesz w niej siedemdziesiąt rozwiązań rozmaitych problemów, przed którymi staje programista gier. Są to rozwiązania do natychmiastowego zastosowania lub pomysły, które mogą znacznie zredukować nakład pracy. Ich autorami są najwybitniejsi autorzy gier, współtwórcy wielu prawdziwych hitów. Dość powiedzieć, że redaktorami książki "Perełki programowania gier" są pracownicy firm takich jak Nintendo czy NVidia Corporation.
Autorzy postarali się, by przedstawiane przez nich perełki ukazywały praktyczne techniki programistyczne, możliwe do osiągnięcia przy użyciu aktualnie stosowanych technologii i pomagające przy pisaniu gier komputerowych. Przykładowe kody źródłowe opierają się na uznanych standardach: językach C i C++, interfejsy OpenGL i DirectX i nieodzownym, gdy chcemy uzyskać maksymalną wydajność asemblerze procesorów x86.
Porady i rozwiązania podzielone są na 6 części:
* Programowanie ogólne (projektowanie systemów testowych, wykorzystanie profilowania, rodzaje baz danych, biblioteki narzędzi, procedury obsługi zrzucania stosu, narzędzia dzienników zdarzeń, samomodyfikujący się kod)
* Matematyka (sztuczki z liczbami zmiennoprzecinkowymi w formacie IEEE, szybka interpolacja kwaternionowa, szybkie grupowanie przestrzeni, fraktale, fizyka, sztuczki z wektorami i płaszczyznami, rozwiązywanie przecięć krawędź-krawędź, algorytmy ruchu po krzywej)
* Sztuczna inteligencja (znajdowanie drogi, ocena strategiczna, mapy wpływu, systemy wyszukiwania i widoczności, automaty stanów rozmytych, ocena terenu, mikrowątki)
* Zarządzanie geometrią (zarządzanie całością geometrii, algorytmy poziomów szczegółowości, skompresowane drzewa prostopadłościanów otaczających wyrównywanych do osi, metody drzew czwórkowych, drzewa kul dla określania widoczności, śledzenie promieni, przeszukiwanie zakresowe, tworzenie teł na sześcianach, postacie rzucające cień na siebie, stosowanie plam na dowolnych powierzchniach)
* Grafika (metody renderingu, tworzenie proceduralnych chmur, maskowanie tekstur, metody dynamicznego oświetlania opartego na pikselach, mapowanie tekstur, programowalne shadery wierzchołków)
* Programowanie dźwięku (wzorce projektowe w programowaniu dźwięku, metody ponownego użycia głosów i prosty sekwenser muzyki bazujący na próbkach, programowe efekty DSP, interfejs programistyczny niskiego poziomu dla dźwięku)
Dołączony CD-ROM zawiera wszystkie kody źródłowe z książki, dema wielu przedstawionych technik, bibliotekę DirectX 8, instalator glSetup, bibliotekę narzędzi GLUT, obrazy z kolorowej wkładki w wysokiej rozdzielczości.
4Developers: Krzysztof Narkowicz- Programowanie w branży gier komputerowychPROIDEA
Celem wykładu jest pokazanie od kuchni jak wygląda programowanie w branży gier komputerowych i czym się różni od innych branż. Ogólnie opowiem o specyfice projektów w naszej multidyscyplinarnej branży oraz o poszczególnych specjalizacjach programistów i wyzwaniach z jakimi muszą się zmierzyć. Pokażę jak projektujemy kod aby był możliwie optymalny i jak wykorzystujemy wielowątkowość. Opowiem jakich narzędzi używamy, dlaczego lubimy wymyślać koło na nowo i piszemy wszystko sami, dlaczego nasza branża jest ostoją języków wizualnych, które zostały uznane za ślepy zaułek na początku lat 90, dlaczego dalej optymalizujemy ręcznie kod oraz dlaczego używamy kilku języków programowania w jednej grze.
SFI 2017: Deep Learning zmieniający branże przemysłuMatthew Opala
Każdy słyszał o sieciach neuronowych. W ostatnich latach przeżywają one swój renesans osiągając imponujące sukcesy jak pokonanie mistrza świata w Go. Rozpoznawanie mowy, rekomendacje filmów na Netflixie - to wszystko zawdzięczamy uczeniu maszynowemu, a w szczególności jego części zwanej Deep Learningiem. Czy zmiany dotkną również "stare" branże jak przemysł naftowy?
Poznaj niezawodne sposoby na wszystkie dolegliwości trapiące Twój komputer
* Reanimuj swój komputer biurowy i laptopa
* Usprawnij proces uruchamiania się komputera
* Odkryj tajniki BIOS-u
* Zoptymalizuj system plików
* Rozwiąż problemy z urządzeniami zewnętrznymi
* Skonfiguruj poprawnie połączenia sieciowe
Ile razy Twój komputer zawiesił się wtedy, gdy najmniej się tego spodziewałeś? Jak często masz ochotę wyrzucić na śmieci drukarkę, skaner, nagrywarkę CD lub klawiaturę? Mimo dynamicznego rozwoju technologii informatycznych nikomu nie udało się jeszcze znaleźć sposobu na stworzenie komputera niezawodnego, działającego bez zarzutu i prawidłowo współpracującego ze wszystkimi urządzeniami zewnętrznymi. Procesory stają się coraz szybsze, dyski twarde coraz pojemniejsze, ale nadal trzeba się męczyć z nie reagującymi na nic klawiaturami i myszami, przegrzewającymi się zasilaczami i bateriami laptopów, które wyczerpują się, zanim uruchomi się Windows.
Książka "Sposoby na hardware" to zestaw rad przydatnych każdemu, kto chce uporać się z "efektami specjalnymi", którymi komputery uatrakcyjniają nam pracę. Czytając tę książkę, dowiesz się, co zrobić z komputerem biurkowym i laptopem, aby działały właściwie, jak prawidłowo skonfigurować urządzenia zewnętrzne i jak poradzić sobie z oprogramowaniem, którego błędy (lub -- jak kto woli -- "nieudokumentowane cechy") skutecznie komplikują życie większości użytkowników komputerów.
* Montaż i konfigurowanie komputerów biurkowych
* Rozwiązywanie problemów z pamięcią i procesorem
* Przedłużanie żywotności baterii w laptopach
* Reanimowanie komputerów przenośnych (PDA)
* Prawidłowe konfigurowanie urządzeń multimedialnych
* Dyski twarde i napędy CD/DVD
* Optymalne działanie sieci komputerowej
* Drukowanie i skanowanie
Dzięki wiadomościom z tej książki rozwiążesz wszystkie problemy związane ze sprzętem i będziesz mógł skupić się na pracy, a nie na naprawianiu komputera.
Zmuś komputer, by pracował tak, jak chcesz.Wygraj walkę z opornym sprzętem.
O autorze:
Stephen J. Bigelow jest autorem wielu popularnych książek związanych tematycznie z naprawą i konserwacją komputerów, a także licznych artykułów na łamach poczytnych czasopism [więcej...]
Rynek gier mobilnych jest w fazie intensywnego wzrostu. Wg prognoz firmy badawczej Newzoo, sektor gier mobilnych rozrasta się tak szybko, że w 2015 będzie większy od konsolowego. Oznacza to, że gry mobilne staną się najbardziej dochodowym sektorem branży.
Prezentacja odpowie na szereg istotnych pytań związanym z procesem produkcji i publikacji aplikacji mobilnych, między innymi:
• Czym powinien kierować się developer wybierając technologię do tworzenia gry?
• Na którą platformę wydać grę w pierwszej kolejności: Androida czy na iOSa? Czy to ma znaczenie?
• Co robić po wydaniu gry, aby zwiększyć szansę na komercyjny sukces?
"Pitfalls of Object-Oriented Programming" [Polish] Prezentacja do wykładu przygotowanego na Koło Naukowe Twórców Gier "Polygon" na Politechnice Warszawskiej, a w drugiej wersji wygłoszonego także na AGH w Krakowie.
Opracowana na podstawie tekstu Fanatyzm obiektowy, przedstawia krytyczne podejście do projektowania i programowania obiektowego (m.in. pisania wrapperów na używane biblioteki, nadmiernej generalizacji, nadużywania dziedziczenia, enkapsulacji, wzorców projektowych) oraz jego negatywny wpływ na prostotę i czytelność kodu. Jako alternatywę prezentuje podejście DOD (Data-Oriented Design).
Published 2011-03-30
infoShare AI Roadshow 2018 - Michał Ćwiok (Clouds on Mars) - Usługi AI w chmurzeInfoshare
"Usługi AI w chmurze - sztuczna inteligencja jeszcze bardziej dostępna" to prezentacja wygłoszona przez Michała Ćwiok (Clouds on Mars) podczas meetupu infoShare AI Roadshow dnia 14.11.2018 w Krakowie.
Doskonały podręcznik dla początkujących programistów
* Typy danych i konstrukcje sterujące
* Programowanie proceduralne i obiektowe
* Biblioteka STL
* Obsługa plików
C++ to jeden z najpopularniejszych języków programowania, jego możliwości są ogromne. Używa się go do pisania aplikacji narzędziowych, gier, a nawet systemów operacyjnych. Nauka języka C++ jest jednak żmudnym i skomplikowanym procesem -- to prawdziwe wyzwanie dla programistów. Opanowanie potęgi C++ wymaga poznania zasad programowania obiektowego, korzystania z bibliotek i szablonów, obsługi błędów i wyjątków i wielu innych zagadnień. Ale odpowiednio napisany podręcznik, zawierający podstawową wiedzę na temat tego języka, zdecydowanie ułatwi przyswojenie sztuki programowania w C++.
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, korzystając z C++. Nauczysz się definiować klasy i obiekty, przydzielać zasoby pamięci dla aplikacji, korzystać ze wskaźników i implementować mechanizmy obsługi plików i strumieni wejścia-wyjścia.
* 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
Poznaj najważniejsze zasady programowania w C++.
1. C++ w programowaniu gier
Adam Sawicki - www.asawicki.info - 30 października 2010
2. Dlaczego C++?
W jakim języku pisze się gry?
Poważne tytuły na PC i konsole - tylko C++!
Inne platformy – różnie
• iPhone, iPad – Objective C (oraz C++)
• Android – Java (oraz C++)
• Web – ActionScript (Flash), JavaScript, …
Amatorskie projekty – dowolnie
• XNA, Java, Python, cokolwiek…
2
3. Dlaczego C++?
C++ to nie najważniejszy język na świecie.
TIOBE Programming Community Index for October 2010
[TIOBE]
3
4. Dlaczego C++?
C++ nie jest idealny [C++FQA]
• Jest trudny i obszerny
Np. wskaźniki, szablony, przeciążenia
• Wiele rzeczy nieustandaryzowane
Np. stringi, kontenery, obsługa błędów, brak ABI
• Uboga biblioteka standardowa
• Niski poziom
Potrzeba dużo kodu, żeby cokolwiek napisać
Łatwo o różnorodne błędy, np. w zarządzaniu pamięcią
4
5. Dlaczego C++?
Jednak C++ to najlepszy/jedyny wybór do gier
• Dostatecznie wysoki poziom, by pisać złożone programy
Np. programowanie obiektowe
• Dostatecznie niski poziom, by pisać wydajny kod
Np. wskaźniki, brak wirtualnej maszyny, ręczne zarządzanie
pamięcią
• Jest szeroko wspieranym standardem
API, biblioteki i silniki do gier mają zwykle interfejs do C/C++
• Istnieją kompilatory na interesujące nas platformy
PC/Windows, Xbox 360, PlayStation 3
5
6. Nie kombinuj
W programowaniu gier chodzi o to, żeby napisać grę
Warto pisać wszystko jak najprościej
Dlatego nie kombinuj!
• Nie musisz być mistrzem inżynierii oprogramowania
Nie powinieneś przekombinować z programowaniem
obiektowym i wzorcami projektowymi
• Nie musisz znać na pamięć standardu C++
Nie powinieneś przekombinować z preprocesorem, szablonami
i przeciążaniem operatorów
6
7. C++ a programowanie gier
Programowanie gier dopiero zaczyna się tam, gdzie
kończy 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 dużo getterów i setterów? Pisać struktury, pola
publiczne!
• Wiele zagadnień typowych w programowaniu gier
[GPPATTERNS]
Np. podwójne buforowanie, architektura komponentowa, pula
obieków
7
9. Optymalizacja
Optymalizacja – co w praktyce oznacza?
• Jednym kojarzy się z doborem algorytmu o dobrej
złożoności asymptotycznej
• Innym kojarzy się z przepisaniem algorytmu na asembler
Prawda leży pośrodku!
• Duże obiekty przekazywać i zwracać przez wskaźnik lub
referencję, nie przez wartość
• Upraszczać obliczenia matematyczne, mnożyć zamiast
dzielić
• Nie definiować złożonych zmiennych wewnątrz pętli
• Nie ufać optymalizacji kompilatora
9
10. Wydajność
Dodawanie,
odejmowanie,
mnożenie
Dzielenie, funkcje
transcendentalne
Branching, metody
wirtualne, skok pod
wskaźnik
Dynamiczna alokacja pamięci
Zasoby systemowe – tekstury, wątki, gniazda
Wejście-wyjście – pliki, sieć
10
11. Optymalizacja
Nietrafienie w pamięć podręczną – cache miss
• 1980: Odwołanie do pamięci RAM ≈ 1 cykl procesora
• 2009: Odwołanie do pamięci RAM ≥ 400 cykli procesora
[POOP]
11
12. Optymalizacja
Lokalność odwołań ważniejsza, niż ilość obliczeń
• Programowanie obiektowe
• Programowanie zorientowane na dane
• Obiekty alokowane osobno, rozrzucone po pamięci
• Obiekty w tablicy, w ciągłym obszarze pamięci
• Pakowanie danych
short, char
Flagi bitowe
Pola bitowe
Nawet zmiana kolejności pól może wpłynąć na wydajność!
12
13. Najlepsza optymalizacja
„Najszybszy kod to taki, który nigdy się nie wykonuje”
Precalc – przygotować dane wcześniej, nie liczyć za
każdym razem
• Podczas wczytywania gry NIE parsować plików tekstowych,
XML, modeli OBJ, tekstur PNG, nie kompilować shaderów
• Edytor lub inne narzędzia powinny przygotować assety w
docelowym formacie: modele do wczytania prosto do VB/VBO,
tekstury w DDS (ewentualnie JPEG), własne formaty plików,
VFS
• Podczas działania gry NIE liczyć w każdej klatce tego, co
można 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ć dużo danych, można mniej szczegółowo
13
14. Wyjątki
W kodzie poważnej gry wyjątki powinny być
nieużywane, a ich obsługa wyłączona
• Brak standardowego sposobu obsługi błędów w C++
• Niedoskonałość wyjątków C++ - brak finally, RAII nie jest
powszechne
• Pojęcie błędu w grze nie ma takiego sensu jak w
programie
• Włączone wsparcie dla wyjątków w kompilatorze C++ to
duża strata wydajności, nawet kiedy wyjątki nie są
faktycznie używane
• Kompilatory C++ na konsolach nie wspierają wyjątków
[KosztWyjątków]
14
15. STL
STL-a też często nie używa się w programowaniu
gier
• Wprawdzie warto mieć szablony kontenerów i mogą
działać wydajnie,
• jednak STL robi zbyt dużo dynamicznych alokacji
pamięci.
• Stringów używać tylko do pokazywania tekstu
użytkownikowi, nie wewnętrznie w kodzie gry
• Unikać std::list, std::set, std::map, najlepszy jest
std::vector
• EASTL – implementacja STL dostosowana do
programowania gier [EASTL], udostępniona ostatnio za
darmo [EASTL/GIT]
15
16. Programowanie równoległe
To dziedzina obszerna, trudna, wciąż dojrzewająca,
ale bardzo ważna, opłacalna i już obowiązkowa!
Wątki i muteksy to dopiero początek…
16
17. Narzędzia
Jedyna słuszna platforma: Windows :)
Jedyne słuszne IDE: Visual C++ :)
Narzędzia pomocnicze:
• Śledzenie wycieków pamięci: własny alokator pamięci,
Visual Leak Detector
• Profilowanie: własna instrumentacja, Very Sleepy, AMD
CodeAnalyst, Intel Vtune
• Debugowanie bibliotek: Debug version of Direct3D, PIX,
PhysX Visual Debugger
• Statyczna analiza kodu: CppCheck
17
18. 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
[KosztWyjątków] Koszt wyjątków, forum.gamedev.pl
• http://forum.gamedev.pl/index.php/topic,19151.msg229335.html#msg229335
[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