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

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

   Страница 12 из 15
На страницу: Пред.  1, 2, 3 ... 11, 12, 13, 14, 15  След.    Перейти:   Все страницы
Поиск в этой теме:
Канал Игры Мечты: «Техническая помощь в реализации самописных игр»
Jerry Rezet
 581 EGP


Рейтинг канала: 5(113)
Репутация: 86
Сообщения: 3365
Откуда: Санкт-Петербург.
Зарегистрирован: 01.04.2005
Shirson :
по питону тут
С питоном у меня что-то не сложилось в OpenGL.. Либо я косячу, либо чего-то не понимаю (ну не питон же?!).. Если кому интересно пофейспалмить над мои кодом - он до катом. Нервных, беременных женщин, детей и кошек уберите подальше от экрана. Вот такой код дико тормозит..
 Cкрытый текст   (кликните здесь для просмотра)

По клавишам стрелкам можно поворачивать сгенерированную плоскость относительно нуля координат.
Код:
# -*- coding: cp1251 -*-
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
import sys
import math
#import numpy
#from numpy import *
import numpy as np

def Noize (x, y):
    Amp = 3
    n = x + y * 57
    n = (n<<13) ^ n;
    return ( 1.0 - ( (n * (n * n * 15731 + 789221) + 1376312589) & 0x7fffffff) / 1073741824.0)*Amp
def Perlin (x,y): #Знаю, это нихрена не перлин, просто усредняю. Тут он дальше планировался Такого фейспалма ещё много в этом коде
    return (Noize (x-1,y-1) + Noize (x-1,y) + Noize (x-1,y+1)
         + Noize (x,y-1) + Noize (x,y) + Noize (x,y+1)
         + Noize (x+1,y-1) + Noize (x+1,y) + Noize (x+1,y+1))/8
GPlane = []
GPlaneNormals = []
LightCoord = [1,10,10,0]
LightColor = [1.0,1.0,1.0,1,0]
plane = []
Area = 100

def FillOfNoize (GPlane, GPlaneNormals, Area):
    for i in range (Area):
        for j in range (Area):
            GPlane.append(i)
            GPlane.append(j)
            GPlane.append(Perlin(i,j))

            x=i; y=j; z=Perlin(i,j)
            xn=x/math.sqrt(x*x+y*y+z*z)
            yn=y/math.sqrt(x*x+y*y+z*z)
            zn=z/math.sqrt(x*x+y*y+z*z)
           
            GPlaneNormals.append(xn)
            GPlaneNormals.append(yn)
            GPlaneNormals.append(zn)
           

 
rot = 0
rotX = 0
rotY = 0
rotZ = 0



def InitGL(Width, Height):
    glClearColor(0.0, 0.0, 0.0, 0.0)
    glClearDepth(1.0)
    glDepthFunc(GL_LESS)
    glEnable(GL_DEPTH_TEST)
    glEnable(GL_LIGHTING)
    glEnable(GL_LIGHT0)
    glEnable(GL_COLOR_MATERIAL)
    glMatrixMode(GL_PROJECTION)
    glLoadIdentity()
    gluPerspective(45.0, float(Width)/float(Height), 0.1, 1000.0)
    glMatrixMode(GL_MODELVIEW)

def ReSizeGLScene(Width, Height):
    if Height == 0: Height = 1
    glViewport(0, 0, Width, Height)
    glMatrixMode(GL_PROJECTION)
    glLoadIdentity()
    gluPerspective(45.0, float(Width)/float(Height), 0.1, 100.0)
    glMatrixMode(GL_MODELVIEW)

def DrawArea ():
    global rot
    light_pos = [0,0,0,0]
    rot  = (rot + 1) % 360 # увеличиваем угол поворота
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) # очищаем экран
    glLoadIdentity()  # восстанавливаем мировые координаты
    gluLookAt (3.0, 3.0, 7.0, 0.0, 0.0, -10.0, 1.0, 0.0, 0.0) #смотреть на -10 по оси z
    glTranslatef(0.0,0.0,-10.0) # -10 по оси Z
    glRotatef(rotX,1.0,0.0,0.0)
    glRotatef(rotY,0.0,1.0,0.0)
    #glRotatef(rot,0.0,0.0,1.0)
    #glColor4f(0.0,0.7,0.1,1)
    glEnable(GL_LIGHTING)
    glEnable(GL_LIGHT0)
    glEnableClientState(GL_VERTEX_ARRAY)
    glEnableClientState(GL_NORMAL_ARRAY)
    glVertexPointer(3, GL_FLOAT, 0, GPlane)
    glNormalPointer(GL_FLOAT, 0, GPlaneNormals)
    m=10; n=10
    glLightfv(GL_LIGHT0, GL_DIFFUSE, LightColor)
    glLightfv(GL_LIGHT0, GL_POSITION, LightCoord)
    glEnable(GL_LIGHT0)
    glBegin(GL_TRIANGLES)
    for j in range (Area-1):
        for i in range (Area-1):
            glColor4f(0.0,0.7,0.1,1)
            glArrayElement(i+j*Area)
            glArrayElement(i+j*Area+Area) #
            glArrayElement(i+j*Area+Area+1)
            glColor4f(1.0,0.7,0.1,1)
            glArrayElement(i+j*Area)
            glArrayElement(i+j*Area+1) #
            glArrayElement(i+j*Area+Area+1)
           
    glEnd()
    glBegin(GL_LINES)
    glColor3f (1.0,0.0,0.0) # red 0x
    glVertex3f (0,0,0)
    glVertex3f (1,0,0) # 0x
    glColor3f (0.0,1.0,0.0) # green 0y
    glVertex3f (0,0,0)
    glVertex3f (0,1,0) # 0y
    glColor3f (0.0,0.0,1.0) # blue 0z
    glVertex3f (0,0,0)
    glVertex3f (0,0,1) # 0z
    glEnd()

    #glutSolidCube(3) # Это было для проверки начала координат
    glutSwapBuffers()

def DrawGLScene():
    DrawArea()
def KeyPressed(*args):

    if args[0]=="\033": sys.exit()

   
def SpecialKeyPressed(*args):
    repeatMode = GLUT_KEY_REPEAT_ON
    glutSetKeyRepeat(repeatMode)
    global rotX
    global rotY
    if args[0]==GLUT_KEY_LEFT: rotX  = (rotX + 5) % 360
    # увеличиваем угол поворота
    if args[0]==GLUT_KEY_RIGHT: rotX  = (rotX - 5) % 360
    if args[0]==GLUT_KEY_UP: rotY  = (rotY + 5) % 360
    if args[0]==GLUT_KEY_DOWN: rotY  = (rotY - 5) % 360
    #if args[1]<0: print args[1],args[2]
    #GLUT_KEY_LEFT - функциональная клавиша стрелка влево
    #GLUT_KEY_RIGHT - функциональная клавиша стрелка вправо
    #GLUT_KEY_UP - функциональная клавиша стрелка вверх
    #GLUT_KEY_DOWN - функциональная клавиша стрелка вниз

def main():
    list(plane)
    FillOfNoize(GPlane, GPlaneNormals, Area)


    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH)
    glutInitWindowSize(640, 480)
    glutInitWindowPosition(0, 0)
    glutCreateWindow("Hight Map-001 Noize.py")
    glutDisplayFunc(DrawGLScene)
    glutIdleFunc(DrawGLScene)
    glutReshapeFunc(ReSizeGLScene)
    glutKeyboardFunc(KeyPressed)
    glutSpecialFunc(SpecialKeyPressed)
    InitGL(400, 300)
    glutMainLoop()

main()


Пробую MinGW под виндою, но тоже что-то компилится, но запускаться не хочет.. Интересно, в общем живётся..

добавлено спустя 1 минуту:
Shirson :
Ты нашёл у кого спрашивать
Честно говоря перед этим я замучил гугль этим вопросом, но что-то тупил. Про гитхаб не догадался..
_________________
- Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c]

Последний раз редактировалось: Jerry Rezet (15:55 28-02-2018), всего редактировалось 1 раз
    Добавлено: 15:55 28-02-2018   
БулерМэн
 410 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
Jerry Rezet :
Вот такой код дико тормозит..

Вложенные циклы? Два подряд? Три? О да, трэш и угар, не удивительно почему тормозит Улыбка
_________________
Дулички и фигушки
    Добавлено: 18:22 28-02-2018   
Jerry Rezet
 581 EGP


Рейтинг канала: 5(113)
Репутация: 86
Сообщения: 3365
Откуда: Санкт-Петербург.
Зарегистрирован: 01.04.2005
БулерМэн :
Вложенные циклы? Два подряд? Три? О да, трэш и угар, не удивительно почему тормозит
Отоночо.. Понял. Один цикл - это норм будет, или и от него избавиться надо? Я как-то не думал, что всё так печально.. С моим пониманием быстродействия.. Остаётся только удивиться очевидности и воскликнуть "как же я сам не додумался!" с ритуальным масс-фейспалмом.. (как бы не разбить себе ничего от интенсивности.. но мозоль, чую, я таки заработаю.. Гы-гы )
_________________
- Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c]

Последний раз редактировалось: Jerry Rezet (23:00 28-02-2018), всего редактировалось 1 раз
    Добавлено: 22:42 28-02-2018   
Shirson
 1604 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 217
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
БулерМэн :
Вложенные циклы? Два подряд? Три? О да, трэш и угар, не удивительно почему тормозит Улыбка

Ты обладаешь сакральным знанием, как херачить двумерный шум Перлина без вложеных циклов? Поделишься?
_________________
У меня бисера не доxеpа.
    Добавлено: 22:59 28-02-2018   
Jerry Rezet
 581 EGP


Рейтинг канала: 5(113)
Репутация: 86
Сообщения: 3365
Откуда: Санкт-Петербург.
Зарегистрирован: 01.04.2005
Shirson :
Ты обладаешь сакральным знанием, как херачить двумерный шум Перлина без вложеных циклов? Поделишься?
Не. Перлин генерится где-то в начале, а у меня тройные циклы в рисовке, так его разэдак. Пока же там Кеном Перлиным даже не пахнет - там просто заглушка-"сглаживатель" без всяких циклов.
_________________
- Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c]
    Добавлено: 23:02 28-02-2018   
Shirson
 1604 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 217
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
И как вывести данные и двумерного массива без вложенных цклов? Хы...
_________________
У меня бисера не доxеpа.

Последний раз редактировалось: Shirson (23:41 28-02-2018), всего редактировалось 1 раз
    Добавлено: 23:41 28-02-2018   
БулерМэн
 410 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
Shirson :
Ты обладаешь сакральным знанием, как херачить двумерный шум Перлина без вложеных циклов? Поделишься?

Мы все знаем что я не знаю как, иначе бы уже давно нарисовал бы вам волны в синем море да еще и на скриптовом языке при 60 FPS Гы-гы
Shirson :
И как вывести данные и двумерного массива без вложенных цклов?

Может хранить данные в одномерном массиве? Гы-гы
Если размер матрицы заранее известен, то можно ограничиться одним циклом.
_________________
Дулички и фигушки

Последний раз редактировалось: БулерМэн (02:08 01-03-2018), всего редактировалось 3 раз(а)
    Добавлено: 01:56 01-03-2018   
Shirson
 1604 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 217
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
Это никак не повлияет на количество итераций.
_________________
У меня бисера не доxеpа.
    Добавлено: 01:58 01-03-2018   
БулерМэн
 410 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
Код:

p[0] = '123456789012345678901234567890'
count = 0;
str_count = strlen(*p)-1;

for(i=1;i<=10;i+=1)
{
   printf(p[i]);
   count+=1;

   if(i==9)
   {
      printf("\r\n");
      i=0;
   }

   if(count >= str_count)
   {
     i=11;
   }

}



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

Последний раз редактировалось: БулерМэн (02:10 01-03-2018), всего редактировалось 1 раз
    Добавлено: 02:08 01-03-2018   
Shirson
 1604 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 217
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
Есть матрица 10х10.
Нужно вывести её всю. Это 10х10=100 итераций

Как сделать это быстрее, если матрица 100х1?

Я знаю, что количество итераций в обоих случаях будет одинаково. А ты уверен в обратном. Значит кто-то из нас ошибается Улыбка
Как вывести матрицу 100х1 быстрее, чем за 100 итераций?
_________________
У меня бисера не доxеpа.

Последний раз редактировалось: Shirson (02:33 01-03-2018), всего редактировалось 1 раз
    Добавлено: 02:31 01-03-2018   
Jerry Rezet
 581 EGP


Рейтинг канала: 5(113)
Репутация: 86
Сообщения: 3365
Откуда: Санкт-Петербург.
Зарегистрирован: 01.04.2005
За одну итерацию вывести сразу 100! Ой, не могу!..

добавлено спустя 14 минут:
Shirson :
Это никак не повлияет на количество итераций.
Видимо вложенные циклы тоже жрут что-то.. А если по существу - то надо перейти от вызова ArrayElement по три штуки на треугольник (коих у меня 200 штук на 100 вершин, и вызовы вершин занимают ещё по 200 лишних вызовов - на один квадрат приходится две общих вершины у двух треугольников) к фигачению сразу массива вершин одним вызовом. Это должно быть быстрее. Вывести сразу все 100 вершин. Благо OpenGL это позволяет.
_________________
- Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c]

Последний раз редактировалось: Jerry Rezet (08:53 01-03-2018), всего редактировалось 3 раз(а)
    Добавлено: 08:49 01-03-2018   
Shirson
 1604 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 217
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
Jerry Rezet :
За одну итерацию вывести сразу 100! Ой, не могу!..

Индуский код, алахай-малахай Улыбка

Цитата:
Shirson :
Это никак не повлияет на количество итераций.
Видимо вложенные циклы тоже жрут что-то..
Нет.

Цитата:
А если по существу - то надо перейти от вызова ArrayElement к фигачению сразу массива вершин одним вызовом. Это должно быть быстрее. Вывести сразу все 100 вершин.
Всякие вертексные буферы и прочие списки - это уже следующий уровень.
Ткт речь как раз про вложенные циклы.
А они работают одинакого, что один цикл на 100, что два вложеных по 10.
Но ждём Будера с откровениями Улыбка
_________________
У меня бисера не доxеpа.
    Добавлено: 08:53 01-03-2018   
Minx
 905 EGP


Модератор
Рейтинг канала: 6(320)
Репутация: 140
Сообщения: 10416
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Jerry Rezet :
Видимо вложенные циклы тоже жрут что-то.. А если по существу - то надо перейти от вызова ArrayElement по три штуки на треугольник (коих у меня 200 штук на 100 вершин, и вызовы вершин занимают ещё по 200 лишних вызовов - на один квадрат приходится две общих вершины у двух треугольников) к фигачению сразу массива вершин одним вызовом. Это должно быть быстрее. Вывести сразу все 100 вершин. Благо OpenGL это позволяет.

Оптимизация начинается с профайлинга. Иначе это пляски с бубном. Определи бутылочное горлышко, потом оптимизируй.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 10:15 01-03-2018   
Jerry Rezet
 581 EGP


Рейтинг канала: 5(113)
Репутация: 86
Сообщения: 3365
Откуда: Санкт-Петербург.
Зарегистрирован: 01.04.2005
Minx :
Оптимизация начинается с
До оптимизации там ещё три парсека на маневровых. Пока чтобы хотя бы работало приемлемо. Задница
_________________
- Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c]
    Добавлено: 13:06 01-03-2018   
БулерМэн
 410 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
Shirson :
Я знаю, что количество итераций в обоих случаях будет одинаково. А ты уверен в обратном.

Не-не-не, Дэвид Блэйн(с) я этого не говорил. Я сказал операций, а не итераций.
Итераций в матрице 10*10 и в матрице 100*1 будет одинаковое количество, а вот операций сложения, вычитания, сравнения будет разное количество.

добавлено спустя 1 минуту:
Jerry Rezet :
За одну итерацию вывести сразу 100!

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

добавлено спустя 3 минуты:
Jerry Rezet :
По клавишам стрелкам можно поворачивать сгенерированную плоскость относительно нуля координат.

ИМХО куски кода с циклами вывести во внешнюю динамическую библиотеку.
А потом восхититься скоростью и убрать к чертям весь питон Хы...
_________________
Дулички и фигушки

Последний раз редактировалось: БулерМэн (17:35 01-03-2018), всего редактировалось 2 раз(а)
    Добавлено: 17:35 01-03-2018   
Shirson
 1604 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 217
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
БулерМэн :
Не-не-не, Дэвид Блэйн(с) я этого не говорил. Я сказал операций, а не итераций.

А зачем сказал? Улыбка

Цитата:
Итераций в матрице 10*10 и в матрице 100*1 будет одинаковое количество, а вот операций сложения, вычитания, сравнения будет разное количество.

Почему?
_________________
У меня бисера не доxеpа.
    Добавлено: 19:57 01-03-2018   
БулерМэн
 410 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
Shirson :
А зачем сказал?

Потому что будет другое количество, которое изменяет время выполнения.
Shirson :
Почему?

Хотите об этом поговорить?

В примере выше, я использовал две операции сложения (в инструкции for и в теле, там где count), две операции присвоения конкретного значения переменной, две логических операции сравнения, проверка переменной в инструкции for для каждой итерации, и наконец операция сложения в инструкции for для переменной i.

Итого: 8 операций с данными.

В случае с двумя циклами for вложенными друг в друга:
Две проверки условия в инструкциях for, две операции сложения для счетчиков i и j.
Итого: 4 операции.

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

В случае с Jerry Rezet - могу предложить рисовать графику на ходу, объединив циклы вычисления (xn=x/math.sqrt(x*x+y*y+z*z)) и циклы рисования.
_________________
Дулички и фигушки

Последний раз редактировалось: БулерМэн (23:10 01-03-2018), всего редактировалось 1 раз
    Добавлено: 23:09 01-03-2018   
Shirson
 1604 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 217
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
БулерМэн :
Shirson :
А зачем сказал?
Потому что будет другое количество, которое изменяет время выполнения.

Складывается лёгкое впечатление, что с понятием вычислительной сложности ты не очень знаком, да?

Цитата:
Shirson :
Почему?

Хотите об этом поговорить?
В примере выше, я использовал две операции сложения (в инструкции for и в теле, там где count), две операции присвоения конкретного значения переменной, две логических операции сравнения, проверка переменной в инструкции for для каждой итерации, и наконец операция сложения в инструкции for для переменной i.
Итого: 8 операций с данными.

Теперь впечатление уже не лёгкое Улыбка

Посмотри
ссылка
и
ссылка
Возможно, лучше на английском, там более подробно.
_________________
У меня бисера не доxеpа.

Последний раз редактировалось: Shirson (00:54 02-03-2018), всего редактировалось 1 раз
    Добавлено: 00:53 02-03-2018   
БулерМэн
 410 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
Shirson :
с понятием вычислительной сложности ты не очень знаком, да?

Ширсон, вам заняться больше нечем, кроме как знакомить с википедией? Попробуйте себя в преподавательской деятельности, у вас получится.
ЗЫ а вот помочь Jerry Rezet видимо вам не судьба, если обладаете серьезным багажом знаний, в отличии от меня. Пока я увидел лишь сарказм и в мою сторону и в сторону Jerry Rezet. Вы только мешаете, "хотите об этом поговорить" - это была ирония.
_________________
Дулички и фигушки

Последний раз редактировалось: БулерМэн (01:06 02-03-2018), всего редактировалось 6 раз(а)
    Добавлено: 01:00 02-03-2018   
Shirson
 1604 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 217
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
БулерМэн :
Ширсон, вам заняться больше нечем, кроме как знакомить с википедией?
В зачем ты рассуждаешь о темах, в которых не в зуб ногой? Улыбка

Цитата:
ЗЫ а вот помочь Jerry Rezet видимо вам не судьба
Ссылки на его вопрос я нашёл.
Но с Питоном незнаком и тут уже помочь никак немогу.

Цитата:
Пока я увидел лишь сарказм и в мою сторону и в сторону Jerry Rezet.
Тебе померещилось. Саркзм был только в твою сторону (почему - сказано в первом абзаце)
_________________
У меня бисера не доxеpа.

Последний раз редактировалось: Shirson (01:06 02-03-2018), всего редактировалось 1 раз
    Добавлено: 01:05 02-03-2018   
Канал Игры Мечты: «Техническая помощь в реализации самописных игр»
На страницу: Пред.  1, 2, 3 ... 11, 12, 13, 14, 15  След.    Перейти:   Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Хотя, с нашей скоростью постинга в конфу, конец темы ты можешь и не увидеть.... (Harley)

  » Техническая помощь в реализации самописных игр | страница 12
Каналы: Новости | 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