Расположение рельсов в клетке (коренная переработка кода)

Вопросы разработки OpenTTD, обсуждение новых сборок и патчей, решение проблем новых версий.

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

Расположение рельсов в клетке (коренная переработка кода)

Сообщение Q » Пн мар 17, 2008 16:24

Наверное не мне одному не нравятся угловатые рельсы в игре. Да и вообще не нравится, то что горизонтальный и вертикальный путь проходят по уголкам клеток. Интересно, почему при разработке Опена не сделали расположение рельсов такое же, как в RT2? Видимо все-таки разработка велась не чисто с нуля, а многое было слизано с ТТ, хотя некоторые вещи там были реализованы не лучшим образом.
В связи с чем есть такая мысль:
Хочется сделать расположение горизонтальных и вертикальных рельсов по центру клетки (как в RT2). Это позволит сделать более "гладкие" повороты, пропадет некоторое неудобство связанное с тем, что может быть два параллельных пути в одной клетке. Можно будет сделать постройку горизонтальных и вертикальных станций, депо, мостов и туннелей. Более того, такое расположение путей следует распространить и на автодороги.
Эти изменения довольно значительны, навскидку придется перелопатить больше половины кода, не говоря уже об отрисовке кучи новой графики.
Интересно, что вы думаете о таких наполеоновских планах.
Возможно, такая тема уже проскакивала на буржуйских форумах, но я не нашел (да и честно говоря, не очень понятно что искать). Может быть уже есть ветка разработки, где прокачивается эта идея?
Сейчас хочется оценить, насколько востребована эта идея обществом шпалоукладчиков, ну и понять, во что выльется ее реализация (в плане затраченного времени, бессонных ночей, количестве участников). Возможно, я возьмусь за этот проект в недалеком будущем (летом).
Если красный зажигают, значит это кому-нибудь нужно
Аватара пользователя
Q
Диспетчер
Диспетчер
 
Сообщения: 174
Зарегистрирован: Вс апр 03, 2005 23:07
Откуда: Москва, Солнцево

Сообщение Fornet » Пн мар 17, 2008 17:03

верткикальные пути будут занимать дофига места? А еще графика должна вылетать за пределы клетки? Зачем? Ну, допустим, без диагональных станций мы уж как-нибудь, а вот диагональные дороги действительно не помешали бы.
Аватара пользователя
Fornet
Диспетчер
Диспетчер
 
Сообщения: 166
Зарегистрирован: Вс сен 30, 2007 21:08
Откуда: Шадринcк

Сообщение Simozzz » Пн мар 17, 2008 18:29

На счет дороги. Наверное должно выглядеть так, если по углам
:wink: Изображение
Аватара пользователя
Simozzz
Президент
Президент
 
Сообщения: 758
Зарегистрирован: Ср янв 09, 2008 22:10
Откуда: Москва

Сообщение Simozzz » Пн мар 17, 2008 18:50

Или так, если по середине :wink:
Изображение
Аватара пользователя
Simozzz
Президент
Президент
 
Сообщения: 758
Зарегистрирован: Ср янв 09, 2008 22:10
Откуда: Москва

Сообщение Fornet » Пн мар 17, 2008 19:07

Неплохо, но по углам имхо лучше.
Аватара пользователя
Fornet
Диспетчер
Диспетчер
 
Сообщения: 166
Зарегистрирован: Вс сен 30, 2007 21:08
Откуда: Шадринcк

Сообщение Гувл » Вт мар 18, 2008 12:28

поддерживаюFornet, прорисовка угловых дорог, будет гораздо проще и удобнее, тем более что уже есть исходники для рельс... на базе них можно и развить тему с дорогами
дар или проклятье - низкоуровневая логика...
Аватара пользователя
Гувл
Начальник станции
Начальник станции
 
Сообщения: 94
Зарегистрирован: Пт мар 14, 2008 11:50
Откуда: г.Омск

Сообщение Q » Вт мар 18, 2008 14:55

Вертикальные пути не будут занимать больше места, хотя графике придется вылезать за клетку. вероятно, некоторые здания и постройки будут выглядеть по-уродски с наложенным куском рельсов, но так или иначе эту проблему можно решить (например, увеличить (ненамного) клетку, или уменьшить здания, или запретить строительство в таких клетках неугодных объектов и соответсовенно рельсов вблизи таких строений).
Диагональные станции ИМХО можно сделать и сейчас, правда это сопряжено с известной долей геморроя. Возможно, даже туннели и мосты можно, но тут геморра будет существенно больше, и я вообще не представляю как это сделать.
Что касается углового расположения, то я вижу как минимум два минуса с точки зрения красивости картинки и два с точки зрения удобства написания и поддежки кода.
1. Дороги будут выглядеть угловато (как сейчас рельсы).
2. Из-за некоторых особенностей вертикальные и горизонтальные дороги будут уже примерно в 1,5 раза (точнее в корень_из_двух раза).
3. Нельзя будет строить такие дороги на неровном рельефе.
4. Ну и о диагональных станциях и туннелях с мостами можно тоже забыть.
5. Еще до кучи: два параллелльных пути в клетке создают некоторый гемор для разработки, да и делать пересечения таких дорог с рельсами вообще замучаешься.
Короче я понял так, что рельсы переделывать никому не интересно, значит я на это пока забиваю. А что касается дорог, то эта тема оказалась более востребованной, значит с нее и надо начать. Причем предлагаю все же делать по "новой технологии", т.е. по центру клетки, ибо это сулит больше разных фич, типа диагональных мостов и остановок, да и выглядеть красивше будет.
Если красный зажигают, значит это кому-нибудь нужно
Аватара пользователя
Q
Диспетчер
Диспетчер
 
Сообщения: 174
Зарегистрирован: Вс апр 03, 2005 23:07
Откуда: Москва, Солнцево

Сообщение Гувл » Вт мар 18, 2008 15:44

2Q
Извините дерзость, но все же...
Вертикальные пути не будут занимать больше места, хотя графике придется вылезать за клетку. вероятно, некоторые здания и постройки будут выглядеть по-уродски с наложенным куском рельсов, но так или иначе эту проблему можно решить (например, увеличить (ненамного) клетку, или уменьшить здания, или запретить строительство в таких клетках неугодных объектов и соответсовенно рельсов вблизи таких строений).

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

см.выше
дар или проклятье - низкоуровневая логика...
Аватара пользователя
Гувл
Начальник станции
Начальник станции
 
Сообщения: 94
Зарегистрирован: Пт мар 14, 2008 11:50
Откуда: г.Омск

Сообщение Q » Вт мар 18, 2008 16:42

Сам понимаешь сколько тут придется перелопатить :!:

Да не так уж и много. В крайнем случае можно вообще графику не трогать, будет чистая функциональность без всяких красивостей.
Другое дело, что в случае рельсов эта функциональность будет заменять уже имеющуюся, поэтому ее делать довольно геморройно - надо менять сразу кучу кода.
В случае дорог же, такой функциональности нет вообще, поэтому добавлять ее можно постепенно. Вообще говоря, с точки зрения написания и поддержки именно кода для дорог, включая pathfinding и движение машинок по ним, но без существенных изменений в графике и принципе расстановки зданий (ну будут местами автобусы ездить сквозь углы небоскребов) проще именно вариант по центру клетки. Еще у меня есть аргумент, что расположенные по углам дороги будут слишком узкие, особенно горизонтальные, я например не уверен, что две пары трамвайных рельсов там можно будет нормально отрисовать.
Если красный зажигают, значит это кому-нибудь нужно
Аватара пользователя
Q
Диспетчер
Диспетчер
 
Сообщения: 174
Зарегистрирован: Вс апр 03, 2005 23:07
Откуда: Москва, Солнцево

Сообщение Neko » Ср мар 19, 2008 03:57

В игре есть две, а, отчасти, и три основополагающих структуры:
1) Tracks
2) Trackdirs
3) V->direction
Эти структуры я показал на рисунках.
Тебе надо свои новые рельсы (в игре они называются tracks) вписать в эти структуры, назначить соответствующие биты, найти, где в структуре Tile их хранить и как их обрабатывать.
Если у тебя получится "красиво в шоколаде", то только в этом случае можно двигаться дальше.
Работа, которую ты собираешься затеять, весьма интересная.
Держи нас в курсе своих разработок.
Удачи.
Вложения
Tracks.png
Tracks
Tracks.png (6.31 Кб) Просмотров: 18084
Trackdirs.png
Trackdir
Trackdirs.png (6.45 Кб) Просмотров: 18082
V_direction.png
v->direction
V_direction.png (4.85 Кб) Просмотров: 18096
Револьвер - лучший аргумент в любом споре
Аватара пользователя
Neko
Президент
Президент
 
Сообщения: 750
Зарегистрирован: Чт окт 13, 2005 12:23
Откуда: Москва

Сообщение Гувл » Ср мар 19, 2008 11:15

Ч.т.д. :) если делать дорогу, то на углах :)
дар или проклятье - низкоуровневая логика...
Аватара пользователя
Гувл
Начальник станции
Начальник станции
 
Сообщения: 94
Зарегистрирован: Пт мар 14, 2008 11:50
Откуда: г.Омск

Сообщение Q » Ср мар 19, 2008 14:05

Neko, насчет этого я как раз в курсе. На рельсы пока решено забить, а делать дороги, а в случае дорог используются немного другие структуры (НЯП основная в этом случае - DiagDirecrion). Собственно в моей задумке она будет заменена на просто Direction. Но сначала хотелось бы все же закончить уже начатое (т.е. сигналы).

Кстати, подо что зарезервирован третий тип дорог?
Если красный зажигают, значит это кому-нибудь нужно
Аватара пользователя
Q
Диспетчер
Диспетчер
 
Сообщения: 174
Зарегистрирован: Вс апр 03, 2005 23:07
Откуда: Москва, Солнцево

Сообщение Kunguroth » Ср мар 19, 2008 15:51

Тему диагональных автодорог уже не первый раз встречаю на этом форуме. Помню мне ещё понравились коллажи Pk с такими доргами. Был бы счастлив видеть их в игре. Диагональные станции тоже, как добавку. Хотя сам я не играю на таком уровне чтобы видеть в них серьёзную потребность.
Аватара пользователя
Kunguroth
Машинист
Машинист
 
Сообщения: 45
Зарегистрирован: Чт окт 26, 2006 20:14
Откуда: Ижевск

Сообщение Гувл » Чт мар 20, 2008 20:26

Вот примерные наброски диагональных дорог (при угловом построении и при центральном)
как видно на рисунках, при угловом придется делать 4 дополнительных спрайта, но это не такая уж и большая проблема, если взлянуть на то что придется делать при центральном построении дороги, а именно переработку поиска пути, т.к. клетки стоят не в притык, а по углам.

ЗЫ: если надо, есть спрайты для угловых и для центральных клеток.
ЗЫЫ: как прикрепить изображение в текст, а не внизу сообщения?
Вложения
82fd543d7b722.jpg
a8d570db61bb.jpg
дар или проклятье - низкоуровневая логика...
Аватара пользователя
Гувл
Начальник станции
Начальник станции
 
Сообщения: 94
Зарегистрирован: Пт мар 14, 2008 11:50
Откуда: г.Омск

Сообщение Q » Чт мар 20, 2008 21:29

Что значит 4 спрайта? графики придется дофига рисовать в любом случае. А поиск пути так и так переделывать придется. Но зато потом его можно будет унифицировать с ЖД :)
Если красный зажигают, значит это кому-нибудь нужно
Аватара пользователя
Q
Диспетчер
Диспетчер
 
Сообщения: 174
Зарегистрирован: Вс апр 03, 2005 23:07
Откуда: Москва, Солнцево

След.

Вернуться в Разработка OpenTTD

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

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