|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.01.2009, 00:27 | #611 | |
Пользователь
Регистрация: 18.12.2008
Сообщений: 47
|
Цитата:
P.S. За Cargame-model.jpg большое спасибо. Последний раз редактировалось Beermonza; 23.03.2010 в 17:10. |
|
10.01.2009, 00:32 | #612 |
Пользователь
Регистрация: 18.12.2008
Сообщений: 47
|
|
10.01.2009, 15:31 | #613 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
На главный вопрос я уже ответил ) ...либо ты в редакторе в ручную ставишь тип поверхности (это и препятствия и картинка участка сразу одним кодом), либо ты пишешь АИ который умеет создавать карты, он в цикле и проставит тебе все препятствия, ...первый вариант проще, там циклов нет, есть просто формула передачи координат курсора в координаты карты. Надеюсь это то, что нужно тебе ответить, иначе я не понимаю что требуется узнать ))).
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
11.01.2009, 16:52 | #614 |
минимакс
Участник клуба
Регистрация: 11.06.2008
Сообщений: 1,143
|
Около темы
Как я понимаю - выводы из предыдущего общения.
1. В любом случае карта должна задаваться каким-либо массивом. 2. Массив карты может храниться в файлах и загружаться динамически, что позволяет менять карты. Поиск пути 1. ОДнозначных ответов нет все зависит от выбора того. как хранится карта, как задается машина и прочее. 2. Поиск по цвету - это бред, а если вы поменяете цвет??? ((Кстати идея по ходу, как вариант, - дорога уже, чем машина, что будет??? Ширина машины 3, ширина дороги =2 - коллизия на разбивку стенок. или машина подлетает?? )) Значит, как я понимаю, Машина - условная точка, если есть габариты, то точка с некоторой шириной. (Линия). Соответственно столкновения - это решение задачи пересечения линий. (Границы - препятствия - тоже линии). В итоге, упрощенно все можно свести к решению задачи точка А(х.у) больше точки Б(х1.у1) на заданной оси. В зависимости от направленности координат знак сравнения меняется "плюс" или "минус". Получается. Берем Координату машины в мировых координатах. Привязываем карту к (0.0) мировых координат и находит точку там. Далее в зависимости от типа объекта решаем задачу сравнения. Если не столкновение, то можно двигаться. А дальше уже можно усложнять. (Толчки, кувырки, сложная геометрия машины). Как я понимаю, для гонок лучше всего квадратная карта, а не шестиугольная, - квадрат и быстрее и проще хранить. По поводу идей. Цикл в цикле на проверки - это ужас... миллионы операций в пустую ради одного полезного сравнения. Я бы здесь постарался оптимизировать максимально. МЫСЛИ В СЛУХ. Раньше на 8086 были игры, которые уступали в графике, но логика была четкая игры летали!!!! А сейчас "улет" делают на кучу мегабайты памяти и разгон процессоров. Не умеем или не успеваем сделать быстрее - ну потребуем у пользователя купить круче комп. Вопрос, а стоит того игра???? Уверен... 50% игр можно реализовать и на "старых" машинах без потери функциональности и качества - "дело принципа" и времени, которого никогда нет.
и это пройдет...
|
11.01.2009, 16:56 | #615 |
минимакс
Участник клуба
Регистрация: 11.06.2008
Сообщений: 1,143
|
Если нужен поиск пути
То здесь теоретически можно применить направленный метод ручейка.
То есть если надо доехать от точки А до Б. То идем во все стороны, куда можно идти безпрепятственно. (В рекурсии вызывая поиск самого себя в новой координате (здесь следить за память и не переполением поиска на больших картах и время на откаты назад - можно и без рекурсии сделать)) Приоритет прямому смещению к точке Б. (То есть, если Б "выше" А, то предпочтение движению "вверх" - это и есть направленный метод ручейка). Однако медленнее всего он будет работать если от А до Б надо идти через "задние ворота".
и это пройдет...
|
11.01.2009, 17:00 | #616 |
минимакс
Участник клуба
Регистрация: 11.06.2008
Сообщений: 1,143
|
И еще по поиску
В любой игре есть мобильная подсказка.
То есть при задании карты зараннее направление задается куды бечь. То есть проложен маршрут уже при создании карты и тебе надо только ему следовать, оперативно объезжая препятствия
и это пройдет...
|
11.01.2009, 18:31 | #617 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
grenles, я ни слова не сказал про цикл в цикле, и проверять всю карту не нужно, ...важно держать в поле зрения все машины и просчитывать вокруг их сектора местоположения - смежные. Как и всегда, происходит, поведение определяется из сканирования участка, координаты машин отслеживаются.
По поводу мыслей вслух, ...я того же мнения. Нас просто заставляют покупать мощные железяки вместо того, чтобы оптимизировать код и доводить до совершенства. Но никому это не нужно, ...коммерция, быстрее быстрее, по игре каждые пол года.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
11.01.2009, 23:57 | #618 |
Пользователь
Регистрация: 18.12.2008
Сообщений: 47
|
На весь экран
Я снова в эфире! За эти 2 дня решил полностью переделать тот кусочек игры, который был и начать заново. Очень помогли игры типа Bounce от Кости в разделе "Создание игр для новичков". Я теперь делаю карту в блокноте.
Правда, у меня возникли проблемы с разрешением на весь экран. Прога переходит в этот режим, но зато снизу остается панель управления и сверху синяя часть от Form. Помогите плз. Вот код, который так делает: function SetFullscreenMode: boolean; var DeviceMode: TDevMode; begin with DeviceMode do begin dmSize:=SizeOf(DeviceMode); dmbitsperPel:=16; dmPelsWidth:=320; dmPelsHeight:=240; dmFields:=dm_BitsPerPel or dm_PelsHeight or dm_PelsWidth; result:=false; If ChangeDisplaySettings(DeviceMode,CD S_Test or CDS_Fullscreen)<> Disp_Change_Successful then Exit; Result:=ChangeDisplaySettings(Devic eMode,CDS_FullScreen) = DISP_CHANGE_SUCCESSFUL; end; end; И еще это я пишу в FormCreate: SetFullscreenMode; Form1.WindowState:=wsMaximized; Заранее спасибо |
12.01.2009, 00:03 | #619 | |
Пользователь
Регистрация: 18.12.2008
Сообщений: 47
|
Цитата:
Если я тебя правильно понял, то данный "метод ручейка" является похожим с "волновым поиском" или "поиском в ширину" ? |
|
13.01.2009, 16:13 | #620 | |
минимакс
Участник клуба
Регистрация: 11.06.2008
Сообщений: 1,143
|
Рекурсивный поиск. Метод ручейка.
Точно не помню, но в универе. когда проходили и Си, и Паскаль была такая тема - как раз форвардное описание процедур, рекурсия и там все это проходится. Смысл приблизительно такой. Постоянно идешь в одну сторону, если встретилось препятствие, то смешаешься в заданную сторону и опять вызываешь сам себя. По ходу хранишь длину пройденного пути. При достижении цели запоминаешь путь и выходишь и рекурсии. В итоге - выбираешь минимальную длину пути и она и есть искомый путь. Поиск ведется на матрице, заполненной (1 - препятствие, 0 - нет). ну, усложняя можно поставить, что больше П - препятствия, меньше - дорога. Единственно, что найденный путь предполагает. что больше препятствий на нем не будет. Не помню я точно этот метод, думать надо. Но, если покопаешь интернет, то найдешь где-нибудь описание рекурсивного поиска. но, боюсь для твоего случая он не подойдет, это я кажется сразу не подумал. Алгоритм приблизительно такой ПоискПути(координата(ХУ)) Если не достигнута цель то Если "координата(Х+1,У)" не равна "препятствие" то ПоискПути(координат(x+1,Y) иначе Если "координата(Х-1,У)" не равна "препятствие" то ПоискПути(координат(x-1,Y) иначе Если "координата(Х,У-1)" не равна "препятствие" то ПоискПути(координат(x,Y-1) иначе Если "координата(Х,У+1)" не равна "препятствие" то ПоискПути(координат(x-1,Y) иначе выход и так далее где-то так. Алгорим писал за две минуты, поэтому логика наверняка слегка нарушена, но смысл такой. ЭТо и есть ручеек, потому что рекурсия как бы "течет" пока не столнется с препятствием и уходит от него в свободную сторону. Кстати, "направленность" действия как раз и задается, что в какую сторону первой вы двинитесь. Хотя этот метод не оптимальный и не лучший, зато простой. Цитата:
А говорить на "вольные темы" и "разводить демагогию" - пожалуйста.
и это пройдет...
Последний раз редактировалось Beermonza; 13.01.2009 в 17:14. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Уроки по созданию игр для новичков... | -=DeS=- | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 750 | 14.11.2017 20:26 |
Музыка программистов - как вы относитесь к АРИИ? | Весёлый Жека | Свободное общение | 46 | 10.10.2008 22:32 |
Конкурсы по созданию игр на Delphi | mutabor | Свободное общение | 0 | 15.06.2007 12:40 |
Работа по созданию ПО | remix | Фриланс | 3 | 22.04.2007 11:00 |