Gravity – poczuj grawitację, gra JavaScript

Parę miesięcy temu podczas czytania książki “Feynmana wykłady z fizyki” napisałem w ramach zabawy bardzo prosty silnik fizyki (kilkadziesiąt linijek kodu) który symulował grawitację Newtona. Cały silnik oparty był w zasadzie na jednym wzorze.

Do silnika wystarczyło “wrzucić” kilka obiektów z odpowiednio dobranymi masami oraz prędkościami początkowymi aby zaobserwować piękny taniec matematyki (np. tworzenie się orbit w kształcie elipsy). Dołożyłem do silnika specjalny obiekt któremu za pomocą klawiatury można było nadawać przyspieszenie, w ten sposób powstał bardzo prosty… symulator pojazdu kosmicznego.

Niestety przemieszczanie się pojazdem kosmicznym po układzie planetarnym w którym “grasuje” bliska rzeczywistości grawitacja było dość toporne, ponieważ ruch pojazdu jest zależny od przyciągania ciał niebieskich a ludzki umysł wydaje się być stworzony do poruszania w liniach prostych. Stąd wpadłem na pomysł aby generować przewidywaną trasę lotu co znacznie ułatwiło kontrolowanie pojazdu i przy drobnej wprawie np. osadzanie pojazdu na orbicie przestało być kłopotem.

Nie mogąc znaleźć sensownego zastosowania odłożyłem projekt na bok.

Gravity 0.1

Około tydzień temu wraz z rewelacjami odnośnie sondy Juno zapaliła mi się myśl, by zakopany dawno temu projekt odświeżyć. Była to świetna okazja aby zrealizować jakiś projekt w Typescriptcie oraz przy pomocy biblioteki THREE.js. W efekcie mam przyjemność zaprezentować prosty symulator pojazdu kosmicznego – konkretnie satelity, który działa w każdej nowoczesnej przeglądarce. Jest to w zasadzie pierwsza gra jaką w życiu zrobiłem. Mimo, że symulator jest zrealizowany w technologii 3D to sama rozrywka dla uproszczenia odbywa się na płaszczyźnie dwuwymiarowej.

W grze mamy do wykonania kilka misji, od łatwiejszych – jak zatrzymanie satelity, po trudniejsze – jak osadzenie satelity na orbicie księżyca. Aby podnieść realizm każdą misję musimy wykonać przy skończonej ilości paliwa. Co ważne satelita ma dwa silniki, jeden do nadawania przyspieszenia, drugi do wprawiania satelity w ruch obrotowy. Zgodnie z zasadą zachowania pędu gdy wprawimy satelitę w ruch obrotowy, aby ją zatrzymać musimy wytworzyć silę przeciwną do ruchu obrotowego. Przez to manewrowanie satelitą może wydawać się na początku dość skomplikowane. Dla ułatwienia wprowadziłem specjalny przycisk który automatycznie zatrzymuje ruch obrotowy satelity.

Zagraj w Gravity 0.1

About the author

Bartłomiej T.

Zawodowo programista, po godzinach grafik, front-end developer oraz raczkujący fotograf.

View all posts

Leave a Reply

Your email address will not be published. Required fields are marked *