Полезное

Мы Вконтакте

Discord канал

#
Модератор: Di-Crash
Аватара пользователя
Пользователь
Сообщения: 2319
Dany,
Цитата:
Организация проекта должна быть четкой и однозначной, чтобы не ползать по всем 200-300 скриптам в поиске того места, что отвечает за отображение визуальной инфы.

звучит убедительно...

Цитата:
Не буду вдаваться в подробности

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

а я бы хотел попробовать какой-то пример обсудить,
навскидку скажем худ стратегии :
1- основной интерфейс игрока(ничего интересного пилим свой худ класс, он уже движком связан с контроллеорм,
и добавляем ему всякие обьекты... в целом структура класса +- обычная)
2- и виджеты для акторов(юниты здания и другие обьекты на карте)...
мне кажется запилить интерфейс общий для акторов - решит все вопросы...
и обьект виджета "хранить" вместе с актором в данном случае кажется логичным на первый взгляд, потому что решает хотя бы банальный вопрос позиционирования...

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

хм... никаких подводных камней не намечается даже... ? слишком простой пример? другие примеры? любое усложнение которое заставит перепроектировать систему по другому принципу?
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 708
Prytaleks писал(а):
поставь Delay с небольшим значением, например(0.05), сразу после BeginPlay, в БП(BP_LocationMap)
Изображение

Делей помог! Спасибо :)

Я тоже думал о делэе, чтобы его постать, но помему-то так и не поставил и не проверил...

Проект не мой, а с маркетплейса. Да, тут в корне все сделано не правильно... Я уже тонну багов исправил и еще хер знает сколько еще - нет ни конца и ни края. Почти вся логика в чарактере причем все на одном графике и в итоге огромная каша ((( По хорошему нужно все разделить и переписать, но в этом пока нет необходимости, так как все на удивление работает, хотя руки очень сильно чешутся, чтобы все это нахрен переписать и сделать, как положено! )))

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

+1 я тоже с удовольствием прочитал о том, какую логику нужно хранить в конкретных местах\классах. Да, и вообще о том, как это должно быть.
_________________
Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.

Изображение
Аватара пользователя
Пользователь
Сообщения: 2319
дилей можно ноль поставить - тоесть на один тик...
_________________
we need to go deeper
Аватара пользователя
Пользователь
Сообщения: 4069
(_-=ZhekA=-_) писал(а):
+1 я тоже с удовольствием прочитал о том, какую логику нужно хранить в конкретных местах\классах.

логику для чарактера - в чарактере, логику для анимации - в аним бп, логику для худ - в худ, логику для виджета - в виджете, логика для оружия - в оружии, и т.д., иногда логику можно хранить в отдельном акторе специально созданном для конкретной логики.
Аватара пользователя
Пользователь
Сообщения: 237
Есть несколько основных классов:
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 и реагирует. Отыскивает все экторы, что должны быть сохранены/загружены и сохраняет/загружает.

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

Цитата:
Да, тут в корне все сделано не правильно... Я уже тонну багов исправил и еще хер знает сколько еще - нет ни конца и ни края. Почти вся логика в чарактере причем все на одном графике и в итоге огромная каша ((( По хорошему нужно все разделить и переписать, но в этом пока нет необходимости, так как все на удивление работает, хотя руки очень сильно чешутся, чтобы все это нахрен переписать и сделать, как положено!


Вопрос опыта и вкуса...
А на вкус и цвет все карандаши разные...
Аватара пользователя
Пользователь
Сообщения: 4069
Еще неплохой вариант организовывать сами блюпринты, таймеры(или рекурсии) в один граф(TimerGraph), таймлайны в (TimeLineGraph), управление в InputGraph, все остальное в EventGraph, эта организация, для самых жирных БП, типа чарактер и канешно дело вкуса.
Аватара пользователя
Пользователь
Сообщения: 708
Цитата:
Есть несколько основных классов:
1. GameMode
2. HUD
3. Pawn (Character)
4. WeaponManager
5. InventoryManager
7. Inventory
8. Weapon
9. SaveGameManager


Ты вот плеер чарактер указал, а плеер контроллер - забыл? Для чего нужен плеер контроллер и какие у них различия, если сравнить с чарактером?

Я правильно понял, что WeaponManager и InventoryManager должны быть компонентами, чтобы можно было подключать к чарактеру или контроллеру?

Цитата:
контроль убийств, контроль смерти игрока. То есть глобальный контроль за ситуацией в игре.

А зачем тогда плеер State class?
_________________
Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.

Изображение
Аватара пользователя
Пользователь
Сообщения: 237
Цитата:
Ты вот плеер чарактер указал, а плеер контроллер - забыл? Для чего нужен плеер контроллер и какие у них различия, если сравнить с чарактером?

Делают Character класс для реализации и игрока и моба. И делают PlayerController и AIController - классы управления мобом и игроком соответственно.
Там еще есть PlayerInput класс, чтобы управлять чаром игрока.
Это делается для того чтобы можно было тупо менять управление паунами на уровне. Широко используется в сетевой игре. Для того и разделяется чар и его контроллер. Да, я не указал эти пару классов PlayerController и AIController.

Цитата:
WeaponManager и InventoryManager должны быть компонентами, чтобы можно было подключать к чарактеру или контроллеру?

В Юнити это все компоненты, Юнити работает только на компонентах. В Анриале не обязательно. Как правило спаунится экземпляр класса или еще как подвешивается. В том числе и компонентом. Это уж сам решай.

Цитата:
А зачем тогда плеер State class?

Я никогда не использовал PlayerState класс. Нужно копнуть в доках сколько в игровой сессии GameMode и сколько PlayerState экземпляров. На сколько я понимаю, это все касается сетевой игры. Анриал изначально заточен был под сеть. Архитектуру, что я описал, Анриал использует с самых первых версий движка. По крайней мере в UDK было так.
Я на Юнити реализовывал такую же схему связи классов, потому что она логична и проста в понимании.
Аватара пользователя
Пользователь
Сообщения: 4069
(_-=ZhekA=-_) писал(а):
Я уже тонну багов исправил и еще хер знает сколько еще - нет ни конца и ни края.

а ты не думал о том что исправляя баг, ты добавляешь 10 новых))?
Аватара пользователя
Пользователь
Сообщения: 708
Prytaleks писал(а):
(_-=ZhekA=-_) писал(а):
Я уже тонну багов исправил и еще хер знает сколько еще - нет ни конца и ни края.

а ты не думал о том что исправляя баг, ты добавляешь 10 новых))?

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

Dany
Я правильно понимаю, что допустим я хочу сделать главное меню и этот метод не верен? Я создаю плеер контроллер и подключаю его к карте главного меню в контроллере я создаю простую логику создания виджета.
_________________
Game Area51 Update 1
First Person Shooter Released Jul 24, 2017
The game is a 3d shooter with the elements of the quest.

Изображение


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

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница