Publications

Pułapki liczb zmiennoprzecinkowych

(Polish) Niezależnie od używanego języka programowania, korzystając z liczb zmiennoprzecinkowych można natknąć się na wiele pułapek. Dlatego warto posiąść podstawową wiedzę związaną z tymi typami danych oraz trzymać się reguł, które pozwolą uniknąć niemiłych niespodzianek podczas programowania obliczeń.

Prezentacja pokazana podczas targów Kariera IT 24 września 2016 w Sopocie.

Zobacz online na slideshare

Date: 2016-09-24

Download:
Adam Sawicki - Pulapki liczb zmiennoprzecinkowych.pptx (308.13 KB)
Adam Sawicki - Pulapki liczb zmiennoprzecinkowych.pdf (861.34 KB)

Programowanie grafiki dziś

(Polish) Artykuł opublikowany w magazynie Bajtek Czerwiec 2016 (135) Wydanie specjalne. Opisuje krótko historię kart graficznych (od pierwszych gier 3D, przez 3Dfx Voodoo i S3 ViRGE, karty NVIDIA i ATI/AMD, pojawienie się OpenGL i DirectX, do wynalezienia shaderów), pokazuje potok graficzny współczesnych GPU oraz wspomina o nowej generacji API graficznych (Direct3D 12 i Vulkan).

Osobom, które interesowały się programowanie grafiki, gier czy demosceną w czasach świetności Bajtka pozwoli uaktualnić swoją wiedzę na temat rozwoju tej dziedziny informatyki.

Date: 2016-06-03

Architektura współczesnych gier video

(Polish) Prezentacja pokazana podczas targów Kariera IT 13 grudnia 2014 w Gdańsku.

Zobacz online na slideshare

Date: 2014-12-13

Download:
Adam Sawicki - Architektura gier video.pptx (2.14 MB)
Adam Sawicki - Architektura gier video.pdf (1.26 MB)

Pisząc kod natywny C/C++, czyli nie taki diabeł straszny

(Polish) Prezentacja pokazana podczas targów Kariera Programisty 14 grudnia 2013 w Gdańsku.

"Na podstawie swojego doświadczenia zawodowego autor opowie, jaki charakter ma praca programisty piszącego kod natywny w C/C++, w jakich zastosowaniach używa się takich języków oraz z jakimi problemami trzeba się tam zmierzyć. Postara się pokazać, że warto wybrać tę ścieżkę kariery oraz że nie jest ona taka trudna, jak mogłoby się wydawać."

Zobacz online na slideshare

Date: 2013-12-14

Download:
Adam Sawicki - Piszac kod natywny C++.pptx (1.47 MB)
Adam Sawicki - Piszac kod natywny C++.pdf (2.75 MB)

Pomiar czasu w programowaniu gier

(Polish) Artykuł opublikowany na łamach magazynu "Programista". Wydanie 9/2013 (16)

W grach i niektórych innych programach zachodzi potrzeba mierzenia upływu czasu, a ten podlega ograniczeniom (np. zakresu, precyzji) zależnie od metody, jaką go mierzymy, i formatu, w jakim go zapisujemy. Dlatego ważne jest, by zdawać sobie sprawę z tych ograniczeń i odpowiednio do danego zastosowania wybrać funkcję odczytującą aktualny czas, typ zmiennej do jej przechowywania, jednostkę oraz punkt zerowy, a także w świadomy sposób posługiwać się nim, wykonując tylko operacje logicznie prawidłowe i nie powodujące zbyt dużej utraty precyzji.

Inteligentne wskaźniki w C++11

(Polish) Artykuł opublikowany na łamach magazynu "Programista". Wydanie 7/2013 (14)

Język C++ nie posiada wprawdzie garbage collectora, który automatycznie zwalniałby pamięć, ale to nie znaczy, że nie dostarcza niczego, co mogłoby w zarządzaniu pamięcią pomóc. Nowy standard języka C++11 oferuje klasy inteligentnych wskaźników - unique_ptr i shared_ptr - których warto używać, aby uczynić programowanie bardziej wygodnym i bezpiecznym.

O Demoscenie

(Polish) Artykuł opublikowany na łamach magazynu "Programista". Wydanie 6/2013 (13)

Świat komputerów szybko się rozwija. Dziś korzystamy z Internetu na smartfonach i tabletach oraz przechowujemy nasze dane w chmurze, a producenci sprzętu i oprogramowania dbają, aby wszystko było dla nas proste i przyjemne. Kilkadziesiąt lat temu, kiedy pierwsze komputery trafiały pod strzechy, użytkowników witał wiersz poleceń konsoli, w magazynach komputerowych ukazywały się kursy programowania, a niektórzy nawet z lutownicą majsterkowali przy swoim sprzęcie. Właśnie w tamtych czasach narodziła się demoscena.

Pisanie wydajnego kodu C++

(Polish) Artykuł opublikowany na łamach magazynu "Programista". Wydanie 4/2013 (11)

Choć języki wysokiego poziomu - skryptowe, interpretowane czy wykonywane w wirtualnej maszynie - mają wiele zalet i są najlepszym wyborem w licznych zastosowaniach, to niekiedy potrzebujemy napisać kod jak najbardziej wydajny. Do tego nie wystarczy zastosować język natywny taki jak C++. Dopiero pewna dawka wiedzy i znajomość dobrych praktyk pozwoli wycisnąć ze sprzętu maksimum mocy obliczeniowej.

Zjazd Twórców Gier 2012 - Relacja

(Polish) Relacja ze Zjazdu Twórców Gier, który odbył się 27-28 października 2012 w Poznaniu.

Date: 2012-11-12

C++/CLI Tutorial

The article describes C++/CLI programming language. From it you can discover features and advantages of this language and learn its syntax. C++/CLI is an extension to C++ made by Microsoft and available in Visual Studio / Visual C++ IDE. At the same time it is one of the languages of .NET platform, next to C# or VB.NET. With it you can freely mix native and managed code, which gives extraordinary power in some applications.

Date: 2011-12-01

Download:
CPP_CLI_tutorial.pdf (1.15 MB)
CPP_CLI_tutorial_samples.zip (60.77 KB)

Tworzenie wydajnego kodu c++ w podejściu zorientowanym na dane

(Polish) Prezentacja do prelekcji wygłoszonej podczas VIII Ogólnopolskiej Konferencji Inżynierii Gier Komputerowych IGK'8-2011 w Siedlcach.

Autorzy: Adam Sawicki i Tomasz Dąbrowski.

Streszczenie referatu: Artykuł opisuje wady programowania obiektowego - zarówno od strony projektowej, jak i ze względu na wydajność kodu. Porusza problem opóźnienia w dostępie do pamięci RAM we współczesnych architekturach komputerowych. Przedstawia programowanie zorientowane na dane (ang. DOD - Data-Oriented Design) jako alternatywne podejście do projektowania i implementowania silnika gry kładące nacisk na optymalizację struktur danych pod kątem szybkości. Porusza także problem wydajności poszczególnych konstrukcji języka C++.

Zobacz online na slideshare

Date: 2011-03-26

Download:
IGK2011_Dabrowski_Sawicki_slides.pdf (2.93 MB)

Pułapki programowania obiektowego

"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).

Zobacz online na slideshare

Date: 2011-03-30

Download:
Pulapki_programowania_obiektowego_v2.pdf (1.57 MB)
Pulapki_programowania_obiektowego_v2.pptx (2.41 MB)

C++ w programowaniu gier

"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.

Zobacz online na slideshare

Date: 2010-10-30

Download:
C++ w programowaniu gier.pdf (537.31 KB)
C++ w programowaniu gier.pptx (430.66 KB)

Architecture and Implementation of 3D Graphics Engine

My master thesis. It describes my graphics engine "The Final Quest". It includes literature overview, description of my engine architecture (layers, modules, classes and fields) and implementation details (rendering process organization, shader code explanation, skeletal animation computations, particle effects implementation, model file format and more).

Date: 2008-06-16

Download:
Adam Sawicki - Praca mgr.pdf (4.68 MB)

Własny VFS - wtyczka do Total Commandera

Pisanie wtyczki do Total Commandera do obsługi własnego formatu archiwum VFS.

Date: 2009-02-24

Zaawansowana kamera 3D

Artykuł jest bardzo długi i opisuje kilka zagadnień programistyczno-matematycznych dotyczących grafiki 3D: koncepcję kamery i jej implementację jako zestaw klas, rysowanie prostokątów zwróconych przodem do kamery (Billboard), w tym efektów cząsteczkowych, testowanie kolizji obiektów z polem widzenia kamery w celu nierysowania tego co niewidoczne (Frustum Culling) oraz testowanie kolizji promienia celem sprawdzania, który obiekt 3D gracz wskazał myszką (Picking). Dołączony kod zawiera spory kawałek mojej biblioteki matematycznej.

Date: 2008-06-05

Szybki alokator FreeList

Implementacja C++ klasy do własnego zarządzania pamięcią, która zarządza listą wolnych bloków i przydziela bloki duży szybciej, niż standardowy operator new.

Date: 2008-05-28

Preprocesor w shaderach HLSL

Dla wszystkich zających C++, Direct3D i HLSL. Artykuł opisuje metodę na poradzenie sobie z kompilowaniem shaderów z różnymi kombinacjami ustawień za pomocą makr preprocesora.

Date: 2008-05-22

Unicode w Visual C++

(Polish) Artykuł wprowadza do tematu używania Unicode w programach pisanych w C++ dla systemu Windows, z użyciem środowiska Visual C++. Stanowi zwięzły przegląd funkcji i innych elementów, których należy używać, żeby program działał z Unicode. Od czytelnika wymaga jedynie znajomości podstaw programowania w języku C++.

Date: 2008-05-21

Kwaterniony w praktyce

Dla tych którzy już znają wektory i macierze, artykuł wprowadza kwaterniony jako sposób reprezentowania obrotów i orientacji.

Date: 2008-05-20

Biblioteka FastDelegate

Opis darmowej biblioteki FastDelegate dostarczającej wskaźników na metody dla C++.

Date: 2008-05-19

Wydajność wczytywania tekstur w Direct3D 9 - Eksperyment

Wyniki eksperymentu mierzącego czas wczytywania tekstur w Direct3D 9 dla różnych formatów plików graficznych i różnych ustawień.

Date: 2008-02-03

Direct3D 9 - Wykład

Prezentacja do wykładu na temat Direct3D 9. Przegląd biblioteki od inicjalizacji, poprzez renderowanie trójkątów, bufory wierzchołków i indeksów, teksturowanie, oświetlenie aż do shaderów. Ma 96 slajdów.

Zobacz online na slideshare

Date: 2008-02-28

Download:
Direct3D9_Wyklad.pdf (1.49 MB)
Direct3D9_Wyklad.ppt (4.09 MB)
Direct3D9_Wyklad.pptx (2.77 MB)

Programowanie na komórki

Prezentacja do wykładu na temat J2ME, czyli programowania w języku Java midletów na komórki. Omawia bardziej lub mniej dokładnie wszystkie moduły wchodzące w skład standardu MIDP 2.0. Ma 98 slajdów.

Zobacz online na slideshare

Date: 2007-12-30

Download:
J2ME-Wyklad.pdf (714.21 KB)
J2ME-Wyklad.odp (576.55 KB)

IGK 2007 - Relacja

IV Ogólnopolska Konferencja Inżynierii Gier Komputerowych - relacja z tego ważnego dla mnie wydarzenia, które odbyło się w dniach 23-25 marca 2007 w Akademii Podlaskiej w Siedlcach.

Date: 2007-03-28

Precompiled Headers w Visual C++

Przystępny i praktyczny opis, jak użyć mechanizmu Precompiled Headers w Visual C++, żeby wielokrotnie przyspieszyć kompilację swoich programów.

Date: 2007-05-25

Direct3D

Cykl artykułów obejmujący kurs programowania w Direct3D z użyciem C++, powoli i od podstaw. Uczy jak napisać szkielet aplikacji DirectX itd. Nastawiony jest na programowanie gier 2D. Ukazał się na łamach magazynu WARP.

Wielka Warsztatowa Ankieta 2008

Wyniki projektu badań statystycznych w celu poznanie cech i preferencji ludzi z Warsztatu. Edycja trzecia - rok 2008. Opracowane wyniki.

Date: 2008-08-15

Wielka Warsztatowa Ankieta 2006

Wyniki projektu badań statystycznych w celu poznanie cech i preferencji ludzi z Warsztatu. Edycja druga - rok 2006.

Date: 2006-10-27

Asynchroniczna konsola Windows

Implementacja konsoli z użyciem mechanizmu systemowego Windows działającej w sposób asynchroniczny.

Date: 2006-08-08

Rzutowanie typów w C++

Artykuł przedstawia badanie zachowania się w praktyce różnych metod rzutowania wartości między różnymi prostymi typami danych w języku C++.

Date: 2006-06-17

FMOD, czyli programowanie dźwięku do gry

Kurs obsługi biblioteki FMOD do implementacji dźwięku i muzyki (także 3D) w grach komputerowych.

Artykuł ukazał się na łamach magazynu elektronicznego WARP w numerze WARP 2.0 Digital 10 (09/2006). Od drugiej połowy grudnia 2006 numer ten jest dostępny za darmo do pobrania. Jak pobrać? 1. Wejść na stronę WARP. 2. Dział Download. 3. Kliknąć na obrazek pod "Magazyn WARP 2.0 Digital (format PDF)". 4. Pobrać numer "WARP 2.0 Digital nr 10 (wrzesień 2006)". 5. Znaleźć mój artykuł w spisie treści.

Date: 2006-06-04

Szybkie, heurystyczne przeszukiwanie dysku

Artykuł prezentuje algorytm, który przeszukując katalogi dysku twardego użytkownika pozwala odnaleźć potrzebny plik w czasie wielokrotnie krótszym, niż podczas tradycyjnego, rekurencyjnego przeszukiwania dysków dzięki zastosowaniu prostej heurystyki i wiedzy o konkretnym problemie.

Date: 2007-02-28

Wielka Warsztatowa Ankieta

Wyniki projektu badań statystycznych w celu poznanie cech i preferencji ludzi z Warsztatu.

Date: 2004-08-25

Struktury danych i formaty plików

Artykuł opisuje podstawowe struktury danych (jak wektor, lista, drzewo i inne) oraz operacje na plikach i tworzenie własnych formatów plików.

Date: 2004-05-14

Reprezentacja danych w pamięci

Artykuł obejmuje zagadnienia związane z podstawami informatyki. Opisuje sposób, w jaki komputer reprezentuje informacje na najniższym poziomie - za pomocą pojedynczych zer i jedynek. Dostępny jest w wersji HTML, PDF i DOC. Licencja: GNU FDL.

Date: 2004-01-03

Download:
D_B.pdf (853.24 KB)
D_B.doc (623 KB)

Compo - Porady

Krótki zbiór porad i sugestii, jak pisać dobre prace na konkurs Compo.

Date: 2005-09-06

Programowanie bota Eggdrop w języku TCL

Pięcioczęściowy kurs pisania botów IRC.

Date: 2003-12-12

Download:
eggdrop_tcl.zip (90.14 KB)

STAT NO AD [Stat] [Admin] [STAT NO AD] [pub] [Mirror] Copyright © 2004-2017 Adam Sawicki
Copyright © 2004-2017 Adam Sawicki