Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » UE4 | страница 3
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 3 из 3
На страницу: Пред.  1, 2, 3 | Все страницы
Поиск в этой теме:
Канал Игры Мечты: «UE4»
Zachesa
 151 EGP


Рейтинг канала: 4(95)
Репутация: 13
Сообщения: 1415
Откуда: Хабаровск
Зарегистрирован: 12.11.2007
Такое ощущение, что существует ограничение на время исполнения скрипта. В итоге, такой сложный скрипт как подсчёт количества акторов определённого класса в сцене может не все блоки подсчитать. А соответственно копирование нескольких матриц с данными на диск вообще может длится долго.
_________________
Язык Образов, для ситуационного моделирования, программирования и как язык мысли, думающей машины.
    Добавлено: 13:01 19-10-2017   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
Zachesa :
на время исполнения скрипта.


Это не скрипты. И ограничения по времени нет. Есть на кол-во проходов в цикле и на кол-во элементов в массиве. Это все.
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
    Добавлено: 13:22 19-10-2017   
Zachesa
 151 EGP


Рейтинг канала: 4(95)
Репутация: 13
Сообщения: 1415
Откуда: Хабаровск
Зарегистрирован: 12.11.2007
Блин, а может массивы обернуть во что-нибудь, создать некий объект цельны для сохранения?
_________________
Язык Образов, для ситуационного моделирования, программирования и как язык мысли, думающей машины.
    Добавлено: 14:04 19-10-2017   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
Стоп, а я вот, кстати не посмотрел, а что там у тебя в массивах то хранится?
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
    Добавлено: 14:08 19-10-2017   
Zachesa
 151 EGP


Рейтинг канала: 4(95)
Репутация: 13
Сообщения: 1415
Откуда: Хабаровск
Зарегистрирован: 12.11.2007
На официальном форуме открыл тему, но что-то тишина ссылка

добавлено спустя 1 минуту:
Три массива один Экторы, второй векторы координат, третий векторы ориентации.

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

добавлено спустя 4 минуты:
Но сейчас нет установленных в редакторе блоков. Если их поставить, то сохранив сцену, при загрузке они появляются, если их к примеру в игре удалить. Я сразу это не видел, а потом во вьюпорте обратил внимание, что количество Экторов в сцене увеличивается. При чём в процессе таких экспериментов иногда несколько вновь установленных блоков записывалось.

добавлено спустя 4 минуты:
Есть ещё косяк, который я не победил. При ротации призмы её надо смещать на некоторое расстояние, при чём это смещение нужно при 60 гр., а при 120 не нужно. Шаг ротации 60, соответственно. Так вот при повороте я ставлю фазу ротации, булеву переменную, она иногда сбоит, меняется как ей заблагорассудится.

добавлено спустя 53 минуты:
Вообще, наверное существует способ отправки данных не в родное сохранение, а в отдельный файл вне проекта, как со сторонним сервером при мультиплеере в виде JSON контейнера. Мне то по сути дефолтное сохранение особо не нужно, только чтоб демку получить более менее функциональную и то для текущего этапа всего лишь.

добавлено спустя 11 минут:
Просто есть такой плагин https://hiazma.atlassian.net/wiki/spaces/VAR/overview может его сразу задействовать, чтоб отправлять данные на сервак.
_________________
Язык Образов, для ситуационного моделирования, программирования и как язык мысли, думающей машины.

Последний раз редактировалось: Zachesa (15:28 19-10-2017), всего редактировалось 6 раз(а)
    Добавлено: 15:28 19-10-2017   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
Zachesa :
Вообще, наверное существует способ отправки данных не в родное сохранение


Как реализовано сохранение я тебе дал в листингах вчера. Пиши что душе угодно. Хабовская версия для этого не нужна.
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
    Добавлено: 15:53 19-10-2017   
Zachesa
 151 EGP


Рейтинг канала: 4(95)
Репутация: 13
Сообщения: 1415
Откуда: Хабаровск
Зарегистрирован: 12.11.2007
ТехноМаг :
Пиши что душе угодно.
Вот как раз писать в С++ я сейчас не настроен. У меня на первом плане Эликсир/Эрланг. Поэтому пытаюсь всё сделать при помощи Блупринтов, жалко что они глючат.
_________________
Язык Образов, для ситуационного моделирования, программирования и как язык мысли, думающей машины.
    Добавлено: 17:28 19-10-2017   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
Zachesa :
жалко что они глючат.


Да не глючат они. Надо просто сесть и внимательно все еще раз просмотреть.
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
    Добавлено: 18:42 19-10-2017   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
Нашел косяк.

Вчера не обратил внимание...

У тебя в SaveObject уходит потомок класса AActor (PrismActor)

Он не сериализуется... Тебе надо сохранять не потомок AActor, а выдрать оттуда AssetID, либо привязать класс к тегу и сохранять тег. И по тегу уже выбирать нужный класс для спавна. Либо (как я делал) перегнать нужные параметры в одноименную структуру и сохранять структуру.

Объясню почему:

Когда ты отправляешь объект SaveGame на сохранение все переменные этого объекта сериализуются в массив байт (см. GameStatics.cpp).

Переменные объектов, в частности ВСЕХ потомков uObject(а следовательно и aActor) являются указателями и при сериализации мы получаем не объект, а число типа long. Соответственно при загрузке этот указатель будет некорректным, т.к. объекта по тому адресу, куда он ссылается не будет.

PS: Рекурсивной сериализации в GenericSaveSystem нет.

Если представить твой класс SaveObject в C++, то получится вот что:

Код:

class USpaceSave : public USaveGame
{
  GENERATED_UCLASS_BODY()
public:
  FString PlayerName;
  FString SlotName;
  TArray <FVector> PrizmLocation;
  TArray <FRotator> PrizmRotator;
  TArray <APrizmActor*> PrizmActor; //и вот тут косяк, ибо оно на самом деле long, т.е. при сериализации это видется как TArray <long int> PrizmActor
 
}


НУ и при загрузке (при рестарте игры!) оно пытается обратится к несуществующему (или существующему, но занятому другим классом) участку памяти. И не может получить (либо может, но неверный) экземпляр класса uClass. Вообщем именно поэтому у тебя и рандом такой при загрузке (то работает, то нет).

Т.е. при работе с сохранением ты должен убедится, что у тебя нет ссылочных переменных. Или, если перевести на понятия анриала, у тебя не должно быть переменных от Blueprint Class, если только это не Structure (см вкладку Blueprints в Content Manager. Самая последняя будет).
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."

Последний раз редактировалось: ТехноМаг (22:52 19-10-2017), всего редактировалось 8 раз(а)
    Добавлено: 22:35 19-10-2017   
Zachesa
 151 EGP


Рейтинг канала: 4(95)
Репутация: 13
Сообщения: 1415
Откуда: Хабаровск
Зарегистрирован: 12.11.2007
Спасибо огромное! Посыпаю голову пеплом, что забыл учесть такой момент, что ссылки на объект могут потерять актуальность даже непосредственно в процессе выполнения приложения, их банально удалит сборщик мусора. Что уж говорить о попытке сохранения информации в виде ссылок.

Структура из объектов класса уже имеется, из неё идёт выбор экторов для размещения на сцене. Поэтому вместо ссылок на экторы надо было сразу брать соответствующие элементы из этой структуры.

Так что собираю очередную демку, где можно будет уже сохранить то, что построил.
_________________
Язык Образов, для ситуационного моделирования, программирования и как язык мысли, думающей машины.
    Добавлено: 05:19 20-10-2017   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
Народ, нид хелп! Кто-нить с системами частиц разбирался? Не могу понять, где у Эмиттера задается максимальный срок жизни частицы (не модуль Lifetime). В общем у меня получается так, что через 15 минут переменная ActiveParticles встает в нуль и до свиданья. Перерыл уже весь юнит EmitterInstance.cpp - не могу найти и деббагером поймать где именно оно нулится и из-за чего Рыдания.
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
    Добавлено: 14:21 29-04-2018   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
А кажется нашел. Осталось понять, как это можно заюзать

Код:

const float PrevTileTimeOfDeath = TileTimeOfDeath[AllocatedTileIndex];
const float ParticleTimeOfDeath = SecondsSinceCreation + 1.0f / NewParticle->TimeScale;
const float NewTileTimeOfDeath = FMath::Max(PrevTileTimeOfDeath, ParticleTimeOfDeath);
TileTimeOfDeath[AllocatedTileIndex] = NewTileTimeOfDeath;


ADD: Похоже придется патчить движок... Там константа

Код:

NewParticle->TimeScale = FMath::Max<float>(TempParticle->OneOverMaxLifetime, 0.001f);


или 1000 секунд. Как раз 16.6 минут получается

ADD2: Пропатчил. Потестирую и залью на гитхаб. Пригодится для потомков.
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."

Последний раз редактировалось: ТехноМаг (21:19 29-04-2018), всего редактировалось 3 раз(а)
    Добавлено: 16:53 29-04-2018   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
Залил. Кому нужно, можно забрать отсюда:
ссылка
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
    Добавлено: 22:37 29-04-2018   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
Еще один ништячек от вашего покорного слуги:
https://github.com/TehnoMag/Unreal-Engine-4-Multi-Map-Plugin

Плагин MultiMap. Позволяет загружать уровни в OffScene и переключать актеров в нужный момент с уровня на уровень. Каждый уровень имеет те-же функции, что и стандартный мир. Плагин должен помочь с обходом float проблемы для очень больших локаций.

Сам плагин пока еще в разработке. Если будет желание, можете присоеденится к разработке.
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
    Добавлено: 16:27 03-06-2018   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
Еще один ништячек от вашего покорного слуги:
https://github.com/TehnoMag/Unreal-Engine-4-InfiniteWorld-Plugin

Плагин Infinite World. Он позволяет имплементировать бесконечный сетевой мир с моделью Клиент-Сервер-Клиент.

Пока плагин не готов, но я крепко за него взялся - ибо он войдет в ядро Лимы.

Пожелания/замечания принимаются тут и в хабе.
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
    Добавлено: 22:55 12-01-2019   
Zachesa
 151 EGP


Рейтинг канала: 4(95)
Репутация: 13
Сообщения: 1415
Откуда: Хабаровск
Зарегистрирован: 12.11.2007
Прошло время...

И так, пытаюсь вспомнить, что я там "наваял" в "демке" http://suef.ru/ больше года тому назад. Там я остановился на постройке стационарных объектов в космосе и возможности сохранения того, что построишь. Большим подспорьем мне стали исходники стрима https://habr.com/ru/post/327372/ само видео тоже смотрел мельком. Сейчас надо разобраться с вот этим материалом https://habr.com/ru/post/350124/ . Стоит задача сделать сетевой вариант "демки", возможно добавить ракеты и прочее оружие.

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

Вообще, реальная игра должна будет иметь отдельно созданный сервер, рассчитанный на значительное количество игроков, но самое главное, он должен будет управлять большим количеством компьютерных персонажей. В данном случае я пока что решаю вопрос лишь с созданием прототипа, иначе говоря "демки".
_________________
Язык Образов, для ситуационного моделирования, программирования и как язык мысли, думающей машины.
    Добавлено: 04:08 17-01-2019   
Zachesa
 151 EGP


Рейтинг канала: 4(95)
Репутация: 13
Сообщения: 1415
Откуда: Хабаровск
Зарегистрирован: 12.11.2007
Цитата:
На основе данного описания из Вики https://wiki.unrealengine.com/Dedicated_Server_Guide_(Windows_%26_Linux) пробую разобраться, как сделать билд для сервера.


https://docs.unrealengine.com/en-us/Platforms/Linux/GettingStarted

Получилось собрать проект движка и запустить компиляцию.
Мой старенький комп жевал это долго... Впрочем закачка исходников через git clone длилась ещё дольше. Скопировать архив и распаковать будет намного быстрее.

Для новых версий движка надо изменить r.PostProcessing.PropagateAlpha=False to r.PostProcessing.PropagateAlpha=0 in defaultengine.ini либо в настройках редактора поменять это. Это потребует перекомпиляции шейдеров, что естественно займёт много времени.

Плагины, которые ставишь с магазина в загрузчике ставятся в папку \Engine\Plugins\Marketplace
соответственно достаточно просто скопировать нужные плагины в папку движка из сорцов.
_________________
Язык Образов, для ситуационного моделирования, программирования и как язык мысли, думающей машины.

Последний раз редактировалось: Zachesa (06:57 20-01-2019), всего редактировалось 4 раз(а)
    Добавлено: 14:21 18-01-2019   
Zachesa
 151 EGP


Рейтинг канала: 4(95)
Репутация: 13
Сообщения: 1415
Откуда: Хабаровск
Зарегистрирован: 12.11.2007
Вот ещё полезная ссылка. Руководство по стилю проекта UE4. https://github.com/CosmoMyzrailGorynych/ue4-style-guide-rus/blob/master/README.md

Генератор полигональных карт https://github.com/Jay2645/Unreal-Polygonal-Map-Gen

добавлено спустя 5 минут:
И даже библиотеку машинного обучения можно подключить, используя её вместе с Питоном или Блупринтами https://github.com/getnamo/tensorflow-ue4

добавлено спустя 38 минут:
Мастер сервер https://github.com/RyroNZ/UE4MasterServer
_________________
Язык Образов, для ситуационного моделирования, программирования и как язык мысли, думающей машины.

Последний раз редактировалось: Zachesa (01:55 19-01-2019), всего редактировалось 3 раз(а)
    Добавлено: 16:08 18-01-2019   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
Новый ништяк от вашего покорного слуги: фича под названием Collision Layer.

Эта штука позволяет определить для актера слой, в котором он будет отвечать на запросы коллизий. Работает это так:

1) Движок запрашивает окружение, нет ли на данный момент столкновения.
2) Проверяется слой коллизий. Если объект находится в другом слое, то игнорируется.
3) Проверяется канал коллизии.
4) Проверяется ответ на коллизию.

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

Фича доступна на данный момент только для версии 4.23 и для включения требует пересборки движка. Скачать можно отсюда: https://github.com/TehnoMag/Unreal-Engine-4-Patches/blob/master/4.23/collision_layer_feature.patch

ВНИМАНИЕ! на данный момент сломаны все LineTrace функции. Они работают только в слое 0 (дефолт). Баг уже адресован и исправление будет доступно завтра. Исправлено.
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."

Последний раз редактировалось: ТехноМаг (14:26 01-12-2019), всего редактировалось 2 раз(а)
    Добавлено: 22:05 30-11-2019   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
ТехноМаг :
Еще один ништячек от вашего покорного слуги:
https://github.com/TehnoMag/Unreal-Engine-4-Multi-Map-Plugin

Плагин MultiMap. Позволяет загружать уровни в OffScene и переключать актеров в нужный момент с уровня на уровень. Каждый уровень имеет те-же функции, что и стандартный мир. Плагин должен помочь с обходом float проблемы для очень больших локаций.

Сам плагин пока еще в разработке. Если будет желание, можете присоеденится к разработке.


https://github.com/TehnoMag/UE4-Module-RelatedWorld
Концептуально обновленная версия плагина (на данный момент доступна только как сурц модуль, но скоро залью на маркет в качестве плагина). В отличии от предыдущей версии полноценно работает в редакторе, умеет в репликацию и может использоваться в качестве Elite подобного инстансинга в рамках единого сервера.
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."

Последний раз редактировалось: ТехноМаг (16:10 23-08-2020), всего редактировалось 1 раз
    Добавлено: 16:10 23-08-2020   
Канал Игры Мечты: «UE4»
На страницу: Пред.  1, 2, 3 | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Я не пассажир! Я SNB!!! (кричал SNB)

  » UE4 | страница 3
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18