TheDarkestRed TheDarkestRed

Новое окружение ⛰ 🌲 🌳 🎮

Rummy_Games Rummy_Games

Доброго субботнего вечера! Сегодня мы ходим поделиться наработками нашего 3D-моделлера в рамках #saturdayscreenshot. А также кратко делимся ЛОРом игры.

...
TheDarkestRed TheDarkestRed

Карта мира The Darkest Red 🎮 🐺 🤺 🌍 🗺 ⛰

TheDarkestRed TheDarkestRed

Обновили поведение камеры и механики боя 🎮 🤺 🧟 🎥

Rummy_Games Rummy_Games

Доброго субботнего вечера! Сегодня мы поделимся с вами видео процесса разработки одного из противников (“Роя”) в нашей игре, в рамках #saturdayscreenshot, а также кратко делимся ЛОРом игры.

...
mushroom_queen mushroom_queen

Jusper, спасибо за комментарий! старалась писать нескучно))

Jusper Jusper

Моя любимая фаза разработки любой игры!
Отлично написано, посмеялся местами от души. Спасибо!

Jusper Jusper

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

Не вижу пока, как в такое управление впихнуть боевку.

Jusper Jusper

PallSwarrow
Что ж я поиграл. Пока это не игра про пиратов, а игра про навигацию парусами. Это скорее пока в плюс, потому что управление мне понравилось, но боюсь, что весь игровой фокус сейчас только в этом...

...
id44474404 id44474404

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

...
TheDarkestRed TheDarkestRed

Экспериментируем с рэгдолами 🎮🧟🤺🐺

lehha95 lehha95

Открыли страницу в Steam! Добавляйте в список желаемого!

https://store.steampowered.com/app/1355780/

romandviski romandviski

Спасибо, добрый человек.

Rummy_Games Rummy_Games

Доброго субботнего вечера! Сегодня мы поделимся с вами видео процесса разработки одного из противников (“Роя”) в нашей игре, в рамках #saturdayscreenshot, а также кратко делимся ЛОРом игры.

...
id44474404 id44474404

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

...
Jusper Jusper

В GMS сильно поменялась структура функционала, но не все корректно мигрируется из старых проектов. Если тебе не критичны новинки, то переходить на него стоит только с новым проектом.

Kazirath Kazirath

Насколько я понял проще установть последнюю версию перед 2.3 и продолжить работать под ней. Новинка не стоит свеч после переделки скриптов

Kazirath Kazirath

Это совсем не радостная новость. Меня вполне устраивал функционал старой работы скриптов и я даже выработал некоторую систему, которая позволяла через скрипты настраивать работу объектов и прочего. Принудительная же переделка в функции у меня не сработает из за структур некоторых скриптов...

...
alexprey alexprey

Учитывая то, что написано в данной статье обратно включить это не получится и придется действительно обернуть код скриптов в функции.

Кратко из документации:

  • Раньше скрипты были индивидуальными и изолированными
  • ...
  • ...
  • ...
  • ...
...
PallSwarrow PallSwarrow

Спасибо за комменты, оч приятно)
Про ссылку тупанул - пока разбираюсь с сайтом)

Логотип проекта Unity

Сериализация функтора

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

Все сериализаторы скопилированы в библиотеку. Помимо сериализации функтора так же доступна сериализация и некоторых других сущностей.

Сериализация реализована через наследие от ScriptableObject
Это значит, что сборка мусора на этих объектах не работает, их нужно удалять вручную командой Object.DestroyImmediate()

Список всех основных сериализаторов данной библиотеки:

Сериализуется через класс SerializeConstructorInfo.
Для создания юзается метод класса Serialize:

SerializeConstructorInfo CreateConstructorInfo(ConstructorInfo value)

Сериализуется через класс SerializeMethodInfo.
Для создания юзается метод класса Serialize:

SerializeMethodInfo CreateMethodInfo(MethodInfovalue)

Сериализуется через класс SerializeFieldInfo.
Для создания юзается метод класса Serialize:

SerializeFieldInfo CreateFieldInfo(FieldInfo value)

Сериализуется через класс SerializeMemberInfo.
Для создания юзается метод класса Serialize:

SerializeConstructorInfo CreateMemberInfo(MemberInfo value)

Сериализуется через класс SerializeMemberAssignment.
Для создания юзается метод класса Serialize:

SerializeMemberAssignment CreateMember_Assignment(MemberAssignment value)

Сериализуется через класс SerializeMemberListBinding.
Для создания юзается метод класса Serialize:

SerializeMemberListBinding CreateMember_ListBinding(MemberListBinding value)

Сериализуется через класс SerializeMemberMemberBinding.
Для создания юзается метод класса Serialize:

SerializeMemberMemberBinding CreateMember_MemberBinding(MemberMemberBinding value)

Сериализуется через класс SerializeMemberBinding.
Для создания юзается метод класса Serialize:

SerializeMemberBinding CreateMemberBinding(MemberBinding value)

Сериализуется через класс SerializeElementInit.
Для создания юзается метод класса Serialize:

SerializeElementInit CreateElementInit(ElementInit value)

Сериализуется через класс SerializeType.
Для создания юзается метод класса Serialize:

SerializeType CreateType(Type value)

Сериализуется через класс SerializeEnum.
Для создания юзается метод класса Serialize:

SerializeEnum CreateEnum(Enum value)

Сериализуется через класс SerializeValue.
Для создания юзается метод класса Serialize:

SerializeValue CreateValue(object value)

Сериализуется через класс SerializeExpression.
Для создания юзается метод класса Serialize:

SerializeExpression CreateExpression(Expression value)

Дополнительные сериализаторы, связанные с выражениями:
Все эти сериализаторы можно использовать через класс Serialize.Expressions
* SerializeExpressionBinary Binary(BinaryExpression value)
* SerializeExpressionMember Member(MemberExpression value)
* SerializeExpressionUnary Unary(UnaryExpression value)
* SerializeExpressionConditional Conditional(ConditionalExpression value)
* SerializeExpressionConstant Constant(ConstantExpression value)
* SerializeExpressionInvocation Invocation(InvocationExpression value)
* SerializeExpressionLambda Lambda(LambdaExpression value)
* SerializeExpressionListInit ListInit(ListInitExpression value)
* SerializeExpressionMemberInit MemberInit(MemberInitExpression value)
* SerializeExpressionMethodCall MethodCall(MethodCallExpression value)
* SerializeExpressionNew New(NewExpression value)
* SerializeExpressionNewArrayInit NewArrayInit(NewArrayExpression value)
* SerializeExpressionNewArrayBounds NewArrayBounds(NewArrayExpression value)
* SerializeExpressionParameter Parameter(ParameterExpression value)
* SerializeExpressionTypeIs TypeIs(TypeBinaryExpression value)

Пример применения

public ConstructorInfo exampleOfRealData; //Предполагается, что поле не пусто
public SerializeConstructorInfo data;
public void Method() 
{
	data = Serialize.CreateConstructorInfo(exampleOfRealData);
	//Теперь data.value всегда будет возвращать этот конструктор
}

С остальными классами аналогично.

С выражениями чуток иначе. Все выражения юзаются через класс Expression<>. Например.

public SerializeExpression expression;
public void Method() 
{
	Expession<Func<int>> tempExpression = () => 10;
	expression = Serialize.CreateExpression(tempExpression);
}

Не были добавлены блочные операторы, покуда класс Expression<> не умеет с ними работать. Потому писать сериализаторы под всякие try-catch{} и if {} я не стал - все равно компилятор такие вещи не пропускает.
Если найду способ это обойти офк добавлю и опишу как с этим работать

Смотрите также:


Комментарии



Я, конечно, лезу в то, в чем не разбираюсь, но разве в шарпе роль функторов не выполняют делегаты?

lentinant, лямбда/функторы это фактически и есть делегаты в их скомпилированном виде (насколько мне помнится разбор на IL). Иногда лямбду применять удобнее, чем делегат в чистом виде (например когда в метод нужно послать какое-то вычисление, вовсе не обязательно плодить метод, можно и вписать лямбду). А в нескомпилированном виде это простор для динамик-кода
Эльрат, фиг с этой главной. Мне лень, да и очередной срач мне не нужен. Буду тихонько делать свое дело.

Справка