Суббота, 21.10.2017, 11:45
Вы вошли как Гость | Группа "Гости" | RSS

.
 
 
Главная Регистрация Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: Lipetsk, Segaman 
Форум » Elektropage.ru » Dune: The Battle for Arrakis [smd] » Ландшафт (Генерация ландшафта)
Ландшафт
r57shellДата: Четверг, 14.03.2013, 01:54 | Сообщение # 1


 
Сообщений: 631
Статус: Offline
 

Я ещё несколько лет назад предлагал, использовать этот метод.
Но никто так и не реализовал.
И тут предвиделась возможность продемонстрировать "примерные" результаты этого алгоритма.



Конкретно это я сделал командой:
Код
convert -size 1000x1000 plasma:gray50-gray50 -blur 0x2 \
                 -channel G -auto-level +channel -set colorspace sRGB \
                 tiles.gif -virtual-pixel tile  -fx "u[floor(7.999*u.g)+1]" \
                 map.png


tiles.gif:


Прога: http://www.imagemagick.org/
Читать c слов "You can also use this technique to tile greyscale images with a set of color images." ТУТ.

Суть:
1) Генерится фрактал плазма: http://ru.wikipedia.org/wiki/Плазма_(компьютерная_графика)
2) Затем его канал G ранжируется в данном случае на 7 уровней.
3) Каждому уровню в соответствие ставится один из слоёв. (земля, песок, спайс...)

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

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

Ещё один пример.
Код
convert -rotate 45 -size 1415x1415 -seed 12 plasma:gray50-gray50 -blur 0x2 \
                 -channel G -auto-level +channel -set colorspace sRGB \
                 -crop 1000x1000+207+207 -fx 'floor(8.7*u.g)/8'  map1.png
convert -rotate 45 -size 1415x1415 -seed 12 plasma:gray50-gray50 -blur 0x2 \  
                 -channel G -auto-level +channel -set colorspace sRGB \
                 -crop 1000x1000+207+207 \
                 tiles.gif -virtual-pixel tile -fx 'u[floor(8.7*u.g)+1]'  map2.png



Но заниматься этим Я НЕ БУДУ. У меня есть другие дела.


Мальчик, девочка... какая в жопу разница..
 
Ti_Дата: Суббота, 16.03.2013, 18:37 | Сообщение # 2


 
Сообщений: 18
Статус: Offline
 

Это всё кажется сложно и запутанно, поэтому никто и не брался. Тем более и писать было не кому.

Хотя рандом генератор у нас писал товарищ Липецка, без понятия какие алгоритмы там были.  Но проблема то оставалась та же - всё очень криво, и бортики земли вручную надо было править.  А песчаные дюны вообще не удалось генерировать.

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

Ну что ж, на скринах выглядит вполне неплохо. Но только на первый взгляд. Без знания того, как на самом деле карты делались - фиг чего добьешся похожего на оригинал.  И спайс и земля и тем более дюны, имеют свои особенности, а тут сплошная каша.   Далее подгонка блоков. Я тут вообще без понятия как её делать. 
Ну а в третьих - это просто уже не актуально. Я сделал редактор, который просто использует оригинальные куски, и это будет самый максимально близкий вариант, а кол-во разнообразных карт которые можно составить немаленькое, а уж если и новые куски добавлять, то неограниченно.И единственное что тут представляет интерес - сама демонстрация работы алгоритма рандома.
 
LipetskДата: Воскресенье, 17.03.2013, 01:14 | Сообщение # 3


 
Сообщений: 4
Статус: Offline
 

r57shell, твой алгоритм я давал своему знакомому, и не только этот. Он сделал генератор земли спайса и жирного спайса. Дальше дело не пошло.


Есть исходник этой проги, если что.
Как оказалось генерация обычных кусков мало что дает, можно и вручную подгонять под базы. Основная проблема именно в генерации крайних блоков "граничных тайлов". Я даже сварганил консольную прогу которая их генерирует, но и после нее править надо было. Её использовал в миссиях за фрименов.


Ученик.
 
r57shellДата: Воскресенье, 17.03.2013, 02:39 | Сообщение # 4


 
Сообщений: 631
Статус: Offline
 

Есть у кого все ландшафтные блоки 32х32 картинки? Лень вытаскивать.
Вообще, граничные блоки тоже делаются легко. Для каждого блока составляется таблица "совместимости".
Какие блоки могут быть от него: слева, справа, сверху, снизу.
По поводу песочных дюн я уже говорил. Нужно дать выбор какой из регионов спайс, а какой дюна. Регион сплошное (связное) место из спайса.
Блин, как в пэинте заливка чтобы работала, вот что я имею ввиду. Ткнул в спайс - он стал весь дюной, ткнул ещё раз, обратно спайсом.

А судя по скрину, идею человек понял, но не реализовал до конца.


Мальчик, девочка... какая в жопу разница..
 
Ti_Дата: Воскресенье, 17.03.2013, 07:59 | Сообщение # 5


 
Сообщений: 18
Статус: Offline
 

Тут блоки:
  
 
LipetskДата: Воскресенье, 17.03.2013, 08:32 | Сообщение # 6


 
Сообщений: 4
Статус: Offline
 

Цитата (r57shell)
Есть у кого все ландшафтные блоки 32х32 картинки? Лень вытаскивать.
Вот: http://rghost.ru/44557349


Ученик.
 
r57shellДата: Воскресенье, 17.03.2013, 22:19 | Сообщение # 7


 
Сообщений: 631
Статус: Offline
 

По поводу граничных тайлов, всё просто.
Нужно просто сделать такие замены:


Мальчик, девочка... какая в жопу разница..
 
r57shellДата: Понедельник, 18.03.2013, 21:18 | Сообщение # 8


 
Сообщений: 631
Статус: Offline
 

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


Мальчик, девочка... какая в жопу разница..
 
LipetskДата: Четверг, 21.03.2013, 21:19 | Сообщение # 9


 
Сообщений: 4
Статус: Offline
 

Вот я так и делал, сканировал на соседние блоки и заменял центральный соответствующим. Только кроме основных, там видимо надо сканировать и на переходные блоки хз по какому принципу.

Ученик.
 
r57shellДата: Пятница, 22.03.2013, 04:42 | Сообщение # 10


 
Сообщений: 631
Статус: Offline
 

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


Мальчик, девочка... какая в жопу разница..
 
Форум » Elektropage.ru » Dune: The Battle for Arrakis [smd] » Ландшафт (Генерация ландшафта)
Страница 1 из 11
Поиск:


Select language:
English
French
German
Portuguese
Chinese
Nemesis_c, r57shell, Smoke, Lipetsk, GoodBye (aka vfiuchcikicshuusrch) & Segaman © 2017
Хостинг от uCoz