Cheb's Game Engine

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

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

Re: Cheb's Game Engine

Сообщение Alex2013 » 09.10.2020 11:39:15

Уря ! Спасибо щаз заценю ! :D
.....
ИзображениеИзображение
....
Стиль 10/10
Технологичность 7/10
Эргономичность 6.5/10
...
Немного "пужает при загрузке " (появляется изображение и сразу на секунду уходит в темноту но возможно это антивирус выпендривается )
(С FPS стабильно 29-30 в пике при резком кручении движка ограничения нагрузки замечал 50 )
LOG/ Памяти у меня 8 гигов интересно почему Чентра находит 4 ?
Впрочем догадываюсь Win32 версия больше не адресует? ...
Код: Выделить всё
Чентра версии 0.21.6081 для Win32-i386,
  откомпилировано 2020/10/08, в 18:39:46, на Free Pascal 3.2.0.
Операционная система: Windows 10
Пользователь: Lexa
ЦП A4-5000 APU with Radeon HD Graphics
  x4 логических ядра
  кэш второго уровня: 2048 Кб, линейка 64 байта
  инвариантность TSC: есть
  частота TSC: 1.46 ГГц.
ОЗУ: 4095 Мб
  4 Гб адресного пространства делятся следующим образом:
    Зарезервировано: 0.09 Гб
    Выделеннная память: 0.04 Гб
    Свободно: 3.87 Гб
Отладочная информаця...
  найдено 61907 элементов и 1209 Кбайт строк Stabs. База 00400000h, база образа 00400000h.
Фреймворк: нативный Windows API
Экранный буфер: 1920x1080,  r8g8b8a8d16s0.
Графический API: OpenGL 2.1
  устройство AMD Radeon HD 8330
  производитель ATI Technologies Inc.
  версия драйвера 4.6.13544 Compatibility Profile Context 25.20.15011.1004
Графический планшет: не найден (не удалось загрузить wintab32.dll - вероятно, драйвер планшета не установлен)
Геймпад:отсутствует (отсутствует, не является Xbox360-совместимым или не на канале №1)
DirectSound 8 initialized.
Приступаю к загрузке модуля №3

[кадр №2, 11:21:18.565, 09.10.2020]
Chentrah game menu showcase 2020 gor GameDev.ru версии 0.21.0263 для Win32-i386,
  откомпилировано 2020/10/08, в 18:39:12, на Free Pascal 3.2.0.
Отладочная информаця...
  найден блок 1893863 байт Dwarf3, база 134A0000h, база образа 10000000h.

[кадр №3, 11:21:18.843, 09.10.2020]
Питание от сети.
Приступаю к загрузке модуля №0

[кадр №11, 11:21:19.018, 09.10.2020]
(поток №0) Создаю сессию с нуля!

[кадр №12, 11:21:19.058, 09.10.2020]
Chentrah hub menu версии 0.00.6081 для Win32-i386,
  откомпилировано 2020/10/08, в 18:39:53, на Free Pascal 3.2.0.
Отладочная информаця...
  найдено 60783 элементов и 1278 Кбайт строк Stabs. База 0E1B0000h, база образа 10000000h.

[кадр №19, 11:21:19.440, 09.10.2020]
(поток №0) Создаю сессию с нуля!

[кадр №109, 11:21:22.526, 09.10.2020]
Переключение из полноэкранного в оконный режим...

[кадр №187, 11:21:25.865, 09.10.2020]
Приступаю к загрузке модуля №3

[кадр №192, 11:21:26.045, 09.10.2020]
Chentrah game menu showcase 2020 gor GameDev.ru версии 0.21.0263 для Win32-i386,
  откомпилировано 2020/10/08, в 18:39:12, на Free Pascal 3.2.0.
Отладочная информаця...
  найден блок 1893863 байт Dwarf3, база 0E1B0000h, база образа 10000000h.

[кадр №198, 11:21:26.388, 09.10.2020]
(поток №0) Создаю сессию с нуля!

[кадр №589, 11:21:38.168, 09.10.2020]
Не удалось воспроизвести звук
  из файла "Exception: Unsupported format: not a 16-bit mono PCM!
  framework_native_sound.inc:22 (TMotherSoundMan.PlayWav)  в chentrah.exe

Стек вызовов:
  framework_native_sound.inc:27 (TMotherSoundMan.PlayWav)  в chentrah.exe
  framework_native.pp:146 (TNativeFramework.PlayWav)  в chentrah.exe
  cl_mother_api.inc:200 (_PlaySound)  в chentrah.exe
  0E1E060Bh в konkurs2020.dll
  0E25421Dh в konkurs2020.dll
  0E23B618h в konkurs2020.dll
  0E243021h в konkurs2020.dll
  0E24B503h в konkurs2020.dll
  0E247338h в konkurs2020.dll
  0E24B503h в konkurs2020.dll
  0E24B503h в konkurs2020.dll
  0E25406Eh в konkurs2020.dll
  0E211BA3h в konkurs2020.dll
  0E21113Fh в konkurs2020.dll
  0E2101D1h в konkurs2020.dll
  0E22CF91h в konkurs2020.dll
  0E21A541h в konkurs2020.dll
  0E1B2C7Fh в konkurs2020.dll
  757E6359h в KERNEL32.DLL
  77647C24h в ntdll.dll"

[кадр №590, 11:21:38.225, 09.10.2020]
Приступаю к загрузке модуля №0

[кадр №592, 11:21:38.237, 09.10.2020]
(поток №0) Создаю папку "F:\Download\chentrah\saves\konkurs2020" ...
(поток №0) Создаю папку "F:\Download\chentrah\saves\konkurs2020\default" ...
(поток №0) Сохранение сессии...Ok

[кадр №593, 11:21:38.270, 09.10.2020]
Chentrah hub menu версии 0.00.6081 для Win32-i386,
  откомпилировано 2020/10/08, в 18:39:53, на Free Pascal 3.2.0.
Отладочная информаця...
  найдено 60783 элементов и 1278 Кбайт строк Stabs. База 0E1B0000h, база образа 10000000h.

[кадр №599, 11:21:38.606, 09.10.2020]
(поток №0) Создаю сессию с нуля!

[кадр №682, 11:21:41.234, 09.10.2020]
English
...........................Chentrah log end


RESTARTING...
Chentrah version 0.21.6081 for Win32-i386,
  compiled at 18:39:46 on 2020/10/08 using Free Pascal 3.2.0.
Operating System: Windows 10
User name: Lexa
CPU A4-5000 APU with Radeon HD Graphics
  x4 logical cores
  level 2 cache: 2048 Kbytes, line size 64 bytes
  TSC invariancy: yes
  TSC frequency: 1.48 GHz
RAM: 4095 Mb
  Of the 4 Gb total adress space, there are:
    Reserved: 0.09 Gb
    Committed: 0.04 Gb
    Free: 3.87 Gb
Line info...
  found 61907 Stabs and 1209 Kbytes of strings. Base 00400000h, image base 00400000h.
Framework: native Windows API
Video buffer format:  1136x591,  r8g8b8a8d16s0.
Graphical API: OpenGL 2.1
  device AMD Radeon HD 8330
  vendor ATI Technologies Inc.
  driver version 4.6.13544 Compatibility Profile Context 25.20.15011.1004
Pen tablet: not found (failed to load wintab32.dll, most probably no tablet driver is installed)
Сontroller:not present (device is absent or it isn't Xbox360-compatible or not set to channel #1)
DirectSound 8 initialized.
Going to load module #3

[frame #2, 11:21:44.120, 09.10.2020]
Chentrah game menu showcase 2020 gor GameDev.ru version 0.21.0263 for Win32-i386,
  compiled at 18:39:12 on 2020/10/08 using Free Pascal 3.2.0.
Line info...
  found a block of 1893863 bytes Dwarf3, base 0E130000h, image base 10000000h.

[frame #3, 11:21:44.334, 09.10.2020]
AC power.

[frame #9, 11:21:44.510, 09.10.2020]
(thread #0) Loading the TFileStream(0C59D3F8h)...Ok

[frame #387, 11:21:56.390, 09.10.2020]
(thread #0) Saving the session...Ok
...........................Chentrah log end
Alex2013
долгожитель
 
Сообщения: 2922
Зарегистрирован: 03.04.2013 11:59:44

Re: Cheb's Game Engine

Сообщение Cheb » 09.10.2020 17:37:27

Учитывая мой девиз "если вашей игре требуется больше гигабайта памяти - вы что-то делаете не так", а также тот факт, что x86_64 никак не домучу (ждал релиза 3.2, в более ранних отладка невозможна - т.е. я только в конце этого года только начну разгребать специфичные для 64 бит крахи).
32 битной сборки должно хватать всегда, x86_64 - только для возможности сборки под современные линупсятины и на случай "а вдруг".

Система загрузки ресурсов держится на честном слове, в системе синхронизации потоков Макар коней не валял... Работает, если честно, чудом. Грести и грести. В какие-то моменты чего-то пугается, на секунду гасит экран (эффект, предназначенный для переключения dll модуля) и переключает указатель мыши на песочные часы.

З.Ы. Какого БЕСА? :evil:
Судя по логу - оно загрузило DLL модуля, выгрузило DLL модуля, загрузило DLL панели управления, выгрузило DLL панели управления, загрузило DLL модуля.
Вот и мигание на старте.
Нет, но какого беса?!

Добавлено спустя 4 минуты 56 секунд:
З.Ы. Там ещё встроенная скриншотница по F3 есть, работает в режиме GL но крашится в режиме GLES.

Добавлено спустя 13 минут 12 секунд:
З.З.Ы. Легенды гистограмм загрузки потоков:
серый - спит
белый - ждёт события-разбудильника
голубой - логика (обычно не видна, т.к. нагрузки нет)
зелёный - над чем-то работает (загрузка, запись скриншота...)
красный - синхронизация потоков (логика простаивает, пока рендер составляет задание для видеокарты). Всё никак руки не дойдут, чтобы в гистограмму логического потока копировалась доля основного потока, откусывая от белого.
жёлтый - окучивает события ввода
розовый - ждёт SwapBuffers.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение runewalsh » 10.10.2020 00:23:37

Чёт сохранения/клонирования/чтотамещё сессий так себе работают.
1.jpg
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 578
Зарегистрирован: 27.04.2010 00:15:25

Re: Cheb's Game Engine

Сообщение Cheb » 10.10.2020 03:32:05

Написано же: "Разработчик - дурак. Класс TScreenKeyboardSessionName не зарегистрирован."
Оно пытается сохранить в сохранёнку абсолютно всё, включая само меню сохранения сессии (после загрузки оно самоудаляется). А там один из элементов - наспех приделанная затычка к конкурсу, которой я забыл вызвать регистрацию и сериализация её невозможна.
К выходу настоящего теста №21 я приведу все механизмы движка в окончательно рабочее состояние. А это промежуточное нечто - тут всё держится на жвачке и честном слове. Почему я не сделал заглушкой "игрового процесса" свой вращающийся кубик? Потому что он падает.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение Alex2013 » 10.10.2020 12:36:24

Кстати я выложил лог "второй попытки"(стер каталог и распаковал по новой ) первый был килобайт так 500 с гаком (!). :shock:
Но вообщем интересный цифровой "артифакт" . :wink:
Зы
Насчет кубика можешь из моего проекта модельки в ASC формате для тестов позаимствовать.
(он настолько туп что даже я как минимум с полигонами разобрался. Модуль "загрузки" моделей load3e.pas
На "всякий пожарный" вот ссылки чтобы не шарить по форуму. Сборка от 11.03.2020 .
:arrow: Truba_DS_0_0059_14_3_1M0_bin.7z :idea: :arrow: Truba_DS_0_0059_14_3_1M0_SRC.7z :idea:
Хм оказывается давно я не выкладывал что-то новое нужно бы озаботься ... кое что уже есть.

Если заинтересуешься могу набор "цифрового таксидермиста" выложить то бишь старый "3DS 4 для ДОС" настроенный на работу в дос-бокс там простые модели (до пары-тройки тысяч полигонов ) клепать очень просто )

Зы Зы
Сори за оффтоп .
Последний раз редактировалось Alex2013 10.10.2020 15:00:17, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 2922
Зарегистрирован: 03.04.2013 11:59:44

Re: Cheb's Game Engine

Сообщение Сквозняк » 10.10.2020 14:50:59

Cheb писал(а):Система загрузки ресурсов держится на честном слове, в системе синхронизации потоков Макар коней не валял... Работает, если честно, чудом. Грести и грести. В какие-то моменты чего-то пугается, на секунду гасит экран (эффект, предназначенный для переключения dll модуля) и переключает указатель мыши на песочные часы.


А почему бы не ввести лимитирование количества потоков при загрузке? Сначала разрешить 2 потока, а потом 4. А не 4004, как может решить программа при отсутствии запретов. Опять же, легче будет переносить на другие платформы, если соберёшься, хотя наверно и твоя винда количеству качалок не рада. Замутить прослойку, которая и будет грузить и принимать заказы на загрузку.
Сквозняк
энтузиаст
 
Сообщения: 1109
Зарегистрирован: 29.06.2006 22:08:32

Re: Cheb's Game Engine

Сообщение Cheb » 10.10.2020 14:53:22

Угх. Грести, не отвлекаться. :(

Задача первая: перестал работать вывод бэктрейсов для длл модуля в экране "модуль упал". Причина: теперь бэктрейсы хранятся в виде голых адресов и переводятся в строковую форму при выводе... Когда длл модуля уже давно выгружена и вместо неё загружена длл панели управления и все обращения к LineInfo дают на выходе тыкву.
Варианты:
- развести былинные городушки в подсистеме LineInfo
- НЕ выгружать длл игрового модуля при переключении на длл панели управления. Пусть обе остаются в памяти, выгружать только при выходе или загрузке модуля.
Угх :x
У обоих вариантов куча подводных камней.
Склоняюсь к первому.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение Alex2013 » 10.10.2020 15:16:45

В общем "горе от ума и перфекционизма"... :roll: на каком бы уровне не разбирайся все равно мало . :idea:
Я и сам сторонник текстовых потоков, вместо бинарных данных, но хранить адреса(а не некий вторичный индекс) в тексте это уже ИМХО явно перебор . В прочем сори! Это просто "реплика из зала" без четкого понимания сути проблемы.
Alex2013
долгожитель
 
Сообщения: 2922
Зарегистрирован: 03.04.2013 11:59:44

Re: Cheb's Game Engine

Сообщение Cheb » 10.10.2020 16:05:33

[громко матерясь] Оказалось, что необходимо реализовать оба. И былинные городушки в моей LineInfo, и не выгружать упавшую DLL модуля. :evil:

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

Я уже урезал, выделив под багрепорт статический массив в ~100 килобайт (чтобы даже менеджер памяти не тревожить, когда бэктрейс составляется).
Осталось довести до ума, чтобы LineInfo осталась только в программе-матке, а игровые модули - "волу, больным, космонавтам в скафандрах".

Пы.Сы. В жопу отдельную ДЛЛ панели управления, буду вшивать нулевой модуль прямо в екзешник, как когда-то в 2009-м. Иначе *столько* банок с червями открывается, что просто тошно.
Например, в отладочном режиме лог от ея загрузки засирает вусмерть весь журнал и там хрен найдёшь подробности краха упавшего игрового модуля, который надо искать сотнями килобайт выше.

Встроенный нулевой модуль буду инициализировать сразу при старте екзешника, а потом сразу замораживать его, переключаясь на игровой модуль.
УЖО Я ИМ! :evil:
[рёв Годзиллы, увидевшего голливудского Зиллу, и горящего желанием раскатать эту мерзость]
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение Alex2013 » 10.10.2020 17:09:03

Cheb против ГадЗилы ! "Делаем ставки господа !!" :wink:
Но если чуть серьезнее то я бы ВСЮ канитель с меню и интерфейсом упрятал бы в скрипт .
(Скорости не нужно, а менять что-то процессе разработки нужно не раз и не два, а так дал в скрипт доступ к базовым функциям и структурам данных и твари, что хочешь, на какую угодно "живую нитку" базовой системе от этого не холодно не жарко )
Alex2013
долгожитель
 
Сообщения: 2922
Зарегистрирован: 03.04.2013 11:59:44

Re: Cheb's Game Engine

Сообщение Cheb » 10.10.2020 17:31:28

Я годы вымучивал механизм гуя, и ни на что другое не променяю. НО: он основан на механизмах игрового модуля и тянет за собой перзистентную систему и иже с ней. Надо это как-то научить работать в модуле-матке.

Экзешник потолстеет - ну и ляд с ним, я устал уже, эти понты такие мелочные. Понтоваться "Смотрите, моя прога всего 400Кб на диске" - это ребячество.

З.Ы. Себе на заметку: завести в Чеперси особый тип "ptruint, сохраняемый только в сериализаторе сдачи ассетов матке на хранение, иначе записывается ноль". Чтобы хендлы НЕ сохранялись в сессии и после загрузки автоматом срабатывал механизм "попытаться восстановить из списка ассетов, сохранённых в матке". А также начать таки использовать TMap из stl, ибо плучается дохрена всего, адресуемого строками и прочими толстыми вещами.

Добавлено спустя 12 минут 32 секунды:
З.З.Ы. Для *всех* платформ, кроме вин32, сделать игровой модуль - встраиваемым и несущим в себе функции панели управления, вместо длл - отдельный экзешник, переключение модуля - перезагрузка екзешника с полной перезагрузкой ассетов.
Иначе я убьюсь об стену, пытаясь создавать костыли для поддержки исключений в потоках ДЛЛ, которая во Фри Паскале хромает на обе ноги (для вин32 только в этом году осилили, в линухе - до сих пор бомбит сквозь все блоки try, вызывая классический Crash-to-desktop).

Добавлено спустя 7 минут 13 секунд:
З.З.З.Ы. Поддержку Виндовс 98 - похоронить окончательно (код вырезать не буду, просто уберу упоминание отовсюду). Фри Паскаль 2.6.4 - фтопку, 3.2 мой проект уже осиляет, хоть и с костылями. Ориентироваться на 3.4.0. (теряю возможность собирать на 32-битной древнеубунте, ну так Wine в зубы). Фреймворк X11 - фтопку, нечего мусор лелеять ради ностальгии. Для этого есть SDL2 (у которой необязательно использовать глёвый компонент, можно взять голое окно и звук).
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение runewalsh » 10.10.2020 19:36:56

Cheb писал(а):А также начать таки использовать TMap из stl, ибо плучается дохрена всего, адресуемого строками и прочими толстыми вещами.

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

Сделаем ХЭШ-ТАБЛИЦУ h, отображающую ключ-строку в значение-номер строки в МАССИВЕ, и сам МАССИВ sa.

Единственная функция для работы с пулом — Pool(s), добавляющая произвольную строку s в пул, или возвращающая существующую в пуле. Она делает следующее:

1. Ищет s в хэш-таблице h. Если найдена и имеет индекс index — возвращаем sa[index].

2. Добавляет s в sa, добавляет в хэш-таблицу отображение s→High(sa) и возвращает s.

Последний штрих, после всего:
— Чтобы строки не оставались в пуле навечно, сделаем «инкрементальную сборку мусора»: отслеживается позиция в массиве sa, каждый вызов Pool она продвигается, скажем, на 10 строк, и те из пройденных, счётчики ссылок которых равны 1 (2, если строки хранятся по значению и в h, и в sa — это чуть проще, но неоптимально) удаляются.

Профит — строки, возвращённые из Pool, можно сравнивать на равенство как pointer(s1) = pointer(s2).
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 578
Зарегистрирован: 27.04.2010 00:15:25

Re: Cheb's Game Engine

Сообщение Cheb » 10.10.2020 19:50:40

О. Это может быть полезно.

Мне, в принципе, даже удаление не нужно. Создал-проверил - удалил. Но напрягает неизвестная заранее масштабируемость. На реальных нагрузках могут выйти многие тысячи вариантов (поиск объекта по 16-байтному хэшу, поиск индекса в пространстве имён, если портирование Брутал Дума породит тысячу автосгенерированных классов, один на каждый ACS скрипт). Или быстро составить таблицу перевода из одного пространства имён в другое.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: Cheb's Game Engine

Сообщение Alex2013 » 13.10.2020 00:02:37

Cheb писал(а):Поддержку Виндовс 98 - похоронить окончательно

Windows 98 Goodbye ! :idea: (В музей на эмуляцию...)
ИзображениеИзображение
Alex2013
долгожитель
 
Сообщения: 2922
Зарегистрирован: 03.04.2013 11:59:44

Re: Cheb's Game Engine

Сообщение Cheb » 13.10.2020 11:21:48

Хнык.
У меня ещё есть машина, на которую она ставится, и даже видеокарта с поддержкой OpenGL 2.0, для которой есть драйвера для 98-й, но...
Слишком экзотика. Титанический объём усилий вникуда.
Сейчас продолжающаяся поддержка икспи вполне выполняет ту же роль "он чё, того?", но практически за бесплатно.

З.Ы. И тут Штирлиц, наконец-то догадался в Project Options / Compiler Commands /Execute After вместо
./build.bat
вставить
cmd /c build.bat
чтобы вместо ущербного встроенного эмулятора скрипт сборки выполнялся на полноценном инструменте.
Теперь только небо - предел!

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

З.З.Ы. Полтора года просидел на MseIDE, очень она мне нравилась - но последнее время начала глючить и запарывать проделанную работу. Периодически вскидывалась на ровном месте "Файл на диске изменился, но и буфере есть изменения. Применить?" - и если кликнешь не то, последний час-другой твоей работы стирается, перезагружает старую версию с диска. Из фафла, который однозначно НЕ менялся.
Пришлось плюнуть на неё, вернуться обратно на Лазарус.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Пред.След.

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29

Рейтинг@Mail.ru