23

» XGM Team / XGM — Премия 2020 года

Работа для номинации: лучший проект для WarCraft 3
23

» WarCraft 3 / Рассинхрон от GetLocalPlayer() -> SetCameraQuickPosition()

PT153,
Спасибо за инфу. Но нет, в данном случае юнитам во время игры порчу не давал.
Код карты прикрепил.
Загруженные файлы
23

» WarCraft 3 / Рассинхрон от GetLocalPlayer() -> SetCameraQuickPosition()

ScorpioT1000:
Так это для фаталов, а не десинков. Десинк происходит не сразу на той же инструкции
Проверить легко - убери именно этот код из карты и она продолжит десинкаться
Достаточно мгновенно и стабильно, на этой инструкции плюс минус две функции. Плюс есть триггер, который включается при выходе игрока, и на второй машине, которая остаётся в игре, он включается сразу после этой функции.

PT153:
Порча в карте есть?
Да. Достаточно много.

Спасибо всем за ответы. Да, буду в том чмсле проверять и без этого кода. Ошибка редко ловится с нуля и невоспроизводима. Пока стабильно есть только те сохранения в той конкретной игре и версии, где происходит этот десинк.
Мне кажется, причину найти будет невозможно. Но у меня хорошее предчувствие уже по имеющимся советам оптимизации. Скорее больше хотелось узнать про альтернативы.
То что это может быть глюком записи реплея говорит следующее 1) В реплеях действительно похоже сохраняются все позиции CameraQuickPosition 2) Разный размер файлов сохранений у игроков 3) Отключение записи реплеев зрительно немного повысило производительность в мультиплеере
23

» WarCraft 3 / Рассинхрон от GetLocalPlayer() -> SetCameraQuickPosition()

PT153:
makkad, что за jassspy? И если можешь, то чего не кинул?
Пока нет доступа к компьютеру к файлу.
Для проверки кода подойдёт программа UnrealJassSpy www.hiveworkshop.com/threads/unreal-jass-spy-1-26a.244384
Кидаешь её файлы в папку с игрой, запускаещь игру, ждешь внедрения (жмешь ок), запускаешь карту. Потом в логах JassSpy.txt смотришь на каком месте у тебя прервалась игра.
23

» WarCraft 3 / Рассинхрон от GetLocalPlayer() -> SetCameraQuickPosition()

PT153:
makkad, скрипт кинь. Файл - экспортировать скрипт.
Могу, но там огромная карта. В любом случае, jassspy указывет на это место.
23

» WarCraft 3 / Рассинхрон от GetLocalPlayer() -> SetCameraQuickPosition()

Что касается автора, результат с периодом 0.005 так и не получил
Результат отрицательный. Проблем не было. Проблема только при ''грязной игре''. Вот тут расснихрон через 30 сек примерно:
Сохранение игрок 1:
Сохранение игрок 2:
Карта:

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

Просто сейчас порядок такой.
Игрок 1:
GetUnitX() -> GetUnitY() -> GetLocalPlayer() -> SetCameraQuickPosition(x,y) ... -> GetUnitX() -> GetUnitY() -> GetLocalPlayer()
Игрок 2:
GetUnitX() -> GetUnitY() -> GetLocalPlayer() -> GetUnitX() -> GetUnitY() -> GetLocalPlayer() -> SetCameraQuickPosition(x,y) ...
Можно более оптимально переписать код, как здесь xgm.guru/p/wc3/Rassinkhron-ot-GetLocalPlayer---SetCameraQuickPos... и тогда у всех игроков будет порядок:
GetLocalPlayer() -> GetUnitX() -> GetUnitY() -> SetCameraQuickPosition(x,y) ...
Это, наверное, позволит Warcraft не форсировать desync при выполнении этого кода,.
23

» WarCraft 3 / Рассинхрон от GetLocalPlayer() -> SetCameraQuickPosition()

Vlod, Да. Спасибо за тест. У меня у самого на чистой карте только с этим кодом не воспроизводится, так бы прикрепил карту. Даже на грязной карте не каждый раз и не на всех системах. Но имеются сохранения, где происходит гарантированный вылет через секунд 30. Там играли уже 14 часов, но первый рассинхрон из за этой ошибки был через 2 часа. JassSpy указывает на это место.
Ещё странно, что размер файлов сохранений у игроков значительно отличаются.

Вообщем, спасибо за хорошие советы отключить запись реплеев и минимизировать число вызовов GetLocalPlayer().
23

» WarCraft 3 / Рассинхрон от GetLocalPlayer() -> SetCameraQuickPosition()

ScorpioT1000:
утечка, связанная с записью повторов
Спасибо за наводку, поищу решение здесь. Такое встречалось где-нибудь? Если прописать DoNotSaveReplay() в карту то её стабильность может повыситься?
Но в итоге, мне кажется, причину тут не найти. Вероятно нужно искать альтернативное решение.
Возможно, как нибудь можно максимально сихронизировать выполняемые функции у игроков в рамках этой задачи? Т.е. чтобы порядок выполнения функций был одинаков у всех игроков. И раз он вылетал на выполнении функции GetLocalPlayer(), то уменьшить число вызовов этой функции. Значение локалок же может быть разным у разных игроков? Например, так:
function Trig_CameraSystem_Actions takes nothing returns nothing
    local real x
    local real y
    local integer i=GetPlayerId(GetLocalPlayer())
    if udg_Hero[i]!=null then
        set x=GetUnitX(udg_Hero[i])
        set y=GetUnitY(udg_Hero[i])
        call SetCameraQuickPosition(x,y)
        call SetCameraQuickPosition(x,y)
        call SetCameraQuickPosition(x,y)
        call SetCameraQuickPosition(x,y)
        call SetCameraQuickPosition(x,y)
        call SetCameraQuickPosition(x,y)
     endif
endfunction
23

» WarCraft 3 / Рассинхрон от GetLocalPlayer() -> SetCameraQuickPosition()

ScorpioT1000:
Этот код не вызывает десинх, покажите другой, с пробелом

Хотя если разве что баг в рефордже
А зачем столько раз вызывать одну функцию?
Это и есть весь код. SetCameraQuickPosition устанавливает позицию, куда переключится камера, если будет нажат пробел. У SetCameraQuickPosition есть в буфере несколько позиций. Если несколько подряд раз его исполнить, то весь буфер перепишется.
23

» Возмездие / Гайд на прохождение Возмездие: Пакт Паладина

ThatGuyFromBar:
заметил что люди в своих прохождениях Пакта Паладина очень тупят и нубят
Я, вероятно, лезу не в своё дело, и вообще, я мимо проходил, но:
  1. Отличное отношение к игрокам, которые проходят твою карту.
    2.Делать игру/карту понятной для игрока - тоже важно. Так что скорее всего, проблема не в них, а в карте (ведь они не обязаны быть 3000 iQ гениями и они, в отличие от тебя, не разрабатывали твою карту, они не должны знать как всё устроено). Чтобы такого избежать, стоит либо добавить дополнительные подсказки, либо просто сделать всё предельно очевидным.
Зачем же всех под одну гребёнку и делать карты очевидными для всех? Некоторым нравятся решать головоломки и находить выходы из неочевидных ситуаций. Да, это отсекает большую часть возможной аудитории, зато остальной части будет интереснее.
23

» WarCraft 3 / Нужна модель? - Вам сюда!

Размещаю вновь, так потребовалось найти другого исполнителя с другими условиями.
В карте Northrend RPG есть герой гренадёр с моделью сделанной Кет'ом (см. картинку). Но я бы хотел видеть в карте более высокополигональную модель, с более человеческими пропорциями.
В исходной модели мне понравилась идея с пращой, с висящими на ремне гранатами и с усами. Это бы хотелось что бы было и в новой.
У героя есть краткая биография и список способностей. Нужно, чтобы модель им не противоречила. (Например, учесть его простонародное происхождение). Также нужно добавить анимацию Slam когда герой что-то устанавливает рядом с собой и анимацию Spell когда он что-то колдует поднимая руку (обе незацикленные). В карте это герой, разложения у него нет. Геройское свечение не нужно. Атакует только гранатами в дальнем бою. Хорошо также сделать более красивую анимацию для attack.
По поводу денежного вознаграждения пишите в ЛС. Ориентировочно оцениваю работу от 1500 руб. (зависит от времени и сложности).
23

» WarCraft 3 / После загрузки сохранённой игры вылетает с критической ошибкой

Принятый ответ
Нашёл причину вылета.
У героя был Спеллбук, в спеллбуке была пассивная способность аура "Боевой марш". В процессе игры герой умирал и воскрешался. Если после воскрешения сохраниться и загрузиться вновь, то вылетает с ошибкой.
Исправил следующим образом. Отследил сохранения и в этом триггере отключал все пассивки в Спелбуке (SetPlayerAbilityAvaible() на false). Через малое время после сохранения вновь их активирую.
23

» SETI / SETI

Просто бродилка в пустых локациях? Отлично, знаю, что The Painscreek Killings многим понравился. Даже сам бы сыграл, но уже всё заспойлерил себе. Хотелось бы ещё подобных игр. Может подскажите, какими подобными играми вдохновлялись?
23

» Northrend RPG / Northrend RPG. Благодарности

Niken:
makkad:
Ну вот, как раз по мотивам ваших тестов вышла версия Northrend RPG v1.06 [changelog], где можно более тонко выбрать уровень сложности. На обычном уровне сейчас должно стать проще. У героев больше ХП и больше доход золота.
Ну я не вижу там исправления приоритета агрессивности на лучников и простого способа сражения с гаргульями и драконом для мили героев
Приоритет с лучника исправлен, теперь он менее вероятен, не записал в ченджлог как слишком мелкое исправление. Число гаргулий и драконов уменьшил.
23

» Northrend RPG / Northrend RPG. Благодарности

Niken:
Уж лучше бы исправлял баги, косяки и недочеты, чем тупо благодарить. Особенно баланс героев
А так хочется, чтобы автор все сделал из моего отзыва, но это мечты...
Ну вот, как раз по мотивам ваших тестов вышла версия Northrend RPG v1.06 [changelog], где можно более тонко выбрать уровень сложности. На обычном уровне сейчас должно стать проще. У героев больше ХП и больше доход золота.
Касаемо баланса героев, обычно судят, что с балансом проблемы по достаточно большой статистике. На данный момент я получаю очень противоречивые отзывы, какой герой сильный, а какой слабый. У всех свои стили игры. Лично мне было примерно одинаково комфортно пройти за всех героев (всё теститоровал на Серьёзном уровне сложности). Так что, касаемо баланса силы, я не вижу первоочерёдных проблем. Может разве что есть проблемы баланса в интересности геймплея, сейчас как раз провожу опрос в своей группе о любимом герое vk.com/northrendrpg?w=poll-195721415_389563990 .

А людей поблагодарить никогда лишним не будет.
23

» Альфа тест / Заявка на тест карты: Northrend RPG

Феникс:
Кстати, отдельное замечание, режим следования реализован через заднее место, я так понимаю юниты пытаются следовать в ту точку, куда кликает игрок, а это создаёт проблемы с поиском пути, они мешают пройти герою, почему бы не следовать за героем?
Ближнебойные наёмники должны вступить в бой не сильно позже самого героя. Но можно там похимичить с расстояниями и целями.

Niken, Спасибо за подробный обзор и тест каждого из героев. Приметил из него интересные идеи.

А вот кто из всех отличился, так это черепаха - сожрала твоего питомца или героя, все гг и никакие способности не помогут
Ну вообще-то есть одна возможность, доступная всем героям, позволяющая спастись из желудка Черепахи.
23

» Альфа тест / Заявка на тест карты: Northrend RPG

Феникс, Огромное спасибо за детальный отзыв с дельными рекомендациями. По всем пунктам согласен, что нужно кардинально улучшаться, кроме разве что имб. Опрашивал игроков и тестеров, у всех очень разнятся мнения, какой герой слишком сильный или слабый, как правило одни и те же герои попадают в противоположные категории. Или вот опрос в группе VK о любимом герое. Не говорю что тут всё идеально, но они требуют разных подходов к игре. Где-то будет вознаграждаться более вдумчивый геймплей. А для некоторых достаточно "ололо", и вдумчивость не принесёт особого усиления. Но с требованием "напряга" для некоторых героев верно подмечено, но это специально сделано для тех кто любит превозмогать, типа меня самого. Короче, балансировалась максимальная сила героя, а не единицы мощи на затраченные усилия.
Секреты По секрету скажу, что есть один очень законспирированный квест с неплохой наградой. Ну это сделано для фанатов. Но то что почти (исключение, секрет со знаменем Плети) нет секретов, которые реально было бы открыть просто достаточно любопытному обычному игроку, это справедливое замечание. Надо будет обязательно добавить что-нибудь подобное в ближайших версиях.
Боссы Думаю, можно привязать количество сгенерированных летающих монстров к числу дальнобойных героев в пати.
Компаньоны Есть возможность в начале выбрать до 3 героев с помощью команды -addhero. Но идея со временным союзником-героем под вашим управлением достойная.
Выбор Буду развиваться в эту сторону, это действительно самая важная часть для любой RPG.
Насчёт Ландшафта не знаю что делать в практическом смысле. Рекомендуется разгладить шум и перепады?
23

» Альфа тест / Заявка на тест карты: Northrend RPG

Феникс:
Да без проблем. Мне главное было услышать мнение опытных мапмейкеров для полноты картины и для получения каких нибудь инсайдов о картостроительстве, и я его получил в какой-то мере. Спасибо KingMaximax, Bergi_Bear, N7 Molot, Niken, Феникс за предоставленную возможность.
В плане каких-то субъективных или спорных вещей, у которых есть две медали (Весёлая прогулка-Тяжёлое испытание; Всё кристально ясно-Не над чем подумать; Требует кооперацию-Поощряет независимость; Универсальность-Разнообразие; Скоротечность-Затянутость) я в своей карте уверен, так как сделал её под себя и конкретных людей. Всем угодить даже не пытался, имею представление, кому такое не зайдёт.
Жаль, что вам не понравилось, но спасибо что уделили время. Вы сделали хорошее дело, эти отзывы помогут улучшить проект, и возможно, помогут кому нибудь в будущем подарить несколько радостных часов в жизни.
23

» Альфа тест / Заявка на тест карты: Northrend RPG

Lord_Teo, Феникс, Спасибо за замечания. Подправлю моменты, которые я не приметил и согласен.

Феникс, Ну более менее все герои задумывались универсалами. Например, тот же командир (капитан) и гренадёр могут научиться лечить (доп способность "Благодать" и способность "Массовое исцеление" соответственно).
Bergi_Bear, Насчёт гренадёра, френдлифаер можно почти нивелировать если взять на 11 уровне талант "Направленный взрыв".
23

» Альфа тест / Заявка на тест карты: Northrend RPG

Феникс:
makkad, кстати, основная проблема ландшафта просто невероятно убогий (прости) левел дизайн. Зачем нужны кишкообразные локации с постоянной сменой высот? Во-первых видимость около нулевая, во-вторых элементарно зажимают в проёмах хилых героев. Если была идея сделать хардкор, то она провалилась)
В некоторых местах типа леса и ложбины пауков да, была идея сделать атмосферу неожиданных опасностей с помощью ландшафта.
23

» Альфа тест / Заявка на тест карты: Northrend RPG

Bergi_Bear, Да. Спасибо за отзыв. Может есть что нибудь, что ты посоветуешь исправить малой кровью, какие нибудь мелочи?
Понятно, что могу например Сделать поярче эффект от пассивки у гренадёра (там есть визуальный эффект, но, видать, он не заметен). Что нибудь в этом роде. Добавить какие нибудь фишки или недостающие элементы. Из опыта игры в другие карты и игры и мапмейкерства.
Конечно, менять глобально карту не планирую, это действительно субъективно, в плане идеи геймплея (большие растояния), способностей персонажей, того же френдлифаера, негативных эффектов предметов и прочее.
23

» Альфа тест / Заявка на тест карты: Northrend RPG

Отзывом удовлетворён. Удалось получить несколько ценных замечаний.