function CreepSpellActions takes nothing returns boolean
local unit Dummy = null
local real CasterX = GetUnitX(GetTriggerUnit())
local real CasterY = GetUnitY(GetTriggerUnit())
local real TargetX = GetUnitX(GetFilterUnit())
local real TargetY = GetUnitY(GetFilterUnit())
if IsUnitEnemy(GetFilterUnit(), Player(10)) then
set Dummy = CreateUnit(Player(10), 'e004', CasterX, CasterY, bj_RADTODEG*Atan2(TargetY - CasterY, TargetX - CasterX))
call IssuePointOrder(Dummy, "attackground", TargetX, TargetY)
call UnitApplyTimedLife(Dummy, 'BTLF', 3)
set Dummy = null
endif
return false
endfunction
function CreepSpellActivation takes nothing returns nothing
local group TempGroup = CreateGroup()
local real CasterX = GetUnitX(GetTriggerUnit())
local real CasterY = GetUnitY(GetTriggerUnit())
call GroupEnumUnitsInRange(TempGroup, CasterX, CasterY, 1500, function CreepSpellActions)
call DestroyGroup(TempGroup)
set TempGroup = null
endfunction
function CreepSpellFilter takes nothing returns boolean
return GetUnitUserData(GetTriggerUnit()) == 1 and GetSpellAbilityId() == 'A002'
endfunction
function InitTrig_CreepSpell takes nothing returns nothing
set gg_trg_CreepSpell = CreateTrigger()
call TriggerRegisterPlayerUnitEvent(gg_trg_CreepSpell, Player(10), EVENT_PLAYER_UNIT_SPELL_EFFECT, function CreepSpellFilter)
call TriggerAddAction(gg_trg_CreepSpell, function CreepSpellActivation)
endfunction
Специально везде разжевал и ввёл переменные с нормальными названиями. Если бы их вводил и нормально называл самостоятельно, вопроса даже не возникло бы.
Проблема решается очень просто: отключите оптимизацию скрипта в парсере cJass.
Велики шансы на то, что ниже по коду значение в [1] просто-напросто нигде не используется, и поэтому оптимизатор выпиливает его инициализацию.
постоянная гравитации ну никак не может зависеть от внутренней частоты работы физ. системы
Каждые 1/tickrate секунды запускается обработка списка снарядов. Ускорение свободного падение (как и любое) измеряется в "метров в секунду за секунду", то есть в "изменении скорости за секунду". А за 1/tickrate секунды скорость изменится на 1/tickrate от полного значения.
И еще, то, что в системе называется "impulse", это на самом деле должно называться "velocity", потому что импульс это масса*скорость, отсюда кстати и та вышеуказанная ошибка с умножением на массу.
Вполне вероятно, что так и есть, исходную версию начинал писать через импульсы.
если претендуешь на понятный код то естественно называть нужно своими именами.
Справедливо.
Уничтожаться ниче офк не должно, какого фига физический объект должен за это отвечать?
написал было возражение, но потом призадумался и передумал...
ЕМНИП, операции с базовыми типами (int, float, ...) напрямую обрабатываются, без дополнительных обёрток. Идея как раз заключалась в том, что всё, кроме визуала (юнит + эффект) хранится и обрабатывается в виде конструкций из этих базовых типов, даже запилил квадтри (только понятия не имел, что оно так называется) для упихивания "своих" декораций. Но, увы, там нашёлся баг, локализацию которого я счёл неоправданно трудоёмкой после ряда попыток и вовсе отказался от идеи юзать дудады.
единственное, что в нем хорошего это стиль
Вот это, должен признаться, нормально так огрело. Действительно, ничего больше?
ты просто сам попробуй не трогая основной код реализовать пару спеллов
Реализовал, потом мб залью мапу (если допилю).
Тут даже такие банальности как то, что гравитация это скаляр, а не вектор.
Исходно делал как раз через вектор, но не смог найти векторному выражению никаких применений, и перевёл в скаляр, хз.
Ты понимаешь вообще что там было основано на входе в ректангл только чтобы максимально перенести отсеивание колижнов в нативный код?
Тащемта, да, и это вроде где-то обсуждалось даже активно
зачем-то есть настраиваемый тикрейт
Глубоко в концепции это задумывалось как метод снизить нагрузку через снижение тикрейта при повышении количества объектов, но позже эмперически выяснил, что сам факт наличия такого числа юнитов оказывает на нагрузку несравнимо большее влияние, за сим оставил.
На самом деле, если бы не "ненужный пафос", то хрена-с-два я бы дождался здесь хоть какого-нибудь code review от практикующего специалиста, так что хз даже про его "нужность" или "ненужность". Хотя метод, конечно, не самый красивый, тут каюсь и приношу извинения.
При чем тут стек
Копипаста со статьи Скорпа, я знаю, что такое стак, но не увидел никакой проблемы в именовании, простите, если задел в нежных чувствах =)
с тем же успехом можно было слить все эти чайлд структуры в основную и ничего бы не изменилось.
стало бы нечитаемо, лол
На деле, это использую примерно так: есть набор пресозданых "визобжей" и дамагов, сам "физобж" варится по требованиям и на него вешаются копии нужных мне кусков конфигурации. Не помню, как это "правильно" называется, допустим, "factory" (надеюсь, не задел в нежных чувствах, если ошибся ;D) Doc:
вот с этого просто в АХАХАХА
Ничего не могу сказать, действительно обосрался в полный рост \о/
Как-то получилось, что в игре выглядит нормально, "да и хер с ним, не буду трогать"
объект который весит меньше будет медленнее падать?
Там же проекция на ось z, то есть технически это ускорение падения, а не наоборот.
Снаряды тупо всегда уничтожают себя при колижне с юнитами.
А что им ещё делать, лол?
Если в сухом остатке, то действительно спасибо за то, что понатыкал в несколько куч, учту. Хотел бы попросить менее эмоционально и более предметно потыкать, по возможности, но само собой настаивать не могу.
Цель в игре достаточно условна - построить сильнейшую империю
Если в игре уже есть хотя бы одна сильная империя, то шансы остальных игроков превзойти её станут реальными только после ухода владельца в длительный АФК (что неизбежно случится, так как любая игра без вызовов скучна).
girvel, если твоя цель отдалена от тебя больше, чем на месяц и при этом ты не вкладывал в неё бабло, то эта цель никогда не будет достигнута в полном объёме, а значит, детально её формулировать бессмысленно.
Не надо строить себе идеалы =)
С точки зрения игрока замечу, что если матч условно-бесконечен, и никаких целей не обозначено, то играть я в такое не буду. Всё-таки стратегия - это не РПГ, в ней сложно провести более-менее прямую ассоциацию между собой и аж целой нацией, чтобы просто продолжать "жить" в игре.
Собственно, я говорил про "в общем виде", когда ещё не было внесено никаких уточнений. И да, действительно, "в общем виде" в целом редко что оказывается "льзя".
Советую спросить не здесь, а на stackoverflow/math.stackexchange
Кто подразумевает? "Мультиплеерная игра" это (дословно) "игра со множеством игроков", а "онлайн-игра", опять-таки дословно, это "игра по интернету". Если каким-то образом удаётся эти понятия сравнивать, то я уже представляю громкость, с которой будет рваться шаблон при фразе "мультиплеерная онлайн-игра".
Вообще, глядя на
это игрушка с бесконечной длиной матча
и
значительно сложнее и многограннее браузерки в плане стратегии
могу сказать, что у тебя приступ "наполеонизма", и с весьма ощутимыми шансами рискую оказаться правым.
Сделай играбельный прототип, а не заводи долгострой на годы вперёд, это то, с чего нужно начинать, и то, что я имел в виду под "начинать тоже надо уметь правильно".
Возможно, вам это покажется крайне нетипичным для такого жанра, как стратегия, но я собираюсь делать игру в сеттинге средневековья.
Самоирония - это всегда хорошо =)
В целом, по поводу всей кучи идей могу дать один совет: как минимум для начала выпили всё лишнее, и сконцентрируй все свои силы на одном-единственном, лишь бы доделать его до конца. При распылении на различные параллельные работы, эффективность и достижимый прогресс падают в квадратичной зависимости от количества этих работ.
Два главных навыка в геймдеве (да и вообще в чём угодно): уметь начать и уметь доделывать. Если с первым у большинства проблем не возникает (хотя, на самом деле, начинать тоже надо уметь правильно), то второе обычно постепенно теряется за дымкой множества идей, возникших по ходу процесса.
Это я к чему? К тому, что сделай сначала единственный стиль, но выдрочи его так, чтобы он работал идеально, и только потом приделывай альтернативы, заодно и баланс будет намного проще поддерживать.
Sergey105, это неисправимо, особенности движка.
Можно переделать все build-in сообщения об ошибках и эмулировать условия их появления, но это будет несравнимо более геморройнее без сколько-нибудь значительного выхлопа.
Ред. Clamp
» WarCraft 3 / Как определить атаку и защиту
База данных брони юнитов.
Ещё вот здесь можешь глянуть.
» WarCraft 3 / Не работает триггерный спелл.
» WarCraft 3 / надоедливый баг
Велики шансы на то, что ниже по коду значение в [1] просто-напросто нигде не используется, и поэтому оптимизатор выпиливает его инициализацию.
Ред. Clamp
» Way of Others / Way of Others
Ред. Clamp
» Clamp'ова кухня / Clamp's Physics
» WarCraft 3 / Огненный купол
» Clamp'ова кухня / Clamp's Physics
Ред. Clamp
» Clamp'ова кухня / Clamp's Physics
На деле, это использую примерно так: есть набор пресозданых "визобжей" и дамагов, сам "физобж" варится по требованиям и на него вешаются копии нужных мне кусков конфигурации. Не помню, как это "правильно" называется, допустим, "factory" (надеюсь, не задел в нежных чувствах, если ошибся ;D)
Doc:
Как-то получилось, что в игре выглядит нормально, "да и хер с ним, не буду трогать" Там же проекция на ось z, то есть технически это ускорение падения, а не наоборот. А что им ещё делать, лол?
» /home/girvel/workshop / Хочу сделать игру #4. Онлайн стратегия с грабежом корованов
Ред. Clamp
» /home/girvel/workshop / Хочу сделать игру #4. Онлайн стратегия с грабежом корованов
» Clamp'ова кухня / Clamp's Physics
» Game Dev / Поиск ближайшей точки к кривой
Ред. Clamp
» /home/girvel/workshop / Хочу сделать игру #4. Онлайн стратегия с грабежом корованов
Ред. Clamp
» Dota 2 / Продление конкурса героев до 1-го июня
» Clamp'ова кухня / Clamp's Physics
» Game Dev / Поиск ближайшей точки к кривой
Ред. Clamp
» /home/girvel/workshop / Хочу сделать игру #4. Онлайн стратегия с грабежом корованов
Ред. Clamp
» WarCraft 3 / Дисплей
Можно переделать все build-in сообщения об ошибках и эмулировать условия их появления, но это будет несравнимо более геморройнее без сколько-нибудь значительного выхлопа.
» WarCraft 3 / Дисплей
Ред. Clamp
» WarCraft 3 / Дисплей
» WarCraft 3 / Логово Орков
» WarCraft 3 / Разведчик Высших эльфов.
» WarCraft 3 / 9. Расширяющие функции
» Game Dev / Поиск ближайшей точки к кривой
Ред. Clamp
» Game Dev / Поиск ближайшей точки к кривой