forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   машины в городе (http://forum.boolean.name/showthread.php?t=364)

Akima 27.11.2005 06:24

Здравствуйте. вот делаю тут аля-GTA 4 :lol: , помогите с проблемой, как в играх такого рода создано уличное движение. подскажите кто знает. можете даже кодик подбросить :@ . спасибо что прочитали хоть :unsure: :'((

impersonalis 27.11.2005 14:06

Хоть какая-то, но эмуляция интеллекта тут должна быть.
Например - тупо расставить вейпоинты на карте и закодить алгоритм движения по ним.

alcosholik 27.11.2005 14:45

+алгоритм остановки на светофорах и перед людьми.

jimon 27.11.2005 15:59

надо делать карту улиц и пусть машинки катаются по улицам... учитывая правила дорожного движения

я лично невидел чтобы была какаята закономерность в движении машин в играх типа gta

кстати надо еще задать тип поведения водителя... точнее учитывает он правила дорожного движение или нет

еще надо подумать над обездами и прочее

вообщем сложновато ето зделать

alex-mad 27.11.2005 16:12

Цитата:

Originally posted by jimon@Nov 27 2005, 02:59 PM
я лично невидел чтобы была какаята закономерность в движении машин в играх типа gta
а я вот видел! и поверь там простейшие закономерности! :)

jimon 27.11.2005 16:19

ну и какие там закономерности ? чем толще дорога - тем больше по ней прется машин

и усе

alex-mad 27.11.2005 16:25

Цитата:

Originally posted by jimon@Nov 27 2005, 03:19 PM
ну и какие там закономерности ? чем толще дорога - тем больше по ней прется машин

и усе

а вот утрировать не надо!
если ты играл в gta то ты заметил бы , шта все машины поварачивают на определённых поворотах абсолютно по одним и тем же вейпоинтам...
и едят по прямой тоже по ним же и т.д. и т.п.

jimon 27.11.2005 19:09

Цитата:

надо делать карту улиц и пусть машинки катаются по улицам... учитывая правила дорожного движения
карта улиц... ето и есть твои вейпоинты - только в усложненом виде

alex-mad 27.11.2005 19:14

Цитата:

Originally posted by jimon@Nov 27 2005, 06:09 PM
Цитата:

надо делать карту улиц и пусть машинки катаются по улицам... учитывая правила дорожного движения
карта улиц... ето и есть твои вейпоинты - только в усложненом виде

ну да... так и есть = it's true

SubZer0 27.11.2005 22:52

ко всему вышесказанному хочу добавить, что машины в таких играх типа GTA - динамические, т.е. они есть только там, где ты ездишь... соответственно, кроме примитивных правил дорожного движения (можно легко основать на WayPoint'ах), должны работать функции добавления и удаления машин с карты...

на счет правил, думаю там много думать не надо будет, просто натыкать вейпойнтов и проверять занятость вейпойнта (типа если следующий (или допустим первый слева или справа на перекрестке, чтоб уступить дорогу) занят, то стоять и ждать... также светофоры, просто помечают принудительно вейпойнт занятым и машины ждут)...

ИМХО а объезды, характер водителей и т.п. это уже надо будет наворачивать когда вышесказанное будет работать... :)

Akima 29.11.2005 11:59

спасибо за обсуждение. Но как это все сделать.
Смотрите: я сделал карту с дорогой поставил на перекрестках кубы (вейпоинт) прикосаясь к которому машина поворачивает, НО КАК ОПРЕДЕЛИТЬ, где у нее перед. и едет ли она по дороге

Guest 29.11.2005 12:24

]Может начнёшь с чего-нибудь попроще?[

Повернуть машину "лицом" к вейпоинту поможет это
dyaw# = DeltaYaw (car,WayPoint[k])
TurnEntity car,0,dyaw#,0
при условии, что WayPoint[k], это entity - к-ый вейпоинт
НО поворот будет мгновенным!

А то, что она по дороге едет, это вроде и не нужно знать, ведь вейпоинты стоят на дороге, значит при движении между вейпоинтами тачка будет ехать по дороге.

Если нужно поворачивать (относительно плавно), то можно примерно так сделать
dyaw# = DeltaYaw (car,WayPoint[k])
If Abs(dyaw#)>=carSpdY#
TurnEntity car,0,carSpdY#,0
Else
TurnEntity car,0,dyaw#,0
EndIf

Теперь к этому добавляем MoveEntity car,0,0,carSpdZ#
И получаем очень настырную машинку, которая будет рулить сама!

jimon 29.11.2005 22:46

говорилже надо делать карту дорог, а не набор вейпоитов !

alex-mad 29.11.2005 22:48

Цитата:

Originally posted by jimon@Nov 29 2005, 09:46 PM
говорилже надо делать карту дорог, а не набор вейпоитов !
а я с тобой не согласен! вейпоинты рулят :lol:

jimon 29.11.2005 23:01

еще скажи что нарисовать рисунок по точкам легче чем по векторам

ps. мне лично пофиг, как и где будет ето реализовано

но по опыту предмереного мышления скажу что лутче карта дорог

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

НО при таком подходе будут просто ужасные повороты ето раз
и при кривых дорогах будет просто дофигища вейпоинтов

SubZer0 30.11.2005 02:10

Цитата:

Originally posted by jimon@Nov 29 2005, 10:01 PM
НО при таком подходе будут просто ужасные повороты ето раз
и при кривых дорогах будет просто дофигища вейпоинтов

ты когданить гамал в GTA или GTA2 ?

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

на счет сглаживания поворотов, можно за каждым вейпойнтом зацепить спецпроцедуру типа формулу по которой машина будет ехать до следующего вейпойнта... итого две функции для каждого вейпойнта... и вуаля! плавные повороты различной сложности :)

Жека 30.11.2005 13:37

за гостя я был.
Чем вам мой метод не понравился, он даёт плавный поворот - за счёт одновременного использования команд поворота и движения :dontknow:

SubZer0 30.11.2005 14:22

Цитата:

Originally posted by Жека@Nov 30 2005, 12:37 PM
за гостя я был.
Чем вам мой метод не понравился, он даёт плавный поворот - за счёт одновременного использования команд поворота и движения :dontknow:

кто сказал что метод не понравился? все нормально, это Jimon хочет там какуюто машину времени закодить, когда тут можно все проще сделать...

2 Jimon: нужно еще помнить конечный пользователь не оценивает программирование, поэтому навороченный интеллект для машин которые ты будешь видеть гоняя по улицам всего несколько секунд (каждую машину) имхо нерентабельно. Это-же тебе не стратегия, где надо продумать перемещение юнитов по карте...

:)

jimon 30.11.2005 15:56

для нашего гостя - лутче пусть делает через вейпоинты

лутче дайте ему код - хождение кубика через определеные вейпоинты
тогда он поймет что делать

лутчее сглаживание через половину кривой безье - имхо

Жека 30.11.2005 19:50

Что значит дайте?! - Сам дай!
Я всё что написал понимаю.
Дай код с кривой безье на зацЕн, потом поговорим что лучше.

alex-mad 30.11.2005 21:47

Цитата:

Originally posted by jimon@Nov 30 2005, 02:56 PM
для нашего гостя - лутче пусть делает через вейпоинты

лутче дайте ему код - хождение кубика через определеные вейпоинты
тогда он поймет что делать

лутчее сглаживание через половину кривой безье - имхо

ну ты зациклился на векторной карте города...
зря в корень! посмотри шере...
вейпоиты лучше ... имхо... :)

jimon 30.11.2005 22:38

я лично щас непрограмлю под blitz3d , cpp рулит ;)

alex-mad 30.11.2005 22:49

Цитата:

Originally posted by jimon@Nov 30 2005, 09:38 PM
я лично щас непрограмлю под blitz3d , cpp рулит ;)
:rolleyes: ну как хош

vbif 06.12.2005 15:08

Да че тут сложного? Делаешь 2 вейпоинта - начали и конца поворота. Если прошел один, но не прошел другой, крутишь тачку каждый кадр. Самый простой способ ИМХО. Главная проблема с тачками - как заставить их появлаться и исчезать на нужном расстоянии, не для всего же города движение рассчитывать!


Часовой пояс GMT +4, время: 21:04.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot