PHPackages                             xtodx/mapgenerator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. xtodx/mapgenerator

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

xtodx/mapgenerator
==================

Map Generator

00PHP

Since Jan 31Pushed 7y ago1 watchersCompare

[ Source](https://github.com/xtodx/MapGenerator)[ Packagist](https://packagist.org/packages/xtodx/mapgenerator)[ RSS](/packages/xtodx-mapgenerator/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependenciesVersions (1)Used By (0)

Тестовое задание для Together Networks
======================================

[](#тестовое-задание-для-together-networks)

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

[](#сначала-генерация-была-сделана-так)

```
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
```

###  Health Score

17

—

LowBetter than 6% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity0

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity38

Early-stage or recently created project

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/90301739899b418ac147020ef8fb09f1c8eea487e02f1bf1153bbade39564c6f?d=identicon)[xtodx](/maintainers/xtodx)

### Embed Badge

![Health badge](/badges/xtodx-mapgenerator/health.svg)

```
[![Health](https://phpackages.com/badges/xtodx-mapgenerator/health.svg)](https://phpackages.com/packages/xtodx-mapgenerator)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
