pic
Pomimo iż technologia WebGL jest stosunkowo młoda, już dostępna jest bogata baza frameworków. W zasadzie jest ich tak dużo, że na początku trudno któryś wybrać. W ostatnim czasie miałem okazję spróbować kilku z nich i podzielę się z  wami moimi spostrzeżeniami. Ostrzegam, że pewne cechy bibliotek, o których piszę mogą się zmienić w czasie (np. uwagi dot. niepełnych dokumentacji). Dodatkowo oceniałem ich możliwości pod kątem swoich potrzeb, ktoś inny może mieć inne wrażenia. SceneJS Dynamicznie rozwijany Framework z API sceny opartym na formacie JSON. Projekt zapoczątkowany przez Lindsay Key, aktualnie rozwijany przez kilka osób. Framewo...
pic
Artykuł poświęcony jest eksportowaniu modeli (stworzonych w programie blender) do formatu JSON i ładowaniu ich w WebGL. Zrobimy również mały porządek z shaderami, które wrzucimy do osobnych plików, co daje lepszą czytelność i pozwala chociażby na kolorowanie składni, jeśli mamy edytor, który rozpoznaje GLSL. Lekcja ta jest modyfikacją poprzedniej lekcji. Efekt końcowy na rysunku poniżej lub na żywo tutaj. JSON (JavaScript Object Notation) jest czytelnym i intuicyjnym formatem, który ma swoje korzenie w JavaScript (więcej możecie doczytać na wikipedii). JavaScript posiada wbudowany obiekt globalny JSON, który potrafi parsować ten format. Poniżej mamy zaw...
pic
Ukończyliśmy właśnie prace nad grą "Vehicle Soccer". Jest to trójwymiarowa zręcznościówka polegająca na umiejętnym manewrowaniu jednym z pojazdów w celu łapania, uderzania oraz omijania różnych piłek na arenach. Grać można samemu przechodząc i odblokowując kolejne rundy (tryb single) lub w 2 osoby na jednej klawiaturze starając się zdobyć więcej punktów od przeciwnika (tryb multi). Gra została wystawiona do konkursu Mozilla Labs - Game ON więc możecie trzymać kciuki i jeśli wam się spodoba - oddać swój głos :-) Lista wszystkich gier zgłoszonych do konkursu znajduje się w galerii gier konkursu Game On. Aby zagrać wystarczy kliknąć w scr...
pic
źródło: Mozilla Konkurs skierowany jest do niezależnych twórców gier. Aby wziąć w nim udział trzeba stworzyć grę przeglądarkową wykorzystującą wyłącznie otwarte standardy webowe. Mile widziane są nowo powstające technologie takie jak WebGL, czy HTML5. Zasada jest jedna: gra musi być kompatybilna z przegladarką Firefox w najnowszej (testowej jeszcze) wersji 4.0. Gdy gra będzie gotowa, trzeba zarejestrować się na oficjalnej stronie wydarzenia: gaming.mozillalabs.com i podać nazwę, krótki opis oraz link do dzieła umieszczonego w sieci. Podczas oceniania gier brane będą pod uwagę następujące walory: Poprawność techniczna (engine, kod), wykorz...
pic
Dzisiaj dodamy trochę światła do naszej sceny. Lekcja ta bazuje na kodzie jednej z poprzednich: Porządek w kodzie i omówię jedynie różnice. Efekt końcowy dzisiejszej lekcji zobaczyć możecie na rysunku poniżej, lub na żywo tutaj. Możecie również pobrać kod dzisiejszej lekcji. Osoby zaznajomione z OpenGL mogą być trochę zawiedzone faktem, że WebGL (który bazuje na OpenGL ES) nie posiada automatycznego wsparcia dla światła (czytaj funkcji ustawiających pozycję, kolor itp. parametrów światła). Wszelkie obliczenia związane z oświetleniem musimy zrobic sami w shaderach. Przytoczona tu metoda jest tzw. "opartą na wierzchołkach". Znaczy to tyle, że...
sty

23

Witam. Niniejszym wpisem rozpoczynam serię na temat produkcji Project Galactic Storm, naszej zapowiedzianej jakiś czas temu kosmicznej sieciówki.

Jedną z najważniejszych rzeczy przy tworzeniu takich gier jest danie graczom miejsca i możliwości ekspansji. Głównym (chociaż nie jedynym) źródłem tych rzeczy będą w tym przypadku układy planetarne. Moglibyśmy pójść po najmniejszej linii oporu i użyć jednego, zrobionego “ręcznie” układu i dawać graczom po prostu jego kopie, ale jako że astronomia jest moim konikiem postanowiłem rozwiązać to bardziej realistycznie.

Jak? Biorąc pod uwagę nasze ograniczone zasoby jedynym realnym rozwiązaniem są generatory losowe. Słowo “losowe” sprawia, że brzmi to dość łatwo, wystarczy kazać komputerowi losować cyferki, ale w rzeczywistości wcale takie, niestety, nie jest. Jak ktoś nie wierzy to polecam poczytać development blog (wstrzymanej ;/) gry Subversion firmy Introversion Software. Tam mamy do czynienia z losowym generatorem miast. Wydawałoby się, że wystarczy wrzucić do generatora jakieś budynki i wylosować parę liczb, ale żeby miasto wyglądało realistycznie trzeba uwzględnić całą masę czynników.

Tak samo ma się sprawa z układami planetarnymi, chociaż jest tu o tyle prościej, że astronomia po prostu jeszcze nie dysponuje danymi na temat jakiegoś zewnętrznego układu planetarnego, choćby w dziesięciu procentach tak dokładnymi jak o naszym Układzie Słonecznym. Urbanistyka ma dużo więcej statystyk na temat miast, no i trzeba mieć jakąś wiedzę z zakresu architektury itd. Czemu to ułatwia sprawę? Ano temu, że nie mając danych porównawczych między róznymi układami nie dysponujemy tak naprawdę definicją “realistycznego” układu planetarnego, możemy więc pozwolić sobie na generowanie układów, które będą pasowały do mechaniki gry, bez ryzyka narażenia się na przesadną niezgodność z danymi naukowymi. Nie oznacza to jednak wcale wolnej amerykanki, bo chciałbym zachować zgodność z tym, co jednak wiemy.

Najwięcej wiemy o naszym własnym układzie, więc najlepiej zacząć od tego. Układ Słoneczny ma w centrum swoją gwiazdę, czyli Słońce i wiemy, że jest to podstawa istnienia układu planetarnego. Wcale nie ze względu na światło, czy ciepło, tylko ze względu na grawitację. Planety muszą krążyć wokół masywnego obiektu. Chcąc więc wygenerować układ planetarny musimy zacząć od gwiazdy. Trzeba więc napisać osobny generator, który stworzy nam realistyczną gwiazdę.

O gwiazdach wiemy sporo i trzeba tą wiedzę uwzględnić, najlepiej z zastosowaniem jednej, prostej zasady losowego generowania realistycznych obiektów złożonych (sam to wymyśliłem, nawet nie googlajcie), która brzmi: “losuj jak najmniej”. A ściślej – “nie losuj rzeczy, które możesz wyznaczyć”. A dokładniej – “określ jak najmniejszą liczbę parametrów, z których będzie można wyznaczyć wszystkie pozostałe”. Krótko mówiąc im mniej rzeczy w losowym generatorze jest stricte losowych, tym większy realizm. Jeśli zabrnęliście już tak daleko w ten wpis, to w nagrodę możecie zrobić sobie przerwę i spróbować (jeśli Was to interesuje) wymyślić które parametry gwiazdy są tymi podstawowymi, z których można określić wszystkie pozostałe jej cechy, przynajmniej w zakresie potrzebnym grze. Podpowiem, że są dwa. Jeśli wymyśliliście, albo nie chciało wam się tego robić, to zapraszam do następnego akapitu.

Pierwszy z tych parametrów jest dość oczywisty. Jest to masa gwiazdy, która pozwala określić między innymi siłę jej oddziaływania grawitacyjnego. Sama masa jednak nie wystarczy, gdyż gwiazdy ewoluują. Z wiekiem ulegają przemianom tak samo jak ludzie. Masa nie pozwoli nam określić wieku gwiazdy. Drugim niezbędnym parametrem jest więc… aktualnie spalany przez nią pierwiastek. Jeśli zgadliście, to szacun ;]

Co to w ogóle znaczy “aktualnie spalany pierwiastek”? Z fizyki w szkole powinniście pamiętać, że zjawiskiem powodującym jasne (i ciepłe) świecenie gwiazd przez miliardy lat jest fuzja. Większość gwiazd na początku swojego istnienia składa się z wodoru, który jest najlżejszym i najczęściej występującym pierwiastkiem we wszechświecie. Siła grawitacji wytwarza w jej wnętrzu wielkie ciśnienie, które z kolei powoduje wzrost temperatury. Atomy wodoru przyspieszają do olbrzymich prędkości, co sprawia, że zwykle odpychające się cząstki zaczynają się zderzać. Zderzenie dwóch atomów wodoru przy takiej prędkości powoduje, że łączą się one w jeden atom helu, wyzwalając przy tym energię. Dużo energii. Gdy kończy się wodór, fuzja zabiera się za hel. Kolejność spalanych pierwiastków jest stała i kończy się na żelazie, które zamiast wyzwalać – pochłania energię i powoduje śmierć gwiazdy w ciągu kilku sekund. Dotyczy to jednak tylko największych gwiazd, zdolnych wybuchnąć jako supernowe. Najcięższy możliwy do spalenia przez daną gwiazdę pierwiastek wyznaczamy z jej masy, mając w kodzie generatora stałą określającą jaka masa jest potrzebna do spalenia danego pierwiastka.

Tak więc mając te dwa parametry możemy wyznaczyć wszystkie pozostałe, a przynajmniej wszystkie potrzebne grze. To jednak nie wszystko, czego potrzeba do wygenerowania tysięcy gwiazd. Potrzebujemy jeszcze odrobiny statystyk i rachunku prawdopodobieństwa. Gwiazdy typu słonecznego nie występują z tą samą częstotliwością co supernowe, gwiazdy neutronowe, czy inne. Nie losujemy jednak typu gwiazdy, trzeba więc uwzględnić te statystyki przy losowaniu masy i spalanego pierwiastka (w tej kolejności, bo potrzebujemy masy, żeby określić najcięższy możliwy do spalenia pierwiastek). Można w miarę bezpiecznie założyć, że najczęściej występują najmniejsze gwiazdy spalające najlżejsze pierwiastki. Tutaj nie musimy się stricte trzymać realiów (chociaż wypada częściowo je uwzględnić) i możemy sobie pozwolić na dostosowanie tych statystyk do potrzeb gry (układy planetarne z mniejszymi, bardziej stabilnymi gwiazdami łatwiej skolonizować).

Do tego wszystkiego wystarczy dołożyć kilka stałych pomagających przy obliczeniach, jak na przykład diagram Hertzsprunga-Russela, rozpisać wszystko matematycznie i zacząć generatora używać, dostosowując jego parametry aż jego działanie będzie zgodne z oczekiwaniami, co oznacza długie godziny prób i błędów.

W następnym odcinku: generator planet.

P.S. Jeśli macie jakieś pytania/uwagi, to zapraszam do komentowania.

autor: The_Lord

Comment

Copyright © 2012 3dgames - Kolejny blog oparty na WordPressie.
Website powered by WordPress and Emescale wordpress theme designed by TopTut.com & TopWPThemes.com.
Visit WebHostingFan.com for the latest news on web hosting and cms review.