xtodx/mapgenerator

dev-master 2019-01-31 22:44 UTC

This package is auto-updated.

Last update: 2024-04-29 03:47:22 UTC


README

Сначала генерация была сделана так

function generate()
        {
            $terrainCount = count($this->terrainTypes) - 1;
            for ($i = 0; $i < $this->y; $i++) {
                $this->terrains[] = [];
                $this->units[] = [];
                for ($k = 0; $k < $this->x; $k++) {
                    $this->terrains[$i][] = $this->createTerrain($this->terrainTypes[rand(0, $terrainCount)], $k, $i);
                    $possibleUnits = $this->terrains[$i][$k]->getPossibleUnits();
                    $this->units[$i][$k] = null;
                    if (count($possibleUnits) > 0) {
                        if ($this->distribution() == 0) {
                            $this->totalUnits++;
                            $this->units[$i][$k] = $this->createUnit($possibleUnits[rand(0,
                                count($possibleUnits) - 1)], rand(0, $this->teams - 1));
                            $this->terrains[$i][$k]->setUnit($this->units[$i][$k]);
                        }
                    }
                }
            }

            return $this->terrains;
        }

Но нам в первую очередь нужно всё-же генерировать базы, иначе:

  1. Мы можем сгенерировать меньшее колво баз
  2. Может быть занята вся территория, на которой может разместиться база
Приянято решение жертвовать скоростью работы НО разделить процессы генерации ландшафта и обьектов

Теперь работает в 3 этапа

  1. Генерация ландшафта
  2. Генерация лимитированных обьектов на карте(например баз) количество которых равно количеству команд
  3. Генерация остальных обьектов
Для доработкил логики, думаю, нужны алгоритмы и правила по которым

  1. Ведётся огонь
  2. Перемещаются юниты
  3. Что дают базы

Установка

composer require xtodx/mapgenerator dev-master