Вопросы от Bercut (9) - Проблема - решение. GML и прочее. - Разработка игр на Game Maker (Simple Mode) - Форум Game Maker. Разработка игр.
Здравствуй Гость | Перейти на сайт

Главная | Форум | Регистрация | Войти
gmaker.net ;) [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 9 из 11«127891011»
Форум Game Maker. Разработка игр. » Разработка игр на Game Maker (Simple Mode) » Проблема - решение. GML и прочее. » Вопросы от Bercut (все адекватно...)
Вопросы от Bercut
Bercut Дата: Вторник, 02.03.2010, 23:53 | Сообщение # 161
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
Оке, оке, Благодарю!
А как лучше строить?
Каждая кривая в одной клетке?
Похоже я чего-то не понимаю, но подсознательно думаю, что это не так.
И ещё один момент, я может что-то прослушал и не понял, как их в редактор сам задавать?


Fast, like fire!

Сообщение отредактировал Bercut - Среда, 03.03.2010, 00:06
 
Ang3L Дата: Среда, 03.03.2010, 01:05 | Сообщение # 162
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
Quote (Bercut)
Похоже я чего-то не понимаю, но подсознательно думаю, что это не так.

Правильно думаешь, не так. Вот на твою картинку достаточно 4-5 кривых 4 степени. А ты опять предлагаешь наплодить под сотню. cool

Quote (Bercut)
И ещё один момент, я может что-то прослушал и не понял, как их в редактор сам задавать?

Кривая Безье строится по точкам. Кривая 3 степени имеет 3 вершины, 4 степени 4 вершины и т.д. Тебе нужно разместить только эти точки, остальное построится само. Потом только, зная Х персонажа и расположение точек кривой, по уравнению находим У. Profit! wink

Добавлено (03.03.2010, 01:05)
---------------------------------------------
Просто открой любой векторный редактор, да попробуй нарисовать кривую по картинке. Обычно они называются path (пути), но может и bezier-curves.



Blogpost
 
Bercut Дата: Среда, 03.03.2010, 01:12 | Сообщение # 163
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
Quote (Ang3L)
Правильно думаешь, не так. Вот на твою картинку достаточно 4-5 кривых 4 степени. А ты опять предлагаешь наплодить под сотню.

Отличненько, знал, что есть не такое громозкое решение.

Quote (Ang3L)
Кривая Безье строится по точкам. Кривая 3 степени имеет 3 вершины, 4 степени 4 вершины и т.д.

Понял, тогда я сделаю так, допустим подгрузили картинку, и теперь нам вдруг захотелось построить кривую, выбираем когого порядка она будет, жмакаем на экран, и потом издеваемся над ней, механизм нахождения кривой в определённой клетке как-нибудь придумаю.
Quote (Ang3L)
Потом только, зная Х персонажа и расположение точек кривой, по уравнению находим У. Profit!

Да! happy

Добавлено (03.03.2010, 01:12)
---------------------------------------------

Quote (Ang3L)
Просто открой любой векторный редактор, да попробуй нарисовать кривую по картинке. Обычно они называются path (пути), но может и bezier-curves.

Корел сойдёт?
или не дело?

З.Ы.: О, нашёл, там есть инстумент безе, и сразу задается, но явно не кривая первого порядка.

З.Ы.:
Ко мне снова пришла эврика, я просто невнимательный, бяка =-(
Пойду строить кривые =-)

З.Ы.З.Ы.З.Ы.:
Сижу и не понимаю, как их можно построить.
Ну если найдёшь, выложи пример, не помешал бы, так быстрее разберусь.

Прикрепления: 8186307.png(58Kb)


Fast, like fire!

Сообщение отредактировал Bercut - Среда, 03.03.2010, 02:41
 
Ang3L Дата: Среда, 03.03.2010, 02:50 | Сообщение # 164
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
Вот примерно так будет выглядеть:

Рисуем карту.
Делаем кривую безье (поверхность по которой будет ходить персонаж) по этой карте.
Находим высоту персонажа.

т.е. персонаж будет ходить не по картинке как ты задумывал в начале, а по заранее построенной линией. Можно прямыми, как ты уже сделал, а можно кривыми, как предстоит сделать. Это решает проблему с производительностью. Кстати, если найти Y пола, то при падений рассчитывать положение персонажа можно как y = max(floor_y, y); , тогда он никогда не будет проваливаться и не надо никаких коллизий. Это будет работать с 1 "этажом", с более надо думать...

Прикрепления: 5033047.png(3Kb)


Blogpost
 
Bercut Дата: Среда, 03.03.2010, 04:24 | Сообщение # 165
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
Ну я сразу сообразил, правда сначала ну врубился как строить эти кривые, немного пошаманил и оно заработало.

Добавлено (03.03.2010, 04:24)
---------------------------------------------
Немного пошаманил, и оно получилось, точнее построение безье третьего порядка.
На это не стоит обращать внимание, ну всё равно, подтверждение тому:
Link 10кб



Fast, like fire!

Сообщение отредактировал Bercut - Среда, 03.03.2010, 04:42
 
Ang3L Дата: Среда, 03.03.2010, 23:30 | Сообщение # 166
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
Bercut, теперь нужно от X найти Y.


Blogpost
 
Bercut Дата: Пятница, 05.03.2010, 17:43 | Сообщение # 167
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
Отказались от кривых безье, так как распределение идёт неравнономерное:
Link 18 kb
Попробуй сильно растянуть линию
Будем юзать линии.


Fast, like fire!

Сообщение отредактировал Bercut - Пятница, 05.03.2010, 17:43
 
Ang3L Дата: Пятница, 05.03.2010, 20:34 | Сообщение # 168
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
Bercut, это не проблема Безье, это проблема незаконченной программы.

Если(угол между соседними точками > 10*) то падаем.
Если(угол между соседними точками < 60*) идём по холму.

Угол может быть только [0; 90), иначе нет смысла обрабатывать.

Заметим, что если мы не идём по холму и угол от 10 до 60, то мы всё равно падаем, точнее сползаем с холма (точнее двигаемся вниз по кривой).

И не надо мне показывать проблемы, лучше покажи их решение! wink

Добавлено (05.03.2010, 20:34)
---------------------------------------------
Или можно арктангенс от разницы расстояний по Y.



Blogpost
 
Bercut Дата: Вторник, 09.03.2010, 06:49 | Сообщение # 169
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
Ну ты не о этом, как объяснить, например рассмотрим такой случай:

В этом случае персонаж будет бегать гораздо быстрее слева, чем справа, хотя логично, если бежать с горки, то так быстрее.
Прикрепления: 2223120.png(44Kb)


Fast, like fire!

Сообщение отредактировал Bercut - Вторник, 09.03.2010, 06:49
 
Ang3L Дата: Вторник, 09.03.2010, 10:25 | Сообщение # 170
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
Bercut, да лан, бросай эти Безье. Делай по-обычному.


Blogpost
 
Bercut Дата: Четверг, 22.07.2010, 15:31 | Сообщение # 171
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
Трям!
Доброго дня всем!
Наконец-то проснулся, там сессия и бла-бла-бла, теперь третий курс ждёт.
Так вот в тот раз мы остановились на линиях, для того чтобы делать практически любые поверхности, а не складывать из уже созданых блоков, работающих по заранее задным законам, как это было у Дрима.
Ну то есть, для каждой клетке координаты меняют своё положение (y = f(x)), будь то передвижение по дуге, хоть под углом и т.д.
Так вот у меня практически тоже самое, но всё такое чудо состоит из линий, и эти линии могут лежать в клетках, так вот, так как размах велик, то
есть вопрос.
Если клетки небольшого размера (36 х 36), то можно спокойно разместить все эти линии таким образом, что в одной клетке будет хранится одна прямая, но не всегда, возможно, что будет переход.
А можно и увеличить клетки, тогда в одной клетки будет больше линий, но количество самих ячеек уменьшится. От сюда следует, что надо делать сложную структуру данных, то есть каждая клетка сетки хранит список прямых.
Как это скажется на производительности, и как лучше хранить списки?
Просто допустим на Си можно было храниить указатель на первый элемент в списке.


Fast, like fire!
 
Ang3L Дата: Четверг, 22.07.2010, 23:15 | Сообщение # 172
Каждый 5й пост мой
Группа: Админы
Сообщений: 2667
Статус: Offline
Quote (Bercut)
Как это скажется на производительности, и как лучше хранить списки?

Буквально на днях думал над этой проблемой. Ща попробуй примерчик накатать про хранение данных.

Quote (Bercut)
Просто допустим на Си можно было храниить указатель на первый элемент в списке.

Здесь тоже можно так, это индекс структуры, допустим. Но как они будут хранится в самой структуре? Вот на этот вопрос постараюсь ответить.


Blogpost
 
Bercut Дата: Пятница, 06.08.2010, 02:35 | Сообщение # 173
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
Как сделать зум?
Я конечно понимаю, что можно взять несколько суфров и их растягивать, но как же быть с проверками координат (там же всё уменьшается или увеличивается)?


Fast, like fire!
 
DreamRunner Дата: Пятница, 06.08.2010, 07:38 | Сообщение # 174
Админ
Группа: Админы
Сообщений: 1382
Статус: Offline
все проверки так и останутся в 1:1, просто ты приблизишь отрисованный сурф. Конечно если ты при этом хочешь тыкать мышой в экран, то может проще через изменение размера вида?
 
Bercut Дата: Пятница, 06.08.2010, 12:44 | Сообщение # 175
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
Да дело в том, что у меня есть рабочая область и меню с кнопочками
В этом случае задавать два вида?

И ещё один вопросик =-)
Рыскал рыскал на просторах интернета один алгоритм, короче надо чтобы (желательно эффективно) искались номера прямых, которые лежат в той или иной клетки.
То есть существует сетка, размер каждой клетки 64Х64.
Имеется список прямых, мы знаем их порядковые номера и принадлежность к тому или иному объекту.
Короче я сделал массив списков, который равен размеру всего поля.
Нужно, чтобы туда правильно записывались номера прямых и т.д., потому что встречаются разные случаи, мб вы с таким сталкивались и находили подобные алгоритмы.
Если же нет, то какие возможны идеи?
Писать за меня что-то и так далее не надо, не хотелось бы вас отвлекать по пустякам.
Заранее спасибо!



Fast, like fire!

Сообщение отредактировал Bercut - Пятница, 06.08.2010, 12:55
 
WertyXBOCT Дата: Пятница, 06.08.2010, 13:05 | Сообщение # 176
Каждый 5й пост мой
Группа: Страж
Сообщений: 2467
Статус: Offline
Нарисуй, пожалуйста. Я не вкурил с второго раза.


Blog:www.WeslomPo.ru
mailto: i@weslompo.ru
 
Bercut Дата: Пятница, 06.08.2010, 13:21 | Сообщение # 177
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline

Тут всё видно =-)

З.Ы.:
Вопрос отпал, но всё-таки актуален.
Я же сделал так:

Код мб вам будет неочень понятен, но попытаю объяснить, рассматриваем множ-во прямых, которые лежат на сетке, для каждой прямой сначала записываем какие точки начала и конца отрезка, а потом находим точки пересечения с линиями сетки ( в ограниченном пространстве), вроде много не хапает (у меня постоянный 100 фпс и загрузка проца 4-6%, оччень радует посравнению с прошлой версой, где всё хапапло 50%!.
Если есть ещё более быстрые варианты, то предлагайте.
Собственно, если интересно, то вот можете ознакомится(код сороват конечно -_-):

Прикрепления: 4884990.png(134Kb) · 06.08.10.gmk(66Kb)


Fast, like fire!

Сообщение отредактировал Bercut - Пятница, 06.08.2010, 17:10
 
WertyXBOCT Дата: Пятница, 06.08.2010, 22:41 | Сообщение # 178
Каждый 5й пост мой
Группа: Страж
Сообщений: 2467
Статус: Offline
Это вроде интерполяцией называется


Blog:www.WeslomPo.ru
mailto: i@weslompo.ru
 
Bercut Дата: Суббота, 07.08.2010, 14:57 | Сообщение # 179
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
А как сделалать изменяющаяся строку, ну допустим выделение переметров мышью (ну как в чате, однострочная штука), просто прописывать не хочется, мб есть где-то библиотека?
Вообще ща посмотрюб пример чата -_-


Fast, like fire!
 
Bercut Дата: Суббота, 04.09.2010, 13:24 | Сообщение # 180
Болтун
Группа: Проверенные
Сообщений: 197
Статус: Offline
Наконец-то сделал отладочный пример.
Его конечно можно подуменьшить, но мне это не особо надо это делать.
Решил добавить ещё разные примитивы, будут идти как отдельные модули.
Круги и всякие кривые (например Безье) упрощать до совокупности прямых, нa память не тестировал, но думаю немного будет занимать, хотя
будут большие уровни -_-
Первую вершину передвигать (w, a, s, d), а вторую стрелками.
Прикрепления: 6154908.gmk(10Kb)


Fast, like fire!

Сообщение отредактировал Bercut - Суббота, 04.09.2010, 13:39
 
Форум Game Maker. Разработка игр. » Разработка игр на Game Maker (Simple Mode) » Проблема - решение. GML и прочее. » Вопросы от Bercut (все адекватно...)
Страница 9 из 11«127891011»
Поиск:



Сообщество Gmaker.SU 2005-2012
Используются технологии uCoz
Простой вход