Simple Dota 2 Editor (редактор героев, юнитов, предметов, способностей и lua)

  • Автор темы Автор темы oplkill
  • Дата начала Дата начала

oplkill

Пользователь
2 Янв 2016
34
3
[size=20pt]Simple Dota 2 Editor[/size]

О программе
Удобный, легкий и быстрый редактор объектов и lua кодов Dota 2. Он позволяет упорядочивать по "папкам" например способности или героев и редактировать во встроенном редакторе, ускоряя работу над проектом. Вместо того чтобы скролить один файл, дабы найти где именно способность или юнит были созданы, тут всё это наглядно с разбиением каждого объекта по частям от других объектов. Также программа позволяет редактировать не только KV структуры, но и LUA коды, удобно подкрепляя их к способности или предмету, чтобы быстро к ним переключится!

[size=17pt]Просто фича[/size]
Теперь SD2E редактирует не только KV файлы объектов, но и начинает ориентироваться и на редактирование lua скриптов! В видео ниже показана эта фича.

NXVbcaVeYc.png

WiRpIIZALm.png

yMiCKQY85u.png

[youtube]https://youtu.be/gE4UOq4E0Ow[/youtube]



Программа всё ещё находится на стадии тестирования, поэтому рекомендую делать бекапы!



Список того, что запланировано и сделано можно смотреть тут: https://trello.com/b/EtSKnLuW/simple-dota-2-editor
 
Последнее редактирование модератором:
Re: Simple Dota 2 Editor (редактор героев, юнитов, предметов, способностей)

Ну, если нет альтернатив (серьезно, вы проверяли, нет ли уже готовых таких продуктов?), то палец вверх, я скачаю))
 
Re: Simple Dota 2 Editor (редактор героев, юнитов, предметов, способностей)

Ну, если нет альтернатив (серьезно, вы проверяли, нет ли уже готовых таких продуктов?), то палец вверх, я скачаю))
Из всего того, что я нашел в сети так только это: https://github.com/RoyAwesome/WorldSmith
Программа давно заброшена автором, а её идея подставить GUI редактирование для объектов мне не по душе, так как сложно для реализации, сложно для использования(см редактирование графиком), а также не удобностью. я решил взять оттуда лишь некоторый набор библиотек которые он использовал.
 
Последнее редактирование модератором:
Re: Simple Dota 2 Editor (редактор героев, юнитов, предметов, способностей)

Выглядит неплохо: по крайней мере, интуитивно понятно.
 
Re: Simple Dota 2 Editor (редактор героев, юнитов, предметов, способностей)

Кхм, редактор для KV файлов?
А не лучше было сделать просто кучку полей выбираемых и в них значения заносить. Это бы избавила от ошибок в стиле забыл кавычки, или не так сконструировал файл.
 
Re: Simple Dota 2 Editor (редактор героев, юнитов, предметов, способностей)

Кхм, редактор для KV файлов?
А не лучше было сделать просто кучку полей выбираемых и в них значения заносить. Это бы избавила от ошибок в стиле забыл кавычки, или не так сконструировал файл.
Была идея, сделать так(как например сделано тут https://github.com/RoyAwesome/WorldSmith), но проблема в том, что представить как поля можно только части с классическим понятием "Key" "Value", а не "Key"{}. В томже редакторе(выше) "Key"{} было представлено в виде графиков, которые очень сложны в реализации, а также трудны в редактировании. Лично мне удобнее редактировать текстом нежели гуишкой.
3F47Irc8TB.png

OJ08p30yjh.png
А по поводу совершения ошибок юзером, то для этого я собираюсь перед сохранением(а может быть даже в реалтайме) проверять на ошибки, предупреждая юзера о них.(Некоторые ошибки могут вообще "сломать" парсер, но такие ошибки будут автоматом комментироваться(но только после сохранения)).
Вообще можно конечно сделать ГУИшный редактор(наряду с текстовым), но тут вопрос стоит не только в придумывании удобного способа представления, но и нахождения такого решения. Создавать свой ГУИ велосипед весьма муторно, в особенности для того, кто не имеет никакого опыта в создании своих сложных ГУИ систем...
 
Последнее редактирование модератором:
Re: Simple Dota 2 Editor (редактор героев, юнитов, предметов, способностей)

Я думаю быстрее сторонний разработчик найдётся , который визуализирует создание юнитов и спелов чем valve додумается облегчить жизнь модеров...
Хотя сторонние разработки все позабрасывались, одна годная от Cristian Baldi осталась.
 
Re: Simple Dota 2 Editor (редактор героев, юнитов, предметов, способностей)

[quote author=oplkill link=topic=841.msg3772#msg3772 date=1461161268]
Была идея, сделать так(как например сделано тут https://github.com/RoyAwesome/WorldSmith), но проблема в том, что представить как поля можно только части с классическим понятием "Key" "Value", а не "Key"{}. В томже редакторе(выше) "Key"{} было представлено в виде графиков, которые очень сложны в реализации, а также трудны в редактировании. Лично мне удобнее редактировать текстом нежели гуишкой.
3F47Irc8TB.png

OJ08p30yjh.png
А по поводу совершения ошибок юзером, то для этого я собираюсь перед сохранением(а может быть даже в реалтайме) проверять на ошибки, предупреждая юзера о них.(Некоторые ошибки могут вообще "сломать" парсер, но такие ошибки будут автоматом комментироваться(но только после сохранения)).
Вообще можно конечно сделать ГУИшный редактор(наряду с текстовым), но тут вопрос стоит не только в придумывании удобного способа представления, но и нахождения такого решения. Создавать свой ГУИ велосипед весьма муторно, в особенности для того, кто не имеет никакого опыта в создании своих сложных ГУИ систем...
[/quote]
Сложно реализуются? Seriously? Это реализуется изично, да и можно не всплывающей фигней, а просто заголовком.
И не ищи к себе жалости, все когда то делали все впервые :D
А вот ты представь какого было авторам ассемблера? :DDDDDDDD
 
Последнее редактирование модератором:
Re: Simple Dota 2 Editor (редактор героев, юнитов, предметов, способностей)

CryDeS, я не ищу жалости и не утверждаю, что это прям так сложно. Сложно придумать нормальную идею, которая была бы удобной/юзабельной. Ну серьёзно, вот как ты представляешь себе редактирование вот такого простого скила?(см спойлер)
"holy_cone"
{
//=================================================================================================================
// holy_cone: backward (сдвиг назад) ?
//=================================================================================================================

"BaseClass" "ability_datadriven"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING"
"SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO"
"AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL"
"FightRecapLevel" "2"
"AbilityTextureName" "omniknight_degen_aura"
"MaxLevel" "1"
"AbilityCastRange" "700"
"AbilityCastPoint" "0.35"
"AbilityCooldown" "1"
"AbilityManaCost" "0"

"precache"
{
"soundfile" "soundevents/game_sounds_heroes/game_sounds_chen.vsndevts"
"soundfile" "soundevents/game_sounds_heroes/game_sounds_oracle.vsndevts"
"particle" "particles/units/heroes/hero_queenofpain/holy_cone.vpcf"
"particle" "particles/econ/courier/courier_hyeonmu_ambient/courier_hyeonmu_ambient_gold.vpcf"
"particle" "particles/units/heroes/hero_huskar/holy_burn_debuff.vpcf"
"particle" "particles/units/heroes/hero_oracle/oracle_false_promise_heal.vpcf"
"particle" "particles/units/heroes/hero_elder_titan/paladin_holy_nova.vpcf"
"particle" "particles/units/heroes/hero_oracle/holy_heal_heal.vpcf"
}

"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER"
"starting_aoe" "100"
}
"02"
{
"var_type" "FIELD_INTEGER"
"distance" "600"
}
"03"
{
"var_type" "FIELD_INTEGER"
"final_aoe" "450"
}
"04"
{
"var_type" "FIELD_INTEGER"
"speed" "1100"
}
"05"
{
"var_type" "FIELD_INTEGER"
"stun_duration" "3"
}
}

"OnSpellStart"
{
"FireSound"
{
"EffectName" "Hero_Chen.HolyPersuasionCast"
"Target" "CASTER"
}
"DelayedAction"
{
"Delay" "0.03"
"Action"
{
"ApplyModifier"
{
"ModifierName" "modifier_holy_cone"
"Target" "CASTER"
"Duration" "0.5"
}
}
}


"RunScript"
{
"ScriptFile" "abilities/holy_cone.lua"
"Function" "fireCone"
}
}

"OnProjectileHitUnit"
{
"DeleteOnHit" "1"
"Stun"
{
"Duration" "%stun_duration"
"Target" "TARGET"
}
}
"Modifiers"
{
"modifier_holy_cone"
{
"IsHidden" "1"
"IsDebuff" "1"
"OverrideAnimation" "ACT_DOTA_IDLE"
"ThinkInterval" "0.03"
"OnIntervalThink"
{
"RunScript"
{
"ScriptFile" "abilities/holy_cone.lua"
"Function" "knockback_interval"
}
}
"Properties"
{
"MODIFIER_PROPERTY_TURN_RATE_PERCENTAGE" "-100"
"MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "-100"
}
"OnCreated"
{
"AttachEffect"
{
"IsHidden" "1"
"EffectName" "particles/econ/courier/courier_hyeonmu_ambient/courier_hyeonmu_ambient_gold.vpcf"
"EffectAttachType" "follow_origin"
"Target" "CASTER"
"EffectRadius" "%radius"
"EffectColorA" "255 0 0"
"EffectColorB" "255 0 0"
"ControlPoints"
{
"00" "50 100 5"
}

}

}
"OnDestroy"
{
"RunScript"
{
"ScriptFile" "abilities/holy_cone.lua"
"Function" "modifier_on_destroy"
}
}
}
}
}

в реализации, например стандартным или типичным Property grid? Это был бы гуишный ад, одни сплошные муки...
Figure1.png

3.jpg

И если это было так просто, то volvo давно бы уже сделали нормальный ГУИшный редактор...
Знаю, наверно сейчас кто-то вспомнит Варик 3, про тот редактор с ГУИшками с Property grid, но там все было очень ограниченно и не было возможности создавать ветвления и вложения!
 
Последнее редактирование модератором:
Re: Simple Dota 2 Editor (редактор героев, юнитов, предметов, способностей)

[quote author=oplkill link=topic=841.msg3796#msg3796 date=1461316350]
CryDeS, я не ищу жалости и не утверждаю, что это прям так сложно. Сложно придумать нормальную идею, которая была бы удобной/юзабельной. Ну серьёзно, вот как ты представляешь себе редактирование вот такого простого скила?(см спойлер)
"holy_cone"
{
//=================================================================================================================
// holy_cone: backward (сдвиг назад) ?
//=================================================================================================================

"BaseClass" "ability_datadriven"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_IGNORE_BACKSWING"
"SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_NO"
"AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL"
"FightRecapLevel" "2"
"AbilityTextureName" "omniknight_degen_aura"
"MaxLevel" "1"
"AbilityCastRange" "700"
"AbilityCastPoint" "0.35"
"AbilityCooldown" "1"
"AbilityManaCost" "0"

"precache"
{
"soundfile" "soundevents/game_sounds_heroes/game_sounds_chen.vsndevts"
"soundfile" "soundevents/game_sounds_heroes/game_sounds_oracle.vsndevts"
"particle" "particles/units/heroes/hero_queenofpain/holy_cone.vpcf"
"particle" "particles/econ/courier/courier_hyeonmu_ambient/courier_hyeonmu_ambient_gold.vpcf"
"particle" "particles/units/heroes/hero_huskar/holy_burn_debuff.vpcf"
"particle" "particles/units/heroes/hero_oracle/oracle_false_promise_heal.vpcf"
"particle" "particles/units/heroes/hero_elder_titan/paladin_holy_nova.vpcf"
"particle" "particles/units/heroes/hero_oracle/holy_heal_heal.vpcf"
}

"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER"
"starting_aoe" "100"
}
"02"
{
"var_type" "FIELD_INTEGER"
"distance" "600"
}
"03"
{
"var_type" "FIELD_INTEGER"
"final_aoe" "450"
}
"04"
{
"var_type" "FIELD_INTEGER"
"speed" "1100"
}
"05"
{
"var_type" "FIELD_INTEGER"
"stun_duration" "3"
}
}

"OnSpellStart"
{
"FireSound"
{
"EffectName" "Hero_Chen.HolyPersuasionCast"
"Target" "CASTER"
}
"DelayedAction"
{
"Delay" "0.03"
"Action"
{
"ApplyModifier"
{
"ModifierName" "modifier_holy_cone"
"Target" "CASTER"
"Duration" "0.5"
}
}
}


"RunScript"
{
"ScriptFile" "abilities/holy_cone.lua"
"Function" "fireCone"
}
}

"OnProjectileHitUnit"
{
"DeleteOnHit" "1"
"Stun"
{
"Duration" "%stun_duration"
"Target" "TARGET"
}
}
"Modifiers"
{
"modifier_holy_cone"
{
"IsHidden" "1"
"IsDebuff" "1"
"OverrideAnimation" "ACT_DOTA_IDLE"
"ThinkInterval" "0.03"
"OnIntervalThink"
{
"RunScript"
{
"ScriptFile" "abilities/holy_cone.lua"
"Function" "knockback_interval"
}
}
"Properties"
{
"MODIFIER_PROPERTY_TURN_RATE_PERCENTAGE" "-100"
"MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "-100"
}
"OnCreated"
{
"AttachEffect"
{
"IsHidden" "1"
"EffectName" "particles/econ/courier/courier_hyeonmu_ambient/courier_hyeonmu_ambient_gold.vpcf"
"EffectAttachType" "follow_origin"
"Target" "CASTER"
"EffectRadius" "%radius"
"EffectColorA" "255 0 0"
"EffectColorB" "255 0 0"
"ControlPoints"
{
"00" "50 100 5"
}

}

}
"OnDestroy"
{
"RunScript"
{
"ScriptFile" "abilities/holy_cone.lua"
"Function" "modifier_on_destroy"
}
}
}
}
}

в реализации, например стандартным или типичным Property grid? Это был бы гуишный ад, одни сплошные муки...
Figure1.png

3.jpg

И если это было так просто, то volvo давно бы уже сделали нормальный ГУИшный редактор...
Знаю, наверно сейчас кто-то вспомнит Варик 3, про тот редактор с ГУИшками с Property grid, но там все было очень ограниченно и не было возможности создавать ветвления и вложения!
[/quote]
Хммм, а добавить кнопку-спойлер которая в указанные координаты(после себя) открывала бы список всех вложений, оч сложна.
ps. А валвам он и не нужен. Единственная его польза это новичкам)
 
Последнее редактирование модератором:
Re: Simple Dota 2 Editor (редактор героев, юнитов, предметов, способностей)

Выпущена версия 0.03 Alpha с GUI

X2W7eEAmnM.png

J549C1Ud0L.png

mPt8HdFEQc.png

Сейчас GUI в весьма сыром виде, как в плане реализации, так и в функциональном. Буду очень рад услышать все ваши предложения как по GUI, так и по всему редактору. Не забывайте репортить баги.

З.Ы. Напоминаю, что версия Alpha, что значит, что она не достаточно протестирована и возможно может повредить файлы, с которыми она работает. Поэтому строго рекомендую работать над копиями ваших проектов, а не оригиналов!
 
Re: Simple Dota 2 Editor (редактор героев, юнитов, предметов, способностей)

Ты пойми, что это надо только для всяких Романов и т.д. Я, Илья и Край и т.д пишем давно на Луа полностью. Мне например эта прога только усложнит жизнь, а вот люди типа Романа будут рады.)

На шарпе писал?)Работа большая сделана, около 5к строчек где то)Я +rep ставлю за такое)
 
Re: Simple Dota 2 Editor (редактор героев, юнитов, предметов, способностей)

Adam Smith, lua ?? Редактировать объекты в игре можно только через DotaKeyValue. Может ты перепутал его с редактором lua. Это как в варкрафте 3, но там было 3 основных редактора: Ландшафта, Триггеров и Объектов. Это не редактор "триггеров", а объектов.
PS и строчек там 10к ;)
 
Последнее редактирование модератором:
Re: Simple Dota 2 Editor (редактор героев, юнитов, предметов, способностей)

[quote author=oplkill link=topic=841.msg5094#msg5094 date=1466941985]
Adam Smith, lua ?? Редактировать объекты в игре можно только через DotaKeyValue. Может ты перепутал его с редактором lua. Это как в варкрафте 3, но там было 3 основных редактора: Ландшафта, Триггеров и Объектов. Это не редактор "триггеров", а объектов.
PS и строчек там 10к ;)
[/quote]
Вот тебе предмет, который не использует KV вообще
Код:
if item_boots_of_protection == nil then
  item_boots_of_protection = class({})
end

LinkLuaModifier ("modifier_boots_of_protection", "items/item_boots_of_protection.lua", LUA_MODIFIER_MOTION_NONE)

function item_boots_of_protection:GetIntrinsicModifierName ()
  return "modifier_boots_of_protection"
end

function item_boots_of_protection:GetBehavior ()
  local behav = DOTA_ABILITY_BEHAVIOR_PASSIVE
  return behav
end

function item_boots_of_protection:GetCooldown(nLevel)
  return self.BaseClass.GetCooldown (self, nLevel)
end


if modifier_boots_of_protection == nil then
  modifier_boots_of_protection = class({})
end

function modifier_boots_of_protection:DeclareFunctions ()
  return { MODIFIER_EVENT_ON_TAKEDAMAGE, MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT, MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS, MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT }
end


function modifier_boots_of_protection:OnTakeDamage (event)
  if event.unit == self:GetParent() then
    self:GetAbility():StartCooldown(5)
  end
end

function modifier_boots_of_protection:IsHidden ()
  return true
end

function modifier_boots_of_protection:GetModifierConstantHealthRegen ()
  local regen = self:GetParent():GetMaxHealth () * 0.03
  if self:GetAbility():IsCooldownReady() then
    return regen
  else
    return 0
  end
end

function modifier_boots_of_protection:GetModifierPhysicalArmorBonus()
  return 10
end

function modifier_boots_of_protection:GetModifierMoveSpeedBonus_Constant()
  return 100
end
 
Последнее редактирование модератором:
Re: Simple Dota 2 Editor (редактор героев, юнитов, предметов, способностей)

Глянул скрины и понял, что не смогу ею пользоваться, поскольку она дико ограничивает возможности.
Не, штука действительно полезная, но, как верно подметил Адам - для новичков.
Для них это, в завершенном виде, будет кладезь шаблонов. Так что продолжайте ребят. ;)
 
Добавлена новая версия - v0.04 Alpha.
Вся программа переписана на новый графический движок - WPF.
Во время переписывания, был проведен рефакторинг, что увеличило скорость работы программы.
Множество багов было устранено.

Также одним из самым главным изменением стало изменение направления охвата программы. Мною было пересмотрена идея редактирования только KV-объектов и введена удобная система редактирования вместе с KV-объектами и lua кодов.
В данный момент редактировать lua код можно только сперва прикрепив его к объекту, но вскоре также можно будет и редактировать lua коды отдельно от объектов.
Не забывайте смотреть сюда: https://trello.com/b/EtSKnLuW/simple-dota-2-editor
Там описан более детально и подробно весь план действий который запланирован на ближайшее время.
Я также буду очень рад видеть ваши сообщения о багах и предложений к функционалу. А также буду очень-очень рад увидеть хоть один коммит :D

Шапка была обновлена и добавлено видео, с хорошим треком.
 
Было бы неплохо если бы была возможность менять цвет подсветки как угодно, а так же набор пресетов этих самых цветов.
И авто-выравнивание kv файлов тоже было бы не плохо(см. скрин ниже).
fpoup8y8RaM.jpg
 
Вместо того чтобы скролить один файл, дабы найти где именно способность или юнит были созданы, тут всё это наглядно с разбиением каждого объекта по частям от других объектов. Также программа позволяет редактировать не только KV структуры, но и LUA коды, удобно подкрепляя их к способности или предмету, чтобы быстро к ним переключится!
удобная штука, спасибо :)
 
  • Нравится
Реакции: vulkantsk
Реклама: