Понедельник, 09 Ноября 2026, 04:00

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
VuvkДата: Суббота, 09 Сентября 2017, 13:30 | Сообщение # 61 | Тема: Nuke3D - Конструктор олдскульных FPS
заслуженный участник
Сейчас нет на сайте
Подкинул тестовый билд v007 под Win32. Ссылка в шапке. Туда-сюда перестану выкладывать промежуточные итоги. Сейчас я делаю это в надежде на тестирование желающими, которые отпишутся мне о FPS и их машине.
Уже сейчас в голове есть соображения, как я могу сделать быстрое "освещение" секторов. Оно будет "квадратное", но думаю, что в тему. Также есть идейка добавить анимированные текстуры для карты.

bodya_WM, facepalm blahblah


Сообщение отредактировал Vuvk - Суббота, 09 Сентября 2017, 20:35
VuvkДата: Суббота, 09 Сентября 2017, 12:54 | Сообщение # 62 | Тема: Nuke3D - Конструктор олдскульных FPS
заслуженный участник
Сейчас нет на сайте
Цитата Byurrer ()
Еще интересно почему именно программный рендер? Почему не хочешь сосредоточится именно на игровой составляющей и использовать аппаратные возможности рендера? Это же ускорило бы релиз, не?

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

Цитата bodya_WM ()
Vuvk не осилил GUI на C, поэтому решил формошлепать его на FPC.

Йее, шуточки за 300 подъехали. Кто-то вообще даже смысл рейкаста не осилил ;)

По таким мелким вопросам можете в ЛС писать. Не хочется тему засорять.

Добавлено (09 сентября 2017, 12:54)
---------------------------------------------
+ Изменение качества картинки на лету поправлено. Теперь больше похоже на правду.
+ Исправлен тайминг - отныне игра идет с одинаковой скоростью на Win и Lin.
+ Некоторые повторяющиеся расчеты вынесены в таблицу, которая формируется при старте. Прирост ~5%.
+ Частично перенесены расчеты вещественных чисел с плавающей точки на фиксированную с помощью библиотеки libfixmath. В однопоточном рендеринге прирост ~10%. Результат будет разниться от машины.
Почему частично:
1. неизбежны потери из-за погрешностей. В оригинале с разрешением 320х200 это бы прокатило. Но не здесь...
2. в некоторых местах конверсия из одного вида числа в другое медленнее, чем расчет напрямую.

Заметил несколько интересных фактов:
1. антивирус Касперского очень сильно просаживает фпс
2. на Linux FPS примерно вдвое выше (даже в однопоточном режиме), чем на Windows. Одна и та же машина, один и тот же код, а результат разный в зависимости от ОСи.
3. режим "-accelerated" (вывод через OpenGL сформированного буффера) иногда неплохо добавляет производительности - зависит опять же от машины и от ОСи.

Остаётся попробовать thread pool (например, адаптировать этот - A simple C thread pool). Если и это не даст особого прироста, то стоит задуматься... Может схитрить и сделать портальный рендеринг вместо рейкастинга... или вообще отказаться от программного рендеринга и на OpenGL слепить... слишком просто ))

Результат проведенных махинаций:


Сообщение отредактировал Vuvk - Суббота, 09 Сентября 2017, 20:53
VuvkДата: Пятница, 08 Сентября 2017, 13:28 | Сообщение # 63 | Тема: Nuke3D - Конструктор олдскульных FPS
заслуженный участник
Сейчас нет на сайте
Byurrer, по умолчанию блиттинг, в SDL2 создается рендерер с флагом SDL_RENDERER_SOFTWARE. При запуске с ключом "-accelerated" создается SDL2-рендерер с флагом SDL_RENDERER_ACCELERATED ("the renderer uses hardware acceleration"). Подозреваю, что во втором случае рисуется через OpenGL, но в исходники sdl лезть неохота. Да и если это так, то просто рисуется полигон с формируемой на лету текстурой. Профита почти никакого (+ 1-3 FPS).

Сообщение отредактировал Vuvk - Пятница, 08 Сентября 2017, 13:28
VuvkДата: Пятница, 08 Сентября 2017, 11:15 | Сообщение # 64 | Тема: Nuke3D - Конструктор олдскульных FPS
заслуженный участник
Сейчас нет на сайте
Byurrer, попиксельно формирую буффер и его вывожу на экран. На самом деле буфферов несколько будет, они будут склеиваться в один (для минимизации лишних расчетов). Никаких функций ядра...
VuvkДата: Пятница, 08 Сентября 2017, 08:22 | Сообщение # 65 | Тема: Nuke3D - Конструктор олдскульных FPS
заслуженный участник
Сейчас нет на сайте
Byurrer, пора обновить винрар)) Или использовать 7-zip.
В будущем буду выкладывать в архивах zip, чтобы не было таких оказий...
Цитата Byurrer ()
Что используешь для программного рендера (как-то библиотека)?

Нет, только свои мозги. Оптимизировал алгоритмы, активно использую битовые операции, заменил все повторяющиеся операции деления на умножение, сократил количество побочных переменных и вызовов функций. Узнал много нового (например, double работает быстрее на 64-битных процессорах даже если приложение 32-битное, инлайновые функции могут тормозить программу и т.д.). Сейчас попробую заменить числа с плавающей точкой на фиксированную - должно дать прирост на слабых/старых процессорах. Далее на повестке многопоточность через thread pool.
Всё-таки главная проблема - быстрый рендеринг. Редактор это уже фигня.


Сообщение отредактировал Vuvk - Пятница, 08 Сентября 2017, 08:47
VuvkДата: Пятница, 08 Сентября 2017, 05:58 | Сообщение # 66 | Тема: Nuke3D - Конструктор олдскульных FPS
заслуженный участник
Сейчас нет на сайте
Цитата GWÁLÐ ()
Просто у вас получается будет уже 4 языка? :)

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

По поводу разных языков. Оба языка я активно использую ежедневно, так что для меня ничего нового. Я мог бы всё написать на FreePascal, но FPC выдаёт чуть более медленный код, чем GCC, а для программного рендеринга это непростительная роскошь. Я мог бы написать всё на Си + какой-нибудь GTK, но тогда пользователям Windows нужно будет устанавливать что-то лишнее (среду GTK). Win API? Но для других осей его нет)) Поэтому я решил писать среду исполнения на Си для максимального быстродействия, а для кросс-платформенного "формошлёпства" использовать Lazarus (IDE для FPC + LCL).
Также я использую заведомо кросс-платформенные библиотеки, чтобы это всё работало на разных ОС без плясок с бубном или варганом.

Благодарю за проявленный интерес, комментарии и за ободрение:
Цитата GWÁLÐ ()
в Steam можно продать все что угодно


Сообщение отредактировал Vuvk - Пятница, 08 Сентября 2017, 06:04
VuvkДата: Четверг, 07 Сентября 2017, 19:11 | Сообщение # 67 | Тема: Nuke3D - Конструктор олдскульных FPS
заслуженный участник
Сейчас нет на сайте
Всем привет! Решил создать отдельную тему, т.к. разработка начала активно вестись после обсуждения в этой теме.
Итак, что же это такое?
Nuke3D - конструктор олдскульных игр жанра FPS
Жанровая направленность: FPS, Action
GAPI: OpenGL, DirectX, Software Rendering (Burning's Video)
Язык программирования: C++ для "запускатора", ObjectPascal/FreePascal для редактора карт и ресурсов, JavaScript для скриптовой части
Двигатель: в раннере используется WorldSim3D
Платформы: Linux, Windows, гипотетически MacOS
Лицензия: коммерческая, проприетарная?

Планируемые (реализованные) отличия от оригинала (RGM?):
- три типа рендеринга;
- поддержка современных разрешений экрана;
- текстуры более высокого разрешения (ограничено искусственно);
- гипотетическая возможность добавления бесконечного количества текстур, спрайтов, кадров анимации;
- настраиваемые коллизии;
- масштабирование спрайтов;
- скайбоксы и их предпросмотр прямо в редакторе;
- послойное рисование полов, стен, потолков;
- поддержка множества форматов текстур: jpg, jp2000, bmp, png, tiff, tga и проч.
- автоматическая подгонка редактором загружаемых текстур под размеры и необходимый движку формат;
- управление количеством карт и скайбоксов;
- удобный редактор, включающий в себя редактор ресурсов, карт, IDE для написания скриптов;
- скриптовый язык программирования для управления логикой игры.

За прогрессом разработки вы можете следить здесь (обновляю редко) или в моем дневнике на ВКонтакте - Antoshka's Diary (обновляю довольно часто).



Всем спасибо за внимание!


Сообщение отредактировал Vuvk - Пятница, 09 Ноября 2018, 08:19
VuvkДата: Четверг, 07 Сентября 2017, 10:35 | Сообщение # 68 | Тема: Бэкграунд перекрывает логотип?
заслуженный участник
Сейчас нет на сайте
Цитата useruser ()
у меня используется одна (общая) переменная под спрайт

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


Сообщение отредактировал Vuvk - Четверг, 07 Сентября 2017, 10:36
VuvkДата: Четверг, 07 Сентября 2017, 09:20 | Сообщение # 69 | Тема: Бэкграунд перекрывает логотип?
заслуженный участник
Сейчас нет на сайте
Картинка со справки GM о глубине и очередности отрисовки


help

Но есть подозрение, что ошибка не здесь.
VuvkДата: Вторник, 05 Сентября 2017, 20:18 | Сообщение # 70 | Тема: Raycasting Game Constructor
заслуженный участник
Сейчас нет на сайте
Я теперь в некотором замешательстве )) Всё идёт к тому, что нужно серьёзней отнестись к этой идее.
Всем спасибо за отзывы и обсуждение!
VuvkДата: Вторник, 05 Сентября 2017, 18:00 | Сообщение # 71 | Тема: Raycasting Game Constructor
заслуженный участник
Сейчас нет на сайте
Накидал тут тест разных плиток для пола/потолка и дыр, где будет рисоваться открытое небо:
видео
И ссылка, чтобы пощупать

Цитата
Сможешь ли довести до итога.

Это самое интересное. Но на удивление мне кажется, что эта поделка перспективней, чем мой олдскульный движок аля idTech2.
Цитата
Ещё под широкие разрешения бы.

Это вообще не проблема. Хоть сейчас могу сделать! Вот только рендеринг программный и чем шире полотно, тем быстрее падает фпс в геометрической прогрессии. Сначала нужны лютые оптимизации.

salewa, спасибо за фидбэк и тем более за видео. Вижу, что надо стремиться повышать FPS (хоть 30 это не мало, но чем больше, тем лучше конечно же).
Цитата
один раз лагнула на 2 секунды

Да, лагает в основном, если смотреть впритык в стену или под ноги/в потолок. Ещё буду над этим работать. В будущем.

Цитата bodya_WM ()
Но если у тебя там 3D кубы то это уже не рейкастинг.

В том и дело, что у меня всё по-честному. Я про то и говорю, что если рендерить кубы в OpenGL, то это всё будет гораздо шустрее.


Сообщение отредактировал Vuvk - Вторник, 05 Сентября 2017, 18:08
VuvkДата: Вторник, 05 Сентября 2017, 14:27 | Сообщение # 72 | Тема: Raycasting Game Constructor
заслуженный участник
Сейчас нет на сайте
Цитата bodya_WM ()
В конструкте ... работает крайне медленно.

Чтоб рейкаст работал быстро тоже надо изрядно попотеть. Рендер с аппаратной поддержкой всё равно шустрее.
Цитата bodya_WM ()
скинь сырцы, форкнусь.

Если ничего интересного не получится, то скину.

Это пока всего лишь идея, на которую очень много времени не хочется тратить


Сообщение отредактировал Vuvk - Вторник, 05 Сентября 2017, 14:37
VuvkДата: Вторник, 05 Сентября 2017, 12:06 | Сообщение # 73 | Тема: Raycasting Game Constructor
заслуженный участник
Сейчас нет на сайте
Так как тема вызвала некоторый интерес как здесь, так и за пределами форума, то я решил накидать демку с базовым рендерингом стен и пола/потолка. Прикладываю демки для скачивания и аппробации всеми желающими!
Скачать
В архиве несколько вариантов. Если кто-то будет смотреть, то отпишитесь какой у вас FPS.
Это честный программный рендеринг технологией "рейкастинг". Для запуска с аппаратной поддержкой ожидается ключ "-accelerated" (однако скорее всего это особо ничего не даст). Для небольшого смазывания ключ "-HQ". Можете попробовать запускать high_quality.bat.

Базовая версия
rgm.exe


Версия со смешным багом, который стал фичей - блестящий пол с отражением.
rgm_reflection.exe


Только стены. Самый быстрый рендер
rgm_classic.exe


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


Сообщение отредактировал Vuvk - Вторник, 05 Сентября 2017, 14:29
VuvkДата: Воскресенье, 03 Сентября 2017, 08:59 | Сообщение # 74 | Тема: Суббота скриншотов
заслуженный участник
Сейчас нет на сайте
Byurrer, в оригинальные карты уже зашиты лайтмапы, включая "лайтстили" для динамического освещения. Хочу их использовать.
VuvkДата: Суббота, 02 Сентября 2017, 21:48 | Сообщение # 75 | Тема: Кодинг под NES
заслуженный участник
Сейчас нет на сайте
bodya_WM, подбирал как-то ссылочки себе на будущее. Тоже хочу попробовать когда-нибудь. Мож и тебе пригодится
VuvkДата: Суббота, 02 Сентября 2017, 15:11 | Сообщение # 76 | Тема: Суббота скриншотов
заслуженный участник
Сейчас нет на сайте
Psycho, я очень трепетно отношусь к программному рендерингу, но в этом движке решил акцентировать внимание только на OpenGL. Да и необходимых познаний в АСМ у меня нет.
Когда будет готов основной функционал, то буду изучать шейдеры и накручивать графоний, но до этого, как до луны. Амбициозная цель движка - запустить сингл оригинальной игры Quake2 crazy
VuvkДата: Суббота, 02 Сентября 2017, 12:09 | Сообщение # 77 | Тема: Суббота скриншотов
заслуженный участник
Сейчас нет на сайте
Разрабатываю движок с олдскул-рендером на OpenGL 2.0 и чистом Си, который должен поддерживать все форматы idTech2 + некоторые современные. bodhi Game Engine (дневник разработки).
На неделе:
самописная загрузка текстур формата wal


загрузка и обработка текстур через библиотеки DevIL ИЛИ SDL2_image (по желанию программиста... меня)


самописный блюр текстур с настраиваемой интенсивностью


и самое главное - обработка BSP дерева и рендеринг карты (пока что без лайтмап и всего сопутствующего)


Сообщение отредактировал Vuvk - Суббота, 02 Сентября 2017, 12:12
VuvkДата: Четверг, 31 Августа 2017, 07:52 | Сообщение # 78 | Тема: Майнкрафт
заслуженный участник
Сейчас нет на сайте
Storm54, +
VuvkДата: Вторник, 29 Августа 2017, 13:36 | Сообщение # 79 | Тема: Как собрать ID tech 4 в Visual Studio 2013?
заслуженный участник
Сейчас нет на сайте
1) Visual Studio 2010
2) можно, но все исходники ты обязан предоставить
VuvkДата: Суббота, 26 Августа 2017, 09:59 | Сообщение # 80 | Тема: Прокачиваю PixelArt
заслуженный участник
Сейчас нет на сайте
Поиск:

Все права сохранены. GcUp.io © 2008-2026