Zasoby do fizyki gry 2d [zamknięty]

Szukam dobrych referencji do nauki modelowania fizyki 2d w grach. Jestem nie Szukam biblioteki, która zrobi to za mnie - chcę myśleć i uczyć się, a nie ślepo korzystać z cudzej pracy.

Poszperałem trochę w Googlach i znalazłem kilka tutoriali na gamedevie itp., Uważam ich tutoriale za trudne do zrozumienia, ponieważ albo są źle napisane, albo zakładają poziom matematycznego zrozumienia, którego jeszcze nie posiadam.

Dla specyfiki - Szukam sposobu na modelowanie odgórnej gry 2d, czegoś w rodzaju gry walki czołgowej - i chcę dokładnie modelować (między innymi) przyspieszenie i prędkość, nagromadzenie ciepła "komponentów", kolizje między modelami i granicami poziomów oraz broń rakietową.

Strony internetowe, polecane książki, blogi , przykłady kodu-wszystkie są mile widziane, jeśli pomogą zrozumieć. Rozważam użycie C # i F# do budowania mojej gry, więc przykłady kodu w każdym z tych języków byłyby świetne - ale nie niech język powstrzyma cię od opublikowania dobrego linku. =)

Edit: nie chodzi mi o to, że nie rozumiem matematyki - chodzi bardziej o to, że nie wiem, co muszę wiedzieć, aby zrozumieć systemy i nie wiem, jak znaleźć zasoby, które nauczą mnie w zrozumiały sposób.

Author: Erik Forbes, 2008-10-03

8 answers

Oto kilka zasobów, które zebrałem kilka lat temu. Na uwagę zasługuje Integracja Verleta. Dołączam również linki do niektórych open source i komercyjnych silników fizyki, które znalazłem w tym czasie. Jest tu artykuł na ten temat: fizyka gry 2d?

Metody Fizyki

Książki

  • "Game Physics engine Development", Ian Millington -- posiadam tę książkę i gorąco ją polecam. Książka buduje silnik fizyki w C++ od podstaw. Autor zaczyna od podstaw fizyki cząstek elementarnych, a następnie dodaje "prawa ruchu", ograniczenia, fizykę ciała sztywnego i dalej. Zawiera dobrze udokumentowany kod źródłowy.

Silniki Fizyki

 19
Author: mistrmark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:25
 7
Author: David Koelle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-03 03:47:57

Mówiąc z doświadczenia, implementacja silnika fizyki 2D jest dość trudna. Opiszę kilka kroków, które podjąłem podczas tworzenia mojego silnika.

  1. Wykrywanie kolizji. Wykrywanie kolizji może być trudnym problemem, nawet jeśli nie masz do czynienia ze światami 3D lub symulacjami sieciowymi. W fizyce 2D zdecydowanie warto skorzystać z twierdzenia o osi rozdzielającej . Po zaimplementowaniu SAT, jesteś w połowie drogi do tworzenia części dynamiki swojego silnik.

  2. Kinematyka / Dynamika. Chris Hecker napisał doskonały zasób online , który przeprowadził mnie przez reakcję kolizji krok po kroku.

  3. Wszystko Inne. Po zakończeniu wykrywania/reagowania na kolizje, jego kwestią jest wdrożenie wszystkiego, co chcesz w silniku. Może to obejmować tarcie, siły kontaktowe, połączenia, wraz z tym, co jeszcze możesz wymyślić.

Miłej zabawy! Tworzenie własnej symulacji fizyki to niezwykle satysfakcjonujące doświadczenie.

 6
Author: epaik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-10 22:23:13

Jest to świetny samouczek, który demonstruje koncepcje fizyki 2D za pomocą Flasha i nie jest specyficzny dla Flasha. http://www.rodedev.com/tutorials/gamephysics/game_physics.swf

 3
Author: angelo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-14 20:44:18

Nawet jeśli chcesz dowiedzieć się wszystkiego od podstaw, otwarta biblioteka fizyki, która jest dobrze zakodowana i udokumentowana, zawiera znacznie więcej informacji niż książka. Jak poradzić sobie z sytuacją X... wyszukiwanie w plikach może być szybsze niż indeks papierowy.

Oryginalna odpowiedź:

Co, żadnej wzmianki o Box2D ? To poboczny projekt pracownika Blizzarda o otwartym kodzie źródłowym, ma dobrą społeczność i świetnie się sprawdza.

W moim (krótkim) doświadczeniu z Box2D, integrując go z Torque Game Builder, stwierdziłem, że API jest czyste w użyciu, dokumentacja była jasna, obsługiwała wszystkie obiekty fizyki, których się spodziewałem (stawy w szczególności były wymogiem), a społeczność wyglądała przyjaźnie i aktywnie (gdzieś na początku 2010 roku).

Sądząc po plakatach forum, okazało się również, że menedżerowie byli otwarci na wkłady źródłowe (które nie nosiły bagażu licencyjnego).

It ' s island based solver wydawało się dość szybkie, jak się spodziewałem po jego reputacji, nie że zrobiłem żadnych główne testy wydajności.

 3
Author: James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-22 08:29:25

F # ma funkcję o nazwie jednostki miary , która wykonuje analizę wymiarową za Ciebie, dostarczając błędów, jeśli się pomylisz. Na przykład jeśli powiesz:

let distance : float<meters> = gravity * 3.0<seconds>

To spowodowałoby błąd kompilacji, ponieważ grawitacja wynosi , a nie . Ponadto, ponieważ F # to po prostu. NET, możesz napisać swój kod matematyczno-fizyczny w bibliotece klas i odwołać się do niego z C#.

Polecam sprawdzić te posty na blogu, aby uzyskać więcej informacji:

 2
Author: Chris Smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-03 17:54:07

Jest to świetny zasób do pisania pierwszego silnika. To jest w 3D, ale to jest bardzo łatwe do konwersji w dół do 2D. znam przynajmniej jedną dużą firmę, która po tym samouczku dla ich wewnętrznego silnika, a ja osobiście po jego kroki dla mojego własnego silnika. Wyjaśnia wszystkie podstawowe pojęcia fizyki w fizyce opartej na źródle/impulsie i pokazuje, jak napisać własny intergrater.

 1
Author: DavidG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-18 17:33:36

Na F#.NET Journal opublikował dwa artykuły na ten temat:

 0
Author: Jon Harrop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-19 23:04:26