Byurrer, попиксельно формирую буффер и его вывожу на экран. На самом деле буфферов несколько будет, они будут склеиваться в один (для минимизации лишних расчетов). Никаких функций ядра...
Byurrer, пора обновить винрар)) Или использовать 7-zip. В будущем буду выкладывать в архивах zip, чтобы не было таких оказий...
ЦитатаByurrer ()
Что используешь для программного рендера (как-то библиотека)?
Нет, только свои мозги. Оптимизировал алгоритмы, активно использую битовые операции, заменил все повторяющиеся операции деления на умножение, сократил количество побочных переменных и вызовов функций. Узнал много нового (например, double работает быстрее на 64-битных процессорах даже если приложение 32-битное, инлайновые функции могут тормозить программу и т.д.). Сейчас попробую заменить числа с плавающей точкой на фиксированную - должно дать прирост на слабых/старых процессорах. Далее на повестке многопоточность через thread pool. Всё-таки главная проблема - быстрый рендеринг. Редактор это уже фигня.
Сообщение отредактировал Vuvk - Пятница, 08 Сентября 2017, 08:47
Я насчитал только три... В любом случае пользователи получат готовые исполняемые файлы, так что на чем оно написано - моя головная боль. Как я вижу процесс использования конструктора : 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
Всем привет! Решил создать отдельную тему, т.к. разработка начала активно вестись после обсуждения в этой теме. Итак, что же это такое? 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 (обновляю довольно часто).
Что готово сейчас: [2017-09-07] + рендеринг мира из кубов аля Wolf3D, но с полом/потолком, дырами в потолке/полу, отображение неба; + разные плитки для пола/потолка; + лютые оптимизации рендеринга, потратил на это несколько дней, выжимая FPS по единичке. Думаю, что всё равно есть над чем поработать; + туман; + ускорение рендеринга потоками из стандарта C11 (библиотека tinycthread); + управление качеством картинки "на лету"; + текстуры 128х128 (можно и больше, но зачем?);
Скриншоты
Тестовые билды: v007 Win32 Описание В архиве несколько раннеров: rgm_one_thread_double - однопоточный рендеринг, плавающая точка rgm_one_thread_fixed - однопоточный рендеринг, фиксированная точка с потоками rgm_c11_threads_double - 4 потока, плав.точка rgm_c11_threads_fixed_4thrd - 4 потока, фикс.точка rgm_c11_threads_fixed_8thrd - 8 потоков, фикс.точка
v006 Win32 v006 Linux x64 (однако поведение странное. Надо и над этим поработать) Описание Более-менее стабильная и быстрая работа рендера. В архиве несколько экспериментальных "раннеров". full_screen.bat - запуск в полноэкранном режиме
Горячие кнопки: F - включить/выключить туман G - включить/выключить "красивое" небо H - включить/выключить рисование потолка J - включить/выключить рисование пола "-" - уменьшить детализацию "+" - увеличить детализацию
Очень интересны результаты тестов пользователями - какой FPS выдает раннер и на каком железе. Можно здесь, можно в личку.
Всем спасибо за внимание!
Сообщение отредактировал Vuvk - Пятница, 09 Ноября 2018, 08:19
Накидал тут тест разных плиток для пола/потолка и дыр, где будет рисоваться открытое небо: видео И ссылка, чтобы пощупать
Цитата
Сможешь ли довести до итога.
Это самое интересное. Но на удивление мне кажется, что эта поделка перспективней, чем мой олдскульный движок аля idTech2.
Цитата
Ещё под широкие разрешения бы.
Это вообще не проблема. Хоть сейчас могу сделать! Вот только рендеринг программный и чем шире полотно, тем быстрее падает фпс в геометрической прогрессии. Сначала нужны лютые оптимизации.
salewa, спасибо за фидбэк и тем более за видео. Вижу, что надо стремиться повышать FPS (хоть 30 это не мало, но чем больше, тем лучше конечно же).
Цитата
один раз лагнула на 2 секунды
Да, лагает в основном, если смотреть впритык в стену или под ноги/в потолок. Ещё буду над этим работать. В будущем.
Цитатаbodya_WM ()
Но если у тебя там 3D кубы то это уже не рейкастинг.
В том и дело, что у меня всё по-честному. Я про то и говорю, что если рендерить кубы в OpenGL, то это всё будет гораздо шустрее.
Сообщение отредактировал Vuvk - Вторник, 05 Сентября 2017, 18:08
Так как тема вызвала некоторый интерес как здесь, так и за пределами форума, то я решил накидать демку с базовым рендерингом стен и пола/потолка. Прикладываю демки для скачивания и аппробации всеми желающими! Скачать В архиве несколько вариантов. Если кто-то будет смотреть, то отпишитесь какой у вас FPS. Это честный программный рендеринг технологией "рейкастинг". Для запуска с аппаратной поддержкой ожидается ключ "-accelerated" (однако скорее всего это особо ничего не даст). Для небольшого смазывания ключ "-HQ". Можете попробовать запускать high_quality.bat.
Базовая версия rgm.exe
Версия со смешным багом, который стал фичей - блестящий пол с отражением. rgm_reflection.exe
Только стены. Самый быстрый рендер rgm_classic.exe
Оптимизировал, как бог мог. В голову приходит только попробовать использовать целочисленную математику (цисла с фиксированной запятой), что может не дать особого прироста к производительности. А также разделить пускание лучей на потоки. Буду ещё экспериментировать.
Сообщение отредактировал Vuvk - Вторник, 05 Сентября 2017, 14:29
Psycho, я очень трепетно отношусь к программному рендерингу, но в этом движке решил акцентировать внимание только на OpenGL. Да и необходимых познаний в АСМ у меня нет. Когда будет готов основной функционал, то буду изучать шейдеры и накручивать графоний, но до этого, как до луны. Амбициозная цель движка - запустить сингл оригинальной игры Quake2
Разрабатываю движок с олдскул-рендером на OpenGL 2.0 и чистом Си, который должен поддерживать все форматы idTech2 + некоторые современные. bodhi Game Engine (дневник разработки). На неделе: самописная загрузка текстур формата wal
загрузка и обработка текстур через библиотеки DevIL ИЛИ SDL2_image (по желанию программиста... меня)
самописный блюр текстур с настраиваемой интенсивностью
и самое главное - обработка BSP дерева и рендеринг карты (пока что без лайтмап и всего сопутствующего)
Лично мне минималистичный герой первый слева больше всех нравится. Фон немного не вяжется, особенно наличие размытия. Вспомнился почему-то Flashback от Delphine Software.
Но... ведь... по нынешним правилам тогда нужно банить flatingo, как дабл акк? Впрочем, это уже не моё дело. Я сливаюсь, пока не поздно.
2.1.13 Создание более одного аккаунта. Все повторные аккаунты блокируются навсегда, при обнаружении повторных аккаунтов, за каждый из них, основной блокируется на 14 дней.
Цитата
дык это же First со своей кралей?
Сначала не поверил. Да и канал удален. Но картинки сохранились! Точно ведь он!
Сообщение отредактировал Vuvk - Среда, 16 Августа 2017, 08:50