Будут новые тесты на 1.27 или он юзлес и ничем не лучше 26?
  • avatar tmn
  • 0
Ну а двойная чистка приводила бы к мгновенному фаталу, а не проблемам с целостностью.
Нет, с чего бы. Да и одного free достаточно, чтобы всё испортить, если ты там вставлял указатель на часть JASS'овской таблицы строк. Тут и счётчик не нужен, если оригинальная строка (которую ты заменял) выделялась специально для этой структуры и потом освобождалась, когда освобождалась структура (особенно, если это происходило уже после выхода из карты).
Спецификация по стрингам, нарытая сугубо эмпирическим путем — www.hiveworkshop.com/threads/documentation-string-type.240473/
В JASS стринги заменяются на объекты со ссылками на эти стринги. Адрес забирался банальным взятием оффсета из объекта. Строки не утилизируются до конца игры, поэтому счетчик использований значения не имеет (если он вообще есть) — все они чистятся при загрузке следующей карты, и JASS, и родные.

Да, фактически, теперь я использую функцию, которая как-то регистрирует строку в более глобальном хранилище. Ну а двойная чистка приводила бы к мгновенному фаталу, а не проблемам с целостностью. Единственный вариант, когда это возможно — это если JASS чистил за собой позже, а т.к. это виртуальная машина, она защищена от подобных вылетов кучей проверок по дороге.
  • avatar tmn
  • 0
А что ты раньше передавал аргументом GetStringAddress? То есть, как ты получал нужный указатель, на который заменял? И где фактически хранилась строка, как она попадала в память? Вообще, ты заменял указатель на строку или на какую-то структуру, в которой был указатель на строку?

Не знаю, как в WC3 устроена работа со строками, но можно предположить, что каждый раз, когда ты где-то используешь строку, нужно увеличить счётчик использований. И потом, когда структурку освобождают, этот счётчик уменьшают. И из-за того, что ты не увеличивал счётчик, место под твоей строкой освободилось, а указатели остались. Или вообще освободилось несколько раз.

То есть восстанавливать ничего не надо. Надо следовать каким-то внутренним правилам использования строк, что ты сейчас и делаешь, как я понял. По-хорошему, нужно ещё для старой строки (которую заменяешь) уменьшать счётчик, чтобы она не оставалась в памяти.
Кул стори
я понял, что ничего не понял, так нам что делать-то?
  • avatar maflo
  • 0
Почему ничего не сказано, о Варкрафт 1.29?
  • avatar Feero
  • 0
:)
меня раздражает, когда переключаешь у тролля милли на рендж он продолжает бежать к врагу…
  • avatar Rekie
  • 0
Очень напрягает, когда ТБ после морфа бежит атаковать цель с ренжом 150 вместо 550. Иногда это дорого обходится.

P.S.
Go Go Power Rangers!
  • avatar Loki
  • 0
ты сам описал что означает примитивность.
способы оценивать ты также описал, хоть и в самом приблизительном виде.
про д1 речь? разве?
  • avatar tmn
  • 0
Примитивную? Что бы ты в ней изменил? Это всё довольно простая математика, не требующая ни высоких навыков программирования, ни трудозатрат, ни машинных ресурсов.

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

Заметь, это matchmaking rating. В D2 он используется потому, что в неё играет огромное количество людей и это позволяет подбирать равных соперников. В D1 такое не прокатит ни в каком виде. В D1 нужно подобие Elo рейтинга, который будет работать для заведомо неравных матчей. Но даже там, давать ли разное количество очков членам одной команды (на основании их рейтинга, а не вклада), остаётся вопросом. Тут не нужно изобретать велосипед, достаточно изучить, какие системы командного рейтинга уже придуманы, и примерить их к D1.

Matchmaking | Dota 2
Dota 2 — Low Priority Matchmaking, or Communication Bans
Conduct Summary and Low-Priority FAQ
  • avatar Loki
  • 0
индивидуальный вклад оценить ещё как можно, однако валв в место этого выбросили на откуп игрокам примитивную систему рейтинга. само собой со стороны валв это решение несомненно было продуманным, ониж понимали что сложные системы будут отталкивать а их реализация потребует усилий.
  • avatar tmn
  • 0
Во многом такая ситуация — результат низкого порога вхождения. Дота — это игра, в которую легко начать играть, и нелегко научиться.
Только это, наоборот, высокий порог вхождения. Так как нужно потратить много времени, чтобы научиться играть хотя бы на уровне ботов.

В д1 все еще хуже, потому что ситуация та же, а вероятность появления кнута стремится к нулю.
В D2 слишком много игроков, чтобы вручную обрабатывать жалобы. Можно, конечно, но Valve экономит на этом. В D1 построить сообщество соблюдающее этикет вполне реально, но никому это нахуй не нужно. Если кто не знает, то такое сообщество уже было на DLG, с адекватными правилами, вежливыми игроками, командной игрой и MMR.

@Loki
Всё это уже продумано и сделано в D2. Ничего затратного в таких системах нет. Индивидуальный вклад в победу оценить невозможно.
  • avatar Loki
  • 0
я не играюв д2 но время от времени смотрю по ней стримы поэтому поправьте если я не прав в технических моментах.

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

оценка скила
текущая система рейтинга давно изжила себя. есть проблема помимо продажи акков. человек не чувствует отдачу от игры когда за час его умственных и моральных трудов он получает -25, к тому же будучи уверенным, что остальные члены его команды с самого начала были настроены на поражение. с другой стороны бывают игры, в которых ты понимаешь, что тебя тащит союзник, а сам ты ни капельки не стараешься, а в итоге получаешь незаслуженные +25. подобные победы не приносят удовлетворения. обычно и первые и вторые игры запоминаются на фоне прочих, и по их окончании невольно возвращаются мысли о том каким образом можно было бы сделать систему лучше. я, честно говоря, не вижу никакого иного варианта сделать лучше кроме как централизованного (состороны сервера) распределения индивидуальных очков рейтинга которое будет проводиться на основе нескольких десятков параметров — это невероятно сложно, затратно и всё ещё не гарантирует справедливой оценки заслуг каждого игрока в определённом матче. любые другие системы где право «оценки» будет отдано самим игрокам предполагает крайнуюю степень необоснованности и массу абузов. ну а текущая система это просто наипримитивнейших способ ранжирования наотъебись.

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

в целом я считаю, что обычно-негативное поведение игроков это следствие, причина которого в концепции «играй с кем попало, получай как все», которая размывает индивидуальный вклад отдельного игрока и заставляет испытывать ненависть к людям с другим стилем\уровнем игры.
короче говоря теоретически, по крайней мере как я это себе представляю, можно сделать гораздо лучше, но это потребует колоссальных затрат от валв, на кои они не готовы
  • avatar Rekie
  • 0
Вопросы из последнего абзаца — риторические. Не так давно НС записывал видео с призывами не дизморалить и не сливать пабы, но воз и ныне там. Без внушительного кнута комьюнити д2, известное даже не имеющим отношения к доте людям, не изменится. В д1 все еще хуже, потому что ситуация та же, а вероятность появления кнута стремится к нулю. Что бы изменить ситуацию, игрок прежде всего должен начать с себя. А как часто люди так делают? Поэтому предрекаю, что комьюнити обеих дот в ближайшем, а может и не ближайшем будущем так и останется помойкой в глазах общественности.
А закончу словами Versut-ы «Магнус, бл*ть, ты за*бал, дай еб*ный РП!»
Не играл в хотс — не советую. Разнообразие карт не делает мобу интересной, в случае близзов — карты там есть редкостное говно без идеи и такое ощущение, что на скорую руку. Имхо, лучше бы там была одна мапа. Мне за столько лет, одна мапа не надоела в доте 1/2 как весь хотс. Интересные для меня там только герои из разных игровых вселенных.
  • avatar Loki
  • 0
в доте идея как раз таки в одной карте! дота с разным положением лесов, дорог и башен уже не будет дотой, цель всегда одна, местность всегда одна, правила игры всегда одни и теже, тайминги не меняются — это концепт. дота полагается на опыт, в то время как кастомки сделаны для развлекухи и отвлечения
Никаких добиваний крипов, глобальный опыт, отсутствие артефактов — всё, чтобы спинной мозг даже не просыпался.
Он как раз и говорит, что не стоило переносить механику варкрафта, а надо было строить максимально упрощенный геймплей, как сделали в лоле, хотсе и других мобах.