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

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

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

Сообщение Pk » Вт янв 02, 2007 12:17

Тогда тебе на выбор - либо тот вариант с фантазией у компа, либо этот.
Какие проблемы с "кратчайшим путём"? он пока его будет строить снесёт все города.

Так, а если такой вариант: сделать несколько профилей ИИ:
Low AI - стандартный на сегодня/наученный по минимуму (хотя бы подсоединять дороги и экономить транспорт.)
Medium - имеет фиксированное к-во остановок.
Live - прикрепить к фотке. Т.е. встроить алгоритм, который будет определять взгляды президента компании и его устремления.
High - полный ИИ без спуска и поблажек.

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

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

Сообщение Quark » Вт янв 02, 2007 17:55

«"кратчайший путь" - это старый вариант» — если это про оригинальный ИИ, то он зачастую строит далеко не кратчайший путь :)

«оптимальный» это хотя бы тот, у которого нету существенных изъянов, выжимать дополнительные 15% эффективности, сливая два маршрута в один на этапе планирования можно далеко не всегда
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ⓤⓐⓡⓚ ⓤⓢⓛⓞⓝ
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Quark » Вт янв 02, 2007 17:58

«Главное - отучить терраформить всё, и сделать его хоть как-то конкурентно способным.» — совершенно верно, в первую очередь надо решить эту задачу, чтобы ИИ научился, наконец, нормально соединить две точки и пустить по ним поезда, потом можно научить его строить развязки и двухколейки, а уж в последнюю очередь ездить по проложенным ранее маршрутам.
Кстати ваш вариант не будет работать без возможности строить развязки на двухколейках.
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ⓤⓐⓡⓚ ⓤⓢⓛⓞⓝ
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Pk » Ср янв 03, 2007 16:29

как отучить терраформить всё:
1) Нафиг убрать этот алгоритм до начала строительства.
2) Пусть терраформит то, что нужно по ходу строительства.

Примерный рассчёт при строительстве дороги:

Цены:
срытие 1-й клетки - 307£ (187£)
Очистка территории от песка - 30£ (в пустыне =) )
Строительство дороги (1/4) - 101£ (70£)
Рассчёт маршрута а/м БФБ-ПХ
есть прямая дорога на ПХ из БФБ, и там меньше препятствий по прямой по этому строим оттуда.
Имеется возможность прямой дороги, однако там есть несколько препятсивий. ставим точку поворота за 1 клетку до препятствия.
Препятствие - склон холма, параллельный, длина 9 клеток.
стоимость маршрута:
в случае срывания земли до уровня дороги мы затратим денег:
торможение транссредств из-за терраформа: 0*кооф. (0 подъёмов) (вернее там должна быть дробь, ну да ладно)
срывание поверхности:
1) 307-30*4=307-120=187£
2) (9-1)*2=16 ед.
3) 8*187+18*30=1496+540=2036£
Строительство дороги:
1) 17*2*70+17*30=2890£
2) 2036+2890=4926£, потери=0

В случае наращивания земли:

1) 307-30*4=307-120=187£
2) (9-1)*2=16 ед.
3) 8*187+18*30=1496+540=2036£
Потери 1+бонусы 1=-0,5 (вернее рассчитать так: сколько денег теряется на этих подъёмах и сколько экономится на спусках)
Строительство дороги:
1) 17*2*70+17*30=2890£
2) 2036+2890=4926£, потери=0,5

Строить объезд из точки можно по 2-м направлениям:
1) налево из БФБ
2) направо из БФБ

Налево мы наталкиваемся на холмы, справа же напрямую идёт свободная поверхность. Не требуется изменение территории.

1) 18*70+18*100=1260+1800=3060
Повороты=1
Цена дороги: 3060+1поворот*время ожид исп*ожид.к-во*потери на повороте*20 лет.

И вот мы в черте города ПХ.
Предположим, что ожидаются 2 остановки-блока автобус+лорри,одна над водонапоркой (по мелкой улочке за квартирками), другая там, где две улицы идут параллельно, сразу за домиком. Выход в сторону БФБ.

тогда продолжения маршрутов:
Через холм:
1) со сносом дома(-140£): 140+100+2*70=380£
Стоимость дороги:380£ - 1*(водокачка+пищеблок+автобусы в городе) пасс/мес ~3£/мес*20=1*4*60=120£
Итого: 380+240=620£

Маршрут "прямой гладкий" = 4926+620=5546£.
Маршрут "прямой с подъёмом" = 5546£ + 0,5*потеря при повороте*ожид. к-во машин*10 лет.

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

Сообщение Pk » Чт янв 25, 2007 14:21

Перед запуском игры ИИ проверяет игру на наличие новых видов массивов. Производит дописку в типы. (Поддержка разнообразнейших NewCargo)

Подходя к городу мы уже имеем:
Список индустрий, которых мы собираемся обслуживать,
примерный с них доход, виды транспорта к рассмотрению.

REM
│├
││├ если смещение BZ идёт под углом N, то при перемещении по карте под углом N, N+/-90, -N записывается на вирт карту, как перемещение по XY под углом 0/90/180/-90

VAR
│├[Время]
││└Месяц = MO
│├[Расходы]
││├цена на строительство = BP
││├стоимость эксплуатации = RC
││├расход общий = TO
││└дополнительные расходы = EO
│├[Доходы]
││├доход чистый с еденицы = CI
││├доход опосредованный = AI
││└доход общий = TI
│├[Прочее]
││├X, Y - относительные геогр. коорд.
│││├верхняя граница - H
│││└Нижняя граница - L
││├Дальняя линия строительства = FL
││├Начальная линия строительства = NL
││├Активная координата = BL
││└зона строительства = BZ
│└[массивы по типам]
│…├транспорт = TR
│…├груз = CR
│…├единицы из массива = MU
│…└массив данных = DM

│├SUBS│…│├

├[оценка рентабельности](MU) - "коофициент лени"
│├[рассчёт TO] BP+(RC+EO)*120*MO
│├[рассчёт TI] CI+AI
│├[р-т. рентабельности] TI/TO=(MU)RN
│├[р-т. прибыли] (TI-TO)*RN=(MU)TI
│└[возврат]
├[Рассчёт BP]
│├[рассчёт BZ] - думаю, некорректен.
││├[нахождение X, Y]
│││├[нахождение 1-й клетки XY] NA(H(X))=0, NA(H(Y))=0
│││├[создание XY площади]
││├[нахождение LA(X(H));LA(Y(H))] "FA(X(H))-NA(X(H))"; "FA(Y(H))-NA(Y(H))"
││├[нахождение LA(X(L));LA(Y(L))] "FA(X(L))-NA(X(L))"; "FA(Y(L))-NA(Y(L))"
│││├[нахождение LA(H) LA(L)]
│└
├[Рассчёт EO]

+ модуль универсален, позволяет оценивать различные объекты, вплоть до выбора техники для закупки.
+ Позволяет имитировать различные виды мышления.
- массив может выглядеть так: MU.MU'.MU''.MU'''.MU''''.MU'''''.RN
! Можно ещё вести запись к-ва действий (времени на постройку), тогда ещё можно будет увидеть метания - Это дёшево, но муторно, а то дорого, зато быстро.

-------
вот эта помойка.

Основной еррорь - это то, что при рассчёте диагонального пути надо считать чуть иначе и я не могу придумать это "чуть".

RE:
Вариант работы:
1. определения прямой до пересечения (продвижение по "верхней" части столбца до упора/по "верхней" стороне строки, т.е. по той, в чью сторону планируется поворот). На этом этапе сближение идёт с обеих сторон. Цель: найти верхнюю точку пересечения
2. -\\- для нижней стороны.
3. В случае если есть более одной точки к которым должен идти путь повторить операцию для каждой точки, в поле XY записать совмещённый результат.
4. FOR Х = L TO H: FOR Y = L TO H: GO SUB [оценка рентабельности]
5. Строительство выбранного пути
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение Pk » Чт янв 25, 2007 16:43

Так, ладно, со словами я путаюсь, по этому держите файлик, где всё нарисовано.
Условные обозначения:
Голубая линия - корридор строительства
жёлтые линии - те самые треугольники
фиолетовые линии - границы корридора на поворот
красная линия - линия начала строительства поворота

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

Сообщение Pk » Вт янв 30, 2007 23:41

Кто-то жаловался на неясность работы тандема ИИ-Игра? Зацените:

0. ИИ - внешняя подпрограмма (желательно в виде неформатированного типизированного файла *.ai)
1. ИИ запрашивает у игры информацию об интересующем массиве.
2. Производится возможный рассчёт исходя их данных массива.
3. По мере надобности цепляются дополнительные массивы.
4. Прописывается цепочка комманд к выполнению.

*2. - рассчёт, заявление новых массивов, сравнение имеющихся.
*3. - переходим к 1. для другого массива.

Массивы можно заявить заранее/фиксировать ссылки на них где-нибудь в памяти (рекомендовано*)
Массив - любое скопище однотипных объектов - спрайтов, свойств клетки, единиц техники и т.п. (Надеюсь, это объяснено понятно?)

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

Сообщение Pk » Вт янв 30, 2007 23:44

Да, кстати, какой код под MS Windows 5.x для клавиши enter?
А то я уже вкусил радость любовных игр по Тантрическим канонам при переводе файлов в читабельный вид. А мне их ещё в Васючный переделывать.

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

Сообщение Quark » Ср янв 31, 2007 07:30

Pk, это, конечно, оффтопик, но код клавиши и код символа — совершенно разные вещи, код символа для клавиши Enter — 13. Кстати, если имеется ввиду перевод строки, то в Dos/Windows он обозначается двумя символами — 13 и 10.
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ⓤⓐⓡⓚ ⓤⓢⓛⓞⓝ
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Бухгалтерам))

Сообщение Pk » Пн фев 05, 2007 12:55

1. не оффтопик, но Ворд Пад решил проблему.
2. ... видал я в <женский половой орган> такую совместимость!! WTF, хоть бы переменные назывались нормально - 2-5-7 букв, нет, по 12-14 и ещё с подчёркиваниями... С... и нет нумерации строк - вы как хотите, но это неудобно. :evil:
3. застыла на середине подготовительная работа к настоящему алгоритму. Нету времени и лень страшенная :oops: :lol: . Но кое-что уже есть, и я думаю это "кое-что" уже можно встроить в сборку. 8)
4. Quark! Пользуйся кнопкой "Правка"!
Разбивку на части осуществляй цитатами и/или жирным текстом 5 постов подряд :shock: - это жёстко...

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

Сообщение Quark » Пн фев 05, 2007 13:07

(2) — это вообще про что? Нумерация строк есть в любом нормальном редакторе для кода. Длинные имена переменных позволяют быстро понимать их смысл, а вводятся они через автозавершение по первым буквам :)

(4) кнопка не удобная — хочу автоматический сливатель постов! и такой, чтобы новое сообщение не оставалось незамеченным :) А кто читает что-то акромя содержимого поста? Немного пустого места мешает? :)
Основное назначение кнопки «правка» — правка поста, я ею активно пользуюусь для исправления орфографии или уточнения некоторых деталей, а сливать ею посты — она не для этого предназначена!
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ⓤⓐⓡⓚ ⓤⓢⓛⓞⓝ
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Pk » Пн фев 05, 2007 13:45

Quark писал(а):(2) — это вообще про что? Нумерация строк есть в любом нормальном редакторе для кода. Длинные имена переменных позволяют быстро понимать их смысл, а вводятся они через автозавершение по первым буквам :)

Через автозавершение?! (дошло) А у кого нет этого/влом настраивать каждый раз?
Это про то, что я угорел при переводе исходников.
Нумерация строк - вторая по важности вещь после самого кода. Для меня отсутствие номеров строк в листинге сродни падонкаффскаму.
Длинные переменные долго набирать, а логика - это слияние кучи переменных. Тем более что можно вводить ясные сокращения (leigth=lgth, random=rnd, full_vagon_on_map_capictacy = fvomc=fmvc и тп.)

Quark писал(а):(4) кнопка не удобная — хочу автоматический сливатель постов! и такой, чтобы новое сообщение не оставалось незамеченным :) А кто читает что-то акромя содержимого поста? Немного пустого места мешает? :)
Основное назначение кнопки «правка» — правка поста, я ею активно пользуюусь для исправления орфографии или уточнения некоторых деталей, а сливать ею посты — она не для этого предназначена!

Для этого есть кнопки ctrl, x, c, v, "удалить" и "правка"

Неужели это и есть "интересное"???
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение Quark » Пн фев 05, 2007 15:08

fvomc=fmvc — это совершенно непонятные сокращения, если убрать полное название — то обратно уже никак не расшифруешь, а «length» сокращается до «len», хотя тут тоже не особо ясно для того, кто с таким сокращением не знаком

Автозавершение есть в свободно распространяемых редакторах, для пример MSVS 2005 Express или Eclipse. И даже в маленьких компактных редакторах тоже есть, хотя не такого уровня. Настраивать его не нужно (только язык выбрать, хотя он обычно по типу файла сам выбирается).

Ручная нумерация строк абсолютна не нужна и есть большое зло — для пометки кода есть метки и комментарии.

«Для этого есть кнопки ctrl, x, c, v…» — эти кнопки не работают (насколько мне известно) ни в одном форуме. Полного in-place редактирования постов (без нажатия кнопки «правка» или хотя бы открытия отдельного окна) я еще нигде не видел.
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ⓤⓐⓡⓚ ⓤⓢⓛⓞⓝ
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Pk » Вт фев 13, 2007 01:37

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

Сообщение Pk » Вт фев 13, 2007 01:45

Quark писал(а):fvomc=fmvc — это совершенно непонятные сокращения, если убрать полное название — то обратно уже никак не расшифруешь, а «length» сокращается до «len», хотя тут тоже не особо ясно для того, кто с таким сокращением не знаком
особенно, если учесть, что len может расшифровываться и как Len', Lenin, Lenina_tezisi, Leningrad, Lennon, Lenta...

Quark писал(а):Автозавершение есть в свободно распространяемых редакторах, для пример MSVS 2005 Express или Eclipse. И даже в маленьких компактных редакторах тоже есть, хотя не такого уровня. Настраивать его не нужно (только язык выбрать, хотя он обычно по типу файла сам выбирается).
И это автозавершение само узнаёт какие у тебя переменные и как их набирать?

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

Quark писал(а):«Для этого есть кнопки ctrl, x, c, v…» — эти кнопки не работают (насколько мне известно) ни в одном форуме. Полного in-place редактирования постов (без нажатия кнопки «правка» или хотя бы открытия отдельного окна) я еще нигде не видел.

Ты подрываешь мою веру в устои Вселенной.
Как это - в форумах не работают:
Ctrl+Z, Ctrl+X, Ctrl+C, Ctrl+V!?
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Пред.След.

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

cron