Cheb's Game Engine

Планы, идеология, архитектура и т.п.

Модератор: Модераторы

Re: Cheb's Game Engine

Сообщение Alex2013 » 10.10.2019 01:29:31

Кстати как насчет "пришельцев с планеты Вулкан"?
https://github.com/BeRo1985/pasvulkan
(Чем хороша конкретно эта библиотека так это нативной поддержкой Лазаруса )
Зы
Лично я пока буду "пытать" вот это модуль ("напрасно эти пришельцы высадились на моем кукурузном поле"... 8) )
PasVulkan.VirtualReality.OpenVR.pas
Alex2013
долгожитель
 
Сообщения: 1586
Зарегистрирован: 03.04.2013 11:59:44

Re: Cheb's Game Engine

Сообщение Cheb » 21.10.2019 11:19:43

Как рыбе зонтик.
У меня обращение к графическому API размазано между exe и dll - т.е. открывает и инициализирует - екзешник, а использует - дллка. Откуда *любые* библиотеки приходится модифицировать под себя, добавляя поддержку этого расщепления. В частности, длл-ка инициализирует у себя процедурные переменные функций огла, запрашивая их у екзешника, а не как это обычно делают.

Любое ООП-решение при этом.... Стоит так дорого, что нуегонафиг.
См. как я сделал поддержку обращения из DLL к потокам, создаваемым в екзешнике. Это двойной враппер, объект екзешника трактуется, как непрозрачный хендл, инкапсулированный внутри класса-потока длл, методы которого обращаются к функциям АПИ интерфейса, а те, на стороне екзешника, обращаются к методам класса, тайпкастя хендл обратно в TStream.
Ну, простенький, урезанный TStream я потянул. Вулкановраппер? Даже не смешно.

Кстати, мой проект заморожен до ~декабря.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 761
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение Alex2013 » 21.10.2019 12:42:03

В общем понятно ... Как я понял уровень логики обращения с АПИ позволяет тебе "ассимилировать" любой движок напрямую .
Завидовать нехорошо, но есть чему ! А то у меня вот с OpenVR "затык" образовался сижу и туплю... А все потому что там в DLL засунуты си-шные КЛАССЫ ... Нет что сними делать я в целом понял в "обертке" юзают хак с record вместо класса
Код: Выделить всё
  PVR_IVRSystem_FnTable=^TVR_IVRSystem_FnTable;
     TVR_IVRSystem_FnTable=record
      GetRecommendedRenderTargetSize:procedure(pnWidth:PpovrUInt32;pnHeight:PpovrUInt32); stdcall;
   ...

Но как - Черт подери! - все это соотносить с сишными примерами? Был бы хоть один крохотный, но рабочий пример на паскале но его нет ! :evil: (Вот в "обертке" к OpenCV с этим все в порядке, а тут конструктор "догадайся сам" ! )
Alex2013
долгожитель
 
Сообщения: 1586
Зарегистрирован: 03.04.2013 11:59:44

Re: Cheb's Game Engine

Сообщение Cheb » 04.11.2019 17:49:04

Куча дел, которые надо переделать до отлёта в отпуск. Лишь изредка прикладываюсь к Чентре, допиливая тут и там. До компилироемости ещё семь вёрст лесом.

Поскольку планируется хранить ссылки на объекты в ускоренных полях, которые бывают только 32-битные...
Код: Выделить всё
  {$ifdef cpu64}
    function UnpackDwordToChepersyObjectReference (d: dword): TChepersyObject; inline;
    var chunk: TChepersyMemoryManagerChunk;
    begin
      if d = 0 then Result:= nil
      else begin
        chunk:= CpsMemoryManager.GetChunkByIndex(d shr 16);
        Assert(Assigned(chunk), 'Failed to unpack a dword to an object reference: no such memory manager chunk!');
        Result:= TChepersyObject(pointer(qword(
          qword(pointer(chunk)) + qword(d and $0000ffff) shl CpsMMAllocGranPoT
        )))
      end;
    end;
    function PackChepersyObjectReferenceToDword (o: TChepersyObject): dword; inline;
    var chunk: TChepersyMemoryManagerChunk;
    begin
      if not Assigned(o) then Result:= 0
      else begin
        chunk:= o.GetMemoryManagerChunk;
        Result:= (dword(chunk.MMIndex) shl 16) or (dword(qword(pointer(o)) - qword(pointer(chunk))) shr CpsMMAllocGranPoT);
      end;
    end;
  {$else cpu64}
    // dumb type-casts on the 32-bit platforms
    function UnpackDwordToChepersyObjectReference (d: dword): TChepersyObject; inline;
    begin
      Result:= TChepsersyObject(pointer(d));
    end;
    function PackChepersyObjectReferenceToDword (o: TChepersyObject): dword; inline;
    begin
      Result:= dword(pointer(o));
    end;
  {$endif cpu64} 


P.S. У меня нехорошее предчувствие, что доделывать проект буду уже на пенсии, до которой - !внезапно! - осталось меньше, чем я уже пилю свой движок :( :( :( :(
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 761
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение Alex2013 » 05.11.2019 00:15:35

Cheb писал(а):P.S. У меня нехорошее предчувствие, что доделывать проект буду уже на пенсии, до которой - !внезапно! - осталось меньше, чем я уже пилю свой движок

ИМХО Думаю нужно бетки выкладывать (приделав более менее удобный редактор сюжетов персонажей и т.п. ) просто мобилизует неплохо ... Я катати именно поэтому стараюсь СРАЗУ выкладывать почти все что могу выложить в открытый доступ из своих "исследовательских проектов" (Извини я вроде уже писал что-то похожее ) Но мой текущий "долгострой" на тему ДР-интерфейса в более чем два года определенно был бы еще более медленным если бы я не выкладывал его "на потеху" отчасти воображаемой публики .
Последний раз редактировалось Alex2013 05.11.2019 11:59:15, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 1586
Зарегистрирован: 03.04.2013 11:59:44

Re: Cheb's Game Engine

Сообщение Cheb » 05.11.2019 05:32:26

если бы я не выкладывал его "на потеху" отчасти воображаемой публики

Идея правильная, вот только выкладывать нечего.
Настолько в переработке, что даже ещё не компилируется. И до компилируемости - семь вёрст лесом.
Перерабатываемые механизмы:
-- менеджер памяти и его механизм ускоренных полей - дохрена и больше создаётся с нуля. Сваял пока ~60%.
-- обходчики, поддерживающие вложенность, вместо набора функций обхода. И методов класса логики, занимавшихся сохранением и загрузкой (дополнительная логика). И механизма сдачи классов ресурсов на хранение матке. Причём, "текущий поток" (ранее - глобальная переменная) перемещается внутрь класса обходчика. Откуда, надо перабатывать класс "заголовок потока" который раньше лазил к этим потокам напрямую.
-- механизм индекса обхода в экземплярах классов удаляется и заменяется на обращение к ускоренным полям (номер поля диктуется глубиной обходчика в ихней сраной матрёшке). Причём, это потянулро за собой переделку, опять же, механизмов сериализации, от этого индекса зависевших чуть менее, чем полностью.

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

Сроки - декабрь (оптимистично) / февраль (реалистично).

В прочем на текущий момент тема[...]

Пожалуйста, прекращай рекламировать свой проект в моей ветке. Обрати внимание, что я не лезу в твою тему, изображая в каждой бочке затычку и в каждом своём посте упоминая Чентру.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 761
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение Alex2013 » 05.11.2019 12:38:37

Cheb писал(а):Пожалуйста, прекращай рекламировать свой проект в моей ветке. Обрати внимание, что я не лезу в твою тему, изображая в каждой бочке затычку и в каждом своём посте упоминая Чентру.

Извини, прямую "рекламу" убрал .
Но это случайно (чем голова забита о том и пишу) . К слову по количеству читателей твоя ветка значительно обходит мою.(я уж молчу том что все мои проекты полнейшие "младенца" по сравнению с Чентру... и по времени разработки, и по размаху, и (что особенно печально ) по уровню программирования ) :idea:

Cheb писал(а):И вот когда всё это допилю и отлажу - настанет время доделывать брошенный посреди аналогичного перепахивания механизм гуя. И только когда я покончу с тем - выйдет очередной тест, достойный конкурса на геймдев.ру 2017, кажется, года, к которому я тогда не успел.

Сроки - декабрь (оптимистично) / февраль (реалистично).

Уря! Я "верю город будет..." и т. п. Реально интересно посмотреть на самый "великий и ужасный проект форума" и я не иронизирую (ну рзаве что чуть чуть ... :wink: и то скорее от зависти ... :roll: )
Alex2013
долгожитель
 
Сообщения: 1586
Зарегистрирован: 03.04.2013 11:59:44

Re: Cheb's Game Engine

Сообщение Cheb » 05.11.2019 12:54:43

и (что особенно печально ) по уровню программирования )

Только суровый кач, только хардкор. Всё достижимо, если приложить нездоровое количество усердия!

..
"великий и ужасный проект форума"

Эх, если б он ещё двигался со скоростью, этому гордому званию подобающей :(
В 2010 году должен был быть готов, в крайнем случае - в 2012-м.
Мною движет, в том числе, тот прескорбный факт, что на Паскале нет выдающихся игровых движков. Какие-то есть, да, но не хватает чего-то яркого, самобытного.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 761
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение скалогрыз » 05.11.2019 17:55:29

Cheb писал(а):Мною движет, в том числе, тот прескорбный факт, что на Паскале нет выдающихся игровых движков. Какие-то есть, да, но не хватает чего-то яркого, самобытного.

Яркость и самобытность это пиар, не более. Ты же можешь (при желании) свой движок точно так же распиарить, и он станет ярким!
Но в пиар нужно вкладывать деньги... (желательно, чтобы источником стал либо сам движок, либо его продукты...)
скалогрыз
долгожитель
 
Сообщения: 1694
Зарегистрирован: 03.09.2008 02:36:48

Re: Cheb's Game Engine

Сообщение Cheb » 05.11.2019 22:48:12

Яркость и самобытность это пиар, не более.

В данном случае - не совсем. Мгновенноперезапускаемость - очень нехилый способ ускорения разработки, который даже скриптовые механизмы не могут. А тут - никакого геморроя с сопряжением, вся логика на Паскале!
Архитектура заточенная под работу на говне мамонта - это два, этого тоже практически ни у кого нет. В смысле, есть - но не умеют асштабируемость.
Мультиплеер, легко расширяемый до MMO, с объёмом разрушений ландшафта, не ограниченным сетевым трафиком - ещё одна киллер-фича.
Ну, и по мелочи идей, натянутых у Unreal Engine 2 и прочих современных технологий.

Ты же можешь (при желании) свой движок точно так же распиарить, и он станет ярким!

Я придерживаюсь точно такого же мнения. Когда он таки будет - начну пиарить агрессивно и много. gamedev.ru, pascalgamedevelopment.com и прочая.
Но пока его пока нет, поминать всуе - зряшный расход хайпа.
Я даже сайт движка пока почти не упоминал, хотя он давно есть: http://chentrah.chebmaster.com . Надысь обновил инфу по разделам. В частности, почему мне не нужно пилить поддержку Direct3d и Vulkan: для этого есть ANGLE и GLOVE соответственно.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 761
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение скалогрыз » 05.11.2019 23:15:30

Cheb писал(а):Архитектура заточенная под работу на говне мамонта - это два, этого тоже практически ни у кого нет

которая нужна кому? только тебе?
я раньше так же думал, что "о как круто - RichMemo может работать под Win9x..." и что?!
Поддержку Win9x выпилили из FPC раньше, чем хоть кто-либо попробовал RichMemo под этот самый 9х...
ориентироваться на старое железо, можно, но реальной выгоды от этого не будет.

Cheb писал(а):Мультиплеер, легко расширяемый до MMO, с объёмом разрушений ландшафта, не ограниченным сетевым трафиком - ещё одна киллер-фича.

это всё на практике уже работает? и тестировалась на 10K клиентов? или просто в проекте?

Cheb писал(а):натянутых у Unreal Engine 2 и прочих современных технологий.

UE2 ... 10 лет назад... современных?
Originally, I was planning to create a killer of TES III: Morrowind but the competition cowardly fled into the mists of time. Bah. No matter. I will push forward!

в пору убивать какую-нить очереду call of duty....

Cheb писал(а):pascalgamedevelopment.com

а он ещё жив оказывется?! О_о

Cheb писал(а):Я даже сайт движка пока почти не упоминал, хотя он давно есть: http://chentrah.chebmaster.com

у тебя нет очень важной части для выживания (как проекета) - у тебя нет общества (комьюнити)
оно есть у Castle Engine, оно была у ZenGL, и тебе, как здоровому проекту, нужно.

может быть и хочеться в соло отыграть, как тот же Brutal Doom, но продукт не тот.
ты же делаешь движок, а не конечную игру.
Конечной игрой пользуется ровно один слой пользователей - игроки.
А движком пользуются два слоя - разработчики (то самое общество), а за ними игроки (которые будут подпитывать членов общества движка).
скалогрыз
долгожитель
 
Сообщения: 1694
Зарегистрирован: 03.09.2008 02:36:48

Re: Cheb's Game Engine

Сообщение Alex2013 » 06.11.2019 05:08:36

Кстати насчет "самобытного движка" я тут на днях копнул TERRA-Engine (Что хорошего ? Мульти платформенность и поддержка Лазаруса. Задуман явно как "Зверь Машина" с не чахлым размахом даже поддержка ВиАр есть (OpenVR на уровне абстракции а вот поддержка SDK OCULUS похоже была доведена до практики )
https://github.com/Relfos/TERRA-Engine
К сожалению проект уже года три как заброшен и текущая версия чуть отличается от той где сбирали примеры для SDK OCULUS . (Раз уж я сподобился поставить Revive (это враппер-эмулятор для использования библиотек OCULUS на "более другой оснастке" вроде моего WMR ) то подумал что встроенная поддержка лазаруса решит мои проблемы лучше чем Oculus SDK wrapper for Delph но пока что кроме головной боли ничего запустить не получилось )
Alex2013
долгожитель
 
Сообщения: 1586
Зарегистрирован: 03.04.2013 11:59:44

Re: Cheb's Game Engine

Сообщение Cheb » 06.11.2019 13:43:29

у тебя нет общества (комьюнити)

Just as planned. Я тормоз, а любое коммьюнити быстро устаёт ждать. Вот когда будет играбельная техно-демка...

но пока что кроме головной боли ничего запустить не получилось

Ну, это вечная проблема из-за которой многие (включая меня) выбирают неправильный путь "лучше уж я всё сам".

TERRA-Engine

Что ж они забросили-то?.. Сколько сил вложено! Мне до подобной завершённости семь вёрст лесом.
Жаль, сканнибалить ничего не удастся: не GPL.
В декабре найду время, полистаю исходники, посмотрю, что там и как сделано.

UE2 ... 10 лет назад... современных?

Не имелся в виду рендер. Хотя... Тот же DRR, задуманный мной году ещё в 2008-м и имплементированный в 2014-м - его ныне, насколько мне известно, используют только Rage и Dishonored 2, хотя киллер-фича - мощнейшая.

а он ещё жив оказывется?! О_о

Эээ, он просто так пахнет, вот! :oops:

это всё на практике уже работает? и тестировалась на 10K клиентов? или просто в проекте?

Пока в теории, но все остальные теории, мной в проект вложенные и протестированные, выстрелили на ура.
Так что да, имею основание считать, что и эта сработает отлично.

которая нужна кому? только тебе?
я раньше так же думал, что "о как круто - RichMemo может работать под Win9x..." и что?!
Поддержку Win9x выпилили из FPC раньше, чем хоть кто-либо попробовал RichMemo под этот самый 9х...
ориентироваться на старое железо, можно, но реальной выгоды от этого не будет.

Во первых, win9x я у себя тоже выпилил, переориентировавшись как на минимум на офисный гробик середины 2000-х с младшим Core2 Duo и WinXP. То есть, не будет поддержки Gf FX 5200, на которой у меня, в своё время, люто тормозил Oblivion: эта собака не поддерживает NPOT текстуры.

Во вторых, просто выражаю чувства всех, кого уже подзалюбила бесконечная гонка апгрейдов. Красивую графику возможность создавать появилась начиная с железа класса DirectX 9 - надо только, чтобы руки росли, откуда следует.
И хочется творить по принципу "Системные требования? Какие системные требования?"
В качестве хорошего примера современной игры с красивой графикой, исповедующей тот же принцип, могу привести Spintires Mudrunner, которая отлично идёт на моём древнем ноутбуке, на котором подтормаживает Open Arena и откровенно тормозит первый Neverwinter. А в Mudrunner'е, минуточку, огромный открытый мир с физикой.

Если честно, моя нынешняя игровая машина - это купленный в 2011-м середнячок, к которому приторочена GTX 1060 3Gb, словно колёса от монстр-трака к "запорожцу". Почему?.. Потому что вместо бесконечных апгрейдов я открыл для себя мир отпуска на Карибах. Какая там атфмосфера! А какие там громкие птички, ещё Флеммингом живописанные!.. Вот на что все деньги жертвовать надо. А очереедная железка - как нибудь образуется.
Так что, занимаюсь минмаксингом по жизни, и компьютеры попали таки в "мин".

З.Ы. Для меня "10 лет назад" - и есть современные технологии. Ибо с тех пор в играх одна стагнация да рост никому не нужной фотореалистичности. А всё новое и интересное придумано уже тогда.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 761
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение скалогрыз » 06.11.2019 23:52:58

Cheb писал(а):Я тормоз, а любое коммьюнити быстро устаёт ждать

если бы было сообщество разработчиков, но ты бы скорее закончил бы духновым лидером.
этакий Аятолла Cheb-ийни, или Линус Торвальдс.

Ну т.е. ты только направляешь ход разработки, и выступаешь арбитром в спорных вопросах.
А комьюнити делает всю грязную работу!
скалогрыз
долгожитель
 
Сообщения: 1694
Зарегистрирован: 03.09.2008 02:36:48

Re: Cheb's Game Engine

Сообщение Cheb » 07.11.2019 13:09:42

Всё не начнёт иметь смысла, пока не будет закончен, образно говоря, киль корабля. Пока объектная система не оформилась окончательно - строить что-то сверху было бессмыссленно. Признаю, меня надолго сбила с курса попытка приспособиться к многоядерным процессорам - и я всё развалил, пытаясь распараллелить изначально строго однопоточную систему.

Совсем даром это не было: я таки разнёс рендер и логику на отдельные потоки. Отдельное ядро для логики - это мощно. Но я, увы, на этом не остановился, как следовало, а пытался распараллеливать дальше - что было ошибкой. На тех уровнях оптимизации, что доступны при моём уровне умения, быстродействие упирается в память. Особенно когда это - минимально заявленная DDR2 (PC2-4266).

Сейчас собираю обратно в уже однозначно, без всяких сомнений, окончательном виде. Параллельно с финальным рефакторингом - ибо то, что выйдет - уже однозначно навсегда. Вот в декабре взлетит - и будем посмотреть.

P.S. Кстати, память на моём любимом ноуте, самоом быстром из моих компов, недалеко ушла: PC3-10600.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 761
Зарегистрирован: 06.06.2005 15:54:34

Пред.След.

Вернуться в Разработки на нашем сайте

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 0

Рейтинг@Mail.ru