Demoscena to międzynarodowa subkultura komputerowa – powstała w latach 80 ubiegłego wieku – zajmująca się tworzeniem dem, czyli programów komputerowych generujących w czasie rzeczywistym prezentacje audiowizualne. Celem dema jest zaprezentowanie umiejętności programistycznych, graficznych i muzycznych członków grupy demoscenowej. Produkcje demoscenowe wystawia się w konkursach na festiwalach zwanych _demoparty_, na których uczestnicy głosują na najlepsze produkcje w kilku kategoriach. Jeśli chcesz się dowiedzieć na ten temat więcej, to koniecznie obejrzyj polski film dokumentalny [_Sztuka przekraczania_](https://www.youtube.com/watch?v=NVEBWUM8lko).
Celem projektu jest przygotowanie dema na komputer [Amiga 500](https://pl.wikipedia.org/wiki/Amiga_500) pod szyldem grupy [Ghostown](http://www.pouet.net/groups.php?which=10931), która wielokrotnie zajmowała pierwsze miejsce na podium, np.: [Sushi Boyz](https://www.youtube.com/watch?v=ZQ3-nnoXGng) czy [Human Traffic](https://www.youtube.com/watch?v=mZTWdzJMiJA). Produkcję chcielibyśmy wystawić na [Revision](https://en.wikipedia.org/wiki/Revision_(demoparty)) – najbardziej prestiżowym i największym demoparty na świecie – odbywającym się co roku na przełomie marca i kwietnia. Grupa w swoich szeregach ma wysokiej klasy grafików [Slayer](http://artcity.bitfellas.org/index.php?a=artist&id=467)'a i [DKL](http://artcity.bitfellas.org/index.php?a=artist&id=894)'a oraz świetnego muzyka [Jazzcat](https://soundcloud.com/jazzcat-2/popular-tracks)'a. Lubimy eksperymenty i nowe wyzwania, dlatego chcielibyśmy zaprosić do współpracy programistów niezwiązanych z demosceną i zobaczyć dokąd nas to zaprowadzi. A nuż będzie to strzał w dziesiątkę?
W projekcie wykorzystujemy szereg nowoczesnych technologii do tworzenia narzędzi, grafiki 2D, modeli 3D, muzyki i efektów audiowizualnych:
- język [Python](https://www.python.org/), [GoLang](https://golang.org/) i [TypeScript](https://www.typescriptlang.org/)
- shadery GLSL [ShaderToy](https://www.shadertoy.com/)
- środowisko [Processing](https://processing.org/)
- [Photoshop](https://www.adobe.com/pl/products/photoshop.html)
- [Modo3D](https://www.foundry.com/products/modo) i [Blender](https://www.blender.org/)
- instrumenty i efekty [VST](https://en.wikipedia.org/wiki/Virtual_Studio_Technology)
Zadania programistyczne pokrywają szerokie spektrum tematów o zróżnicowanym poziomie trudności:
- konwersja danych
- przetwarzanie i synteza dźwięku
- przetwarzanie obrazu
- kompresja danych
- narzędzia wspomagające debugowanie i profilowanie
- narzędzia do parametryzowania i sekwencjonowania efektów
- prototypowanie efektów graficznych
- adaptacja efektów do ograniczeń komputera _Amiga 500_
- rozwój infrastruktury do uruchamiania efektów
Idealnie każdy uczestnik projektu powinien utworzyć prototyp efektu i z pomocą prowadzącego zajęcia zaadaptować go do ograniczeń platformy docelowej. Efekt graficzny może być początkowo wysoko ponad możliwości sprzętu. Dzięki sprytnym obserwacjom część pracochłonnych obliczeń można wykonać jeszcze na komputerze PC. Adaptacja efektu polega na zidentyfikowaniu specjalnego przypadku (np. pozycji kamery w scenie trójwymiarowej), dla którego obliczenia i technika wyświetlania upraszczają się do tego stopnia, że docelowy sprzęt jest w stanie sobie z tym poradzić.
Środowisko programisty bazuje na [Visual Studio Code](https://code.visualstudio.com/) i emulatorze [fs-uae](https://fs-uae.net/), ale ze względu na szereg ograniczeń jest dedykowane dla użytkowników systemu _Linux_ lub _macOS_. Więcej na temat kodu i środowiska można dowiedzieć się przeglądając publicznie dostępne repozytorium [cahirwpz/demoscene](https://github.com/cahirwpz/demoscene).
Jeśli uda się Wam wprowadzić swój efekt do produkcji, to zostaniecie uwiecznieni (pod wybranym pseudonimem) w sekcji _credits_ i członkowie grupy Ghostown będą Was zachęcać do uczestnictwa w _demoparty_. Wrażeń z obejrzenia efektów swojej pracy na ekranie kinowym i aplauzu publiczności nie da się zapomnieć!