Время генерации уровня

Бегая по 9-ти этажам лабиринта в поисках розы (таки заблудился немного) размышлял на тему, стоит ли генерировать все уровни сразу, в фоновом режиме или по мере надобности?

Сейчас на генерацию одной карты уходит около 0.5 секунд на достаточно мощном компьютере. Т.е. на генерацию 20 карт – 10 секунд. Не так уж и много, но не стоит забывать, что как только запустится multipath, то время генерации может подскочить в несколько раз.

Таким образом – пару минут придётся ожидать, пока создастся мир. Не много, но и не мало.

Эту проблему можно было бы решить либо:

  • создавая карты в момент их открытия (Dungeon Crawl Stone Soup), но тут проблема в том, что если перезапуститься и зайти на карту – она будет другая.
  • создавать карты “на шаг вперёд” – т.е. при заходе в область создавать карты всех смежных с ней областей. Возможно, это самое оно, хотя тоже может быть exploitable.
  • модификация предыдущего: обязательно создавать карты на шаг вперёд, но по возможности (например, во время простоя) создавать карты более дальних областей.
  • создавать карты при создании мира (как положено)
  • создавать карты в фоновом режиме во время первых частей игры. Было бы круто, но достаточно тугая задача по синхронизации процесса создания карт (ведь игрок в это время может перезагружаться, переходить между картами, получать уровни и т.п.). Да и может вызывать лаги, которые будут портить впечатление об игре с самого начала 🙂
  • попытаться (хотя бы начать) создавать карты во время вступительного ролика и генерации персонажей – съест хоть небольшую часть работы. Небольшой компромисс между двумя предыдущими.

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

Advertisements
Время генерации уровня

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s