Comanche (1-Mapa), (cz. 7.) --------------------------- JAK ULEPSZYÊ PROCEDURË? Idë o zakîad, ûe niejeden z Was zdâûyî sië juû zachwyciê pecetowâ grâ pt. Comanche (lub podobnymi, gdyû pomysî doôê szybko skopiowano). Tym, którzy jeszcze nie wiedzâ, o co chodzi, tîumaczë. Chodzi o sposób przedstawiania krajobrazu, który przestaî byê wektorowym ôwiatem zîoûonym z gór-stoûków, a zaczâî nareszcie przypominaê prawdziwy widok z kabiny. Miklesz/Damage Metoda generowania komputerowych gór na Amidze znana byîa od doôê dawna, lecz na efekty pracy SceneryGeneratora lub Visty trzeba byîo czekaê doôê dîugo. Kiedy na pececie pojawiî sië Comanche, byî on trochë szokujâcy, choê zaraz koderstwo amigowskie zakasaîo rëkawy i zabraîo sië do roboty, czego efektem sâ pojawiajâce sië ostatnio krajobrazy w demach. Okazuje sië bowiem, ûe po wykonaniu kilku oczywistych uproszczeï sprawa staje sië bardzo îatwa... Od czego naleûy zaczâê? Oczywiôcie od mapy, i to moûliwie ciekawej, bo demo, w którym lecimy nad morzem lub pustyniâ nie bëdzie sië nikomu szczególnie podobaê. A skâd wziâê mapë i jak jâ zapisaê? Moûna caîy krajobraz generowaê bezpoôrednio w kodzie maszynowym, ale zapewniam Was, ûe ma to sens jedynie w intrach, gdyû jakoôê gór, stworzonych odpowiednim programem, bëdzie zdecydowanie lepsza. Ja, na podstawie swoich doôwiadczeï z mapami, polecam Vistë, gdyû ma ona funkcjë bezpoôredniego zgrywania wysokoôci punktów do pliku IFF (Alt->IFF). Otrzymany w ten sposób obrazek wypada oczywiôcie przeskalowaê do interesujâcej nas wielkoôci (sensownâ jest np. 512 x 512 pikseli) oraz dodaê trochë wiëcej poziomów. Jak to zrobiê? O ile skalowanie jest sprawâ oczywistâ, o tyle drugi problem jest nieco skomplikowany. Îadujemy nasz obrazek do (najlepiej) Personala i zmieniamy paletë tak, aby najniûszy punkt byî czarny, a najwyûszy biaîy. Nastëpnie wîâczamy np. 256 kolorów i ustawiamy paletë tak, aby kolor 00 miaî wartoôci (00,00,00), a kolor FF (FF,FF,FF). Po tym wszystkim dajemy ReMap i po chwili otrzymamy obrazek, którego paleta (choê z bardzo duûymi "dziurami") obejmowaê bëdzie caîe 256 wartoôci. Po co te wszystkie kombinacje? Po to, byômy mogli teraz wybraê opcjë IMAGEPROCESSING/BLUGHIGH i po chwili (czasem trochë dîuûszej) cieszyê sië wygîadzonym terenem, który obejmuje nasza mapa. Nie oznacza to, ûe nie znajdziemy w naszym póúniejszym krajobrazie szczytów i przepaôci! Wszystkie elementy zostaîy zachowane, lecz jakoôê generowanego obrazu bëdzie o niebo lepsza. Gotowâ juû mapë zapisujemy, lecz Personala jeszcze nie "quitujemy". Dlaczego? Nasze góry muszâ przecieû mieê jakieô kolory. Dobranie palety na zasadzie im wyûej, tym jaôniej nie jest najlepszym rozwiâzaniem, gdyû otrzymujemy coô w stylu oôwietlonych szczytów ginâcych w ciemnych dolinach, co wyglâda nie najgorzej, ale i nie najlepiej. Równieû naturalne kolory ziemi, jakie "wyrzuciîa" nam Vista, nie naleûâ do olôniewajâco piëknych i zmienianie ich bëdzie tylko powodowaîo, ûe powstanie wraûenie lotu wôród wyjedzonego w ôrodku tortu o róûnych rodzajach nadzienia. Jeôli mogë Wam coô zaproponowaê, to sugerujë na naszej mapie (oczywiôcie wczeôniej juû zapisanej) uûyê opcji EMBOSS. Chodzi mi oczywiôcie o obraz z juû przestawionâ na odcienie szaroôci paletâ dziewiëciu kolorów). Funkcja EMBOSS, jak wiadomo, tworzy z naszego obrazka oôwietlonâ pîaskorzeúbë. Jeûeli wykorzystamy tak stworzony drugi obrazek jako mapë rozkîadu kolorów, niezaleûnâ od wysokoôci, a tylko naîoûonâ na góry, to otrzymamy obraz krajobrazu oôwietlonego bocznym ôwiatîem (choê o staîym odcieniu!). Tutaj drobna uwaga. Funkcja EMBOSS (w niektórych programach -- RELIEF MAP) zazwyczaj daje w wyniku swojego dziaîania obraz wykorzystujâcy tylko najbliûsze barwy w okolicach (7F, 7F, 7F). W zwiâzku z tym, aby otrzymaê wiëksze zróûnicowanie rozkîadu kolorów, warto "przeskalowaê" paletë. Jak to zrobiê? Zaczynamy od znalezienia koloru najciemniejszego i najjaôniejszego. Pomocnâ okaûe sië tutaj funkcja COLOR/STATISTICS, obrazujâca w postaci sîupków procentowâ liczbë danych punktów na obrazku. Zapisujemy sobie dwa znalezione przez nas kolory, a nastëpnie wykonujemy "fade" palety, tak aby nasz najciemniejszy punkt (wczeôniej ciemnoszary) byî teraz czarny, a najjaôniejszy (wczeôniej jasnoszary) byî biaîy. Wychodzimy z requestera palety, majâc znacznie "gîëbsze" cienie i bîyski ôwiatîa na górach. Moûemy je sobie jeszcze trochë wyrównaê, kiedy uznamy, ûe sâ za ostre. W tym wypadku znów skalujemy paletë, aby przejôcie od czarnego do biaîego zajmowaîo caîâ jej dîugoôê. Wykonujemy opcjë REMAP, aby nasz obrazek uzyskaî poprzednie kolory i caîoôê blurujemy. Oczywiôcie gotowy rozkîad kolorów moûna jeszcze trochë podbarwiê i zamiast przejôcia wyîâcznie w odcieniach szaroôci zastosowaê na przykîad kolor brâzowy. Nie wykluczam, ûe juû wkrótce napiszë o tym, jak funkcjë EMBOSS wykonywaê spod poziomu asemblera i to w czasie rzeczywistym. Obie mapy (wysokoôci i kolorów) mamy juû teraz jako pliki IFF, które czym prëdzej naleûy zamieniê na pliki binarne. Oczywiôcie zgrywanie jako "bitplane'y" jest niewskazane, gdyû mapy nie bëdâ nam sîuûyê do wyôwietlania, lecz do pobierania z nich kolejnych danych, dotyczâcych parametrów kaûdego z punktów krajobrazu. W zwiâzku z powyûszym, najlepiej uûyê przy konwersji Picture Convertera, gdyû ma on opcjë zgrywania caîej grafiki jako chunky pixel. Oznacza to, ûe wszystkie spoôród 262144 punktów jednej mapy odwzorowane bëdâ w 262144 bajtach pliku binarnego. Uproszczenie pobierania danych jest chyba oczywiste. Poniewaû mapy mamy dwie, a kaûda z nich zajmuje 256 kilobajtów, to razem dostaniemy aû póî megabajta danych wejôciowych (o krajobrazie). Posiadacze mniejszej iloôci pamiëci pozbawieni twardego dysku trochë sië zmartwiâ, choê oni zawsze mogâ wygenerowaê sobie mapë we wîasnym zakresie. Nie podajë konkretnych wzorów, gdyû jako ûe na szczëôcie nie byîy mi potrzebne, nie znam ich. A wracajâc do naszych mapek. Ostatniâ czynnoôciâ, jakâ radzë wykonaê, jest poîâczenie ich w jednâ, tak aby kaûdy punkt byî opisywany nie przez dwa rozrzucone gdzieô po pamiëci bajty, lecz przez "spójne" sîowo, w którym dolny bajt przyporzâdkujemy kolorowi, a górny wysokoôci (lub vice versa, choê póúniej okaûe sië, ûe waûniejsza informacja -- wysokoôê -- powinna byê umieszczona "wczeôniej" i odczytywana pierwsza, gdyû moûe sië zdarzyê, ûe dany punkt chowa sië za bliûszymi obserwatora wzniesieniami w zwiâzku z tym procedura przechodzi do nastëpnej pozycji, czyli dalszych informacji o kolorze nie bëdzie juû potrzebowaîa). Jeûeli masz wiëkszâ iloôê pamiëci, to operacjë îâczenia moûesz wykonywaê bezpoôrednio w kodzie Comancha. W przeciwnym wypadku musisz jâ wykonaê wczeôniej. Grunt, aby otrzymaê tablicë o dîugoôci 524288 bajtów. Wytîumaczenie sposobu tworzenia widoków realistycznych krajobrazów nie jest jednak zbyt îatwe. W zwiâzku z tym, ze wzglëdu na ograniczonâ objëtoôê dzisiejszego odcinka, zmuszony jestem przerwaê w tym momencie. Czas, jaki macie do ukazania sië kolejnego numeru Magazynu AMIGA, poôwiëêcie na stworzenie odpowiedniej mapy rozkîadu wysokoôci i kolorów. Aha, jeszcze jedno. Tym razem trochë prywatniej. Jak ktoô chce, to moûe mi ûyczyê powodzenia?! O ile moje obliczenia sië sprawdzâ, to w chwili kiedy Wy, Drodzy Czytelnicy, bëdziecie czytaê ten tekst, ja bëdë zdawaî egzamin dojrzaîoôci. Podpisy do rysunków: 0. Mapa rozkîadu oôwietlenia 1. Mapa rozkîadu wysokoôci 2. "Comanche" z intra: "4Ko"/PolkaBrothers 3. "Comanche" z dema: "Nexus7"/Andromeda 4. "Comanche" z dema: "Psychedelic"/VirtualDreams/FairLight 5. "Comanche" z dema: "ThePrey"/PolkaBrothers 6. "Comanche" z dema: "Noxzema"/Damage 7. "Comanche" z dema: "TroyPreView"/Damage