Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Натрикс | страница 1
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 1 из 1
 
Поиск в этой теме:
Канал Игры Мечты: «Натрикс»
Minx
 962 EGP


Модератор
Рейтинг канала: 6(323)
Репутация: 134
Сообщения: 10463
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Это конечно не игра мечты, и не про космос, но всё же. Несколько месяцев назад мы нашли (как мы думали) интересный игромех и решили собрать на его основе игру. Это некая комбинация головоломки/три в ряд и чего-то ещё казуального.

Сегодня она вышла на iOS: ссылка на AppStore.
Сейчас доступно только на iOS.
И на Android: ссылка

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

Графику я рисовал через методологию "Visio Driven Development" (; , звуки же по большей части подобраны с freesound.org. Хотя может что-то еще есть из sfxr. По маркетированию сделал пост на 4pda, но хотелось бы чего-то ещё.

В качестве ближайших планов по развитию намечено:
- переключение на горизонтальный и вертикальный интерфейс (сейчас только вертикальный)
- добавление в контекст больше содержимого, чтобы оно было "менее пустым" (ненавязчивый спецэффекты на фоне, анимации и т.п.);
- добавление пары новых режимов и увеличение числа уровней.

А Натрикс (он же Natrix) - это уж, он же ужик, забытое в игровой индустрии животное (;
_________________
μηδείς αγεωμέτρητος εισίτω

Последний раз редактировалось: Minx (19:03 06-09-2021), всего редактировалось 2 раз(а)
    Добавлено: 22:09 28-06-2021   
Zachesa
 150 EGP


Рейтинг канала: 4(95)
Репутация: 13
Сообщения: 1413
Откуда: Хабаровск
Зарегистрирован: 12.11.2007
Если будет на Андроид, то можно посмотреть...
_________________
Язык Образов, для ситуационного моделирования, программирования и как язык мысли, думающей машины.
    Добавлено: 16:28 26-07-2021   
Minx
 962 EGP


Модератор
Рейтинг канала: 6(323)
Репутация: 134
Сообщения: 10463
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Пока что нет, но вероятно через пару недель-месяц сделаем.

За прошедшее время несколько подправили интерфейс, добавили музыку, поработали над анимациями, .. Можно сказать по мелочи (;
Посмотрели на аналитику, стало понятней что делать дальше. Все уровни ещё никто не прошёл, а до этого момента создавать новые нет смысла. Сейчас скорее будет больше ориентация на опыт игрока — повышение играбельности.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 23:05 29-07-2021   
Minx
 962 EGP


Модератор
Рейтинг канала: 6(323)
Репутация: 134
Сообщения: 10463
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
После пары недель сражений с Андроидом (для меня выпуск в google play был в первый раз) Натрикс опубликовался: https://play.google.com/store/apps/details?id=com.vir.natrix

Попутно обновили на iOS.

В прошедший месяц из существенного добавили задания (квесты), также было пару улучшений анимации и исправления пары ошибок интерфейса.

Фронт задач за прошедший месяц переосмыслился и сейчас выглядит по-другому. Первое, хотелось бы сделать графически передизайнить. Второе, заняться вопросом ощущения прогресса, сделать чтобы оно было и было более выражено. Третье, ощущение присутствия других игроков.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 19:02 06-09-2021   
Minx
 962 EGP


Модератор
Рейтинг канала: 6(323)
Репутация: 134
Сообщения: 10463
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
За прошедшие месяцы получилось помедитировать над дизайном и наполнением, а также со способами реализации всего этого.

За это время двинулась несколько мысль генерации графических элементов.

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

Выделилось три слоя обработки:
1. Инструменты по формированию исходного набора (генераторы с нуля, фабрики - которые паттерн factory).
2. Операции над различными наборами.
3. Развертывание из полученных наборов различных элементов (создаём уже элементы сцены).

Если заходить издалека и по-простому, то применение такого подхода можно показать так.

Первый самой простой пример - генерируем по вектору набор элементов и разворачиваем на сцене (случайности тут никакой). Прикладной код выглядит сейчас так:

Код:
var set = Liner.GenerateLine(new Vector2(-5, 1), new Vector2(0, 3), 0.4f);
var objects = Simple2DDeployer.Deploy(set, simpleSquareScriptPrefab, GetComponent<Transform>());

foreach (var o in objects)
{
        var script = o.GetComponent<SimpleSquareScript>();
        script.SetUp(15, Color.yellow);
}

Сначала мы генерируем набор элементов от точки (-5,1) до (0,3), далее развёртываем это всё по префабу в каждой точке, и в конце обычно какая-то процедура инициализации, зависящая от контекста, здесь ставим размер и цвет.

Второй пример - при генерации набора элементов, выстроенных в ряд, задаём расстояние между ними посредством случайного генератора (между точками расстояние от 0.2 до 0.4):

Код:
var rndGenerator = new RangeRndGenerator(0.2f, 0.4f);
var set = Liner.GenerateLine(new Vector2(1, 1), new Vector2(6, 3), rndGenerator);
var objects = Simple2DDeployer.Deploy(set, simpleSquareScriptPrefab, GetComponent<Transform>());

   foreach (var o in objects)
   {
    var script = o.GetComponent<SimpleSquareScript>();
    script.SetUp(10, Color.green);
}


Третий пример - после генерации как во втором примере, используем обработчик - он добавляет случайное смещение перпендикулярно изначальному вектору:

Код:
var rndGenerator = new RangeRndGenerator(0.2f, 0.4f);
var set = Liner.GenerateLine(new Vector2(-5, -3), new Vector2(0, -1), rndGenerator);
set = Liner.AddRndDelta(set, 0.2f);
var objects = Simple2DDeployer.Deploy(set, simpleSquareScriptPrefab, GetComponent<Transform>());

   foreach (var o in objects)
   {
    var script = o.GetComponent<SimpleSquareScript>();
    script.SetUp(20, Color.red);
}


И четвёртый пример где создаём некоторый лес элементов, но с определёнными случайными свойствами - это 5 лесопосадок в линию, и они смещаются на заданные пределы:

Код:
internal void Start()
{
   for (int i = 0; i < 5; i++)
   {
      DeployOneLine(new Vector2(1, -i * 0.5f), new Vector2(6, -i * 0.5f));
   }
}

internal void DeployOneLine(Vector2 from, Vector2 to) {
    var set = Liner.GenerateLine(from, to, 0.2f, 0.4f);
    set = Liner.AddRndDelta(set, 0.2f);
    var objects = Simple2DDeployer.Deploy(set, simpleSquareScriptPrefab, GetComponent<Transform>());
   
   foreach (var o in objects)
   {
      var script = o.GetComponent<SimpleSquareScript>();
      script.SetUp(10, Color.blue);
   }
}


В картинках генерация выглядит так (примеры получаются по порядку слева направо сверху вниз):


_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 01:38 04-01-2022   
Minx
 962 EGP


Модератор
Рейтинг канала: 6(323)
Репутация: 134
Сообщения: 10463
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Продолжим наше in vitro (;

Получаемые узлы-точки могут быть использованы не только как координаты объектов, но и как вершины полинома для векторной графики.

(не помню с помощью чего точно собирал свои полиномные велосипеды, вероятно тут и/или здесь)

Например, мы можем собрать генератор хвойновидных растений:

Код:
public static List<Vector2> Create(float minR, float maxR, int leafN)
{
   var result = new List<Vector2>();

   for (int i = 0; i < leafN; i++)
   {
      float angle = 2 * Mathf.PI / leafN;
      result.Add(new Vector2(Mathf.Sin(i * angle) * minR, Mathf.Cos(i * angle) * minR));
      result.Add(new Vector2(Mathf.Sin(i * angle + angle / 2.0f) * maxR, Mathf.Cos(i * angle + angle / 2.0f) * maxR));
   }

   return result;
}


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

Далее, так может выглядеть процедура развертывания на сцене для одного префаба:

Код:
public Material _material;

public PolygonDeployerScript _deployerPrefab;

public float _minR;
public float _maxR;

private PolygonDeployerScript _script;

public void Deploy(float size, Color color, int leafN)
{         
   var v = PineFactory.Create(size * _minR, size * _maxR, leafN);

   _script = Instantiate(_deployerPrefab, GetComponent<Transform>());
   _script.Deploy(v.ToArray(), _material, color, 0.02f, false);
}


Здесь скрыта только процедура Deploy, которая собрана по ссылкам выше, и фактически превращает вершины в нужный нам полином на сцене.

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

Код:
var script = o.GetComponent<SimpleSquareScript>();
script.SetUp(10, Color.blue);


на где-то такие

Код:
var pine = o.GetComponent<PineSimple>();
pine.Deploy(1, Color.blue, Random.Range(7, 12));


То получим такую картинку:



Т.о. описанные простые преобразования мы используем для случайно создаваемых элементов, и в том числе, создаём их множества на сцене.
_________________
μηδείς αγεωμέτρητος εισίτω

Последний раз редактировалось: Minx (04:31 04-01-2022), всего редактировалось 1 раз
    Добавлено: 02:20 04-01-2022   
Minx
 962 EGP


Модератор
Рейтинг канала: 6(323)
Репутация: 134
Сообщения: 10463
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Теперь пару операций с полиномами.

Допустим нам надо нарисовать лес, область которого ограничена полиномом, и эта область имеет отличительный цвет (песок, трава).

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

В этих примерах и преобразованиях такие картинки:



Изначально возьмём полином как пятиугольник (1-й пример):

Код:
var polygon = new List<Vector2>() {
        new Vector2(-1, -0.5f),
        new Vector2(1, -0.5f),
        new Vector2(2, 0.5f),
        new Vector2(0, 1),
        new Vector2(-2, 0.5f)
};

var script = Instantiate(_deployerPrefab, GetComponent<Transform>());
script.Deploy(polygon.ToArray(), _material, Color.grey, 0.01f, true);


Далее каждую из сторон подвергнем случайной обработке (2-й пример):

Код:
internal void Start()
{
    var polygon = new List<Vector2>() {
            new Vector2(-1, -0.5f),
            new Vector2(1, -0.5f),
            new Vector2(2, 0.5f),
            new Vector2(0, 1),
            new Vector2(-2, 0.5f)
    };

    var polygonInDetail = new List<Vector2>();

      for (int i = 0; i < polygon.Count; i++)
      {
        if (i < polygon.Count - 1)
            polygonInDetail.AddRange(GenOneLine(polygon[i], polygon[i+1]));
        else
            polygonInDetail.AddRange(GenOneLine(polygon[polygon.Count - 1], polygon[0]));

        polygonInDetail.RemoveAt(polygonInDetail.Count - 1);
    }           

    var script = Instantiate(_deployerPrefab, GetComponent<Transform>());
    script.Deploy(polygonInDetail.ToArray(), _material, Color.blue, 0.01f, true);
}

private List<Vector2> GenOneLine(Vector2 from, Vector2 to)
{
    var rndGenerator = new RangeRndGenerator(0.05f, 0.1f);
    var set = Liner.GenerateLine(from, to, rndGenerator);
    set = Liner.AddRndDelta(set, 0.1f);
    set.RemoveAt(set.Count - 1);
    return set;
}

Здесь мы формируем polygonInDetail из изначального полигона множествами линейных наборов, как в наших примерах выше. Каждый линейный набор - это генерация из линии точек на расстоянии от 0.05 до 0.1, и смещенных на случайное от -0.1 до 0.1 перпендикулярно линии (последнее значение выкусывается чтобы не совпадать с первым следующим, так как одинаковые точки ломают рисование полинома на сцене).

Как видим, наша область несколько угловатая. Хотелось бы её сгладить. Для этого используем новый обработчик - (waveProcessing) - один его проход это присовение среднего значения каждому из узлов, кроме начального и псследнего. Такая обработка делает последовательность более плавной, рельефной. И таких проходов можно сделать несколько.

Т.о. 3-й пример, где изменена только процедура GenOneLine:

Код:
private List<Vector2> GenOneLine(Vector2 from, Vector2 to)
{
    var rndGenerator = new RangeRndGenerator(0.02f, 0.04f);
    var set = Liner.GenerateLine(from, to, rndGenerator);
    set = Liner.AddRndDelta(set, 0.1f);
    set = RndWave.WaveProcessing(set, 5);
    set.RemoveAt(set.Count - 1);
    return set;
}


Здесь замена на (0.02f, 0.04f) чтобы полином был более плотным, так как для плавных волн нужно больше точек. И сделано 5 проходов усреднения.

И для последнего примера, добавим наши растения по периметру области (4-й пример):

Код:
public PolygonDeployerScript _deployerPrefab;
public Material _material;
public GameObject _pineScriptPrefab;

internal void Start()
{
    var polygon = new List<Vector2>() {
            new Vector2(-1, -0.5f),
            new Vector2(1, -0.5f),
            new Vector2(2, 0.5f),
            new Vector2(0, 1),
            new Vector2(-2, 0.5f)
    };

    var polygonInDetail = new List<Vector2>();

    for (int i = 0; i < polygon.Count; i++)
    {
        if (i < polygon.Count - 1)
            polygonInDetail.AddRange(GenOneLine(polygon[i], polygon[i + 1]));
        else
            polygonInDetail.AddRange(GenOneLine(polygon[polygon.Count - 1], polygon[0]));

        polygonInDetail.RemoveAt(polygonInDetail.Count - 1);
    }

    var script = Instantiate(_deployerPrefab, GetComponent<Transform>());
    script.Deploy(polygonInDetail.ToArray(), _material, new Color(  0xf3 / 256.0f, 0x0ce / 256.0f, 0x9A / 256.0f), 0.01f, true);

    var plantPolygon = new List<Vector2>();
    foreach (var point in polygon)
    {
        plantPolygon.Add(point * 0.9f);
    }

    for (int i = 0; i < plantPolygon.Count; i++)
    {
        if (i < plantPolygon.Count - 1)
            GenOnePineLine(plantPolygon[i], plantPolygon[i + 1]);
        else
            GenOnePineLine(plantPolygon[polygon.Count - 1], plantPolygon[0]);
    }
}

private void GenOnePineLine(Vector2 from, Vector2 to)
{
    var set = Liner.GenerateLine(from, to, 0.2f, 0.5f);
    set = Liner.AddRndDelta(set, 0.1f);
    set = RndWave.WaveProcessing(set, 1);
    set.RemoveAt(set.Count - 1);
    var objects = Simple2DDeployer.Deploy(set, _pineScriptPrefab, GetComponent<Transform>());

    foreach (var o in objects)
    {
        var pine = o.GetComponent<PineSimple>();
        pine.Deploy(2, new Color(0, 0.6f, 0), UnityEngine.Random.Range(7, 12));
    }
}

private List<Vector2> GenOneLine(Vector2 from, Vector2 to)
{
    var rndGenerator = new RangeRndGenerator(0.02f, 0.04f);
    var set = Liner.GenerateLine(from, to, rndGenerator);
    set = Liner.AddRndDelta(set, 0.1f);
    set = RndWave.WaveProcessing(set, 5);
    return set;
}

Здесь для простоты сделал *0.9f чтобы растения росли на земле (в более сложных случаях будет посложнее, чтобы растения не росли где случайно попало). Далее у нас отдельная процедура для растений, которые располагаются по подобному фону периметру. У них больше расстояние между кустиками, сделал одну волну для плавности, и далее тжс что было у нас раньше.
_________________
μηδείς αγεωμέτρητος εισίτω

Последний раз редактировалось: Minx (04:31 04-01-2022), всего редактировалось 1 раз
    Добавлено: 03:47 04-01-2022   
Minx
 962 EGP


Модератор
Рейтинг канала: 6(323)
Репутация: 134
Сообщения: 10463
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Возвращаясь к ужику. Применение описанных технологий на первом прототипе периметра главного меню выглядит так:

 Cкрытый текст   (кликните здесь для просмотра)


Тут периметр сгенерирован случайным образом, при каждом запуске разный. Растений несколько, слоев тоже несколько, некоторые подпиливания для поиска стиля.
_________________
μηδείς αγεωμέτρητος εισίτω

Последний раз редактировалось: Minx (04:06 04-01-2022), всего редактировалось 2 раз(а)
    Добавлено: 03:51 04-01-2022   
Minx
 962 EGP


Модератор
Рейтинг канала: 6(323)
Репутация: 134
Сообщения: 10463
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
По поводу дизайна осенью делал кое-какие эксперименты. Пара скринов набросков по поиску стиля (датированы 3 октября):

 Cкрытый текст   (кликните здесь для просмотра)
 Cкрытый текст   (кликните здесь для просмотра)
 Cкрытый текст   (кликните здесь для просмотра)

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

Сейчас чувствуется что нынешние менюшки по стилю конфликтуют с появляющимся новым. И с этим надо что-то делать.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 00:36 06-01-2022   
Minx
 962 EGP


Модератор
Рейтинг канала: 6(323)
Репутация: 134
Сообщения: 10463
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Сегодня немного поупражнялся с рельефом с проеркой нескольких идей.

Сначала собрал функцию расширения многоугольника по периметру: если есть многоугольник, то задача сделать тоже многоугольник, но больше, чтобы он аккуратно становился больше по периметру на некоторое расстояние. Чтобы например как выше в 4-м примере не нужно было просто умножать на масштаб чтобы расчтения были по периметру, так как для разных форм фигур это не работает.

Т.е. если есть фигура (жёлтая), то нужно получить то что зелёное (или около того):

 Cкрытый текст   (кликните здесь для просмотра)


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

Если эту процедуру можно применить несколько раз, и получить такое:

 Cкрытый текст   (кликните здесь для просмотра)


Это были эксперименты с константным многоугольником. Для разнообразия собрал генератор многоугольников (случайными являются число вершин, расстояние вершин до центра и угол для каждой из вершин).

Когда их много, то получается такая картинка:

 Cкрытый текст   (кликните здесь для просмотра)


И теперь для каждой из сторон применяем процедуру, описанную выше в третьем примере (GenOneLine). Результат выглядит как-то так:

 Cкрытый текст   (кликните здесь для просмотра)


В этом контексте для ужика можно сделать горный периметр на экране уровня, при чём чтобы он был случайным, не обязательно по всему периметру (частичные горы_ и надо будет сделать ещё доп спецэффекты.

А вобщем случае вырисовывается некий стиль случайно-генерируемой графики. Будем посмотреть (;

На этот функционал и написание поста ушло часа 2-3. А прошло 3 недели. Надо как-то собраться и систематически взяться за проект.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 03:19 27-01-2022   
Minx
 962 EGP


Модератор
Рейтинг канала: 6(323)
Репутация: 134
Сообщения: 10463
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
После наблюдения некоторых проблем с генерированными элементами решил собрать другой алгоритм увеличения многоугольника. Вместо движения отрезков во все стороны сделал расширение вершин по биссектрисам. Разница то что слева и справа:

 Cкрытый текст   (кликните здесь для просмотра)


Слева то что выше, справа то что задумал на этот раз.

Причина в том, что при некоторых вариантах - например если у нас впуклый многоугоотник буквой L, и расстояние увеличения большая, то получаем сначала самопересечения полинома, а далее ему вообще сводит крыщу (если попробовать применить на L, то сами поймёте).

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

Картинка увеличения одной итерации в вакууме выглядит как-то так:

 Cкрытый текст   (кликните здесь для просмотра)


Если применить генерацию многоугольников, то оно получается такое:

 Cкрытый текст   (кликните здесь для просмотра)

Видно что все как-то схематично и прямо. Но для этого этапа такое и нужно.

Если применить нашу описанную процедуру разномизиорования прямых линий, то оно начинает смотрется так:

 Cкрытый текст   (кликните здесь для просмотра)


А если быстрым движением руки добавить случанйных растений по веришнам и периметру, то картинка получается такая:

 Cкрытый текст   (кликните здесь для просмотра)


На практике правда встретил явление что при рандомизции прямых линий иногда получаются самопересекающиеся полиномы. Надо будет исправить этот момент.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 02:22 29-01-2022   
Minx
 962 EGP


Модератор
Рейтинг канала: 6(323)
Репутация: 134
Сообщения: 10463
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Как оказывается, найти готовую процедуру определения самопересекается многоугольник или нет непросто. Plane Sweep Algorithm реализовывать долго, а кроме алгоритма других готовых не нашёл. Пока что взял процедуру определения пересечения отрезков и перебор O(n^2).

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

В связи с этим сначала попробовал делать сотню попыток генерации. Но и это не всегда помогает. И тогда выделил отдельную процедуру для чистой генерации без создания объектов на сцене. И если более сотни раз получается пересекающийся полигон, то вся процедура создания объекта запускается заново. И все это через механизм исключений (если внутри не получается сгененировать, то исключение отбрасывает на уровень, где можно пересобрать базовые непротиворечивые параметры). Хотя, в идеале, надо генерацию строить так, чтобы плохих случаев не было.

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

Два примера генерации:

 Cкрытый текст   (кликните здесь для просмотра)
 Cкрытый текст   (кликните здесь для просмотра)


Т.е. при проектировании мы указываем важные для уровня параметры, а неважные подвегаются случайности.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 21:57 29-01-2022   
Канал Игры Мечты: «Натрикс»
 
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Мы же не звери. Сначала зарэжем, потом четвертуем, потом утопим...или сначала утопить? Ну ладно, там разберемся. (Loki)

  » Натрикс | страница 1
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18