Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Фейслифтинг Quake II (2 стр)

Фейслифтинг Quake II (2 стр)

Страницы: 1 2 3 Следующая »
ChebПостоялецwww25 июля 200717:14#15
З.Ы. Ну как я и предполагал!
Вот что происходит с оригинальным экзешником при цеплянии моей длл рендера:
[cheb@host-17-99 QUAKE2]$ ./quake2.exe
ALSA lib conf.c:3939:(snd_config_expand) Unknown parameters 0
ALSA lib control.c:910:(snd_ctl_open_noupdate) Invalid CTL default:0
fixme:wave:ALSA_AddCaptureDevice Add support for DSCapture
err:seh:setup_exception stack overflow 2860 bytes in thread 0009 eip 0120f3bb esp 002404d4 stack 0x241000-0x350000

Ключевые слова - "stack overflow".
ChebПостоялецwww28 июля 200715:51#16
Ок, заставить оригинальный Ку2 работать с моей Дллой оказалось проще пареной репы: всего лишь поднял лимит стека (4 байта в quake2.exe по смещению 110h) с одного мегабайта до 16.

Увы, проблему с чёрными полигонами это не решило. Значит, глючит код обработки лайтмапов где-то в самой длл. Надо разбираться, может ещё в каком месте этот 256-ный лимит зашит.

ChebПостоялецwww28 июля 200723:40#17
Ну, вот так и знал!
Это был ляп конверсии:
 for i := 0 to size - 1 do
        begin
          bl[0] := lightmap[i * 3 + 0];
          bl[1] := lightmap[i * 3 + 1];
          bl[2] := lightmap[i * 3 + 2];
          inc(pSingle(bl), 3);
        end;

, тогда как в оригинале было:

for (i=0 ; i<size ; i++, bl+=3 )
{
  bl[0] += lightmap[i*3+0];
  bl[1] += lightmap[i*3+1];
  bl[2] += lightmap[i*3+2];
}

- такая ма-аленькая закорючка, а весь процесс лесом шёл.

Поправил на

 for i := 0 to size - 1 do
        begin
          bl[0] := bl[0] + lightmap[i * 3 + 0];
          bl[1] := bl[1] + lightmap[i * 3 + 1];
          bl[2] := bl[2] + lightmap[i * 3 + 2];
          inc(pSingle(bl), 3);
        end;
- и сразу все глюки исчезли.

Приглашаю опробовать:

http://217.70.17.99/_share/_001/_003/q2_facelifted.zip  (420K)

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

В длле теперь работает ползунок качества текстур: в крайнем левом положении - исходный лимит 256х256 (но всё равно гораздо всё чётче благодаря фильтру lanczos), в крайнем правом - 1024х1024. Кудвака жжот. Всё словно преобразилось, стало невероятно чётким и красивым. Если бы кто такую операцию догадался в 2001-м сделать - точно порвал бы Ку3 на грелки.

Сорцы, безобразной кучей:
http://chebmaster.com/_share/_001/_003/q_fclift_src/q_fclift_src.tgz (1.9М)

Правка: 11 мар. 2018 21:20

SepticПостоялецwww31 июля 200710:31#18
Cheb
Эффект, честно говоря, слабо заметен. Разве что четкость картинки неведомым образом улучшилась. И главное меню стало тормозить.
Для нормального эффекта надо бы все текстуры перерисовать, а то они мало того что маленькие, так и большинство - 8-битные.
>Вот собраться бы, да свести свои усилия воедино...
Вот исходники моей модификации, если интересно. http://www.gamedev.ru/download/?id=5813
Было бы неплохо сделать частицы переменного размера. Например, для мух - поменьше, для взрывов - побольше.

PS. Пытался слить на твой FTP - не пускает :(

BondersanУчастникwww11 мар. 201813:37#19
Проверка
nesПостоялецwww11 мар. 201813:44#20
*Место для вашей рекламы*
barnesПостоялецwww11 мар. 201815:50#21
Изображение
ChebПостоялецwww11 мар. 201820:40#22
Благодарю за разлочивание темы, наконец-то смог поправить ссылку на страницу проекта (была перенесена на домен в зоне .com ).

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

nesПостоялецwww11 мар. 201820:51#23
Cheb
>в глубокой... кхм... заморозке.
То что ты, автор темы, еще не в замарозке - радует.
Редко тут встретишь тему 10 летней давности с рабочими ссылками )
barnesПостоялецwww11 мар. 201821:01#24
Мда, читать код ку2 на турбо делфи.... О бедные мои глаза!))
ChebПостоялецwww11 мар. 201821:24#25
>То что ты, автор темы, еще не в замарозке - радует.
Ага, я просто так пахну :D
Вся жизнь - какой-то день сурка, как раз в те годы всерьёз взялся за свой игровой движок, в котором оставалось допилов месяца на три-четыре.
..всё ещё не допилил.

>О бедные мои глаза!
Изображение

З.Ы. Починил ссылку на полные исходники, http://chebmaster.com/_share/_001/_003/q_fclift_src/q_fclift_src.tgz (1.9М)
А то на страничке проекта только дельта (файлы, отличающиеся от проекта Quake 2 Delphi - а где его теперь скачаешь, сайт заменили на Quake 3 Delphi прежде, чем проект здох)

ChebПостоялецwww12 мар. 20180:19#26
Алсо, в закромах родины наткнулся на невыложенные скриншоты:

Изображение Изображение
..и на этом заканчиваем некромантию.

g-contПостоялецwww21 мар. 201814:41#27
Так в чём там была главная фишка? Рескейл через Lanczos? И ради этого стоило всё переписывать на Delphi?
DeamonПостоялецwww21 мар. 201815:10#28
g-cont
15 лет назад было модно перепедаливать исходники на Delphi. Фишка заключалась в том, что Delphi программистам было лень изучать C++.
И вместо того, чтобы как белому программисту педалить на C++, много народа занималось перепедаливанием исходников с С++ на Delphi. Мол, посмотрите, Delphi - ничем не хуже С++
barnesПостоялецwww21 мар. 201815:35#29
Но ку2 это чистый Си. Это в SiN гейм логику на С++ переписывати. А в ку2 иксов нет.
Страницы: 1 2 3 Следующая »

/ Форум / Программирование игр / Графика

2001—2018 © GameDev.ru — Разработка игр