Ресурсы для 2d игры физики
Я ищу хорошие ссылки для изучения того, как моделировать 2d физику в играх. Я не ищет библиотеку, чтобы сделать это для меня - я хочу думать и учиться, а не слепо использовать кого-то другого.
Я немного поработал над Googling, и хотя я нашел несколько руководств по GameDev и т.д., я нахожу их учебники трудными для понимания, потому что они либо плохо написаны, либо предполагают уровень математического понимания, что Я еще не обладаю.
Для специфики - я ищу, как моделировать нисходящую 2d-игру, вроде танковой боевой игры, и я хочу точно моделировать (помимо прочего) ускорение и скорость, накопление тепла из компонентов, "столкновения между моделями и границами уровня и оружие ракетного типа".
Сайты, рекомендуемые книги, блоги, примеры кода - все приветствуются, если они помогут понять. Я рассматриваю возможность использования С# и F # для создания моей игры, поэтому примеры кода на любом из этих языков были бы замечательными, но не позволяйте языку останавливать вас от публикации хорошей ссылки. =)
Изменить. Я не имею в виду, что я не понимаю математику - это больше того случая, когда я не знаю, что мне нужно знать, чтобы понять вовлеченные системы и "Я действительно знаю, как найти ресурсы, которые научат меня понятным образом.
Ответы
Ответ 1
Вот некоторые ресурсы, которые я собрал несколько лет назад. Следует отметить интеграцию Verlet. Я также включаю ссылки на некоторые открытые и коммерческие физические движки, которые я нашел в то время. Здесь есть статья о переполнении стека: 2d игровая физика?
Физические методы
книги
- "Разработка движка игровой физики", Ян Миллингтон - я владею этой книгой и очень рекомендую ее. Книга строит физический движок в C++ с нуля. Автор начинает с основ физики элементарных частиц, а затем добавляет "законы движения", ограничения, физику твердого тела и так далее. Он включает в себя хорошо документированный исходный код.
Физика Двигатели
Ответ 2
(источник: oreilly.com)
Физика для разработчиков игр от O'Reilly
Ответ 3
Говоря по опыту, внедрение 2D-движка физики довольно сложно. Я подробно расскажу о нескольких шагах, которые я предпринял при создании моего движка.
-
Обнаружение столкновений. Обнаружение столкновений может быть сложной проблемой, даже если вы не имеете дело с 3D-мирами или сетевыми симуляторами. Для 2D-физики вы определенно хотите использовать разделительную теорию осей. После того, как вы реализуете SAT, вы на полпути сделаете динамическую часть своего движка.
-
Кинематика/Динамика. Крис Хеккер написал отличный онлайн-ресурс, который шаг за шагом прошел через ответ на столкновение.
-
Все остальное. Как только вы узнаете об обнаружении/ответе на столкновение, это вопрос реализации всего остального, что вы хотите в движке. Это может включать в себя трение, контактные силы, суставы, а также все, что вы можете придумать.
Удачи! Создание собственного моделирования физики - невероятно полезный опыт.
Ответ 4
Это отличный учебник, который демонстрирует концепции 2D-физики с использованием флеш-памяти и не относится к флэш-памяти.
http://www.rodedev.com/tutorials/gamephysics/game_physics.swf
Ответ 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.
Ответ 8
Журнал F #.NET опубликовал две статьи об этом: