|
|
|
Канал Игры Мечты: «L.I.M.A. strace_» |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(19) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Вернемся пока к капсуле.
Почитав маны и посмотрев исходники и еще раз продумав какие движения нам нужны появилась простейщая и в тоже время достаточно эффективная реализация (пока без прыжков, правда). Все оказалось гораздо проще, чем я думал. Приятный сюрприз, на самом деле.
Cкрытый текст (кликните здесь для просмотра)
Код: |
void UHumanMovementComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction)
{
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
//добавляем гравитацию в ноги
FVector Gravity = GetGravity();
Gravity *= DeltaTime;
FHitResult Hit(1.0);
SafeMoveUpdatedComponent(Gravity, HumanOwner->GetActorRotation(), true, Hit);
//проверим был ли удар
if (Hit.bBlockingHit && Hit.IsValidBlockingHit())
{
//Если удар был, значит мы стоим на полу и можем двигаться (условность)
FVector Input = ConsumeInputVector();
FVector Acel = Input * WalkSpeed * DeltaTime;
SafeMoveUpdatedComponent(Acel, HumanOwner->GetActorRotation(), true, Hit);
}
//Если нет, то падаем пока не упадем на что-либо
}
FVector UHumanMovementComponent::GetGravity()
{
FRotator Rotation = HumanOwner->GetActorRotation();
float Force = GetGravityZ();
FVector Result = FVector(0, 0, Force);
Result = FRotationMatrix(Rotation).TransformPosition(Result);
return Result;
} |
|
Пока оставлю так. В дальнейшем добавлю рад проверок, чтобы исключить ряд ситуаций.
Теперь осталось перетащить в текущий билд реализацию корабля из прошлого и можно считать подготовительный этап законченным. Дальше летная механика уже.
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (11:39 28-01-2015), всего редактировалось 2 раз(а) |
|
|
Sh.Tac. 151 EGP
Рейтинг канала: 5(108) Репутация: 14 Сообщения: 1426
Зарегистрирован: 27.07.2005 |
|
мне тоже кричать бинго?
ТехноМаг : |
Тут ты не прав. Вернее не совсем прав. Если прижимать гравитацией чувака, то "ходить" он уже не сможет.
|
_________________ This is what you get ...
(c) Radiohead |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(19) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Sh.Tac. : |
мне тоже кричать бинго?
|
Крикнешь, когда я законы физики нормально туда присабачу. Вес персонажа хотя бы так:
Cкрытый текст (кликните здесь для просмотра)
Код: |
FVector UHumanMovementComponent::GetGravity(float DeltaTime)
{
FVector Gravity = FVector::ZeroVector;
if (HumanOwner != nullptr)
{
float Force = GetGravityZ() * GravityScale;
//переводим силу в ускорение
float Accel = Force / Weight;
Gravity.Z = Accel * DeltaTime;
Gravity = FRotationMatrix(HumanOwner->GetActorRotation()).TransformPosition(Gravity);
}
return Gravity;
} |
|
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (15:07 28-01-2015), всего редактировалось 1 раз |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(19) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Вот что пока получается:
Cкрытый текст (кликните здесь для просмотра)
|
И сразу баг выловил. Моя капсула не может пройти через переборку... Там на миллиметр нижний бокс колллизии выше (порог типа). Ушел думать...
Ну и внешний вид
Cкрытый текст (кликните здесь для просмотра)
|
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (00:26 29-01-2015), всего редактировалось 3 раз(а) |
|
|
Sh.Tac. 151 EGP
Рейтинг канала: 5(108) Репутация: 14 Сообщения: 1426
Зарегистрирован: 27.07.2005 |
|
ТехноМаг : |
И сразу баг выловил
|
Auto stepping же
Цитата: |
Почитав маны и посмотрев исходники
|
тоже мне читатель
добавлено спустя 28 минут:
З.Ы. вкратце, вот как ты ходишь? ноги приподнимаешь наверное
вот и чувака "кубического" или капсульного надо слегка приподнимать перед очередным шагом, тогда он может ходить по лестницам и не спотыкаться об ступеньки
но я дальше пас, вся моя писанина как горох об стенку
_________________ This is what you get ...
(c) Radiohead
Последний раз редактировалось: Sh.Tac. (02:17 29-01-2015), всего редактировалось 1 раз |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(19) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Sh.Tac. : |
но я дальше пас, вся моя писанина как горох об стенку
|
Ну в оригинале там несколько не так сделано (помнишь модуль скинуть предлагал?). Хотя насчет "шага" мысль качественная. Скорее так и сделаю. У них идет две проверки.
1) на хит в передней части капсулы (шаг вверх). По Imapct нормали (седня посмотрю еще раз исходник - там по 4м функциям раскидано) просчитывается высота поверхности, и если она меньше определенного значения капсула телепортируется на нее.
2) Проверка на "шаг вниз". Из передней части сферы пускается LineTrace и рассчитывается ее высота. Если меньше нужно значения опять телепортируется. Если больше - включается режим падения.
Sh.Tac. : |
тоже мне читатель
|
Плюс используются некие структуры (FStepDownResult, например), о которых в доках нету ни строчки... Приходится исходники ковырять (то еще удовольствие)
Sh.Tac. : |
вся моя писанина как горох об стенку
|
Слушай, дорогой, капсулу первый раз в жизни пишу. Само-собой из-за отсутствия опыта не могу сразу предугадать все возможные поведения.
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей." |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(19) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
В общем сделал пока по тупому. Потом еще исходник поковыряю, может что-нить более внятное рожу.
Cкрытый текст (кликните здесь для просмотра)
Код: |
void UHumanMovementComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction)
{
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
FVector Input = ConsumeInputVector();
float Speed = RunSpeed;
FVector Accel = Input * Speed * DeltaTime;
FVector Gravity = GetGravity(DeltaTime);
FHitResult Hit(1.f);
if (Acceleration.Size() < MaxAcceleration)
Acceleration += Gravity + (Accel*0.08);
SafeMoveUpdatedComponent(Acceleration, HumanOwner->GetActorRotation(), true, Hit);
if (Hit.bBlockingHit && Hit.IsValidBlockingHit())
{
Hit.Reset();
FVector Step = FRotationMatrix(HumanOwner->GetActorRotation()).TransformPosition(FVector(0, 0, 4));
SafeMoveUpdatedComponent(Accel, HumanOwner->GetActorRotation(), true, Hit);
if (Hit.bBlockingHit)
{
Accel += Step;
SafeMoveUpdatedComponent(Accel, HumanOwner->GetActorRotation(), true, Hit);
}
Acceleration = FVector::ZeroVector;
}
} |
|
ПыСы: Нету тут AutoStep`а. Все ручками, ручками у них
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (15:37 29-01-2015), всего редактировалось 1 раз |
|
|
Sh.Tac. 151 EGP
Рейтинг канала: 5(108) Репутация: 14 Сообщения: 1426
Зарегистрирован: 27.07.2005 |
|
ТехноМаг : |
Вес персонажа хотя бы так
|
мракобесие же, Галилей переворачивается, если у тебя есть ускорение свободного падения, масса уже не нужна, вернее от неё ничего не зависит
_________________ This is what you get ...
(c) Radiohead
Последний раз редактировалось: Sh.Tac. (12:14 30-01-2015), всего редактировалось 1 раз |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(19) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Sh.Tac. : |
Галилей переворачивается
|
Копипаст из оригинала, однако
Грубо говоря. По факту в приведенном выше коде масса практически не влияет на конечную скорость (как и в жизни собственно) за счет понижающих коэффициентов.
Судя по комментам в оригинале сделано для того, чтобы не ставить здоровенные коэффициенты. Там получается в результате что-то типа 10 * 10^-8
Опять же напомню. Капсула еще будет переписываться (и скорее всего не раз), но тот результат который я вижу на данный момент мне идеально подходит для тестов. Сейчас капсула нужна только для одной цели: Дойти до условного мостика и сесть в кресло, чтобы проверить триггер активного контролируемого игроком объекта.
Конечная капсула появится не раньше, чем мы начнем разработку и тестирования ИИ членов экипажа. Там уже должны быть нормальные расчеты и скорее всего я просто возьму оригинальный модуль и полностью заберу алгоритм, добавив ряд проверок на ротацию персонажа. Щас этим наниматься долго и не нужно.
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (23:20 30-01-2015), всего редактировалось 2 раз(а) |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(19) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Разработали класс - хранилище пакетов кораблей. В пакет входят указатели на дочерние объекты, а также на дефолтные системы и дефолтное навесное оборудование.
В дальнейшем он регистрируется в классе ShipForge, который отвечает за спавн корабля игрока и кораблей NPC.
Когда вернусь с работы, добавлю в пакет зависимости Systems, чтобы блюпринт не компилировался, если зависимости не удовлетворены. И добавлю Дебаг выводы, чтобы можно было без компиляции наблюдать потребление энергии и прочее для правки баланса.
В дальнейшем постараюсь создать возможность редактуры этого класса через Lua.
Cкрытый текст (кликните здесь для просмотра)
|
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (12:43 09-02-2015), всего редактировалось 1 раз |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(19) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Небольшая новость.
Пока дизайнер вычищает первую модель корабля от лишних полигонов, а также создает на нее набор текстур решил доделать генератор галактики. О нем сегодня и поговорим.
Есть три уровня генерации:
L0 - уровень галактики. Туманности, в основном
L1 - уровень звезд и созвездий. На данный момент единственный уровень, который работает.
L2 - уровень звездной системы. Солнца, планеты, астероиды и станции.
Как это работает (на примере L1):
Мы берем квадратную текстуру в формате bmp (чтобы сжатия не было) со стороной степени двойки.
Вот эту в частности:
Cкрытый текст (кликните здесь для просмотра)
|
парсим каналы RGB и вычисляем для каждого пикселя среднее арифметическое: (R+G+B)/3
Таким образом получается набор сидов, который мы будет использовать в дальнейшем.
В настройках StellarForge мы задаем параметры размера одного звездного кластера и максимально допустимое количество звезд в нем.
В момент генерации позиция активной камеры конвертируется в id сида по формуле
Код: |
PositionInGalaxy = floor((CameraPosition.X / ClusterSize) + 0.5f) + Center.X
id = floor(PositionInGalaxy.X + (PositionInGalaxy.Y * GalaxyWidth) + 0.5f); |
где Center - расчетный центр галактики, X - компонента вектора позиции (X,Y,Z)
Для улучшения картинки также находятся id смежных кластеров (всего их 27).
Далее для каждого кластера мы рассчитываем кол-во звезд по формуле:
Код: |
StarCount = floor((Seed / 2.56) * (MaxStarsInCluster / 100.f) + 0.5f); |
т.е. Мы берем сид, переводим его в проценты и умножаем на 1% от максимального кол-ва звезд.
Далее, циклически рассчитываются пространственные координаты, класс и название звезды (Цифро-буквенный индекс).
При спавне актера звезды (на уровне L1 это система частиц с сферической коллизией заведомо большего радиуса) ставится хук на проверку столкновения с коллизией звезды. В случае срабатывания StellarForge получает команду на генерацию L2.
Как это выглядит: http://www.youtube.com/watch?v=mkX59urpdhE
Теперь вопросы:
1) Посоветуете, пожалуйста, хорошую статью по классификациям звезд, где можно подробно почитать о зависимости цветности звезды от температуры/массы. Сейчас генерация класса происходит из пресетов текстур, поэтому и зеленые и фиолетовые звезды встречаются, что не есть очень хорошо.
2) Стоит ли заморачиваться с полноценным генератором названий, или цифро-буквенного индекса будет достаточно (для обитаемых миров названия забиваются вручную).
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (14:52 17-02-2015), всего редактировалось 3 раз(а) |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(19) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Изменил генерацию в соответствие с Гарвардской классификацией. Пока выглядит вот так: http://www.youtube.com/watch?v=21m2wGi2fMs
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (14:52 17-02-2015), всего редактировалось 2 раз(а) |
|
|
StarShutter 88 EGP
Репутация: 7 Сообщения: 592
Зарегистрирован: 21.11.2008 |
|
Красиво. Но как-то однообразно, почти все идет оранжевыми звездами с одинаковой яркостью
Можно ли сделать чуть большие различия в яркости и больше желтых,белых,голубых?
Последний раз редактировалось: StarShutter (22:21 26-02-2015), всего редактировалось 1 раз |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(19) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
StarShutter : |
Можно ли сделать чуть большие различия в яркости и больше желтых,белых,голубых?
|
Пока варьятивность вообще не настроена (ну т.е. она как бы есть,но в приделах основных 7и классов, поэтому однообразно так + там на самом деле очень много мелких белых и голубых звезд, но у них такая яркость получается, что их не видно, пока в плотную не подлетишь). Выдает звезды так, как скажет великий rand.
Сейчас пытаюсь все это дело выводить в Бэксцену, дабы координатной сетки на планеты хватило и рендерить в кубмапу. К сожалению, такой подход убил почти на корню FPS, поэтому думаю как все это окуратненько кэшировать и выдавать уже готовый результат.
Сложность в том, что сейчас используется очень много недокументированных возможностей UE4 (та же самая возможность использовать разные таргеты для рисования двух разных сцен в одном кадре), на которые я наткнулся при ковырянии исходников, поэтому конечный результат до конца пока не известен.
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (13:26 28-02-2015), всего редактировалось 3 раз(а) |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(19) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Сори за задержку с новостями - работы привалило.
13ого числа мигрируем и адаптируем билд под UE4.7 (там добавили пару вкусняшек, которые FPS должны увеличить).
От дизайнеров пришли новости, что подходит к концу разработка финальной версии крейсера, ранний скриншот которого уже выкладывал, а так-же на подходе модель мостика и C&C
UPD:
Забыл: интерьеры теперь убраны в отдельную сцену и собираются как карты (подсмотрел реализацию в X-Rebirth). Это позволило сэкономить время на доведении до ума собственной капсулы, заменив ее на стандартную, также теперь не нужно изворачиваться с коллизиями екстерьеров кораблей, дабы избежать проявления dance бага.
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (12:27 11-03-2015), всего редактировалось 1 раз |
|
|
Jerry Rezet 581 EGP
Рейтинг канала: 5(113) Репутация: 86 Сообщения: 3365 Откуда: Санкт-Петербург. Зарегистрирован: 01.04.2005 |
|
ТехноМаг : |
В итоге на корабль будет действовать следующий скил(5+3+1)/3=3, т.е. среднее арифметическое из навыков инженеров (при условии назначения всех трех в машинное)
Что дают эти бонусы (опять же на примере инженеров): Чем выше общий скил, тем выше скорость ремонта; ниже вероятность сбоя ГП; ниже вероятность сбоя оборудования
|
Хм.. По поводу "только среднеарифметическое" в данном случае не очень реалистично - лучше бы "разброс хороших/нехороших результатов" повышался. Типа, орудия стреляют не тупо ровно по среднему отнимая ХП, а с разбросом тем больше, чем больше разброс в уровнях нанятых, либо одни лучше, другие хуже (по точности, скорости и прочим параметрам). То же с мотористами - "в критических ситуациях" когда к мотору ставят самого крутого - всё по максимуму, а вот в обычном полёте стажёры могут и накосячить (: Было бы прикольно
добавлено спустя 3 минуты:
ТехноМаг : |
Это-же правило действует и для других "китайцев", которые имеют "лишние" навыки.
|
А как же всякие нейроинтерфейсы и "обучение как в Матрице"? Хотя бы оставь возможность "прокачать" китайцу за бабло или ресурсы какой-нибудь неубиваемый уровень, чтобы ниже него не падало. Типа, за большие величины, но чтобы можно было.
добавлено спустя 23 минуты:
ТехноМаг : |
Пост на "подумать"
|
И к этому тоже было бы неплохо иметь возможность "прокачивать базы" за бабло (или за что там), чтобы хотя бы при смене корабля сразу на базовый уровень хотя бы имело смысл, а то совсем хардкор.
_________________ - Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c]
Последний раз редактировалось: Jerry Rezet (01:44 19-03-2015), всего редактировалось 2 раз(а) |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(19) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Jerry Rezet : |
в данном случае не очень реалистично
|
Дополнительные множители будут добавляться уже когда система будет введена. Сейчас других проблем выше крыши.
Jerry Rezet : |
обучение как в Матрице
|
"Матрица" только для офицеров принятие решения которых жизненно необходимо для корабля. Остальные члены экипажа работают по старинке. Нейроинтерфейсы у них конечно тоже есть, но они для обеспечения коммуникации и снабжения их оперативной информацией. Связи с Компьютерным ядром корабля у них нет (в прочем как и у ряда офицеров, значимость которых вторична и присутствие которых на мостике не требуется).
К этим офицерам можно отнести:
Начальника научного отдела;
Начальника медицинского отсека;
Штатного психолога.
Т.е. всех тех, которые существуют только для поднятия эффективности работы вторичного персонала (полный список офицеров выложу позже с предварительным списком эффектов).
Jerry Rezet : |
"прокачивать базы
|
Сама концепция "синхронизации" сейчас активно обсуждается и все еще находится на стадии разработки. В каком виде она в итоге появится пока не решено.
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (23:34 19-03-2015), всего редактировалось 3 раз(а) |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(19) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Build 01040.15 будет доступен в течении следующей недели.
Билд создается для тестирования окружения мостика, а также для тестирования окружения уровня L1 (уровень системы). Физика и генерация в данном билде полностью отключены.
Расписание ближайших билдов:
011хx.15 - тестирование физики и орбитальных операций.
012xx.15 - тестирование двигателя Алькубьерре на малых мощностях (перелет планета-планета)
013xx.15 - тестирование стыковочных процедур; базовое взаимодействие со станциями
014xx.15 - тестирование двигателя Алькубьерре на полной мощности (перелеты между звездами)
Генерации будут включаться постепенно начиная с билда 02xxxx, при условии, что все остальные тесты пройдут нормально.
Отчеты тестирования будут постится здесь. Видео с тестовыми полетами будут доступны на моем канале youtube: http://www.youtube.com/channel/UCB_GKR-C-JMJyHHPBmXrGDQ
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей." |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(19) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Появился концепт одной из частей будущего UI (режим навигации).
Big Picture (кликните здесь для просмотра)
|
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей." |
|
|
Michael_Moon 100 EGP
Рейтинг канала: 1(2) Репутация: -2 Сообщения: 669 Откуда: РК, Кокшетау Зарегистрирован: 15.02.2011 |
|
Красиво и лаконично. Могешь!
|
|
|
|
|
|
Канал Игры Мечты: «L.I.M.A. strace_» |
|