Предложения по доводке TrT и выше

OpenTTD - современная игра, клон Transport Tycoon Deluxe с открытым исходным кодом, написанный на C и С++. Содержит ряд ключевых улучшений и возможность игры по сети. На данный момент это главное направление развития игры.

Модераторы: eraserkry, Mihamster, Smoky555, Группа модераторов

Сообщение Pk » Ср ноя 08, 2006 10:28

К сожалению нет. Тогда я не разобрался с тем как сделать 8-и битные спрайты (бмп тут 32 бит =( ), а потом у меня не запустились нужные программы...
По этому остались только слова.

По остановкам - впрочем не оффтоп!
1.Изначально они задумывались в установке как релсы, т.е. ставятся на любую прямую дорогу, а не заменяют её.
2.А введение фур кому не нравится? Рассчёты могу и я провести, но не думаю, чтобы они были жутко сложными. Если вводить диагоналки через ЖД-алгоритмы, то можно попытаться ввести и фуры.
3.По вэй-поинтам: а) Представим, что противник построил деревянный мост.... (комменты нужны?). б) Проложил ЖД с интенсивным движением.
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение Norther » Чт ноя 09, 2006 21:27

Жаль, ну что ж буду ждать пока вернется вдохновение... Или может кто возьмет эстафетную палочку?!

А ты проголосовал!! :twisted:
Norther
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 11
Зарегистрирован: Пт авг 04, 2006 13:03

Сообщение Quark » Вс ноя 12, 2006 08:45

машинки это сумасшедствие какое-то — еле заставил их по двум дорогам ездить :)
Вложения
Clipboard02.png
Clipboard02.png (149.87 Кб) Просмотров: 9204
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение SanMihalich » Вс ноя 12, 2006 11:56

Вот по мне так машинки надо доводить
(про обгоны).
Диагональные дороги авто...
Очень интересно было б мосты через диагональные ж д пути, очень помогло бы.
Не падать духом где попало!!!
SanMihalich
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 8
Зарегистрирован: Вт сен 12, 2006 18:45

Сообщение AH-64 » Вс ноя 12, 2006 14:12

SanMihalich писал(а):Очень интересно было б мосты через диагональные ж д пути, очень помогло бы.

2SanMihalich
Это уже реализованно в сборке уважаемого Quark-а и если не ошибаюсь есть патч для таких целей :!:
Маленький мальчик доезжал только до 6-го этажа, а потом шел и матерился, ведь мама научила его считать только до шести, а папа материться.
Аватара пользователя
AH-64
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 21
Зарегистрирован: Пт фев 17, 2006 14:25
Откуда: г.Ангарск

Сообщение DarkFenX » Вс ноя 12, 2006 14:33

Не патч, а отдельная ветка развития ОТТД для доводки этой фичи... то есть все очень даже официально :)
- It's hot as hell in here.
- You see it too? For me, it's always like this.
Аватара пользователя
DarkFenX
Директор
Директор
 
Сообщения: 303
Зарегистрирован: Сб окт 28, 2006 12:50
Откуда: Russia, Saint-Petersburg

Сообщение AH-64 » Пн ноя 13, 2006 06:43

DarkFenX писал(а):Не патч, а отдельная ветка развития ОТТД для доводки этой фичи...

Ну собственно говоря :wink: я это и имел в виду
Маленький мальчик доезжал только до 6-го этажа, а потом шел и матерился, ведь мама научила его считать только до шести, а папа материться.
Аватара пользователя
AH-64
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 21
Зарегистрирован: Пт фев 17, 2006 14:25
Откуда: г.Ангарск

Сообщение Pk » Ср дек 27, 2006 14:47

Доводка к ИИ:

1. В игре заранее/динамически создать "черновую карту" - карту для экспериментов компа и его бреда. (2 копии - дефолт и рабочая)
2. Далее: Комп выделяет новый маршрут (блоками 10х10 или как там удобней) и ставит его на динамическую карту. *Копирует на черновик и в дефолт вместе с поверхностью.
3. Затем он выделяет определённую сумму денег на данную площадь и размазывает их по блокам. (соответственно, блоки с городами и блоки с горами и озёрами дороже, чем равнины)
4. Далее он начинает модифицировать по отдельности каждый блок. через один/с концов/3 блока - середина, конец, начало. *Т.е. строит пути/дороги/станции. Производит терраформ.
5) Если он замечает, что у оппонента по тому же направлению есть трасса, то он начинает анализ её расположения и свою экономию при её эксплуатации, а не строительстве своего пути (опять копирование области, строительство, рассчёт). *Дополнительное построение.
5.а) Если оказывается, что её не хватает, но шанс экономии на ней есть (хоть два фунта на рейсе!), то он опять копирует и производится рассчёт. *возврат к п 1 для этой секции.
5.а.1) Примечание: Средства берутся из остатков той же сметы.
5.а.2) Примечание: Для освобождения памяти можно ограничить количество этажей 3-4 на блок, либо 2-3 действия сливать в одно, ставя пометку, сколько логичных ходов пропустить.

6) По достижении результата (секция/проект вошли в смету) комп перепроверяет его (воспринимая дороги как нейтральные) и вносит поправки. так до тех пор, пока поправки не станут незначительными/бессмысленными (или же закончится смета ;) ) *возврат к п 1 для этой секции.
7) Затем рассчитывается смета изменённого проекта (без строительства черновых, не удачных линий) с рассчётом расходования средств. Если на какие-то секции не хватает сметных денег, то начинается поиск иного решения секции из сэкономленных средств. (т.е. откат секции к её виду до первой модификации).
8) Если не получается - откатываем две соседние клетки. Если не получается компьютер выделяет этот маршрут как временно невозможный и не использует его. *возврат к п 1 для этой секции.
8.а) Примечание: Первым делом смотреть надо "сложные" секции. Если их решить невозможно - проект помечается "временно нерешаемым"

ВСЁ ЭТО ЕЩЁ НЕ В ИГРЕ, А В ОПЕРАТИВКЕ!!!
*Т.е. это не на настоящей карте, а в воображении компа.

Каждые 10-20 ходов карта в оперативке обновляется к современному виду, если на ней что-то изменилось в ландшафте/строениях. Деревья не учитываются!

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

В итоге комп находит более или менее нормальное решение.

Примечание: была исправлена одна дыра в логике, которая могла привести к срыванию горы, что не выгодно => перерассчёт => гора срывается, значит проект невозможен.
Последний раз редактировалось Pk Чт дек 28, 2006 14:15, всего редактировалось 4 раз(а).
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение Pk » Ср дек 27, 2006 14:58

!
Если это поставить выше на уровень, т.е. изначально вести рассчёт на виртуальной карте, с пробой запуска разнообразных видов транспорта (лишь бы работало!), то можно добиться и кораблей от компа.
А при установке дополнительных рассчётов (например, развитие города, резервирование площадей) мы получаем нормального оппонента.
Кстати, а не так ли работал ИИ в оригинальном TrT?
Изменения
Если в той весии логики путь удалялся и из памяти, то в этой версии маршрут (свокупность N путей) тестируется и сохраняется с указанием результатов (доходности). Затем проверяется другой вариант проведения путей. Как только изменения становятся незначительны.... =) Они сравниваются и выбирается наилучший. Из имеющихся.

Примечание: обратите внимание: в случае, если комп сразу рассчитывает все возможности, то тогда он может выдать даже запуск своего состава по вашей ЖД с вашей же станции! Причём, груз изначально будет доставлен по дороге (цена постройки ЖД в какой-то области больше, чем смета, но в остальном путь успешен. Проверяется возможность решения зоны другими видами транспорта.)
Так же можно научить его маленько гадить...
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение Quark » Ср дек 27, 2006 15:56

ИИ во с виртуальной картой вроде никогда не работал, да и держать копию или делать на ней эксперименты это, простите меня, бред — падение производительности будет слишком велико, а пользы минимум

Оригинальный ИИ пытается посторить дорогу методом сближения двух концов с использованием метода случайного строительства, именно поэтому у него получаются такие извороты, что диву даёшся, когда например он строит автодорогу до диагонали, а потом обкладывает её змейкой из самых дешевых ж/д мостов и пускает мо ней поезд :) Скрывать это на виртуальной карте нет смысла именно потому, что такой метод был выбран разработчиками для создание эффетка «постепенного» сторительства с использованием минимального количества ресурсов

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

Кстати, комп не может использовать трассу оппонента :) и что означает «количество этажей»?

Вобщем, анализ предложенной логики показал, что она частично неверна :) (на сколько % лучше промолчу)

А вот как, с моей точки зрения, должен проводится расчёт: берем алгоритм для поиска пути A*, при этом можем как-то учитывать варианты с изменением ландшафта с введением для них второй стоимости (первая это длина маршрута, а лучше время на его преодоление), однако тут надо либо пренебречь стоимостью строительства, либо как-то сохранить несколько маршрутов с последующим выбором, либо же сделать формулу расчёта ценности с учетом сразу многих параметров (длина×стоимость)
В принципе, тут мы уже имеем готовый маршрут, можем еще обработать для придания лучшего вида или использования альтернативных методов строительства, можем также найти еще маршруты с примерно равной ценностью.
После этого полученный маршрут (возьмем первый (лучший) необработанный) сравним с маршрутами в других областях карты для выбора что же мы будем строить, альтернативы можно сохранить на будущее. Выберем, что мы будет строить сейчас и действуем по принципу выкупки земли и постепенным прокладыванием по ней трассы

Этот алгоритм теоритически можно расширить до создания транспортных сетей, однако я не знаю как тут проверять или изменять существующую часть трассы, чтобы по ней можно было пустить дополнительные поезда (с автотраспортом тут проще) — можно в принципе поначалу строить только одноколейные маршруты точка-точка, а потом двухколейные маршруты с вставкой в них развилок и расширением станций, чтобы те могли принимать больше поездов (тут надо вводить алгоритмы с применением к примеру одной платформы для одного типа груза, различать погрузочные и разгрузочные платформы, строить станции с предварительно сконструированными входами/выходами и выбирать между типами станций «terminus» и «ro-ro»)

Единственная проблема с ИИ в том, что это всё довольно сложно (и долго) реализовывать.
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Quark » Ср дек 27, 2006 16:08

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

такой незначительной деталью, как деревья пренебрегают везде и всегда даже обычные игроки :) поэтому просто считаем, что деревьев нет (можно просто учесть стоимость расчистки клетки)
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Pk » Ср дек 27, 2006 16:16

Количество этажей - количество уточнений при рассчёте.

Quark, ты тормозишь, а я перескакиваю:

Он сначала забирает себе в память часть мира, где он будет строить дорогу.

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

И ещё. Скачай MiniIN там - уже можно.

Так же - "падение производительности".
Ладно, соглашусь, падение будет, но не всё же время будет тратиться на рассчёты (хотя, да, был случай - сервер Звёздных войн 2 часа 42 минуты лежал, переводя 3-х этажный русский мат.), а лишь часть. Да и тратиться будет так же, как и при строительстве.

ПРИМЕЧАНИЯ И ОПТИМИЗАЦИЯ:
1) Тестирование - прогон Маршрута с полной загрузкой по шаблонам/тест
2) проверка путей - выполняется тем же образом, что и строительство, т.е. пускается единица и смотрится, где были падения скорости, почему и как это можно исправить.

Добавил:
1. В игре заранее/динамически создать "черновую карту" - карту для экспериментов компа и его бреда. (2 копии - дефолт и рабочая)
- результаты ТАМ.
Последний раз редактировалось Pk Ср дек 27, 2006 16:46, всего редактировалось 3 раз(а).
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение Quark » Ср дек 27, 2006 16:27

Небольшой ликбез по алгортиму A*:
для начала берем все соседние клетки от источника, для каждой считаем затраченную (длину, время и/или стоимость) и оценочную цену до цели, оценочную цену можно брать без учёта ландшафта (просто считаем расстояние до цели), получаем для каждой клетки общую стоимость и выбираем самую дешёвую, все результаты сохраняем;
повторяем процесс для выбранной клетки и выбираем самую дешёвую по нашей формуле с учётом предыдущих результатов, сохраняем все результаты и снова повторяем процесс пока не достигнем целевой клетки

пример работы алгоритма на рисунке (большие красные круги обозначают препядствия), код на Visual Basic можно скачать по ссылке
Изображение
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Quark » Ср дек 27, 2006 16:31

Pk писал(а):Он сначала забирает себе в память часть мира, где он будет строить дорогу. Кстати, не забывай, что есть такая вещь как оптимизаия!

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

Оптимизация в первую очередь это изменение алгоритма таким образом, чтобы он делал ту же работу за меньшее время — делать копию карты это лишнее
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Quark » Ср дек 27, 2006 16:34

Pk писал(а):И ещё. Скачай MiniIN там - уже можно.
то есть уже можно строить диагональные автодороги?

Кстати, если отвечаешь на что-то экраном выше, приводи цитату, либо отвечай полно, например «Скачай MiniIN там уже можно строить диагональные автодороги»
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Пред.След.

Вернуться в Общие вопросы по OpenTTD

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 2