alexprey alexprey

Добавил скриншоты на главную, позже загружу дневники разработки игры, где можно будет посмотреть с чего все начиналось :)

alexprey alexprey

EfReeZe, о да, тогда было знатное время и игра казалась сделано круто :D До сих пор иногда играю на телефоне от скуки)

EfReeZe EfReeZe

Это был наш далёкий 2014...

Jusper Jusper

Запись трансляции на YouTube

Jusper Jusper

Случайно сделали битву сварщиков
https://devtribe.ru/p/slash-polygon

Jusper Jusper

Внезапно на сайте потерялся 15-й выпуск. Перевыложили.

Jusper Jusper

Я вам еще не закончил писать обратную связь по боевке, есть много вещей которые немного смутили, но они поправимы. Завтра, если перестанут дергать - чиркану. Спасибо за демку!

Jusper Jusper

ruggaraxe,

Да, в этом плане все ок. Логично, что графен на старой машине, если не упарываться, не взлетит. Но я рад, что это было не 5 фпс, как даже в некоторых АА (типа Pillars of Eternity в некоторых схватках...

Jusper Jusper

ruggaraxe,

Подкреплю ее к публикации.

ruggaraxe ruggaraxe

Jusper, вот ссылка на анкету (я затупил со ссылкой с топике, сорри)
https://docs.google.com/forms/d/e/1FAIpQLSd_Wn53lJFrnfGpWI2IX...

ruggaraxe ruggaraxe

Jusper, честно говоря, да на 800х600 даже не проверяли... :) сорри. Ориентировались на FullHD и выше. Хотя над интерфейсом конечно же надо еще хорошенько поработать.
Тултипы постараемся сделать обязательно к следующей версии...

GenElCon GenElCon

Jusper,

Наверное. В прошлом они сделали Endless Legend - посмотри и сразу станет ясно в какую сторону они работают.

Jusper Jusper

GenElCon,

Я не очень понял по трейлеру геймплей. Это что-то типа цивы? Или это RTS?

GenElCon GenElCon

Humankind от разработчиков Endless Legends (и Space, но тут важно именно Legends).
А также согревающие сердца олдов трейлеры Port Royal 4 и Knights of Honor.

Jusper Jusper

Похвалю темную атмосферу, отличную работу с освещением, тенями и шейдерами. Происходящее на экране корректно задает атмосферу до тех пор, пока не начнется сам экшон, об это напишу далее. Управление персонажем отзывчивое...

Jusper Jusper

Первое, оно же самое тяжелое - UI. Я конечно, понимаю, что 800x600 совсем уже не в моде (завтра проверю на нормальной широформатной машине). Заблюренный текст я еще прочитать могу, но вот конкретно размер его крайне мал...

...
Jusper Jusper

ruggaraxe, я поиграл на старом маке 2012 года (Macbook Pro, Intel HD 4000), рад что с учетом довольно нагруженной по свету и теням картинке игруля не лагает как последняя сволочь (лагает конечно, но очень терпимо...

Логотип проекта 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). Иногда лямбду применять удобнее, чем делегат в чистом виде (например когда в метод нужно послать какое-то вычисление, вовсе не обязательно плодить метод, можно и вписать лямбду). А в нескомпилированном виде это простор для динамик-кода
Эльрат, фиг с этой главной. Мне лень, да и очередной срач мне не нужен. Буду тихонько делать свое дело.

Справка