Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2009, 00:27   #611
Pyton
Пользователь
 
Аватар для Pyton
 
Регистрация: 18.12.2008
Сообщений: 47
По умолчанию

Цитата:
Сообщение от Beermonza Посмотреть сообщение
Редактор - комбинированная система, визуализатор показывает на кончике курсора картинку покрытия, нужно только ткнуть на сетке карты куда поставить это, ...после клика, обработчик определит тип покрытия, запишет в массив код, определив от экрана в какую ячейку нужно было записать. Т.е. как на бумаге ты рисуешь карту, только редактор тебе не показывает координат, да они тебе и не нужны, тебе нужно видеть только карту перед глазами, что собственно и происходит.
Эээ... Ну я имел ввиду редактора уровней как человека, а комбинированную систему я в принципе и сам понимаю. А вот на один из моих главных вопросов ты пока не ответил: заполнять карту препятствиями и прочими штучками надо в цикле или можно сделать как-то по-другому(в программном коде)?

P.S. За Cargame-model.jpg большое спасибо.

Последний раз редактировалось Beermonza; 23.03.2010 в 17:10.
Pyton вне форума Ответить с цитированием
Старый 10.01.2009, 00:32   #612
Pyton
Пользователь
 
Аватар для Pyton
 
Регистрация: 18.12.2008
Сообщений: 47
По умолчанию

Цитата:
Сообщение от Beermonza Посмотреть сообщение

...комп все всегда знает
А вот это хорошая фраза!
Pyton вне форума Ответить с цитированием
Старый 10.01.2009, 15:31   #613
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

На главный вопрос я уже ответил ) ...либо ты в редакторе в ручную ставишь тип поверхности (это и препятствия и картинка участка сразу одним кодом), либо ты пишешь АИ который умеет создавать карты, он в цикле и проставит тебе все препятствия, ...первый вариант проще, там циклов нет, есть просто формула передачи координат курсора в координаты карты. Надеюсь это то, что нужно тебе ответить, иначе я не понимаю что требуется узнать ))).
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 11.01.2009, 16:52   #614
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию Около темы

Как я понимаю - выводы из предыдущего общения.

1. В любом случае карта должна задаваться каким-либо массивом.
2. Массив карты может храниться в файлах и загружаться динамически, что позволяет менять карты.

Поиск пути

1. ОДнозначных ответов нет все зависит от выбора того. как хранится карта, как задается машина и прочее.

2. Поиск по цвету - это бред, а если вы поменяете цвет???

((Кстати идея по ходу, как вариант, - дорога уже, чем машина, что будет??? Ширина машины 3, ширина дороги =2 - коллизия на разбивку стенок. или машина подлетает?? ))

Значит, как я понимаю, Машина - условная точка, если есть габариты, то
точка с некоторой шириной. (Линия).
Соответственно столкновения - это решение задачи пересечения линий. (Границы - препятствия - тоже линии).
В итоге, упрощенно все можно свести к решению задачи точка А(х.у) больше точки Б(х1.у1) на заданной оси.
В зависимости от направленности координат знак сравнения меняется "плюс" или "минус".
Получается.
Берем Координату машины в мировых координатах. Привязываем карту к (0.0) мировых координат и находит точку там. Далее в зависимости от типа объекта решаем задачу сравнения.
Если не столкновение, то можно двигаться.
А дальше уже можно усложнять. (Толчки, кувырки, сложная геометрия машины).
Как я понимаю, для гонок лучше всего квадратная карта, а не шестиугольная, - квадрат и быстрее и проще хранить.

По поводу идей.
Цикл в цикле на проверки - это ужас... миллионы операций в пустую ради одного полезного сравнения. Я бы здесь постарался оптимизировать максимально.

МЫСЛИ В СЛУХ.
Раньше на 8086 были игры, которые уступали в графике, но логика была четкая игры летали!!!! А сейчас "улет" делают на кучу мегабайты памяти и разгон процессоров. Не умеем или не успеваем сделать быстрее - ну потребуем у пользователя купить круче комп.
Вопрос, а стоит того игра???? Уверен... 50% игр можно реализовать и на "старых" машинах без потери функциональности и качества - "дело принципа" и времени, которого никогда нет.
и это пройдет...
grenles вне форума Ответить с цитированием
Старый 11.01.2009, 16:56   #615
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию Если нужен поиск пути

То здесь теоретически можно применить направленный метод ручейка.
То есть если надо доехать от точки А до Б.
То идем во все стороны, куда можно идти безпрепятственно.
(В рекурсии вызывая поиск самого себя в новой координате (здесь следить за память и не переполением поиска на больших картах и время на откаты назад - можно и без рекурсии сделать))
Приоритет прямому смещению к точке Б. (То есть, если Б "выше" А, то предпочтение движению "вверх" - это и есть направленный метод ручейка). Однако медленнее всего он будет работать если от А до Б надо идти через "задние ворота".
и это пройдет...
grenles вне форума Ответить с цитированием
Старый 11.01.2009, 17:00   #616
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию И еще по поиску

В любой игре есть мобильная подсказка.
То есть при задании карты зараннее направление задается куды бечь. То есть проложен маршрут уже при создании карты и тебе надо только ему следовать, оперативно объезжая препятствия
и это пройдет...
grenles вне форума Ответить с цитированием
Старый 11.01.2009, 18:31   #617
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

grenles, я ни слова не сказал про цикл в цикле, и проверять всю карту не нужно, ...важно держать в поле зрения все машины и просчитывать вокруг их сектора местоположения - смежные. Как и всегда, происходит, поведение определяется из сканирования участка, координаты машин отслеживаются.
По поводу мыслей вслух, ...я того же мнения. Нас просто заставляют покупать мощные железяки вместо того, чтобы оптимизировать код и доводить до совершенства. Но никому это не нужно, ...коммерция, быстрее быстрее, по игре каждые пол года.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 11.01.2009, 23:57   #618
Pyton
Пользователь
 
Аватар для Pyton
 
Регистрация: 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;

Заранее спасибо
Pyton вне форума Ответить с цитированием
Старый 12.01.2009, 00:03   #619
Pyton
Пользователь
 
Аватар для Pyton
 
Регистрация: 18.12.2008
Сообщений: 47
По умолчанию

Цитата:
Сообщение от grenles Посмотреть сообщение
То здесь теоретически можно применить направленный метод ручейка.
То есть если надо доехать от точки А до Б.
То идем во все стороны, куда можно идти безпрепятственно.
(В рекурсии вызывая поиск самого себя в новой координате (здесь следить за память и не переполением поиска на больших картах и время на откаты назад - можно и без рекурсии сделать))
Приоритет прямому смещению к точке Б. (То есть, если Б "выше" А, то предпочтение движению "вверх" - это и есть направленный метод ручейка). Однако медленнее всего он будет работать если от А до Б надо идти через "задние ворота".
А можно поподробнее пожалуйста про "Рекурсивный поиск" ?
Если я тебя правильно понял, то данный "метод ручейка" является похожим с "волновым поиском" или "поиском в ширину" ?
Pyton вне форума Ответить с цитированием
Старый 13.01.2009, 16:13   #620
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию

Рекурсивный поиск. Метод ручейка.
Точно не помню, но в универе. когда проходили и Си, и Паскаль была такая тема - как раз форвардное описание процедур, рекурсия и там все это проходится.
Смысл приблизительно такой.
Постоянно идешь в одну сторону, если встретилось препятствие, то смешаешься в заданную сторону и опять вызываешь сам себя. По ходу хранишь длину пройденного пути. При достижении цели запоминаешь путь и выходишь и рекурсии. В итоге - выбираешь минимальную длину пути и она и есть искомый путь.
Поиск ведется на матрице, заполненной (1 - препятствие, 0 - нет). ну, усложняя можно поставить, что больше П - препятствия, меньше - дорога.
Единственно, что найденный путь предполагает. что больше препятствий на нем не будет.
Не помню я точно этот метод, думать надо. Но, если покопаешь интернет, то найдешь где-нибудь описание рекурсивного поиска. но, боюсь для твоего случая он не подойдет, это я кажется сразу не подумал.

Алгоритм приблизительно такой

ПоискПути(координата(ХУ))
Если не достигнута цель то
Если "координата(Х+1,У)" не равна "препятствие" то
ПоискПути(координат(x+1,Y)
иначе
Если "координата(Х-1,У)" не равна "препятствие" то
ПоискПути(координат(x-1,Y)
иначе
Если "координата(Х,У-1)" не равна "препятствие" то
ПоискПути(координат(x,Y-1)
иначе
Если "координата(Х,У+1)" не равна "препятствие" то
ПоискПути(координат(x-1,Y)
иначе выход

и так далее где-то так. Алгорим писал за две минуты, поэтому логика наверняка слегка нарушена, но смысл такой.

ЭТо и есть ручеек, потому что рекурсия как бы "течет" пока не столнется с препятствием и уходит от него в свободную сторону.

Кстати, "направленность" действия как раз и задается, что в какую сторону первой вы двинитесь. Хотя этот метод не оптимальный и не лучший, зато простой.

Цитата:
Сообщение от Beermonza Посмотреть сообщение
grenles, я ни слова не сказал про цикл в цикле, и проверять всю карту не нужно, ...важно держать в поле зрения все машины и просчитывать вокруг их сектора местоположения - смежные. Как и всегда, происходит, поведение определяется из сканирования участка, координаты машин отслеживаются.
По поводу мыслей вслух, ...я того же мнения. Нас просто заставляют покупать мощные железяки вместо того, чтобы оптимизировать код и доводить до совершенства. Но никому это не нужно, ...коммерция, быстрее быстрее, по игре каждые пол года.
Да я понимаю, но пока меня эта тема не волнует и вдаваться в подробности я не буду и не хочу.
А говорить на "вольные темы" и "разводить демагогию" - пожалуйста.
и это пройдет...

Последний раз редактировалось Beermonza; 13.01.2009 в 17:14.
grenles вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Уроки по созданию игр для новичков... -=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