Четверг, 25 Апреля 2024, 15:13

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Помогите! генерация комнат (Алгоритм позволяющий создавать бесконечный мир)
Помогите! генерация комнат
dimonnomidДата: Вторник, 23 Апреля 2013, 15:41 | Сообщение # 1
был не раз
Сейчас нет на сайте
если вкратце то идея такая:

1. ГГ выходит за пределы комнаты.
2. Комната сохраняется в бинарный файл с именем текущей позиции (Например "WX6,WY-3.MAP")
3. Комната очищается.
4. проверяется:
если есть сохранение то загружается из файла
иначе генерируется новая карта
5. ГГ телепортируется на противоположную выходу позицию (функция типа wrap_screen или вручную)

Нашёл я это чудо вот здесь.

Я изучаю GML второй день всего, но очень нравится. Вот первая поделка, которая перерастает во вторую. Вот То что получилось

Сначала сделал так:


Потом переделал так:


Так вот вопрос к знатокам... я плохо знаю как gml так и программирование поэтому у меня проблемы с реализацией.
Но чтобы не с пустыми руками я написал псевдокод чтобы самому понять. (очень подробный):



В оригинале в том примере который по ссылке используются массивы, но они очень ограничивают размер комнаты. у меня она сейчас 10000*10000 чтоб было где разгуляться.
Ну и плюсь.. я плохо понимаю как их использовать.

я так и не смог заставить это работать в своём проекте. уже 12 часов долблюсь(

Буду рад любой помощи.


Сообщение отредактировал dimonnomid - Четверг, 25 Апреля 2013, 16:14
AirwoltДата: Вторник, 23 Апреля 2013, 20:32 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
dimonnomid, Думаю, что не стоит. Комната итак большая, не надо делать её бесконечной.
GameMixДата: Среда, 24 Апреля 2013, 02:30 | Сообщение # 3
старожил
Сейчас нет на сайте
dimonnomid, тебе для какого жанра нужна генерация?

Steel Standoff - 2D аркада.
Мои статьи
dimonnomidДата: Среда, 24 Апреля 2013, 14:45 | Сообщение # 4
был не раз
Сейчас нет на сайте
Да ладно вам, когда и где бесконечный мир был лишним.
А жанр скорее всего аркадный космический рогалик

Сам потихоньку разбираю по частям...

Добавлено (24.04.2013, 14:45)
---------------------------------------------
GameMix, аркадный космический рогалик

stalker5889Дата: Среда, 24 Апреля 2013, 15:17 | Сообщение # 5
Свободный игродел
Сейчас нет на сайте
Цитата (dimonnomid)
аркадный космический рогалик

Немного несовместимые понятия. По картинке чистой воды скролл шутер. (это не плохо, жанр интересный)
Цитата (dimonnomid)
Да ладно вам, когда и где бесконечный мир был лишним.

О, да пустой бесконечный мир самое лучшее о чём я мечтал.
Цитата (dimonnomid)
В оригинале в том примере который по ссылке используются массивы, но они очень ограничивают размер комнаты. у меня она сейчас 10000*10000 чтоб было где разгуляться.

И чём ты даже эту комнату наполнишь?

По теме: На скрине огромнейшие корабли, для РОГАЛИКА они должны быть в разы меньше что бы побольше всего вместить на карту. Куча карт на которых по пять корабликаф занимающих всю карту будут очень унылы.
Цитата (dimonnomid)
1. ГГ выходит за пределы комнаты.
2. Комната сохраняется.
3. Комната очищается.
4. проверяется:
если есть сохранение то загружается
иначе генерируется новая карта
5. ГГ телепортируется на противоположную выходу позицию

Будут резкие переходы между картами аки локации. А грузить каждый такой кусочек как на скрине придётся примерно раз в пять секунд. Лаги (точнее ими будут казатся мегачастые переходы) будут раздражать любого игрока.

Итог - я не особо понял идею (а если правильно то это тихий ужас) и не могу ничем помочь.
Цитата (dimonnomid)
Я изучаю GML второй день всего, но очень нравится.

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


dimonnomidДата: Среда, 24 Апреля 2013, 16:17 | Сообщение # 6
был не раз
Сейчас нет на сайте
stalker5889,
Цитата
Немного несовместимые понятия. По картинке чистой воды скролл шутер. (это не плохо, жанр интересный)

Чем это они не совместимые? поищите космический рогалик. Эклектика

Цитата
О, да пустой бесконечный мир самое лучшее о чём я мечтал. И чём ты даже эту комнату наполнишь? По теме: На скрине огромнейшие корабли, для РОГАЛИКА они должны быть в разы меньше что бы побольше всего вместить на карту. Куча карт на которых по пять корабликаф занимающих всю карту будут очень унылы.

Я хоть где то заикнулся про пустой мир? Я приложил 2 файла. Первый скролл шутер, с него я начал и его же скриншот. Второй посмотрите всё поймёте.

Цитата
Будут резкие переходы между картами аки локации. А грузить каждый такой кусочек как на скрине придётся примерно раз в пять секунд. Лаги (точнее ими будут казатся мегачастые переходы) будут раздражать любого игрока.

Пример как это работает я тоже приложил. Работает надо заметить отлично.

Цитата
Итог - я не особо понял идею (а если правильно то это тихий ужас) и не могу ничем помочь.

Если вы не посмотрели ссылки и не поняли идею и вопроса, то почему я вижу ваше сообщение здесь?

Цитата
Тогда зачем бросился делать такую сложную идею? Если ты просишь просто так взять и написать твой псевдокод нормальным кодом то давай досвиданья.

Про код писать я тоже не упоминал. Я просил помощи, где рыть или как переделать. Верный ли алгоритм. Да и разве эта идея сложна?

Знаете, лычка «гильдия школоты», у вас в подписи, полностью себя оправдывает, спасибо за дельные советы.
stalker5889Дата: Среда, 24 Апреля 2013, 18:43 | Сообщение # 7
Свободный игродел
Сейчас нет на сайте
dimonnomid,
Цитата (dimonnomid)
Чем это они не совместимые? поищите космический рогалик. Эклектика

Я имею ввиду слова "аркадный" и "рогалик".
Цитата (dimonnomid)
Про код писать я тоже не упоминал.

Цитата (dimonnomid)
у меня проблемы с реализацией.


Цитата (dimonnomid)
Пример как это работает я тоже приложил. Работает надо заметить отлично.

Хм... ваш пример работает. Он сделан большой комнатой или как вы привели в первом посте?
Цитата (dimonnomid)
Да и разве эта идея сложна?

Скорее нерациональна.
Цитата (stalker5889)
Будут резкие переходы между картами аки локации. А грузить каждый такой кусочек как на скрине придётся примерно раз в пять секунд.


dimonnomidДата: Среда, 24 Апреля 2013, 19:12 | Сообщение # 8
был не раз
Сейчас нет на сайте
stalker5889,

Просто взгляните на это. Шикарно же =)

а про рациональность... мне кажется вполне неплохая. "Переход" очень быстро происходит. И загрука или генерация
Проблемы с реализацией у всех и всегда. Щас вот дописываю тестовый блок по сохранению и загрузке.

Наконец то разобрался как работает запись переменных в файл

Код
save = file_text_open_write('save.txt')
file_text_write_string(save,'instance_create('+string(ПОЗИЦИЯ-Х)+string(',')+string(ПОЗИЦИЯ-Y)+string(',Osomething)'));
file_text_writeln(save);
file_text_close(save)
stalker5889Дата: Четверг, 25 Апреля 2013, 14:25 | Сообщение # 9
Свободный игродел
Сейчас нет на сайте
Цитата (dimonnomid)
Наконец то разобрался как работает запись переменных в файл

Юзайте ини и навсегда забудьте этот мазохизм. Онлайн справка.
Т.е для того что бы сохранить переменную "пиченьки кол-во" нужно всего лишь написать:
ini_open("system.sys")//открываем файл system.sys
ini_write_real("Еда","Сколько пиченек","пиченьки кол-во")//записывам переменную в секцию еда
ini_close()//закрываем


dimonnomidДата: Четверг, 25 Апреля 2013, 14:51 | Сообщение # 10
был не раз
Сейчас нет на сайте
stalker5889,

Это то не сложно, ну и мне тут не ини файл нужен а обычный бинарный, который потом читается и исполняется.

Есть идеи как записать переменную в имя файла? Ну т.е. имя файла составляется из переменных. Я описал вот здесь подробнее.

Второй день голову ломаю... всё упирается только в это. В примере делается через argument0 но я так и не вкурил как это работает(
stalker5889Дата: Четверг, 25 Апреля 2013, 16:36 | Сообщение # 11
Свободный игродел
Сейчас нет на сайте
Цитата (dimonnomid)
Есть идеи как записать переменную в имя файла?

Т.е нужно переменная1переменная2.sys?
Если до то:
Код
pololo=123;//переменная для записи
a = file_text_open_write(string(pololo)+".sys")//создаём файл    
file_text_close(a)//закрываем созданный
pololo="NIKITA"
a = file_text_open_write(string(pololo)+".sys")
file_text_close(a)

Код роботает.
Зы. Код создаёт два разных файла. КЭП.




Сообщение отредактировал stalker5889 - Четверг, 25 Апреля 2013, 17:09
dimonnomidДата: Четверг, 25 Апреля 2013, 20:33 | Сообщение # 12
был не раз
Сейчас нет на сайте
stalker5889,

Да я потом сам разобрался. Тут дело в пунктуации оказалось

save = file_text_open_write( "ANYWORD" +string(worldX) +string(',') +string(worldY) +string('.map');

Получается файл "ANYWORD-8,5.map"
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Помогите! генерация комнат (Алгоритм позволяющий создавать бесконечный мир)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг