Комментарии 31
Как я понимаю вы не хотели использовать OGL ES 2.0 из-за отсутствия оного на старых моделях. Уверены ли вы, что это того стоит? Мне просто интересны статистические данные: сколько запуском с каких версий iOS, моделей телефонов.
Как я понимаю таргетиться на 1G и 2G iPhone нет смысла, лучше добавить плюшек который доступны только в 3/4/5G. Я просто заметил среди людей откружающих меня, что те у кого старая модель (до 4G) мало покупают приложений, а те кто покупают плюются из-за производительности некоторых.
У меня есть множество приложений которые на первых айфонах запускаются, но совершенно не юзабельны, в то же время я знаю, что некоторый фичи пришлось реализовать через костыли так как они появились только 4.x SDK. Разработчик затратил больше времени на реализацию фич под старые модели телефнов больше времени чем я потратил играя в его игру, так как она нереально тормозила на старых моделях.
Как я понимаю таргетиться на 1G и 2G iPhone нет смысла, лучше добавить плюшек который доступны только в 3/4/5G. Я просто заметил среди людей откружающих меня, что те у кого старая модель (до 4G) мало покупают приложений, а те кто покупают плюются из-за производительности некоторых.
У меня есть множество приложений которые на первых айфонах запускаются, но совершенно не юзабельны, в то же время я знаю, что некоторый фичи пришлось реализовать через костыли так как они появились только 4.x SDK. Разработчик затратил больше времени на реализацию фич под старые модели телефнов больше времени чем я потратил играя в его игру, так как она нереально тормозила на старых моделях.
Если никаких других “фич” из 2.0 в приложении не используется, применение таких веревок считаю хорошим решением, отчего не сохранить совместимость с бόльшим количеством устройств.
А вот если Вы решили разрабатывать 3D шутер, то тогда конечно без 2.0 наверно не обойтись, какие цели, такие и решения.
А вот если Вы решили разрабатывать 3D шутер, то тогда конечно без 2.0 наверно не обойтись, какие цели, такие и решения.
А как насчет производительности? Самое простое решение — не всегда самое оптимальное, вполне может быть что создатели Cut the Rope потратили кучу времени как раз на оптимальный алгоритм этой самой веревки.
В интервью же говорится, что нет. Они использовали свой движок.
«Rope physics are not as easy to get right as it might look. We've decided to go with our own engine instead of using an existing technology such as Box2D, partly because we wanted the rope looking as smooth as possible, and party because it looked like an interesting task.»
Напрашивается аналогия:
— Написать операционную систему трудно и мы потратили много времени.
— А я взял за основу Linux, немного подредактировал то, что было нужно мне и не могу понять, с чем у них были проблемы.
ИМХО.
— Написать операционную систему трудно и мы потратили много времени.
— А я взял за основу Linux, немного подредактировал то, что было нужно мне и не могу понять, с чем у них были проблемы.
ИМХО.
Написать свой физический движок очень сложно. Но по их интервью складывается впечатление, что веревки вообще сложно реализовать, по фразе:
тоже ИМХО.
«Rope physics are not as easy to get right as it might look."
тоже ИМХО.
А разрезать в динамике пробовали? Там действительно не так все однозначно, как кажется на первый взгляд.
Разрезать не проблема: была одна веревка, мы ее порвали по соединению.
А анимация? Одно дело просто рарзывать джоин, и совсем другое эмулировать разрывание в следствии применения определенной силы.
Верёвки и прочую soft-body (если постараться то и rigid-body) физику можно писать используя интегрирование Верле.
Вся теория завязана на том, что скорость — разница между текущим и предыдущим её положением.
Применительно к задаче реализация сводится к следующему (псевдокод):
Есть набор точек (joints) связанных пружинками (links).
Задача каждой точки — двигаться согласно скорости.
Задача каждой пружинки — поддерживать нужное расстояние между её joint'ами.
Сама организация цикла обновления сводится к обновлению всех joint'ов, и нескольким иттерациям обновления всех link'ов (для стабилизации).
Таким незамысловатым способом можно создавать верёвки, рэгдоллы (ограничить углы между link'ами), волосы и даже некий аналог твёрдотельной физики. Реализация простая и никаких физических движков не требует.
Пример работы такой физики.
Вся теория завязана на том, что скорость — разница между текущим и предыдущим её положением.
Применительно к задаче реализация сводится к следующему (псевдокод):
Есть набор точек (joints) связанных пружинками (links).
Задача каждой точки — двигаться согласно скорости.
joint.update
tempPos = pos // запоминаем текущую позицию во временную переменную
pos += pos - lastPos // прибавляем скорость
pos += gravity // и вектор гравитации
lastPos = tempPos
Задача каждой пружинки — поддерживать нужное расстояние между её joint'ами.
link.update
delta = joint[1].pos - joint[0].pos // вектор в сторону второй точки
length = sqrt(delta.x^2 + delta.y^2) // текущее расстояние между точками
delta /= length // нормализация вектора
delta *= length - LINK_LENGTH // LINK_LENGTH - расстояние которое следует поддерживать
delta *= FORCE // FORCE - коэффициент упругости пружинки (0..1)
// расталкиваем точки в противоположных направлениях
joint[0].pos += delta * 0.5
joint[1].pos -= delta * 0.5
Сама организация цикла обновления сводится к обновлению всех joint'ов, и нескольким иттерациям обновления всех link'ов (для стабилизации).
Таким незамысловатым способом можно создавать верёвки, рэгдоллы (ограничить углы между link'ами), волосы и даже некий аналог твёрдотельной физики. Реализация простая и никаких физических движков не требует.
Пример работы такой физики.
При всём уважении в примере, не веревки, а цепи, собраны из участков по 2 звена, да еще и с утончением на месте стыка.
Вопрос Art'a, повышение детализации и смена текстуры на алгоритме никак не отразится.
Вы правы, на физике процесса это не отразится. Но физике в хабратопике уделено 1/3, а графике 2/3. Собрать же “цепь в физическом мире” зная физический движок, это вообще не задача.
Использование интегрирования Верле, это уже шаг к собственному физическому движку.
Если применять в приложениях одновременно Box2D или Chipmunk и Ваш алгоритм, то теряется очень много универсальности. Хорошо, когда все объекты живут в одном мире.
Тогда лучше правда написать свой физический движок, все объекты “поместить” в него.
Использование интегрирования Верле, это уже шаг к собственному физическому движку.
Если применять в приложениях одновременно Box2D или Chipmunk и Ваш алгоритм, то теряется очень много универсальности. Хорошо, когда все объекты живут в одном мире.
Тогда лучше правда написать свой физический движок, все объекты “поместить” в него.
Всегда хотел узнать, как это делается.
Спасибо за статью!
Спасибо за статью!
под cut the Rope
В новой версии Box2D уже создали специальный джоинт для создания веревок.
http://box2d.org/documentation/
Действительно в 2.2 добавилось, и они устранили эффект растягивания веревки, при больших нагрузках (что раньше надо было учитывать, и не перегружать цепочку).
Спасибо за информацию.
Действительно в 2.2 добавилось, и они устранили эффект растягивания веревки, при больших нагрузках (что раньше надо было учитывать, и не перегружать цепочку).
Спасибо за информацию.
зачем использовать физический движок ради пары достаточно тупых уравнений?
Это вопрос из разряда: “Зачем использовать вектор, если можно написать свой список, а если иметь готовый свой список…”.
Представьте себе, что вам нужны не только веревки, у вас вообще много объектов в физическом мире “живет”, зачем для верёвок выпендриваться и применять “тупые уравнения”?
Представьте себе, что вам нужны не только веревки, у вас вообще много объектов в физическом мире “живет”, зачем для верёвок выпендриваться и применять “тупые уравнения”?
ну тут вверху обсуждали «А может быть кат зэ роуп делали оптимизированную версию».
Я так и представляю, как создатели cut the rope вместо того, чтобы делать рабочее приложение, таки сидят и скручивают разные движки, потому что у них очень сложная физика в приложении, безумно сложная 3д-графика и ещё много всего.
Я так и представляю, как создатели cut the rope вместо того, чтобы делать рабочее приложение, таки сидят и скручивают разные движки, потому что у них очень сложная физика в приложении, безумно сложная 3д-графика и ещё много всего.
Кто-то занимается программированием/решением различных задач ради интереса и любопытства, так как нам это нравится.
Не все это могут понять.
Не все это могут понять.
Привет из года 2016.
Ссылка на метод устранения пикселизации верёвки устарела (статья удалена или заблокирована). А интересует именно он. Что за метод?
Ссылка на метод устранения пикселизации верёвки устарела (статья удалена или заблокирована). А интересует именно он. Что за метод?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Верёвка как в “Cut the Rope”