29

» WarCraft 3 / Бета версия Warcraft III Reforged 1.32

Maxsavin:
С кем-то тут переговаривался по поводу "редактора диалогов"
Иронично, а ведь его действительно удалили. Ну близзы... не себе в катсценах, раз не потянули, так людям бы оставили для их проектов.
Во-первых, я уже упоминал, что для него нужен софт для лицевой анимации, который стоит десятки тысяч долларов.
Во-вторых, им нужно поддерживать даже то, что они сами не используют, а тулза там была далеко не готовая.
29

» WarCraft 3 / Сохранение функции со списком аргументов

Пишу о качестве наработки: "A closure is a poor man’s object; an object is a poor man’s closure". Учитывая что эти кложуры нужно оборачивать в макросы, которые при изменении сигнатуры функции нужно еще и поддерживать, куда-то сохранять, а затем еще и удалять, намного проще вручную создать структуру. Не нужно. Речь о луа была только потому, что там тоже есть кложуры, только их использование во много много раз проще и имеет больше смысла (анонимные функции, например). Тащить подобные костыли в жасс не советую.
29

» WarCraft 3 / Сохранение функции со списком аргументов

Объективно недостаточно для чего? С луа можно было нормально работать в день выхода 1.30
29

» WarCraft 3 / Сохранение функции со списком аргументов

Vlod:
Обращаюсь к аудитории. Посмотрите на этот комментарий, а теперь - на версию патча.
Логики я здесь, извините, не вижу.

Для тех, кто не понял, на 1.26 нет луа.
Для тех, кто не понял, 1.26 - не последний патч. (соответственно делать на нем что-либо здравого смысла нет, патчу почти 9 лет)
29

» WarCraft 3 / Мои мысли об устаревших механиках Warcraft 3 и....

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

» WarCraft 3 / Мои мысли об устаревших механиках Warcraft 3 и....

Ну вот адекватный человек повторил то , что я уже втирал тем, кто слишком много учился в институтах
Только это неправда.
29

» WarCraft 3 / Мои мысли об устаревших механиках Warcraft 3 и....

Proshel_Doty:
prog, почему тогда я уже несколько раз пробовал генерить ряд из 100 чисел, и каждый раз он отлично подходил для работы одной такой пассивки? Последний раз был вчера вечером
Я вчера вечером не видел от тебя пруфа с картой и сейчас не вижу
29

» WarCraft 3 / Бета версия Warcraft III Reforged 1.32

Запускал свои карты на 1.31, в основном все работает ок, фантазеры, которые думают, что кастомки не будут работать, вы сайт рефорджа то открывали?
29

» WarCraft 3 / Мои мысли об устаревших механиках Warcraft 3 и....

Нет, блин, нахрена он мне?
Пока ты не написал про него, я даже не знал, что это такое, пришлось гуглить и то влом было разбираться что там к чему. Так то оно не надо мне и вряд ли когда либо пригодится
Достаточно для чего? Что я должен вынести из твоего ответа?
Сори, но ты судя по всему просто недостаточно квалифицирован для того, чтобы заявлять о подобных "теориях" с позиции правильности, так что доказывать свои каляки придется тебе, я свои пруфы базовой теории вероятности предоставил.
29

» WarCraft 3 / Мои мысли об устаревших механиках Warcraft 3 и....

function random(a: number) {
    return function() {
        a ^= a << 25; a ^= a >>> 7; a ^= a << 2;
        return (a >>> 0) / 4294967296;
    }
}

type Unit = {
    random_chances: number[]
}

const rnd_for_units = random(3637);
const rnd = random(1337);
const units: Unit[] = [];

for (let i = 0; i < 100; i++) {
    units.push({ random_chances: [] });
}

const chiSquaredTest = require('chi-squared-test');

for (let i = 0; i < 10000000; i++) {
    const unit = units[Math.floor(rnd_for_units() * units.length)]

    unit.random_chances.push(rnd());
}

for (const unit of units) {
    const expected: number[] = [];

    for (let i = 0; i < unit.random_chances.length; i++) expected.push(0.5);

    const test = chiSquaredTest(unit.random_chances, expected, 1);

    console.log("Chi squared probability", test.probability);
}
Теста chi-squared достаточно тебе?
29

» WarCraft 3 / Мои мысли об устаревших механиках Warcraft 3 и....

Proshel_Doty:
Вот такой код может быть понятнее. 100 "юнитов" и 10000000 попыток на крит у рандомного из них. У всех них средний шанс - 0.5 +- epsilon.
Ясно
Ты по ходу вообще не осмыслил, то что я писал выше
Вместо того, чтобы сделать, что я тебе говорил выше, ты сейчас маешься ерундой, пытаясь доказать, что ты дофига математик или хз что
Может быть это ты не понял моего ответа? :)
Но его действие распыляется, когда он работает сразу на нескольких абилках и юнитах. Поэтому я и говорю, что для каждого случая хорошо бы свою последовательность такого рандома
Я доказал, что "распыление" одной случайной последовательности на несколько никак не влияет на распределение результатов.
29

» WarCraft 3 / Мои мысли об устаревших механиках Warcraft 3 и....

function random(a: number) {
    return function() {
        a ^= a << 25; a ^= a >>> 7; a ^= a << 2;
        return (a >>> 0) / 4294967296;
    }
}

type Unit = {
    random_chances: number[]
}

const rnd_for_units = random(3637);
const rnd = random(1337);
const units: Unit[] = [];

for (let i = 0; i < 100; i++) {
    units.push({ random_chances: [] });
}


for (let i = 0; i < 10000000; i++) {
    const unit = units[Math.floor(rnd_for_units() * units.length)]

    unit.random_chances.push(rnd());
}

for (const unit of units) {
    console.log("Unit avg chance", unit.random_chances.reduce((a, b) => a + b, 0) / unit.random_chances.length);
}
Вот такой код может быть понятнее. 100 "юнитов" и 10000000 попыток на крит у рандомного из них. У всех них средний шанс - 0.5 +- epsilon.
PT153:
Doc, тут нет вызова GetRandomReal, а речь идёт про вариковский рандом, а не луа.
Я сказал человеку - учи математику, речь о том как раз, что
Random uniformly distributed subsequence of a random uniformly distributed sequence is uniformly distributed.
От генератора это не зависит, если он выдает правильную последовательность.
29

» WarCraft 3 / Мои мысли об устаревших механиках Warcraft 3 и....

function random(a: number) {
    return function() {
        a ^= a << 25; a ^= a >>> 7; a ^= a << 2;
        return (a >>> 0) / 4294967296;
    }
}

const rnd = random(1337);
const sequence: number[] = [];

for (let i = 0; i < 1000000; i++) {
    sequence.push(rnd());
}

console.log("Sequence", sequence.reduce((a, b) => a + b, 0) / sequence.length);

for (let i = 0; i < 100; i++) {
    const subsequence: number[] = [];

    for (let j = 0; j < 100; j++) {
        subsequence.push(sequence[Math.floor(rnd() * sequence.length)]);
    }

    console.log("Subsequence", i, subsequence.reduce((a, b) => a + b, 0) / subsequence.length);
}
Все результаты этого кода стремятся к 0.5. Random uniformly distributed subsequence of a random uniformly distributed sequence is uniformly distributed.
29

» WarCraft 3 / Мои мысли об устаревших механиках Warcraft 3 и....

А не надо никакой мой код проверять. Ты по ходу не понял о чём была речь. Зайди в варик и 100 раз например выведи на экране GetRandomReal и скорее всего (как было у меня) ты увидишь, что это оптимальный рандом. Но его действие распыляется, когда он работает сразу на нескольких абилках и юнитах. Поэтому я и говорю, что для каждого случая хорошо бы свою последовательность такого рандома
Учи математику, это не так работает
29

» WarCraft 3 / Мои мысли об устаревших механиках Warcraft 3 и....

Proshel_Doty:
Какую же ты хрень написал братишка и хоть бы один пруф
Лол, какой ещё пруф, зайди в варик и проверь. Лично, когда я проверял было так
Как я зайду в варик проверять код, который ты написал на джассе? Где карта с вопроизведением?
29

» WarCraft 3 / Мои мысли об устаревших механиках Warcraft 3 и....

И когда я добавлял в "систему" (ставил больше одного героя и заставлял их драться) других героев, то замечал сбои в работе пассивок. И как оказалось, ряд рандомных чисел, который генерит Варик оказывается достаточно оптимален, но только когда эта последовательность используется для одного конкретного случая. Например, если у героя есть две способности и Крит и Уклонение, то это уже два разных случая и по сути, нам нужно уже 2 ряда случайных чисел. Если в эксперимент к Герою с Критами и Уклонением добавить, например, союзника с Аурой Крита (типа все союзники рядом имею шанс нанести Крит), то и этому юниту и каждому союзнику для этого нужна своя последовательность чисел. И тогда будет оптимальная работа.
Какую же ты хрень написал братишка и хоть бы один пруф.
quq_CCCP:
Вот почему игроки всегда ожидают рандом в свою сторону, вроде 4 раза за 10 атак. Насколько помню в варе псевдослучайное распределение, и баш то с критами (ну кроме совсем низких шансов) работает вполне адекватно (баш бары в дотке был триггерным, и кривым, потому прокал ультрачасто).
Низкие шансы сейчас кстати поправили, есть флаг в настройках карты
29

» WarCraft 3 / Мои мысли об устаревших механиках Warcraft 3 и....

Bergi_Bear:
Doc, ну про большую выборку я согласен, но зачем мне рисковать и быть какой-то выборки, мне хватает того что я вообще не беру героев с какими либо рандомными способностями, пусть враг испытывает судьбу на фантомке, а я нанесу свой крит на БХ в 100% случаев,и буду иметь винрейт в 60+%
Doc:
факты есть факты:
Факты фактами, но про доту 2 и я сам скинул про ПСР, в Варкрафте же у нас что?
Hate, вот и это же куда лучше, молодцы близы
Прочти первую строчку ссылки которую я скинул???
29

» WarCraft 3 / Мои мысли об устаревших механиках Warcraft 3 и....

Думать можно сколько угодно, факты есть факты: liquipedia.net/dota2/Pseudo_Random_Distribution
Реальность вносит дизбаланс в игры, давай везунчикам преимущество, и лишая его у менее удачливых
Не существует везунчиков и менее удачливых, на достаточной выборке срабатывает все у всех одинаково, "дизбаланса" никакого нет.
29

» WarCraft 3 / Мои мысли об устаревших механиках Warcraft 3 и....

чтобы не было такой несправедливости, в Доте 2 ввели понятие псевдорандом
Она есть и в варкрафте 3.
Реальность такова, что рандом добавляет интереса игре, если он применен в разумных количествах и местах. Гемблинг - часть человеческой культуры. Риск это очень часто интересно, а выигрывать в подобных казино просто приятно.
29

» WarCraft 3 / Бета версия Warcraft III Reforged 1.32

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

» WarCraft 3 / Бета версия Warcraft III Reforged 1.32

И работать не будет, его удалят
Не факт.
ну это инфа от разработчика. Это был эксперимент, от него отказались. К тому же лицевые анимации бы потребовали проприетарного софта, которые покупается студиями.
Кет:
меню на реакте
=О это нормально?
Нет это абсолютно кончено и тот, кто решил это делать - идиот.
29

» WarCraft 3 / Бета версия Warcraft III Reforged 1.32

Еще у меня дико лагает меню, просто ад и слайдшоу. В самой игре все относительно нормально, если тени и частицы поставить на низкие.
Там какой-то конченый инженер решил что меню лучше сделать на веб технологиях, поэтому меню на реакте. Тормозит оно у всех.
Maxsavin:
Редактор диалогов позволит делать киниматики как на Близзконе 2018 года, пока не работает.
И работать не будет, его удалят
29

» WarCraft 3 / cJass2Lua(v1.12) - Преобразователь кода cJass и JASS в Lua

Ну если семантика сохраняется. У модулей/библиотек есть например инициализаторы, без них код поломается. Опять же совпадение имен в разных скоупах. Если эти проблемы решаются, то ок.
29

» WarCraft 3 / cJass2Lua(v1.12) - Преобразователь кода cJass и JASS в Lua

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