Re[11]: Алгоритм игры пинбол (pinball)
От: Maraba  
Дата: 02.07.05 19:02
Оценка:
Здравствуйте, Александр Сергеевич, Вы писали:

АС>У твоего шарика есть радиус.

АС>И есть отрезок который мы проверяем на столкновение с шариком.
....

Спасибо за подробный ответ. Но все же не все так просто.
Во-первых шарик круглый, а не квадратный, и поэтому проверять только 4 угловые точки — не совсем правильно. Из-за этого он будет отскакивать еще не дотронувшись до стенки.
Во-вторых для выяснения соприкосновения со стеной вы предлагаете определять лежит ли угловая точка шарика на отрезке, которому соответствует часть стены. Но ведь на самом деле вряд-ли точка будет непосредственно лежать на отрезке, скорее всего она его перелетит. (То есть точка в определенный момент лежала с одной стороны отрезка, в следующий проход игрового цикла она изменила свои координаты в соответствии с направлением полета шарика и уже лежит с другой стороны отрезка. Вариант когда точка попадает на отрезок очень редок)
Re[8]: Алгоритм игры пинбол (pinball)
От: Maraba  
Дата: 02.07.05 19:04
Оценка:
Здравствуйте, Рома Мик, Вы писали:

РМ>Здравствуйте, Maraba, Вы писали:


M>>То есть можно определить две соседние точки и провести через них прямую, от которой и просчитывать отскок? (А производную накладно считать)

РМ>Ну надо еще предусмотреть случай, когда эти точки совпадают, тогда перпендикуляр линии соединяющей центральную и соседние точки, ну а все три совпадать не могут по построению.
РМ>Для трех точек это будет эквивалентно расчету производной. И я думаю, для пинбола достаточно точно.

Честно говоря не понял. Можно поподробнее...
Re[12]: Алгоритм игры пинбол (pinball)
От: Александр Сергеевич Россия  
Дата: 02.07.05 19:12
Оценка: 2 (1)
Здравствуйте, Maraba, Вы писали:

M>Здравствуйте, Александр Сергеевич, Вы писали:


АС>>У твоего шарика есть радиус.

АС>>И есть отрезок который мы проверяем на столкновение с шариком.
M>....

M>Спасибо за подробный ответ. Но все же не все так просто.

M> Во-первых шарик круглый, а не квадратный, и поэтому проверять только 4 угловые точки — не совсем правильно. Из-за этого он будет отскакивать еще не дотронувшись до стенки.
Ну ты же не для мейнфрейма пишешь игру . Поэтому нужны упрощения физической модели, чтобы меньше вычислять. Сделай квадрат на 5-10% меньше, и всё, пользователю этого хватит с головой.
M> Во-вторых для выяснения соприкосновения со стеной вы предлагаете определять лежит ли угловая точка шарика на отрезке, которому соответствует часть стены. Но ведь на самом деле вряд-ли точка будет непосредственно лежать на отрезке, скорее всего она его перелетит. (То есть точка в определенный момент лежала с одной стороны отрезка, в следующий проход игрового цикла она изменила свои координаты в соответствии с направлением полета шарика и уже лежит с другой стороны отрезка. Вариант когда точка попадает на отрезок очень редок)
Ну это смотря на скорость движения Если 1 пиксел/цикл игры, то попадёт А если нет... Ну не обязательно проверять строго равенство (плюс надо учесть квадрат к-й немного меньше).
<<Winamp играет: Всадник Из Льда>>
Re[13]: Алгоритм игры пинбол (pinball)
От: Maraba  
Дата: 02.07.05 19:33
Оценка: 2 (1)
Здравствуйте, Александр Сергеевич, Вы писали:

АС>Ну это смотря на скорость движения Если 1 пиксел/цикл игры, то попадёт А если нет... Ну не обязательно проверять строго равенство (плюс надо учесть квадрат к-й немного меньше).


Ну если плюс-минус один пиксел, то тогда действительно попадает

Но все же почему проверять надо именно угловые точки? Вот представьте ситуацию, что мячик летит вниз, а мы проверяем угловые точки. В итоге соприкосновение будет просчитано очень не точно. Ведь в такой ситуации логичнее было бы проверять нижнюю точку шарика.

Наверное надо выбирать точку на окружности шарика в зависимости от направления его движения, и проверять только ее одну.
Re[9]: Алгоритм игры пинбол (pinball)
От: Рома Мик Россия http://romamik.com
Дата: 02.07.05 19:40
Оценка: 2 (1)
Здравствуйте, Maraba, Вы писали:

M>Честно говоря не понял. Можно поподробнее...

Можно.
Итак задача номер 1: найти все граничные точки, т.е. точки, о которые может стукуться шарик. Здесь заливка.
Задача 2: выстроить эти точки в последовательность. При этом возможно иногда эти точки будут повторятся, но только если где-то есть выступ в виде линии, тогда по этой линии придется пройтись туда и обратно. Здесь алгоритм выбирающий соседнии точки и помечающий, если идти некуда, то возвращающийся назад. (подробности опускаю)
Задача 3: для каждой точки последовательности найти угол к горизонту. Здесь достаточно для каждой точки взять две соседнии в последовательности и соединить прямой.
... << RSDN@Home 1.1.4 beta 7 rev. 468>>
Re[10]: Алгоритм игры пинбол (pinball)
От: Рома Мик Россия http://romamik.com
Дата: 02.07.05 19:42
Оценка:
Здравствуйте, Рома Мик, Вы писали:

Дальше предлагаю хранить для каждой точки на экране угол и признак, является ли она границей.
... << RSDN@Home 1.1.4 beta 7 rev. 468>>
Re[10]: Алгоритм игры пинбол (pinball)
От: Maraba  
Дата: 02.07.05 20:03
Оценка:
Здравствуйте, Рома Мик, Вы писали:

РМ>Здравствуйте, Maraba, Вы писали:


M>>Честно говоря не понял. Можно поподробнее...

РМ>Можно.
РМ>Итак задача номер 1: найти все граничные точки, т.е. точки, о которые может стукуться шарик. Здесь заливка.
РМ>Задача 2: выстроить эти точки в последовательность. При этом возможно иногда эти точки будут повторятся, но только если где-то есть выступ в виде линии, тогда по этой линии придется пройтись туда и обратно. Здесь алгоритм выбирающий соседнии точки и помечающий, если идти некуда, то возвращающийся назад. (подробности опускаю)
РМ>Задача 3: для каждой точки последовательности найти угол к горизонту. Здесь достаточно для каждой точки взять две соседнии в последовательности и соединить прямой.

Ну тогда получится следующее:
+++
+o+
+++


о — это данная точка на карте, + — возможные соседние точки. Если для вычисления угла составлять прямую данной точки с соседней, то тогда угол будет или 45 градусов или 90 или 180, что не есть хорошо.
Re[11]: Алгоритм игры пинбол (pinball)
От: Рома Мик Россия http://romamik.com
Дата: 02.07.05 20:20
Оценка:
Здравствуйте, Maraba, Вы писали:

M>Здравствуйте, Рома Мик, Вы писали:


РМ>>Здравствуйте, Maraba, Вы писали:


M>>>Честно говоря не понял. Можно поподробнее...

РМ>>Можно.
РМ>>Итак задача номер 1: найти все граничные точки, т.е. точки, о которые может стукуться шарик. Здесь заливка.
РМ>>Задача 2: выстроить эти точки в последовательность. При этом возможно иногда эти точки будут повторятся, но только если где-то есть выступ в виде линии, тогда по этой линии придется пройтись туда и обратно. Здесь алгоритм выбирающий соседнии точки и помечающий, если идти некуда, то возвращающийся назад. (подробности опускаю)
РМ>>Задача 3: для каждой точки последовательности найти угол к горизонту. Здесь достаточно для каждой точки взять две соседнии в последовательности и соединить прямой.

M>Ну тогда получится следующее:

M>
M>+++
M>+o+
M>+++
M>


M>о — это данная точка на карте, + — возможные соседние точки. Если для вычисления угла составлять прямую данной точки с соседней, то тогда угол будет или 45 градусов или 90 или 180, что не есть хорошо.

Такого быть не может, т.к. угол ты ищешь среди граничных точек. У граничной точки строго два соседа (тоже принадлежащих границе).
... << RSDN@Home 1.1.4 beta 7 rev. 468>>
Re[12]: Алгоритм игры пинбол (pinball)
От: Maraba  
Дата: 02.07.05 20:27
Оценка:
Здравствуйте, Рома Мик, Вы писали:

РМ>Такого быть не может, т.к. угол ты ищешь среди граничных точек. У граничной точки строго два соседа (тоже принадлежащих границе).


Но ведь граничные точки находятся рядом. +/- один пиксель. Как там может быть какой-нибудь другой угол кроме 45, 90, 180 ?
Re[13]: Алгоритм игры пинбол (pinball)
От: Рома Мик Россия http://romamik.com
Дата: 02.07.05 20:41
Оценка:
Здравствуйте, Maraba, Вы писали:

M>Здравствуйте, Рома Мик, Вы писали:


РМ>>Такого быть не может, т.к. угол ты ищешь среди граничных точек. У граничной точки строго два соседа (тоже принадлежащих границе).


M>Но ведь граничные точки находятся рядом. +/- один пиксель. Как там может быть какой-нибудь другой угол кроме 45, 90, 180 ?

Понял, что ты имеешь ввиду. Во-первых там угол может быть еще и ~63 градуса, а во-вторых этого достаточно, так как есть еще угол полета мяча, поэтому однообразия на глаз заметно совершенно не будет, а отражаться будет вполне естественно.

Еще раз напишу, что пункт 3, можно заменить на построение сплайна через все точки, что даст более точный результат.
... << RSDN@Home 1.1.4 beta 7 rev. 468>>
Re[11]: Алгоритм игры пинбол (pinball)
От: Pah Россия  
Дата: 02.07.05 21:14
Оценка:
Здравствуйте, Александр Сергеевич, Вы писали:

АС>Уффффф. В общем вот так. Короче говоря, тебе нужен будет учебник по геометрии. Я вот в него сейчас заглядывал .


Оффтоп: сильное объяснение
--------------------------
less think — do more
Re[12]: Алгоритм игры пинбол (pinball)
От: Александр Сергеевич Россия  
Дата: 03.07.05 10:22
Оценка:
Здравствуйте, Pah, Вы писали:

Pah>Здравствуйте, Александр Сергеевич, Вы писали:


АС>>Уффффф. В общем вот так. Короче говоря, тебе нужен будет учебник по геометрии. Я вот в него сейчас заглядывал .


Pah>Оффтоп: сильное объяснение


Ну дык учебник по геометрии в этом вопросе действительно необходим. Да и вообще толстенький справочник по математике
<<Winamp играет: silent>>
Re[14]: Алгоритм игры пинбол (pinball)
От: Александр Сергеевич Россия  
Дата: 03.07.05 10:28
Оценка:
Здравствуйте, Maraba, Вы писали:

M>Но все же почему проверять надо именно угловые точки? Вот представьте ситуацию, что мячик летит вниз, а мы проверяем угловые точки. В итоге соприкосновение будет просчитано очень не точно. Ведь в такой ситуации логичнее было бы проверять нижнюю точку шарика.


Образно говоря, угловые точки это экстремум. А очень точно считать тебе и не надо. Тебе нужна упрощенная физ. модель системы.

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


Как я писал, у тебя есть вектор направления. Проводим луч из центра шарика по направлению этого вектора. Ищем пересечение этого луча со стенкой. Эта точка пересечения и есть ориентир. Этот поиск надо вести только при столкновении шарика с чем-либо. Тогда и вычислений меньше и точность выше
<<Winamp играет: silent>>
Re[4]: Алгоритм игры пинбол (pinball)
От: Mamut Швеция http://dmitriid.com
Дата: 04.07.05 07:37
Оценка:
M>>Я конечно могу ошибаться, но движения шариков в пинболах скорее напоминает движение под углом к горизонту в одной плоскости, чем движение по наклонной плоскости

АС>Ничего не понимаю А это причем?


АС>Хотя физика была на первом курсе, может я чего путаю


Это я к тому, что в пинболах на PC скорее всего движение не по наклонной плоскости, а по вертикали. А иллюзию наклонной плоскости создает картинка на фоне


dmitriid.comGitHubLinkedIn
Re: Алгоритм игры пинбол (pinball)
От: alex_raider Россия  
Дата: 04.07.05 09:48
Оценка:
M>Собираюсь делать игру пинбол для мобильного на j2me. Разрабатываю алгоритм и не могу кое-чего понять: как вычислить направление отскока шарика от кривой поверхности? (зал (игровое поле) хранится как картинка в растровом формате)

1. вслед за этим пойдет вопрос: "Ой, а как мне прочитать пиксели из картинки на j2me?" :D

2. Пинболов на j2me уже столько делано-переделано (тыб еще арканоид или тетрис взялся писать :D) что никакого коммерческого смысла заниматься очередным пинболом просто-напросто нет. Увы и ах.

3. Как старый волк демо-дизайна посоветую единственную более-менее приемлемую реализацию. Пришла на ум только что. Тупо до безобразия.
Делаешь поверх своей графики пинбольного стола еще одну картинку (карту) — карту отражений шарика.
В нее руками (лично я бы не стал писать алгоритм для ее изготовления) прописываешь значения насколько сильно отклонять dx/dy шарика.
Всё.
Кстати, тебе бы и так пришлось изготовлять разные карты. Их в хорошем пинболе, по-идее даже не одна а целая серия — там есть магнитные зоны, отталкивающие, искриваляющие, и тд.
Re[14]: Алгоритм игры пинбол (pinball)
От: Аноним  
Дата: 04.07.05 15:33
Оценка: +1
Здравствуйте, Maraba, Вы писали:

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


Не поможет, а если он по касательной (чуть боком, а не только передом) ударился?

Разбей доску на квадраты, а стенки "зала" — на отрезки. Каждый тик проверяй отрезок, который проехал шарик (от точки, в которой вектор, обратный вектору скорости, пересекает окружность шарика в нач. позиции до точки, в которой вектор скорости пересекает окружность шарика в конечной позиции) на пересечение со всеми отрезками, входящими в тот квадрат, где сейчас шарик и с границами квадрата. Если траектория шарика перескла один из отрезков "стен", можно вычислить точку касания, угол отскока, и скорректировать траекторию. Затем надо проверить оставшую часть траектории шарика (иначе он сможет после отскока в узких коридорах летать сквозь стены).

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

Поле разбить на квадраты можно равномерно, а можно — в зависимости от плотности стенок (например, пустое место сделать одним квадратом, а "лабиринт" — 8-ю, оптимизируй на количество вычислений в секунду и глубину разбиения — это напрямую влияет на скорость и память. Разбиение, естесственно, должен генерить редактор автоматически.

p.s.: зачем дополнительные проверки? в играх типа пинболла шарик можно разогнать до огромной скорости, реально о может летать (на компе, правда) порядка 20 пикселей/тик (зависит от кол-ва тиков, конечно, но может, я делал пинг-понг, пока не стал проверять отрезки, у меня шарик летал сквозь сетку )
Re[2]: Все несколько проще.
От: Young yunoshev.ru
Дата: 06.07.05 08:04
Оценка:
Здравствуйте, alex_raider, Вы писали:

M>>Собираюсь делать игру пинбол для мобильного на j2me. Разрабатываю алгоритм и не могу кое-чего понять: как вычислить направление отскока шарика от кривой поверхности? (зал (игровое поле) хранится как картинка в растровом формате)


_>1. вслед за этим пойдет вопрос: "Ой, а как мне прочитать пиксели из картинки на j2me?" :D


_>2. Пинболов на j2me уже столько делано-переделано (тыб еще арканоид или тетрис взялся писать :D) что никакого коммерческого смысла заниматься очередным пинболом просто-напросто нет. Увы и ах.


В принципе есть, при наличии каналов распространения или выходов на онный тысячи две долларов подняьт на игре можно. Но только себестоимость будет дороже таки.

_>3. Как старый волк демо-дизайна посоветую единственную более-менее приемлемую реализацию. Пришла на ум только что. Тупо до безобразия.

_>Делаешь поверх своей графики пинбольного стола еще одну картинку (карту) — карту отражений шарика.
_>В нее руками (лично я бы не стал писать алгоритм для ее изготовления) прописываешь значения насколько сильно отклонять dx/dy шарика.

Можно еще проще. Есть карта — в ней разными уветами ОТДЕЛЬНЫЕ типы поверхностей. Т.е. красный сфера диаметра R1, синий сфера диаметра R2, зеленый наклонная плоскость с углом A, фиолетовый пружинищая сфера радиусом R3 и придающая шарику ускорение X.

Т.е. каждую точку задават не нужно..

По такой методики сделанные все известные мне pinball-ы.

_>Всё.

_>Кстати, тебе бы и так пришлось изготовлять разные карты. Их в хорошем пинболе, по-идее даже не одна а целая серия — там есть магнитные зоны, отталкивающие, искриваляющие, и тд.
Re[3]: Все несколько проще.
От: alex_raider Россия  
Дата: 09.07.05 07:19
Оценка:
_>>1. вслед за этим пойдет вопрос: "Ой, а как мне прочитать пиксели из картинки на j2me?" :D

_>>2. Пинболов на j2me уже столько делано-переделано (тыб еще арканоид или тетрис взялся писать :D) что никакого коммерческого смысла заниматься очередным пинболом просто-напросто нет. Увы и ах.


Y>В принципе есть, при наличии каналов распространения или выходов на онный тысячи две долларов подняьт на игре можно. Но только себестоимость будет дороже таки.


Ну вот интересно что и сколько стоит на этом рынке. А то я тут сижу и гадаю насколько надувапть щеки. =)
Написал блокбастер игру с сабгеймами, заставки, музыка, графика..
Если есть какие-то слышаные цифры, будь добр, откинь приватное сообщение или пошли мыло.


_>>3. Как старый волк демо-дизайна посоветую единственную более-менее приемлемую реализацию. Пришла на ум только что. Тупо до безобразия.

_>>Делаешь поверх своей графики пинбольного стола еще одну картинку (карту) — карту отражений шарика.
_>>В нее руками (лично я бы не стал писать алгоритм для ее изготовления) прописываешь значения насколько сильно отклонять dx/dy шарика.

Y>Можно еще проще. Есть карта — в ней разными уветами ОТДЕЛЬНЫЕ типы поверхностей. Т.е. красный сфера диаметра R1, синий сфера диаметра R2, зеленый наклонная плоскость с углом A, фиолетовый пружинищая сфера радиусом R3 и придающая шарику ускорение X.


Так это и имелось в виду. Я бы сделал слоями в фотошопе, потом бы отгрузил в RAW формат.

Y>По такой методики сделанные все известные мне pinball-ы.


Пинболы не копал =)

p.s.
Имхо пинбол далеко не тот класс игр, неудобно на мобиле, экран слишкеом мелкий. Играть с просмотром фрагмента уровня довольно неудобно. А если тормозной блюреный дисплей как на Siemens *55 то вообще швах.
Re[4]: Все несколько проще.
От: Young yunoshev.ru
Дата: 09.07.05 12:44
Оценка:
Здравствуйте, alex_raider, Вы писали:

_>>>1. вслед за этим пойдет вопрос: "Ой, а как мне прочитать пиксели из картинки на j2me?" :D


_>>>2. Пинболов на j2me уже столько делано-переделано (тыб еще арканоид или тетрис взялся писать :D) что никакого коммерческого смысла заниматься очередным пинболом просто-напросто нет. Увы и ах.


Y>>В принципе есть, при наличии каналов распространения или выходов на онный тысячи две долларов подняьт на игре можно. Но только себестоимость будет дороже таки.


_>Ну вот интересно что и сколько стоит на этом рынке. А то я тут сижу и гадаю насколько надувапть щеки. =)

_>Написал блокбастер игру с сабгеймами, заставки, музыка, графика..

Болкбастер игра — это какой жанр?

Вообщем не совсем понятно про "надувать щеки" — если речь идет о продажи проекта целиком, то мало данных. А так надувать щеки нужно когда крупные операторы взяли у тебя игру, а совсем раздвувать если они еще в и топе.

Тем более уже говорилось — если игра не портированная хотя бы на 30-40 моделей (а в идеале на 60-80) то ценность ее не велика какая она бы интерестная и красивая не была.

Тут можно беседу посмотреть одну — http://dev.dtf.ru/forum/thread.php?id=81281

_>Если есть какие-то слышаные цифры, будь добр, откинь приватное сообщение или пошли мыло.


Думаю проще будет если напишешь письмо с конкретными вопросами..... Собственно секрета никакого то нет, не совсем понятно о чем рассказывать.
В целом все просто — стоимость игры 2-5 баксов. Оператор отчисляет 40-50%. Издатель забирает тоже около 50%. Хорошая игра в топе крупного опертора продается ну никак не менее 5 тысяч копий в месяц. А реально разброс от 5 до 50 тысяч. В зависимости от опертора.


_>>>3. Как старый волк демо-дизайна посоветую единственную более-менее приемлемую реализацию. Пришла на ум только что. Тупо до безобразия.

_>>>Делаешь поверх своей графики пинбольного стола еще одну картинку (карту) — карту отражений шарика.
_>>>В нее руками (лично я бы не стал писать алгоритм для ее изготовления) прописываешь значения насколько сильно отклонять dx/dy шарика.

Y>>Можно еще проще. Есть карта — в ней разными уветами ОТДЕЛЬНЫЕ типы поверхностей. Т.е. красный сфера диаметра R1, синий сфера диаметра R2, зеленый наклонная плоскость с углом A, фиолетовый пружинищая сфера радиусом R3 и придающая шарику ускорение X.


_>Так это и имелось в виду. Я бы сделал слоями в фотошопе, потом бы отгрузил в RAW формат.


Y>>По такой методики сделанные все известные мне pinball-ы.


_>Пинболы не копал =)


_>p.s.

_> Имхо пинбол далеко не тот класс игр, неудобно на мобиле, экран слишкеом мелкий. Играть с просмотром фрагмента уровня довольно неудобно. А если тормозной блюреный дисплей как на Siemens *55 то вообще швах.

У пинбола есть другой минус который перекрывает все остальные его минусы — их очень много. Сложно найти оператора у которого в деке бы небыло пинбола. А если он есть, уговорить взять еще один — сложно.
Re[5]: Все несколько проще.
От: A.R. Россия  
Дата: 10.07.05 19:38
Оценка:
Да, согласен что я не отписал никакой информации, пока не буду распространяться преждевременно. Скажу что ничего сверх-оригинального, но игра содержит game-story и внутри себя содержит ряд подигр, а-ля лучшие тайтлы с zx, nes, snes...
Сейчас единственное что, — ломаю голову чтобы привести игру в фантастический вид согласно моим представлениям, т.е. ищу художника. Ох и нелегкое это дело =)
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.