Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Движок (программисты)
GAMEINATOR forums > > Архив
Neo][
В этой теме будем обсуждать архитектуру движка.

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

1. Ядро - главный модуль, связывает все остальные воедино, обработка ошибок и др. служебные функции.
2. Менеджер настроек - сохраняет/загружает настройки, даёт команду на переинициализацию соответствующим модулям.
3. Консоль - взаимодействует с модулем настроек в реальном времени, собственно из-за консоли и нужна команда переинициализации.
4. Менеджер ресурсов - загружает данные необходимые для работы движка.
5. Менеджер звука - пока по поводу него у меня вопрос, может объединить с менеджером ресурсов.
6. Менеджер сцены - модуль отвечающий за построение сцены и работу с ней, взаимодействует с библиотекой GLScene
7. Модуль физики - думаю понятно
8. Модуль ИИ - аналогично.

Это моё видение архитектуры движка, жду ваших предложений/критики.
KoMMyHuCT
Поддерживаю данную архитектуру, но я думаю надо сделать так чтобы консоль работала напрямую с ядром, так как нам это потребуется при отладке
Neo][
Теперь надо определить, как эти модули будут взаимодействовать между собой. Завтра выложу схему.

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


Не вижу приимущества при отладке
KoMMyHuCT
2Neo][
Ну ты сам подумай, если консоль будет работать с ядром напрямую, или через менеджер настроек, как быстрее будет?
FuckTER
какая консоль excl.gif у нас костей двигла то еще нет а ты уже отлаживать собираешься
Neo][
Цитата
какая консоль excl.gif у нас костей двигла то еще нет а ты уже отлаживать собираешься


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

+ Введение двух новых модулей. Посидел подумал, в отдельные модули вынесем, так сказать, главное меню и прорисовку худа, т.е. два новых модуля

9. Меню
10. HUD.

Цитата
Теперь надо определить, как эти модули будут взаимодействовать между собой. Завтра выложу схему.


Извините по поводу данного пункта, сегодня было четыре сложнейших пары, причём которые нельзя запускать, а то с сессией придётся туго, мозг можно сказать кипит, устал сильно.
FuckTER
народ очнитесь, в сцене уже все разбито на модули и худ и звук и т.п.,единственное не видел консоли, но это наши проблемы.
а скелет двигла предпологает, то как будет строиться уровень и действа на нем.
VINtoREZ
Так, хватит всех (и меня) путать!!! Я уже нихера не понимаю!!!
Один говорит пишем модули, другой что они уже есть в сцене....
Вы определитесь уж плиз... кто прав???
FuckTER
Кто видел сцену тот поймет.
VINtoREZ
Да я знаю что в сцене все компоненты уже есть. Может Павел хочет до нас что-то нам неизвестное донести. Вобщем он напишет, я думаю...
KoMMyHuCT
А ведь правда в GLScene то все есть, только в упращенной форме.

2FuckTER
Цитата
единственное не видел консоли, но это наши проблемы

Ну консоль то мы напишем smile.gif
vinc
Вопросик. Меня очень давно глодал и я всё же спрошу.
Neo][ я два раза уже делал модеи для теста, бочку консервов из кровососа рыжую для теста физики и вот собсно недавно небольшой отрезок "геометрии", так вот мне очень интересно узнать результаты так сказать тестов =) И не мне наверно одному.
Neo][
Цитата
Вопросик. Меня очень давно глодал и я всё же спрошу.
Neo][ я два раза уже делал модеи для теста, бочку консервов из кровососа рыжую для теста физики и вот собсно недавно небольшой отрезок "геометрии", так вот мне очень интересно узнать результаты так сказать тестов =) И не мне наверно одному.


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


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


Цитата
Так, хватит всех (и меня) путать!!! Я уже нихера не понимаю!!!
Один говорит пишем модули, другой что они уже есть в сцене....
Вы определитесь уж плиз... кто прав???


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

Цитата
HUDSprite:=TGLHUDSprite (glscene1.Objects.AddNewChild(TGLHUDSprite))
HUDSprite.Material.Texture.Disabled:=false;
HUDSprite.Material.Texture.Image.LoadFromFile(‘HUDSprite.bmp’);
HUDSprite.Material.BlendingMode:=bmTransparency;
HUDSprite.Material.Texture.ImageAlpha:=tiaSuperBlackColorTransparent;
HUDSprite.Material.Texture.TextureMode:=tmModulate;
HUDSprite.Position.X:=120*res_x/1024;
HUDSprite.Position.Y:=100*res_y/768;
HUDSprite.Width:= HUDSprite.Material.Texture.Image.Width*res_x/1024;
HUDSprite.Height:= HUDSprite.Material.Texture.Image.Height*res_y/768;


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

+ Ещё один модуль, но не пугайтесь этого нет в сцене - это модуль обработки ошибок, т.е. этот модуль будет писать лог ошибок, т.е. примерно как в билде 2215, я решил назвать его "Логгер".

11. Логгер.
FuckTER
Ну незнаю я как ты павел собираешься делать новые модули заменяющие старый, не проще ли как в любом опен сурсе просто редактить сцену и её модули а потом промто выкладывать и говорить что да как изменил.
Neo][
Цитата
Ну незнаю я как ты павел собираешься делать новые модули заменяющие старый, не проще ли как в любом опен сурсе просто редактить сцену и её модули а потом промто выкладывать и говорить что да как изменил.


FuckTER, я не собираюсь заменять старые модули на новые. Я собираюсь выносить код для работы с этими модулями(сценовскими) в отдельные кирпичики(модули). Т.е. допустим модуль HUD, который вызвал споры, допустим в нём будет считываться и формироваться полоска жизней, усталости или чего там у нас будет. + инвентарь.

Может когда доделаю схему связи между модулями, всё станет яснее. sad.gif
Neo][
Вот на паре накидал примерную взаимосвязь
]]>]]>

Как всегда предложения, критика.
OlegatoR
Эм.. на вышке писал? biggrin.gif
Мало что понял из этого наброска. В элекронном виде в виде таблицы было бы нагляднее
Neo][
Цитата
Эм.. на вышке писал? biggrin.gif


На лекции по истории, просто первой под руку попалась тетрадь по матану


Цитата
Мало что понял из этого наброска. В элекронном виде в виде таблицы было бы нагляднее

Вечером скорее всего сделаю
Neo][
Цитата
QUOTE
Мало что понял из этого наброска. В элекронном виде в виде таблицы было бы нагляднее

Вечером скорее всего сделаю


Как и обещал. Переведено в удобоваримый формат. Связь между ядром и остальными модулями упущена для простоты.
Neo][
Цитата
QUOTE
Мало что понял из этого наброска. В элекронном виде в виде таблицы было бы нагляднее

Вечером скорее всего сделаю


Как и обещал. Переведено в удобоваримый формат. Связь между ядром и остальными модулями упущена для простоты.

Как всегда вопросы/предложения/критика
VINtoREZ
Вопрос: а у нас скрипты на чем???
FuckTER
есть dwscript но я блин так и не смог его поставить небыло dll
Neo][
Цитата
есть dwscript но я блин так и не смог его поставить небыло dll


DLL есть, но она лежит в папке с файлами для Borland C++ Builde. А может я и ошибаюсь. Запусти поиск по папке со сценой, найдешь.

Цитата
Вопрос: а у нас скрипты на чем???

В принципе можно и LUA использовать, но ИМХО она громоздкая очень, для серьёзных проектов.
OlegatoR
Если ЛУА не сложен в использовании то можно вприципе и его юзать. Но все зависит от того, насколько серьезно будем реализовывать (тоесть А-ЛАЙФ или обычные вэйпойнты - это так для примера smile.gif )
Neo][
Цитата
Если ЛУА не сложен в использовании то можно вприципе и его юзать. Но все зависит от того, насколько серьезно будем реализовывать (тоесть А-ЛАЙФ или обычные вэйпойнты - это так для примера smile.gif )


У LUA С-ишный синтаксис, а у DWScript я не знаю какой.
Neo][
Блин меня неделю небыло и даже никто и не спросил, почему я не выложил задания, когда обещал. Походу вообще всё заглохло.

Новости сменилась архитектура движка, исходник на ФТП заменён более новым.
FuckTER
все тихо молчали и ждали тебя =) а мы с винком ездили стрематься за матерьялами =)
Neo][
Обновлена архитектура движка, теперь уже надеюсь в последний раз.
Прошу всем померить ФПС, у меня как-то странно себя ведёт выше 100 не поднимается, хоть антиалиазинг включай, хоть анизатропию, всёравно около 100. Вертикальная синхронизация отключена.

У кого нет возможности скомпилироватьв папке Sources/EXE/ лежит экзешник.
Ferrum
Питестил текущую версию, нашел баг: после выхода из движка винда виснет.

Видео : GeForce 7600GT
VINtoREZ
Нееет это не серьезно... У меня уже при запуске вешает систему)))
Ничего не можешь сделать тока перезагрузка помогает. Она короче вышибает ошибку, винда запрашивает отправить ли отчет и усе...
Винда XP SP2
Проц AMD 3000+
Память 512
Видео НЕвидия 6600
Чо за нахер я хз...
Neo][
Цитата
Питестил текущую версию, нашел баг: после выхода из движка винда виснет.

Видео : GeForce 7600GT


Цитата
Нееет это не серьезно... У меня уже при запуске вешает систему)))
Ничего не можешь сделать тока перезагрузка помогает. Она короче вышибает ошибку, винда запрашивает отправить ли отчет и усе...
Винда XP SP2
Проц AMD 3000+
Память 512
Видео НЕвидия 6600
Чо за нахер я хз...


Ребята, вы что запускали, екзешник или сами компилили. Если екзешник, то это мой недочёт, я забыл в архив сунуть кроме екзешника все папки, которыее должны быть. А именно в этих папках содержится уровень, файл настроек и т.д. Скачайте исходник и скопируйте екзешник в корень папки, туда, где много *.pas файлов, всё должно после этого работать. Если нет, то в папке logs лог ошибок. Выкладываем разбираемся.

Кстати надо будет ввести проверку на наличие необходимых для запуска файлов.

Was added in 8 minutes 22 seconds:

Я пересобрал архив с экзешником, теперь всё должно быть нормально.
VINtoREZ
Вот кстати про ошибки))) Я какимто чудным образом сумел дождатся завершения программы и записал на чо она матерится))) Вобщем смотрите:
1)
Application Error
Exception EFCreateError STEngine at 0001B739

2)
Error
Runtime error 216 at 7c901010
~ 7c454cf4
~ 7c48e817

И целая куча "Отправить отчет". Вот такие пироги. Я и сам компилил и запускал твой EXE, все одно и тоже.
Neo][
Цитата
И целая куча "Отправить отчет". Вот такие пироги. Я и сам компилил и запускал твой EXE, все одно и тоже.


Лог в студию
VINtoREZ
Он ничо не написал в логе, так как не загрузился еще
Лохотрон
кхм ошибок на 7900gtx не было, фпс порядка 350
Ferrum
Запускал exe вместе с остальными файлами, в движке порядка 200 FPS, но при выходе все-равно все падает sad.gif
Neo][
Сначала дождался пока программа завершится.
Цитата
Вот кстати про ошибки))) Я какимто чудным образом сумел дождатся завершения программы и записал на чо она матерится))) Вобщем смотрите:
1)
Application Error
Exception EFCreateError STEngine at 0001B739

2)
Error
Runtime error 216 at 7c901010
~ 7c454cf4
~ 7c48e817


А позже выяснилось, что она не загрузилась ещё? laugh.gif
Цитата
Он ничо не написал в логе, так как не загрузился еще


Блин это плохо. По идее Класс обработки ошибок грузится самым первым, до всех остальных, странно, вроде должен всё ловить.

Exception EFCreateError ошибка генерируемая при создании файла. Но по крайней мере мной пока ещё не создаётся ни одного файла, логично предположить, что ошибка где-то в GLScene, но GLScene обычно выдаёт ошибку с описанием, т.е там есть дополнительная инфа. Да и логгер написанный мной писался специально, чтобы избавиться от ошибок вида "Exception EFCreateError STEngine at 0001B739", по идее он должен был выдать что-то типа "Exception EFCreateError STEngine at название модуля".

Цитата
Запускал exe вместе с остальными файлами, в движке порядка 200 FPS, но при выходе все-равно все падает sad.gif

А у тебя, что в логе?
Neo][
Чёто я стал тупить в последнее время:
Цитата
Но по крайней мере мной пока ещё не создаётся ни одного файла

А как же файл ошибок, лог файл. Точно, точно ошибка происходит в самом логгере, но где?
VINtoREZ, какой путь до движка, случаем не из архива запускаешь?
Надо ввести обработку исключений в логгере.
VINtoREZ
E:\STEngine\STEngine2\STEngine вот вам путь. А при запуске программы успеваю увидеть белый экран и не нам 3 векторв и все дальше ошибка, а в логе ничо не написано)))

Was added in 5 minutes 30 seconds:

Я переустановил винду и как нистранно все запахало!!! Даже без дров пашет!!!
Стабильно держит чуть больше 200 фпс
Neo][
Цитата
Стабильно держит чуть больше 200 фпс


Блин, странно. Пишите хоть конфигурации чтоли.

У меня на Атлоне ХР 2800+, 512мб(двухканальный режим, ну да пока ещё не важно), Радеон 9600 про
Около сотни.
Кстати придумал метод немного оптимизировать, ожидаем повыщения ФПС.
VINtoREZ
Я тебе сверху конфиг уже писал!!! В 28 посте!!!
Ferrum
Кстати вопрос, как выйти из движка и можно ли поворачивать камеру (для тех кто в танке), может из-за того, что выхожу некорректно у меня и баги smile.gif
Ferrum
Небольшое пожелание на будущее, при выходе очередной сборки писать все изменения и новые фичи, это очень поможнт при тестинге wink.gif
VINtoREZ
Выходить на alt+F4 :-)
OlegatoR
Поворот MoveAroundTArget у камеры


Was added in 6 minutes 22 seconds:

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

Мне консоль Феррума не понравилась - куча каго-то левого кода, ниче не понятно. Да и нах нам навороченная консоль? (только не надо гвоорить мне про отладку и прочее). Для нащих нужд хватит и небольшой консоли - меньше кода - лучше быстродействие wink.gif

Я так понял в Логгер были включены процедуры для более детального записывания ошибок. Эти самые модули пришлось у меня отключить - с ними не компилировалось (модуль JclDebugЧеТоТам и еще Jcl какой-то). Просит файл jcl.inc.
Neo][
Цитата
можно ли поворачивать камеру (для тех кто в танке)

Цитата
Поворот MoveAroundTArget у камеры

OlegatoR, Ferrum говорит именно в этом билде. В этом билде пока нельзя, этот билд просто предварительный замер производительности, и работоспособности так сказать.

Цитата
Сделал процедуру записи параметра в файл (с проверкой на правильность параметра (из отдельного файла) - проверку на правильность значения еще не сделал)
Совсем небольшой код вышел. В ближайшее время сделаю чтение из файла.

Олег а как у тебя обстоит дело с обращением к параметрам, разобрался со свойствами, помогла статья.


Цитата
Мне консоль Феррума не понравилась - куча каго-то левого кода, ниче не понятно. Да и нах нам навороченная консоль? (только не надо гвоорить мне про отладку и прочее). Для нащих нужд хватит и небольшой консоли - меньше кода - лучше быстродействие wink.gif

Я же уже писал, что пока рано говорить про консоль. Задание было, нет. Я надеюсь я ещё куратор? А вот за задание связанное со звуком кто-нибудь взялся?
"Меньше кода лучше быстродействие" - думаю с консолью это не звязано. Вот сколько раз за игру ты вызываешь консоль? Она участвует в рендеринге? В обработке ИИ, сцены? Я бы лучше сказал: "Меньше кода, меньше ошибок".

Цитата
Я так понял в Логгер были включены процедуры для более детального записывания ошибок. Эти самые модули пришлось у меня отключить - с ними не компилировалось (модуль JclDebugЧеТоТам и еще Jcl какой-то). Просит файл jcl.inc.

А вот это уже интереснее. Закинул этот файл на FTP в папку Utils.
Neo][
Хорошие новости удалось разобраться с физикой за выходные думаю допишу классы объектов. А там можно и за ИИ браться.
OlegatoR
Цитата
Хорошие новости удалось разобраться с физикой за выходные думаю допишу классы объектов. А там можно и за ИИ браться.

Удачи тебе, потому как у меня классами в редакторе НИ*УЯ не выходит crazy.gif z_mat.gif death.gif
Neo][
Цитата
QUOTE
Хорошие новости удалось разобраться с физикой за выходные думаю допишу классы объектов. А там можно и за ИИ браться.

Удачи тебе, потому как у меня классами в редакторе НИ*УЯ не выходит crazy.gif z_mat.gif death.gif

Как уже и говорил:
Главное основывайся на понятии, что отдельный класс это какой-то функционально законченный модуль. Т.е. если мыслить абстрактно, то это отдельная программа, которую можно использовать независимо где надо, проблем с построением при таком мышлении обычно не возникает.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.