Войти
ПроектыФорумОцените

Wolf 3d OpenGL+mouselook+hi res текстуры+модели вместо спрайтов

Страницы: 1 2 3 4 5 6 Следующая »
#0
4:53, 3 мар. 2011

Вот сделал некоторые изменения в снятом с производства порте Wolf 3d под OpenGl. Теперь работает mouselook (не только влево и вправо, но и вверх-вниз), работают все разрешения вплоть до 1920x1200, есть зум на вращении колеса мыши, работает сохранение и восстановление, записываются и воспроизводятся демки, используются HQ текстуры, используются HQ4x текстуры (еще лучше качество!); вместо бочек, мебели и прочей утвари используются .md2 модели. Полная поддержка моделей .md2 для спрайтов (монстров и боссов).

2012-03-17 - Выпущена новая автономная версия 0.80.010 тут (Спасибо Vlasov1996)
+исправления в коде неоткрываемых дверей для atrostein
+добавлено 111 текстур неба (теперь каждый уровень со своим небом)
+добавлены шейдеры для неба и освещения с bump-картами (теперь игра не пойдет на картах без поддержки OpenGL 3.0 или выше)
+добавлены новые музыкальные композиции по просьбе Vlasov1996
+зеленая кровь у мутантов
+в меню выхода можно вместо Y и N нажимать Enter и Esc соответственно (для удобства)
+сделан фонарик (по кнопке f) для игры в темных местах
+в игре (на картах) при нажатии Enter пропускается мелодия и играет следующая
+облака на небе и меняющийся цвет неба
Для запуска из-под Win7 нужно поставить в свойствах ярлыка совместимость с WinXP SP3
пасс:123
Изображение Изображение Изображение Изображение

2011-12-07 -  Выпущена новая автономная версия 0.80.009 тут (Спасибо Vlasov1996)
+Включены еще 2 альбома mp3 - legowolf и mix, в связи с этим изменена переменная s_mp3mode:
0-стандарт, 1-mac, 2-3do, 3-iphone, 4-ремиксы sod, 5-военные марши, 6-lego wolf, 7-фанатские ремиксы,
8-пользовательские мелодии (music\user), 9-все мелодии (music)
+Включена возможность пропуска музыки (если надоела), по кнопке Enter в игре музыка переходит к следующей композиции (только для s_mp3 от 2 до 4)
+Карты освещения теперь кэшируются, поэтому должен быть высокий fps даже в самых сильноосвещенных сценах (где много источников света)
+Добавлен еще один мод для игры (wl602 - астроштейн, вольфенштейн на тему космоса, переделаны карты, текстуры и спрайты всех стандартных уровней), то есть теперь игра включает в себя 5 модификаций (wolf, astrostein, sod, sod02 и sod03)
wl6 - wolf - wolfenstein 3d
wl602 - astrostein - wolf 3d новые карты+текстуры+спрайты (на тему космоса - astro theme)
sod - spear of destiny - продолжение wolf3d (mission pak)
sod02 - Return to danger - sod 02 mission pak (map+textures+sprites conversion)
sod03 - Ultimate challenge - sod 03 mission pak (map+textures+sprites conversion)
+Сделано окно ожидания загрузки (please wait...), чтобы отображать процесс загрузки игры
Из музыки осталось только взять треки от приставки jaguar (поскольку в инете только очень плохого качества), у кого есть эта приставка, захватите, пожалуйста треки, и комплект музыки для wolf будет полным.
Изображение Изображение
Изображение Изображение Изображение Изображение
Изображение Изображение Изображение Изображение
В архиве есть демо прохождения первых двух уровней wolf3d, запустите игру, зайдите на первый уровень и в консоли наберите demo 001
пасс 123


2011-11-14 -  Выпущена новая автономная версия 0.80.007 тут (Спасибо Vlasov1996)
+Добавлено примитивное отражение к дверям и косякам дверей (r_metal 1)
+Полностью доделан mp3 проигрыватель.  Тема mp3 раскрыта окончательно. Добавлен пользовательский каталог user и многое другое
+Новая cvar переменная s_mp3mode 0-7 (срабатывает после смены музыки)
+Руки дошли до SOD, доработано завершение игры. Теперь с 18-го уровня после взятия копья мы сразу переносимся на 21й уровень, а после победы над ангелом игра завершается и показываются некоторые заставки (экспериментально)
+Теперь sod тоже полностью играбельный (проходимый)
+Добавлена поддержка 2 модов для sod (условно sod02 и sod03 см последние скрины). Эти моды теперь включены в версию. Однако не забудьте для игры с этими модами вырубить качество r_quality 0. Иначе текстуры будут от wl6 и sod
+Добавлено большое количество музыки на тему wolf

2011-11-04 -  Выпущена новая автономная версия 0.80.006 тут, (Спасибо Vlasov1996)
патч для устранения рамок вокруг спрайтов тут newwolf
+Динамичное освещение
r_light 2 - включить динамическое освещение
+Вспышки от выстрелов игрока
+Поддержка дверей с ключами раздельно золотых и серебряных
+В игру добавлена поддержка внешних mp3
+С версией 0.80.006 теперь поставляется набор mp3 для замены обычной imf-музыки в игре. Очень неплохие римейки
+Для включения mp3 используется специальная переменная s_mp3
s_mp3 0 - отключить mp3
s_mp3 1 - вкл mp3 - играется вместо imf нужный mp3 по кругу
s_mp3 2 - вкл mp3 jukebox - играются все связанные по типу игра/меню композиции без перерыва
s_mp3 3 - вкл mp3 jukebox - играются вообще все мелодии из данной версии игры
s_mp3 4 - вкл mp3 jukebox - играются все доступные мелодии и vl6 и sod
s_mp3vol - от 0.0 до 1.0 - настройка громкости mp3
Скрины:
Изображение Изображение
пасс 123

2011-10-25 -  Выпущена новая автономная версия 0.80.005 тут (Спасибо Vlasov1996)
+Сделаны 20 совершенно разных прицелов
+Прозрачная вода в колодце
+Наконец-то поддержка учетверенных стандартных текстур для меню и HUD (r_hqgfxs 1)
+Переделаны переменные настройки качества:
r_quality 0,1 - 0-стандартные текстуры,1-улучшенные текстуры (hq)
r_models 0,1 - 0-обычные спрайты вместо мебели,1-md2 модели мебели
r_monsters 0,1 - 0-спрайты-монстры,1-md2 модели монстров
r_light 0,1,2 - освещение 0-выкл,1-простой opengl,2-динамичные лайтмэпы (сильно сажает fps - пока не рекомендуется!)
+Переделан алгоритм крови и следов на стенах - частицы остаются долго. Есть точки-отметины от выстрелов на стенах.
+Полностью переделан код эмулятора музыки - теперь музыка 44100 стерео (истинное стерео - такого вы не слышали!)
+Игра разбита на 3 pak-файла: pak0 - стандартная игра (все по умолчанию), pak1 - улучшенные текстуры (+пол и потолок), pak2 - md2 модели и скрипты для них. Любой пак можно убрать и игра будет играбельна.
Скрины:
Изображение Изображение
пар 123

2011-10-20 -  Выпущена новая автономная версия 0.80.004 тут, (Спасибо Vlasov1996)
2011-09-23 -  Выпущена новая автономная версия 0.80.003a тут,
2011-09-02 - Апдейт для версии 80 до 80.002 тут,
2011-03-01 - Первая рабочая версия 0.80 тут

С уважением, seemees


#1
6:47, 3 мар. 2011

Понравилось "mouselook не только влево и вправо".

Кармак портировал Wolf3D на iPhone недавно. Базисом послужил какой-то кривой SDL порт. Кармак с него еще ржал в своем бложике, как там текстуры при рендере каждый кадр через strcmp ищутся.

Вот тут можно посмотреть кармаковское:
http://www.doomworld.com/idgames/index.php?id=15617
http://www.doomworld.com/idgames/index.php?id=15655

Тут возможно ресурсы:
http://zdoom.org/wiki/Wolfenstein_3D_TC

Хотя, наверное, ты все это видел.

#2
8:43, 3 мар. 2011

Спасибо, entryway!

Да, я все это видел. У Кармака mouselook вверх/вниз нет, у порта под zDoom он есть, но очень кривой - вверх нельзя вертикально смотреть. Что очень неудобно.
То есть взгляд вверх где-то на 45 градусов и вниз на 70. У меня полноценный mouselook (90 градусов вверх и вниз), текстуры стен у меня повышенного качества
(HQ) полностью перерисованные. Все плоские спрайты обстановки заменены на 3d модели - то есть можно ходить вокруг них, и они не поворачиваются к
тебе "НОГАМИ". Освещение тоже не сделано у них (у Кармака точно, у zDoom еще исходники гляну). В общем у них у всех - халтура.

Кто может подсказать по освещению и по заданию bump-карт (или же displacement-карт хз)? Хотелось бы какой-то генератор бесшовных текстур пола
и потолка. Чтобы пол был каменный или деревянный, а потолок - бетонный или  в побелке. Также нужны карты выщерблин на стенах (желательно
генерящиеся через шейдеры). Помощь все еще нужна.

С уважением, seemees

#3
11:57, 3 мар. 2011

17 минут скачивать что-то не охота ждать.

#4
14:33, 3 мар. 2011

Код отображения я написал. Так что не хочешь качать - просто помоги советом :-) И посмотри скриншоты.

С уважением, seemees

#5
18:12, 3 мар. 2011

Что-то окантовачка у спрайта стремная на третем снизу шоте. Надо альфа функцию настроить. Да и сами спрайты не помешает предварительно обработать как это сделано в GZDoom в функции SmoothEdges()

Должно быть так:
Изображение

#6
18:38, 3 мар. 2011

Сейчас посмотрю. Пока что включил анизотропную фильтрацию (ARB_multisample) - пропали ступеньки на наклонных
поверхностях. Скрин:


Изображение

А вот поправил Alpha-канал:

Изображение

Только не нашел функции SmoothEdges (У меня zdoom а не gzDoom) :-( как она выглядит?


С уважением, seemees

#7
18:43, 3 мар. 2011

seemees
>на iPhone недавно
>Кармак с него еще ржал в своем бложике,
Линк можно?
Единственный блог Кармака который можно найти гуглом - последняя запись за 2006 год.

#8
18:45, 3 мар. 2011

Zakus
> Линк?
> Единственный блог кармака который можно найти гуглом - последняя запись за 2006
> год.
http://www.google.com/search?q=carmack+wolf3d+iphone

У меня первая ссылка:
http://www.idsoftware.com/wolfenstein3dclassic/wolfdevelopment.htm

#9
18:54, 3 мар. 2011

entryway
Я не вижу блога. Человек не ведет блог.
Это просто статья к страничке продукта
http://www.idsoftware.com/wolfenstein3dclassic/
Говорить что он "ржал в своем бложике" - не корректно, и вводит людей в заблуждение.

#10
19:14, 3 мар. 2011

Entryway - помоги со сглаживанием, брось функцию сглаживания спрайтов (функция вывода у меня в 0м посте).
Альфа-канал поправил (см скрин в посте N6). И спасибо за дельную помощь!

С уважением, seemees

#11
0:00, 4 мар. 2011

seemees
> Пока что включил анизотропную фильтрацию (ARB_multisample)
Странно что с такой кашей в голове ты столько сделал, респект :)

#12
0:02, 4 мар. 2011

Zakus
> Единственный блог Кармака который можно найти гуглом - последняя запись за 2006 год.
В твиттор вот он регулярно псотит, на бложики видимо забил.

#13
4:07, 4 мар. 2011

Не понимаю, почему текстуры из квадратов здоровых по краям. Вроде все скопировал из исходников gzDoom, но все равно спрайты какие-то
зубчатые по краям (хотя и сглаженные). В gzDoom все отключил в разделе текстур (и Smooth Edge и HQTextures), все параметры на минимум.
Оказалось, что сглаживание зависит от параметра фильтрации (None, Bilinear, Trilinear) и только от него. То есть при включение либо Bilinear
либо Trilinear зубчики пропадают. Нашел где в коде у него эти параметры используются - все к себе скопировал (1:1) но у меня все равно
зубчики по краям спрайтов. Помогите понять, в чем дело.

Вот собственно сам злополучный код:

// name, miminize, mazimize, picmip
glmode_t modes[]=
{
  {"GL_NONE", GL_NEAREST, GL_NEAREST, 0},
  {"GL_NONE_NEAREST", GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, 1},
  {"GL_NONE_LINEAR", GL_LINEAR, GL_LINEAR, 0},
  {"GL_LINEAR", GL_LINEAR_MIPMAP_NEAREST, GL_LINEAR, 1},
  {"GL_BILINEAR", GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, 1},
  {"GL_TRILINEAR", GL_NEAREST_MIPMAP_LINEAR, GL_NEAREST, 1}
};

#define NUM_GL_MODES (sizeof(modes)/sizeof(glmode_t))

/*
** R_GL_TextureMode
*/
void R_GL_TextureMode(int mode)
{
  cvar_t *glMode;
//  int n;

  /*
  for(n=0; n<NUM_GL_MODES; n++)
  {
    if(!Q_strcasecmp(modes[n].name, mode))
      break;
  }*/

  if((mode<0) || (mode>=NUM_GL_MODES)) {
    Con_Printf("bad filter mode %d\n",mode);
    mode=0;
  }
  glFilterMode=mode;

  glMode=Cvar_SetValue("r_texturemode", (float)mode);
  glMode->modified=false;

  glFilterMin=modes[glFilterMode].minimize;
  glFilterMax=modes[glFilterMode].maximize;
  glPicmip=modes[glFilterMode].picmip;

// update existing textures

  Con_Printf("texture filter set to %s\n", modes[glFilterMode].name);
  Con_Printf("min filter set to %d\n", modes[glFilterMode].minimize);
  Con_Printf("mag filter set to %d\n", modes[glFilterMode].maximize);
  Con_Printf("picmip filter set to %d\n", modes[glFilterMode].picmip);
}


// ------------------------- * textures * -------------------------

/*
** R_GL_UploadTexture
**
** uploads texture to the renderer so that it could be selected
*/
void R_GL_UploadTexture(image_t *tex, bool mipmap, bool aniso, bool clamp)
{
  int sw, sh;
  char *upData;
  int use_mipmapping = glPicmip;


  glGenTextures(1, &tex->glTex);
  glBindTexture(GL_TEXTURE_2D, tex->glTex);

  //glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, (mipmap && use_mipmapping));

// scaled size, should be a power of 2, not greater then glMaxTexSize
  for(sw=1; sw<tex->w; sw<<=1);
  for(sh=1; sh<tex->h; sh<<=1);
  if(sw>glMaxTexSize) sw=glMaxTexSize;
  if(sh>glMaxTexSize) sh=glMaxTexSize;

//  sw=512;
//  sh=512;

  if(glRoundDown->value)
  {
    if(sw>tex->w) sw>>=1;
    if(sh>tex->h) sh>>=1;
  }
  if(mipmap && glPicMip->value>0)
  {
    sw>>=(int)glPicMip->value;
    if(!sw) sw=1;
    sh>>=(int)glPicMip->value;
    if(!sh) sh=1;
  }

// 3dfx board has a limit on max aspect ratio (1:8)
  if(glMaxTexSize==256)
  {
    if((sw<<3)<sh)
      sw=sh>>3;
    else if((sh<<3)<sw)
      sh=sw>>3;
  }

  upData=Z_Malloc(sw*sh*4);
  if(sw!=tex->w || sh!=tex->h) {
    //gluScaleImage(GL_RGBA,tex->w, tex->h,GL_UNSIGNED_BYTE,tex->data, sw, sh, GL_UNSIGNED_BYTE,upData);
    Img_Resample(upData, sw, sh, tex->data, tex->w, tex->h, tex->bpp);
  } else
    memcpy(upData, tex->data, sw*sh*tex->bpp);

// uploading base image
  glTexImage2D(GL_TEXTURE_2D, 0, tex->bpp, sw, sh, 0, tex->bpp==4?GL_RGBA:GL_RGB, GL_UNSIGNED_BYTE, upData);
 //uploading mipmaps if required
  
  if(mipmap)
  {
    int level=0;

    while(Img_MipMap(upData, &sw, &sh, tex->bpp))
      glTexImage2D(GL_TEXTURE_2D, ++level, tex->bpp, sw, sh, 0, tex->bpp==4?GL_RGBA:GL_RGB, GL_UNSIGNED_BYTE, upData);
  }
// set texture parameters
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, clamp?GL_CLAMP_TO_EDGE:GL_REPEAT);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, clamp?GL_CLAMP_TO_EDGE:GL_REPEAT);
// set texture parameters
  
  if (mipmap &&   modes[glFilterMode].picmip) {
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, modes[glFilterMode].minimize);
    if(aniso && glMaxAniso){
      glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 2.0f);
    }
  } else {
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, modes[glFilterMode].maximize);
  }
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, modes[glFilterMode].maximize);
  
//  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
//  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
//  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, (mipmap && use_mipmapping)?GL_LINEAR_MIPMAP_LINEAR:GL_LINEAR); 
//  glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
//  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_BGRA, GL_UNSIGNED_BYTE, pixels);

//  if(aniso && glMaxAniso)
//    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 2);
//  glTexImage2D(GL_TEXTURE_2D, 0, tex->bpp, sw, sh, 0, tex->bpp==4?GL_RGBA8:GL_RGB8, GL_UNSIGNED_BYTE, upData);
//  if(mipmap && use_mipmapping)
//    glGenerateMipmap(GL_TEXTURE_2D);

// free data
  Z_Free(upData);
  free(tex->data);
  tex->data=NULL;
}

С уважением, seemees

#14
9:11, 4 мар. 2011

glAlphaFunc(GL_GEQUAL, 0.5f); ?

Страницы: 1 2 3 4 5 6 Следующая »
ПроектыФорумОцените

Тема в архиве.