Подтвердить что ты не робот

Ресурсы для 2d игры физики

Я ищу хорошие ссылки для изучения того, как моделировать 2d физику в играх. Я не ищет библиотеку, чтобы сделать это для меня - я хочу думать и учиться, а не слепо использовать кого-то другого.

Я немного поработал над Googling, и хотя я нашел несколько руководств по GameDev и т.д., я нахожу их учебники трудными для понимания, потому что они либо плохо написаны, либо предполагают уровень математического понимания, что Я еще не обладаю.

Для специфики - я ищу, как моделировать нисходящую 2d-игру, вроде танковой боевой игры, и я хочу точно моделировать (помимо прочего) ускорение и скорость, накопление тепла из компонентов, "столкновения между моделями и границами уровня и оружие ракетного типа".

Сайты, рекомендуемые книги, блоги, примеры кода - все приветствуются, если они помогут понять. Я рассматриваю возможность использования С# и F # для создания моей игры, поэтому примеры кода на любом из этих языков были бы замечательными, но не позволяйте языку останавливать вас от публикации хорошей ссылки. =)

Изменить. Я не имею в виду, что я не понимаю математику - это больше того случая, когда я не знаю, что мне нужно знать, чтобы понять вовлеченные системы и "Я действительно знаю, как найти ресурсы, которые научат меня понятным образом.

4b9b3361

Ответ 1

Вот некоторые ресурсы, которые я собрал несколько лет назад. Следует отметить интеграцию Verlet. Я также включаю ссылки на некоторые открытые и коммерческие физические движки, которые я нашел в то время. Здесь есть статья о переполнении стека: 2d игровая физика?

Физические методы

книги

  • "Разработка движка игровой физики", Ян Миллингтон - я владею этой книгой и очень рекомендую ее. Книга строит физический движок в C++ с нуля. Автор начинает с основ физики элементарных частиц, а затем добавляет "законы движения", ограничения, физику твердого тела и так далее. Он включает в себя хорошо документированный исходный код.

Физика Двигатели

Ответ 3

Говоря по опыту, внедрение 2D-движка физики довольно сложно. Я подробно расскажу о нескольких шагах, которые я предпринял при создании моего движка.

  • Обнаружение столкновений. Обнаружение столкновений может быть сложной проблемой, даже если вы не имеете дело с 3D-мирами или сетевыми симуляторами. Для 2D-физики вы определенно хотите использовать разделительную теорию осей. После того, как вы реализуете SAT, вы на полпути сделаете динамическую часть своего движка.

  • Кинематика/Динамика. Крис Хеккер написал отличный онлайн-ресурс, который шаг за шагом прошел через ответ на столкновение.

  • Все остальное. Как только вы узнаете об обнаружении/ответе на столкновение, это вопрос реализации всего остального, что вы хотите в движке. Это может включать в себя трение, контактные силы, суставы, а также все, что вы можете придумать.

Удачи! Создание собственного моделирования физики - невероятно полезный опыт.

Ответ 5

Даже если вы хотите узнать все это снизу вверх, библиотека с открытым исходным кодом, которая хорошо закодирована и документирована, содержит гораздо больше информации, чем книгу. Как я могу справиться с ситуацией x... найти в файлах может быть быстрее бумажного индекса.

Оригинальный ответ:

Что, не упоминается Box2D? Его проект с открытым исходным кодом сотрудника метели, имеет хорошее сообщество, и хорошо, отлично работает.

В моем (кратком) опыте с Box2D, интегрируя его с Torque Game Builder, я нашел API чистым в использовании, документация была понятной, она поддерживала все объекты физики, которые я ожидал (в частности, были суставы), а сообщество выглядело дружелюбным и активным (примерно в начале 2010 года).

Судя по плакатам форума, также выяснилось, что менеджеры были восприимчивы к исходным взносам (которые не носили лицензионный багаж).

Решатель на острове был довольно быстрым, как я ожидал от его репутации, а не за то, что я провел какое-то серьезное тестирование производительности.

Ответ 6

F # имеет функцию под названием Единицы измерения, которая делает анализ размеров для вас, предоставляя ошибки, если вы ошибаетесь. Например, если вы скажете:

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

Это даст ошибку компиляции, поскольку гравитация равна < метры/секунды ^ 2 > метров > . Кроме того, поскольку F # - это просто .NET, вы можете написать свой математический/физический код в библиотеке классов и ссылаться на него с вашего С#.

Я бы рекомендовал вам проверить эти сообщения в блоге для получения дополнительной информации:

Ответ 7

Это отличный ресурс для написания вашего первого движка. Он в 3D, но его очень легко преобразовать в 2D. Я знаю, по крайней мере, одну крупную компанию, которая следовала этому руководству для своего внутреннего движка, и я лично следовал его шагам для своего собственного движка. Он объясняет все основные понятия физики в spring/импульсной физике и показывает вам, как писать свой собственный intergrater.