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

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

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

   Страница 1 из 2
На страницу: 1, 2  След. | Все страницы
Поиск в этой теме:
Канал Игры Мечты: «[OpenGL] Есть кто?»
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
А то вопросы задавать некому... На геймдеве народ или глупый, или ленивый (скорее 2-е)
_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 19:10 31-07-2007   
Digited
 271 EGP


Рейтинг канала: 4(99)
Репутация: 49
Сообщения: 932

Зарегистрирован: 24.08.2004
Смотря какие вопросы.

ps Jurec на некоторое время ушел в офф.
    Добавлено: 16:24 04-08-2007   
VBKesha
 817 EGP


Рейтинг канала: 3(31)
Репутация: 132
Сообщения: 3330
Откуда: обл.Брянская г. Трубчевск
Зарегистрирован: 07.12.2005
Может я чем смогу помочь.
    Добавлено: 23:11 05-08-2007   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
Ну хорошо, вопрос про pBuffer, если кто знает что это такое. Не могу отрисовать в этот буфер...

Даже наверно так: Как сделать эффект внешней камеры... а-ля Х3. Из того что знаю я:
Самый медленный: Сделать glPerspective, отрендерить сцену, сделать glCopyTexSubImage и потом как текстуру накладывать.
Быстрее: Через WGL_ARB_pbuffer и иже с ним. вот тут у меня ничего не получается... Создаю контекст, выбираю его, рендерю туда, выбираю стандартный, рендерю сцену, потом через glOrtho пытаюсь нарисовать квадрат и наложить текстуру, к которой прикручен этот буфер. Получаю цветной прямоугольник (цвет сам задаю)
Ещё быстрее: Пока не рассматривал, но EXT_framebuffer_object вроде то что надо.

Так как пишу скрин сейвер необходимы все 3 варианта (или больше если найдете) Вот собсно вопрос: Как работать с pBuffer'ом?
_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 23:45 05-08-2007   
VBKesha
 817 EGP


Рейтинг канала: 3(31)
Репутация: 132
Сообщения: 3330
Откуда: обл.Брянская г. Трубчевск
Зарегистрирован: 07.12.2005
Погляди в этих примерах:
http://www.codesampler.com/oglsrc/oglsrc_7.htm#ogl_offscreen_rendering
    Добавлено: 00:55 06-08-2007   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
За наводку на сайт большое спасибо.
_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 07:49 06-08-2007   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
А я ужо приехал! :Р

glCopyTexSubImage2D делал для pBuffer`а?

http://www.delphi3d.net/download/arbrendertex.zip
http://www.delphi3d.net/download/pbuffer.zip

Вот - отличные исходники на Делфи.

Но EXT_framebuffer_object рулит в любом случае, т.к. это быстрее намного, контекст не надо создавать и это кросс-платформеная вещь. pBuffer же требует wgl расширения - т.е. только для винды (наверно можно как-то это обойти, но я не знаю альтернатив wgl в данном случае).
_________________
MOV topka, C++
    Добавлено: 05:21 09-08-2007   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
Jurec :
glCopyTexSubImage2D делал для pBuffer`а?
Нет. Так как, насколько я понял pBuffer от ARB должен работать без этой помманды, если включено расширение WGL_ARB_render_texture
Jurec :
Но EXT_framebuffer_object рулит в любом случае
Согласен. Я буду делать различные реализации.
1) Рендер в теущий контекст, сброс инфы в текстуру, рендер тудаже нормальной сцены
2) Через ARB
3) Через EXT
_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 07:16 09-08-2007   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
Кидай код работы с этой шнягой.
_________________
MOV topka, C++
    Добавлено: 13:19 09-08-2007   
tribunal
 50 EGP


Рейтинг канала: 1(6)
Репутация: 4
Сообщения: 21
Откуда: Санкт-Петербург
Зарегистрирован: 02.11.2006
Присоединяюсь к автору темы. Активно изучаю OpenGL. Пока только теорию
Нахожусь в глубоком раздумье: стоит ли сразу OpenGL изучать или тот же Ogre3d
Не знаю, как провести сравнительный анализ
    Добавлено: 13:42 09-08-2007   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
tribunal :
стоит ли сразу OpenGL изучать
Я как-то посмотрел на TrueVision3D... На нем Бруно Р. Маркос свои игрушки делал... Типа BfE и BfY4 И понял что надо писать свой... Так как там двиг был тормознутый...
_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 09:20 10-08-2007   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
Код:

unit ExternalCamera;

interface

uses gl, glu, glext, SceneObjects, Camera, Windows;

type
  TExtCamera=class(TCamera)
  private
    fWidth:Word;
    fHeight:Word;
    fX:Integer;
    fY:Integer;
    fVisible:Boolean;
    fUpdating:Boolean;
    hARB:THandle;
    fInited:Boolean;
    Image:PGLbyte;
    bufTex:GLuint;
  public
    property Width:Word read fWidth write fWidth;
    property Height:Word read fHeight write fHeight;
    property Visible:Boolean read fVisible write fVisible;
    property Updating:Boolean read fUpdating write fUpdating;
    property X:Integer read fX Write fX;
    property Y:Integer read fY Write fY;
    constructor Create(AOwnerHandle:THandle); overload;
    destructor Destroy; override;
    procedure ExRender;
    procedure Draw; override;
    procedure Activate;
  end;

implementation

uses GlobalVars, Texture, Mesh;

constructor TExtCamera.Create(AOwnerHandle:THandle);
var
  iAttr:Array [0..16] of Integer;
  fAttr:Real;
  Formats:GLint;
  Data:GLuint;
  tData:Pointer;
begin
  Inherited Create(AOwnerHandle);
  fInited:=False;
  If not IsARBPBuffer then Exit;
  iAttr[0]:=WGL_DRAW_TO_PBUFFER_ARB;
  iAttr[1]:=GL_TRUE;
  iAttr[2]:=WGL_DEPTH_BITS_ARB;
  iAttr[3]:=24;
  iAttr[4]:=WGL_RED_BITS_ARB;
  iAttr[5]:=8;
  iAttr[6]:=WGL_GREEN_BITS_ARB;
  iAttr[7]:=8;
  iAttr[8]:=WGL_BLUE_BITS_ARB;
  iAttr[9]:=8;
  iAttr[10]:=WGL_PIXEL_TYPE_ARB;
  iAttr[11]:=WGL_TYPE_RGBA_ARB;
  iAttr[12]:=WGL_SUPPORT_OPENGL_ARB;
  iAttr[13]:=GL_TRUE;
  if IsARBPBufferTex then
  begin
    iAttr[14]:=WGL_BIND_TO_TEXTURE_RGBA_ARB;
    iAttr[15]:=GL_TRUE;
    iAttr[16]:=0;
  end
  else
    iAttr[14]:=0;
  fAttr:=0;
  fInited:=wglChoosePixelFormatARB(hDC, @iAttr, nil, 1, @Formats, @Data);
  if fInited then
  begin
    iAttr[0]:=WGL_TEXTURE_FORMAT_ARB;
    iAttr[1]:=WGL_TEXTURE_RGBA_ARB;
    iAttr[2]:=WGL_TEXTURE_TARGET_ARB;
    iAttr[3]:=WGL_TEXTURE_2D_ARB;
    iAttr[4]:=0;
    hARB:=wglCreatePbufferARB(hDC, Formats, 256, 256, @iAttr);
    hDC:=wglGetPbufferDCARB(hARB);
    wglDeleteContext(hRC);
    hRC:=wglCreateContext(hDC);
    wglQueryPbufferARB( hARB, WGL_PBUFFER_WIDTH_ARB, @Formats);
    fWidth:=Formats;
    wglQueryPbufferARB( hARB, WGL_PBUFFER_HEIGHT_ARB, @Formats);
    fHeight:=Formats;
    GetMem(tData, fWidth * fHeight * 4);
    Cameras.AddCamera(Self);

    glGenTextures(1, @bufTex);
    glBindTexture(GL_TEXTURE_2D, bufTex);
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

     glPixelStorei ( GL_UNPACK_ALIGNMENT, 1 );                        // set 1-byte alignment

     glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
     glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR  );
     glTexImage2D ( GL_TEXTURE_2D, 0, 4, fWidth, fHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, tData );
    FreeMem(tData, fWidth * fHeight * 4);
  end;
end;

Destructor TExtCamera.Destroy;
begin
  wglDeleteContext(hRC);
  wglReleasePbufferDCARB(hARB, hDC);
  wglDestroyPbufferARB(hARB);
  Inherited Destroy;
end;

Procedure TExtCamera.ExRender;
var
  lDC, lRC:THandle;
begin
  if not fVisible then Exit;
  If not fUpdating then Exit;
  lRC:=wglGetCurrentContext;
  lDC:=wglGetCurrentDC;
  if not wglMakeCurrent(hDC, hRC) then Exit;
  glViewport(0,0,fWidth,fHeight);

  glEnable( GL_TEXTURE_2D );
  glMatrixMode(GL_PROJECTION);
  glPushMatrix;
  glLoadIdentity;
  gluPerspective(45.0, fWidth/fHeight, 0.1, 10000);
  glMatrixMode(GL_MODELVIEW);


  glEnable( GL_TEXTURE_2D );

  glClearColor(0.5,0.5,0.5,0);
  glClear(GL_DEPTH_BUFFER_BIT xor GL_COLOR_BUFFER_BIT);
  glPushMatrix;

  gluLookAt(Position.X, Position.Y, Position.Z, Rotation.X, Rotation.Y, Rotation.Z, 0, 1, 0 );
  Scene.Render;

  glPopMatrix;
  glMatrixMode(GL_PROJECTION);
  glPopMatrix;
  glMatrixMode(GL_MODELVIEW);

  glBindTexture( GL_TEXTURE_2D, bufTex );
  if not IsARBPBufferTex then
    glCopyTexImage2D(GL_TEXTURE_2D,0,GL_LUMINANCE,0,0,fWidth,fHeight,0);                   wglMakeCurrent(lDC, lRC);
end;

Procedure TExtCamera.Draw;
const
  T1:R2Point=(S:0;T:0);
  T2:R2Point=(S:1;T:0);
  T3:R2Point=(S:1;T:1);
  T4:R2Point=(S:0;T:1);
var
  V1,V2,V3,V4:R3Point;
  VTmp, VTmp2:R3Point;
  err:Cardinal;
begin
  if not fVisible then Exit;
  glEnable( GL_TEXTURE_2D );
  glBindTexture( GL_TEXTURE_2D, bufTex );
  if IsARBPBufferTex then
    if not wglBindTexImageARB( hARB, WGL_FRONT_LEFT_ARB ) then Exit;


  glDisable( GL_DEPTH_TEST);
  glMatrixMode( GL_PROJECTION );
  glPushMatrix;
  glLoadIdentity;
  glOrtho( 0, 500, 500, 0, 0, 1 );
  glMatrixMode( GL_MODELVIEW );
  glPushMatrix;
  glLoadIdentity;

  glBindTexture(GL_TEXTURE_2D, bufTex);
  glBegin( GL_QUADS );

  glTexCoord2f( 0, 1 );
  glVertex2i( 0, 0 );
  glTexCoord2f( 0, 0 );
  glVertex2i(0,fHeight);
  glTexCoord2f(1,0);
  glVertex2i(fWidth, fHeight);
  glTexCoord2f(1,1);
  glVertex2i(fWidth, 0);

  glEnd;
  glPopMatrix;
  glMatrixMode( GL_PROJECTION );
  glPopMatrix;
  glMatrixMode( GL_MODELVIEW );

  glEnable( GL_DEPTH_TEST);
  glBindTexture( GL_TEXTURE_2D, bufTex );
  if IsARBPBufferTex then
    wglReleaseTexImageARB( hARB, WGL_FRONT_LEFT_ARB );
end;

procedure TExtCamera.Activate;
begin
  fVisible:=True;
  fUpdating:=True;
end;

_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 10:28 10-08-2007   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
http://www.delphi3d.net/download/arbrendertex.zip

Погляди сюда всё таки.

Я просто не работал с pBuffer`ом, поэтому сказать конкретно не могу - да и код не из лёгких - надо отлаживать.

Тут могу только предпологать что:

Warstone :
Код:
glGenTextures(1, @bufTex);     glBindTexture(GL_TEXTURE_2D, bufTex);

создает текстуру не в том контексте.

Warstone :
Код:
glTexImage2D ( GL_TEXTURE_2D, 0, 4, fWidth, fHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, tData );

1) GL_RGB?
2) Почему то думаю что это вообще делать не надо..

Warstone :
Код:
glBindTexture( GL_TEXTURE_2D, bufTex );
  if not IsARBPBufferTex then
    glCopyTexImage2D(GL_TEXTURE_2D,0,GL_LUMINANCE,0,0,fWidth,fHeight,0);                   wglMakeCurrent(lDC, lRC);

1) Bind в каком контексте?
2) Почему GL_LUMINANCE?

добавлено спустя 4 минуты:
А еще может быть трабл с инициализацией камеры.

Погляди тот пример что я дал - там инит другой..
_________________
MOV topka, C++

Последний раз редактировалось: Jurec (10:46 10-08-2007), всего редактировалось 2 раз(а)
    Добавлено: 10:45 10-08-2007   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
Jurec :
создает текстуру не в том контексте.
А есть разница? Не знал.
Add:
Посмотрел... строит в контексте основной камеры. То есть там-же где и рендер происходит.
Jurec :
2) Почему то думаю что это вообще делать не надо..
Очень может быть
Jurec :
1) Bind в каком контексте?
В контексте pBuffer'а
Jurec :
2) Почему GL_LUMINANCE?
Забей, считай что IsARBPBufferTex=True;
Jurec :
А еще может быть трабл с инициализацией камеры.
Может, но вроде хендл на pBuffer я получаю (он <> 0), так что wglCreatePbufferARB ошибку не дает...

добавлено спустя 3 минуты:
Jurec :
Погляди сюда всё таки.
А тамошние CG компоненты откуда взять?

добавлено спустя 1 минуту:
Jurec :
Погляди тот пример что я дал - там инит другой..
Строил работу по http://www.steps3d.НАРОД.ru/tutorials/render-to-texture-tutorial.html
_________________
WARNING: By reading this post you accept that this post is genius.

Последний раз редактировалось: Варсик (11:13 10-08-2007), всего редактировалось 3 раз(а)
    Добавлено: 11:12 10-08-2007   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
Warstone :
wglCreatePbufferARB ошибку не дает...

Ошибки и не будет, просто не будет работать.

Warstone :
А тамошние CG компоненты откуда взять?

Смотри модуль DynTex.pas - компилить тебе ничего не надо, впринципе.

Код:


  // Pixel format attributes:
  PFATTRIBS: array [0..16] of Integer =
    (
      WGL_SUPPORT_OPENGL_ARB,         GL_TRUE,
      WGL_PIXEL_TYPE_ARB,             WGL_TYPE_RGBA_ARB,
      WGL_ACCELERATION_ARB,           WGL_FULL_ACCELERATION_ARB,
      WGL_COLOR_BITS_ARB,             32,
      WGL_DEPTH_BITS_ARB,             24,
      WGL_STENCIL_BITS_ARB,           0,
      // We're creating a PBuffer that can be bound as a texture.
      WGL_DRAW_TO_PBUFFER_ARB,        GL_TRUE,
      WGL_BIND_TO_TEXTURE_RGBA_ARB,   GL_TRUE,
      0
    );
  // PBuffer attributes:
  PBATTRIBS: array [0..8] of Integer =
    (
      WGL_PBUFFER_LARGEST_ARB,        0,
      WGL_TEXTURE_FORMAT_ARB,         WGL_TEXTURE_RGBA_ARB,
      WGL_TEXTURE_TARGET_ARB,         WGL_TEXTURE_2D_ARB,
      WGL_MIPMAP_TEXTURE_ARB,         GL_TRUE,
      0
    );


Warstone :

Код:
 
  iAttr[0]:=WGL_DRAW_TO_PBUFFER_ARB;
  iAttr[1]:=GL_TRUE;
  iAttr[2]:=WGL_DEPTH_BITS_ARB;
  iAttr[3]:=24;
  iAttr[4]:=WGL_RED_BITS_ARB;
  iAttr[5]:=8;
  iAttr[6]:=WGL_GREEN_BITS_ARB;
  iAttr[7]:=8;
  iAttr[8]:=WGL_BLUE_BITS_ARB;
  iAttr[9]:=8;
  iAttr[10]:=WGL_PIXEL_TYPE_ARB;
  iAttr[11]:=WGL_TYPE_RGBA_ARB;
  iAttr[12]:=WGL_SUPPORT_OPENGL_ARB;
  iAttr[13]:=GL_TRUE;
  if IsARBPBufferTex then
  begin
    iAttr[14]:=WGL_BIND_TO_TEXTURE_RGBA_ARB;
    iAttr[15]:=GL_TRUE;
    iAttr[16]:=0;
  end
  else
    iAttr[14]:=0;
  fAttr:=0;




Сравни..
_________________
MOV topka, C++

Последний раз редактировалось: Jurec (11:19 10-08-2007), всего редактировалось 1 раз
    Добавлено: 11:18 10-08-2007   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
Jurec :
Ошибки и не будет, просто не будет работать.
Там если формат пикселя кривой, то он 0 хендл возвращает.
Jurec :
Сравни..
Ну и? Для инициализации Формата пикселя почти одно и то-же. Единственно не понимаю смысл WGL_ACCELERATION_ARB, щас вставлю - посмотрю

добавлено спустя 3 минуты:
Warstone :
щас вставлю - посмотрю
Вставил. Не помогло.
_________________
WARNING: By reading this post you accept that this post is genius.

Последний раз редактировалось: Варсик (11:29 10-08-2007), всего редактировалось 1 раз
    Добавлено: 11:29 10-08-2007   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
Jurec :
Смотри модуль DynTex.pas

Смотрел? Там всё работает - вот от этого и пляши.
_________________
MOV topka, C++

Последний раз редактировалось: Jurec (11:42 10-08-2007), всего редактировалось 1 раз
    Добавлено: 11:42 10-08-2007   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
Jurec :
Смотрел? Там всё работает - вот от этого и пляши.
Понимаешь какая штука... Для того чтобы использовать glCopyTexSubImage и с его помощью делать камеры... pBuffer вообще не нужен... И зачем они его там прикрутили - непонятно. Видно не знают что делают. Тогда проще рендерить все в 1 DC и просто его очищать 2 раза. Ведь pBuffer нужен чтобы как-раз НЕ делать glCopyTextSubImage...
_________________
WARNING: By reading this post you accept that this post is genius.
    Добавлено: 15:55 10-08-2007   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
Warstone :
Видно не знают что делают.

Гы-гы

Читай исходники внимательно.

Там 3 класса.

1) Чистый glCopyTextSubImage
2) pBuffer с glCopyTextSubImage
3) pBuffer через WGL_ARB_render_texture [БЕЗ glCopyTextSubImage]
_________________
MOV topka, C++
    Добавлено: 16:32 10-08-2007   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4041
Откуда: Москва
Зарегистрирован: 22.12.2002
Кстати, 8 августа анонсирован OpenGL 3.0!
Подробнее: http://www.opengl.org/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic;f=3;t=015351;p=0

добавлено спустя 41 минуту:
Jurec :
Читай исходники внимательно.
Ну кто-же мог подумать... Я нашел ошибку... Даже если не используются Дисплейные списки... Они есть... По одному на DC... Я прав? Короче все решила строчка: wglShareLists(curRC, hRC);
_________________
WARNING: By reading this post you accept that this post is genius.

Последний раз редактировалось: Варсик (20:40 10-08-2007), всего редактировалось 2 раз(а)
    Добавлено: 20:40 10-08-2007   
Канал Игры Мечты: «[OpenGL] Есть кто?»
На страницу: 1, 2  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Подходи тихо, стреляй точно, улетай быстро.

  » [OpenGL] Есть кто? | страница 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