Jestem więc na zgromadzeniu w 2011 r. I zagrano to demo: http://www.youtube.com/watch?v=69Xjc7eklxE&feature=player_embedded
To tylko jeden plik, mówi to w zasadach. Powtarzam więc, w jaki sposób dopasowali to do tak małego pliku?
Jestem więc na zgromadzeniu w 2011 r. I zagrano to demo: http://www.youtube.com/watch?v=69Xjc7eklxE&feature=player_embedded
To tylko jeden plik, mówi to w zasadach. Powtarzam więc, w jaki sposób dopasowali to do tak małego pliku?
Odpowiedzi:
Jest oparty na procedurach . Treść nie jest zawarta w exe, tylko zasady jej rysowania. Po uruchomieniu program rysuje w czasie wykonywania to, czego potrzebuje, nie jest wstępnie renderowane ani zapisywane w żadnej formie.
Jest to ta sama metoda, której używa Elite, aby stworzyć ogromny wszechświat układów gwiezdnych itp.
To niesamowite, co jest dziś możliwe przy użyciu generowania procedur, myślę, że w grach będzie tego więcej w przyszłości.
Jak mówi @Gary Willoughby, jest to bardzo proceduralne.
W grę wchodzi także znaczące ręczne asm
kodowanie, a także duża wiedza na temat tego, ile okien / platform z wybranych systemów działa wewnętrznie.
Istnieje również kategoria demonstracyjna 4K, jeśli chcesz zobaczyć jeszcze bardziej ekstremalne przykłady kompaktowego kodu.
Niektóre grupy DemoScene wydają dema online, gdzie można je pobrać i odtworzyć, jeśli chcesz.
Zobacz także Wikipedię na temat historii DemoScene
Uwaga - wiele pokazów spowoduje, że Twój program antywirusowy przestraszy . Zasadniczo wydaje się, że prawie wszystkie wersje demonstracyjne używają spakowanych plików .exe, a większość grup demonstracyjnych tworzy własne pakiety. Niestety, ponieważ wiele firm AV jest kiepskich, ogólnie twierdzą, że każdy spakowany binarny plik wykonywalny jest pewnego rodzaju wirusem.
Jak wszyscy mówią, w dużej mierze opiera się na generowanym przez procedury kodzie, ale w tym demie jest jeszcze więcej, jeśli zatrzymasz się i przyjrzysz się niektórym szczegółom, zobaczmy na przykład te ściany: spójrz na cegły i sposób, w jaki odbija się na nich światło. Wyglądają naturalnie.
To dlatego, że używają wielu shaderów wierzchołków i shaderów fragmentów, aby ożywić generowaną zawartość.
Spędziłem trochę czasu próbując zrozumieć, w jaki sposób robią takie rzeczy, i jestem zaskoczony każdym fragmentem kodu, który biorę z tych wersji demonstracyjnych.
BTW, robiąc te dema, używają również narzędzi do kompresji, aby wycisnąć jeszcze więcej. sprawdź ten proces kompilacji:
all:
nasm -f bin -o intro main.asm
nasm -f bin -o stub stub.asm
gzip -n --best intro
advdef -z -4 intro.gz
cat stub intro.gz > intro
chmod +x intro
rm intro.gz
rm stub
Jest to prezentacja PowerPoint , w jaki sposób renderowania zostało zrobione w tym konkretnym demo. Samo to nie wyjaśnia, jak wszystko mieści się w 64 kilobajtach, ale jest kluczem do tego, jak geometria została stworzona na tak małej przestrzeni.
Na jego blogu znajduje się również wiele interesujących lektur na temat jego innych produkcji demoscenicznych.
Jak już powiedzieli inni, wiele z nich zależy od zasobów generowanych proceduralnie.
Jest jeszcze jeden element, którym jest kompresja. Wersje demonstracyjne 4k i 64k używają wysoce wyspecjalizowanych kompresorów wykonywalnych. Najbardziej znane z nich to kkrunchy autorstwa farbrausch (dla 64ks) i crinkler od TBC & Loonies (dla 4ks). Co więcej, nowoczesne wersje demonstracyjne intensywnie korzystają z shaderów, które są zwykłym tekstem, a tym samym dramatycznie zmniejszają się po kompresji.
Jeśli chodzi o integrację z grami wideo, głównym problemem jest to, że wszystko to wymaga czasu. Generowanie treści proceduralnych zajmuje dużo czasu, a wyodrębnianie pliku wykonywalnego zajmuje dużo czasu. Ludzie mają na ogół więcej miejsca na dyskach twardych niż czas na czekanie na załadowanie się gry, więc nie sądzę, że w najbliższym czasie zobaczymy ich dużo w szeroko dostępnych grach.