Unreal Engine 4 http://uengine.ru/forum/ |
|
Вышла новая версия 4.19 http://uengine.ru/forum/viewtopic.php?f=2&t=13414 |
Страница 3 из 4 |
Автор: | Snake [ 25 апр 2018, 19:21 ] |
Заголовок сообщения: | |
Dany, Цитата: Организация проекта должна быть четкой и однозначной, чтобы не ползать по всем 200-300 скриптам в поиске того места, что отвечает за отображение визуальной инфы. звучит убедительно... Цитата: Не буду вдаваться в подробности жаль, я б с удовольствием почитал как, или какими принципами руководствоваться, при проектировании такой системы. а я бы хотел попробовать какой-то пример обсудить, навскидку скажем худ стратегии : 1- основной интерфейс игрока(ничего интересного пилим свой худ класс, он уже движком связан с контроллеорм, и добавляем ему всякие обьекты... в целом структура класса +- обычная) 2- и виджеты для акторов(юниты здания и другие обьекты на карте)... мне кажется запилить интерфейс общий для акторов - решит все вопросы... и обьект виджета "хранить" вместе с актором в данном случае кажется логичным на первый взгляд, потому что решает хотя бы банальный вопрос позиционирования... кликаем по актору - создается обьект, два варианта виджетов могут быть : инфомационные и интерактивные. информационные показываем, а интерактивные связанны геймплейно с обьектом-актором (скажем кнопка "построить юнит", запускает логику отложенного спавна актора, и снимает деньги) закрываем виджет - уничтожаем обьект(по тестам если все сделать корректно мусорщик их нормально затирает) хм... никаких подводных камней не намечается даже... ? слишком простой пример? другие примеры? любое усложнение которое заставит перепроектировать систему по другому принципу? |
Автор: | (_-=ZhekA=-_) [ 25 апр 2018, 21:06 ] |
Заголовок сообщения: | Re: |
Prytaleks писал(а): Делей помог! Спасибо :) Я тоже думал о делэе, чтобы его постать, но помему-то так и не поставил и не проверил... Проект не мой, а с маркетплейса. Да, тут в корне все сделано не правильно... Я уже тонну багов исправил и еще хер знает сколько еще - нет ни конца и ни края. Почти вся логика в чарактере причем все на одном графике и в итоге огромная каша ((( По хорошему нужно все разделить и переписать, но в этом пока нет необходимости, так как все на удивление работает, хотя руки очень сильно чешутся, чтобы все это нахрен переписать и сделать, как положено! ))) Цитата: жаль, я б с удовольствием почитал как, или какими принципами руководствоваться, при проектировании такой системы. +1 я тоже с удовольствием прочитал о том, какую логику нужно хранить в конкретных местах\классах. Да, и вообще о том, как это должно быть. |
Автор: | Snake [ 25 апр 2018, 21:27 ] |
Заголовок сообщения: | |
дилей можно ноль поставить - тоесть на один тик... |
Автор: | Prytaleks [ 25 апр 2018, 23:32 ] |
Заголовок сообщения: | Re: Re: |
(_-=ZhekA=-_) писал(а): +1 я тоже с удовольствием прочитал о том, какую логику нужно хранить в конкретных местах\классах. логику для чарактера - в чарактере, логику для анимации - в аним бп, логику для худ - в худ, логику для виджета - в виджете, логика для оружия - в оружии, и т.д., иногда логику можно хранить в отдельном акторе специально созданном для конкретной логики. |
Автор: | Dany [ 26 апр 2018, 04:58 ] |
Заголовок сообщения: | |
Есть несколько основных классов: 1. GameMode 2. HUD 3. Pawn (Character) 4. WeaponManager 5. InventoryManager 7. Inventory 8. Weapon 9. SaveGameManager GameMode - логика управления игрой: запуск, пауза, контроль убийств, контроль смерти игрока. То есть глобальный контроль за ситуацией в игре. Тут же происходит прямое управлением событиями в HUD. К примеру, если кто-то в кого-то попал, то в Game Mode поступает событие об этом и далее из GameMode о том сообщается в HUD и отображается на виджетах. HUD - контроль визуального отображения всего что происходит в игре. В HUD поступают Евенты или прямые указания из GAmeMode и HUD просто их отображает. Pawn (Character) - контроль передвижения игрока или моба. WeaponManager - ставится как надстройка на экторы с оружием. Напрямую взаимодействует с классами Weapon - смена оружия, например, стрельба и так далее. InventoryManager - контроллер управления инвентарем. То есть получение в инвентарь чего-либо, удаление из инвентаря. Связан с WeaponManager если получено или удаляется оружие. Inventory - используется InventoryManager, хранится массив этих классов. Содержит описание итема инвентаря. Weapon - наследник класса Inventory - содержит данные о оружии и его характеристиках. SaveGameManager - контроль сохранения. Получает события от GameMode и реагирует. Отыскивает все экторы, что должны быть сохранены/загружены и сохраняет/загружает. Ну а вообще архитектура проекта должна быть просто логична и четко структурирована. Чтобы не было постоянных поисков связей между блоками. Над архитектурой лучше месяц подумать, набросать план действий а уже потом ее реализовывать. Но можно и так, конечно : Цитата: Да, тут в корне все сделано не правильно... Я уже тонну багов исправил и еще хер знает сколько еще - нет ни конца и ни края. Почти вся логика в чарактере причем все на одном графике и в итоге огромная каша ((( По хорошему нужно все разделить и переписать, но в этом пока нет необходимости, так как все на удивление работает, хотя руки очень сильно чешутся, чтобы все это нахрен переписать и сделать, как положено! Вопрос опыта и вкуса... А на вкус и цвет все карандаши разные... |
Автор: | Prytaleks [ 26 апр 2018, 07:42 ] |
Заголовок сообщения: | |
Еще неплохой вариант организовывать сами блюпринты, таймеры(или рекурсии) в один граф(TimerGraph), таймлайны в (TimeLineGraph), управление в InputGraph, все остальное в EventGraph, эта организация, для самых жирных БП, типа чарактер и канешно дело вкуса. |
Автор: | (_-=ZhekA=-_) [ 26 апр 2018, 10:41 ] |
Заголовок сообщения: | |
Цитата: Есть несколько основных классов: 1. GameMode 2. HUD 3. Pawn (Character) 4. WeaponManager 5. InventoryManager 7. Inventory 8. Weapon 9. SaveGameManager Ты вот плеер чарактер указал, а плеер контроллер - забыл? Для чего нужен плеер контроллер и какие у них различия, если сравнить с чарактером? Я правильно понял, что WeaponManager и InventoryManager должны быть компонентами, чтобы можно было подключать к чарактеру или контроллеру? Цитата: контроль убийств, контроль смерти игрока. То есть глобальный контроль за ситуацией в игре. А зачем тогда плеер State class? |
Автор: | Dany [ 26 апр 2018, 10:56 ] |
Заголовок сообщения: | |
Цитата: Ты вот плеер чарактер указал, а плеер контроллер - забыл? Для чего нужен плеер контроллер и какие у них различия, если сравнить с чарактером? Делают Character класс для реализации и игрока и моба. И делают PlayerController и AIController - классы управления мобом и игроком соответственно. Там еще есть PlayerInput класс, чтобы управлять чаром игрока. Это делается для того чтобы можно было тупо менять управление паунами на уровне. Широко используется в сетевой игре. Для того и разделяется чар и его контроллер. Да, я не указал эти пару классов PlayerController и AIController. Цитата: WeaponManager и InventoryManager должны быть компонентами, чтобы можно было подключать к чарактеру или контроллеру? В Юнити это все компоненты, Юнити работает только на компонентах. В Анриале не обязательно. Как правило спаунится экземпляр класса или еще как подвешивается. В том числе и компонентом. Это уж сам решай. Цитата: А зачем тогда плеер State class? Я никогда не использовал PlayerState класс. Нужно копнуть в доках сколько в игровой сессии GameMode и сколько PlayerState экземпляров. На сколько я понимаю, это все касается сетевой игры. Анриал изначально заточен был под сеть. Архитектуру, что я описал, Анриал использует с самых первых версий движка. По крайней мере в UDK было так. Я на Юнити реализовывал такую же схему связи классов, потому что она логична и проста в понимании. |
Автор: | Prytaleks [ 27 апр 2018, 12:20 ] |
Заголовок сообщения: | Re: Re: |
(_-=ZhekA=-_) писал(а): Я уже тонну багов исправил и еще хер знает сколько еще - нет ни конца и ни края. а ты не думал о том что исправляя баг, ты добавляешь 10 новых))? |
Автор: | (_-=ZhekA=-_) [ 27 апр 2018, 22:09 ] |
Заголовок сообщения: | Re: Re: |
Prytaleks писал(а): (_-=ZhekA=-_) писал(а): Я уже тонну багов исправил и еще хер знает сколько еще - нет ни конца и ни края. а ты не думал о том что исправляя баг, ты добавляешь 10 новых))? Ну всякое может быть :) Вот утечку памяти я победил :) И много разных мелочей в основном из-за того, что проект был на очень старой версии, а я его абаптировал на новую. Ну и под себя конечно много правок сделал. :) Dany Я правильно понимаю, что допустим я хочу сделать главное меню и этот метод не верен? Я создаю плеер контроллер и подключаю его к карте главного меню в контроллере я создаю простую логику создания виджета. |
Страница 3 из 4 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |