[steemonsters] 데이터로 알아보는 스팀 몬스터 분석 !!

in #steemmonsters6 years ago (edited)

1. 개요

https://steemmonsters.com/cards/get_details

분석 정보는 위 사이트의 json을 기반으로 만들어 졌으며, 총 59장의 카드를 분석한 내용 입니다.

2. 색상

color : { Red: 11, Blue: 11, Green: 11, White: 11, Black: 11, Gold: 4 }

color of Red :
Cerberus, Elemental Phoenix, Fire Beetle, Fire Demon, Giant Roc, Goblin Shaman, Kobold Miner, Malric Inferno, Pit Ogre, Serpent of the Flame, Serpentine Soldier

color of Blue :
Alric Stormbringer, Crustacean King, Frost Giant, Frozen Soldier, Medusa, Mischievous Mermaid, Naga Warrior, Pirate Captain, Sabre Shark, Spineback Turtle, Water Elemental

color of Green :
Earth Elemental, Flesh Golem, Goblin Sorcerer, Lyanna Natura, Magi of the Forest, Minotaur Warrior, Rexxie, Spirit of the Forest, Stone Golem, Stonesplitter Orc, Swamp Thing

color of White :
Air Elemental, Angel of Light, Clay Golem, Defender of Truth, Divine Healer, Feral Spirit, Peacebringer, Silvershield Knight, Silvershield Paladin, Silvershield Warrior, Tyrus Paladium

color of Black :
Animated Corpse, Dark Enchantress, Haunted Spider, Haunted Spirit, Lord of Darkness, Screaming Banshee, Skeleton Assassin, Spineback Wolf, Twisted Jester, Undead Priest, Zintar Mortalis

color of Gold :
Chromatic Dragon, Gold Dragon, Lightning Dragon, Selenia Sky

3. 드랍률

drop_rate : { '2': 9, '10': 10, '22': 20, '80': 20 }

drop_rate of 2 :
Angel of Light, Chromatic Dragon, Elemental Phoenix, Frost Giant, Gold Dragon, Lightning Dragon, Lord of Darkness, Selenia Sky, Spirit of the Forest

drop_rate of 10 :
Air Elemental, Dark Enchantress, Defender of Truth, Fire Demon, Magi of the Forest, Mischievous Mermaid, Naga Warrior, Screaming Banshee, Serpent of the Flame, Swamp Thing

drop_rate of 22 :
Alric Stormbringer, Cerberus, Clay Golem, Earth Elemental, Frozen Soldier, Haunted Spirit, Lyanna Natura, Malric Inferno, Medusa, Peacebringer, Pit Ogre, Serpentine Soldier, Silvershield Paladin, Stone Golem, Stonesplitter Orc, Twisted Jester, Tyrus Paladium, Undead Priest, Water Elemental, Zintar Mortalis

drop_rate of 80 :
Animated Corpse, Crustacean King, Divine Healer, Feral Spirit, Fire Beetle, Flesh Golem, Giant Roc, Goblin Shaman, Goblin Sorcerer, Haunted Spider, Kobold Miner, Minotaur Warrior, Pirate Captain, Rexxie, Sabre Shark, Silvershield Knight, Silvershield Warrior, Skeleton Assassin, Spineback Turtle, Spineback Wolf

4. 스타터팩 포함여부

is_starter : { false: 44, true: 15 }

is_starter of false :
Air Elemental, Alric Stormbringer, Angel of Light, Animated Corpse, Cerberus, Chromatic Dragon, Clay Golem, Crustacean King, Dark Enchantress, Defender of Truth, Divine Healer, Earth Elemental, Elemental Phoenix, Fire Demon, Frost Giant, Frozen Soldier, Goblin Shaman, Gold Dragon, Haunted Spider, Haunted Spirit, Lightning Dragon, Lord of Darkness, Magi of the Forest, Medusa, Mischievous Mermaid, Naga Warrior, Pirate Captain, Rexxie, Sabre Shark, Screaming Banshee, Selenia Sky, Serpent of the Flame, Serpentine Soldier, Silvershield Paladin, Skeleton Assassin, Spineback Turtle, Spineback Wolf, Spirit of the Forest, Stone Golem, Swamp Thing, Twisted Jester, Undead Priest, Water Elemental, Zintar Mortalis

is_starter of true :
Feral Spirit, Fire Beetle, Flesh Golem, Giant Roc, Goblin Sorcerer, Kobold Miner, Lyanna Natura, Malric Inferno, Minotaur Warrior, Peacebringer, Pit Ogre, Silvershield Knight, Silvershield Warrior, Stonesplitter Orc, Tyrus Paladium

4. 희귀도

rarity : { '1': 20, '2': 20, '3': 10, '4': 9 }

rarity of 1 :
Animated Corpse, Crustacean King, Divine Healer, Feral Spirit, Fire Beetle, Flesh Golem, Giant Roc, Goblin Shaman, Goblin Sorcerer, Haunted Spider, Kobold Miner, Minotaur Warrior, Pirate Captain, Rexxie, Sabre Shark, Silvershield Knight, Silvershield Warrior, Skeleton Assassin, Spineback Turtle, Spineback Wolf

rarity of 2 :
Alric Stormbringer, Cerberus, Clay Golem, Earth Elemental, Frozen Soldier, Haunted Spirit, Lyanna Natura, Malric Inferno, Medusa, Peacebringer, Pit Ogre, Serpentine Soldier, Silvershield Paladin, Stone Golem, Stonesplitter Orc, Twisted Jester, Tyrus Paladium, Undead Priest, Water Elemental, Zintar Mortalis

rarity of 3 :
Air Elemental, Dark Enchantress, Defender of Truth, Fire Demon, Magi of the Forest, Mischievous Mermaid, Naga Warrior, Screaming Banshee, Serpent of the Flame, Swamp Thing

rarity of 4 :
Angel of Light, Chromatic Dragon, Elemental Phoenix, Frost Giant, Gold Dragon, Lightning Dragon, Lord of Darkness, Selenia Sky, Spirit of the Forest

5. 몬스터 / 소환사 구분

type : { Monster: 53, Summoner: 6 }

type of Monster :
Air Elemental, Angel of Light, Animated Corpse, Cerberus, Chromatic Dragon, Clay Golem, Crustacean King, Dark Enchantress, Defender of Truth, Divine Healer, Earth Elemental, Elemental Phoenix, Feral Spirit, Fire Beetle, Fire Demon, Flesh Golem, Frost Giant, Frozen Soldier, Giant Roc, Goblin Shaman, Goblin Sorcerer, Gold Dragon, Haunted Spider, Haunted Spirit, Kobold Miner, Lightning Dragon, Lord of Darkness, Magi of the Forest, Medusa, Minotaur Warrior, Mischievous Mermaid, Naga Warrior, Peacebringer, Pirate Captain, Pit Ogre, Rexxie, Sabre Shark, Screaming Banshee, Serpent of the Flame, Serpentine Soldier, Silvershield Knight, Silvershield Paladin, Silvershield Warrior, Skeleton Assassin, Spineback Turtle, Spineback Wolf, Spirit of the Forest, Stone Golem, Stonesplitter Orc, Swamp Thing, Twisted Jester, Undead Priest, Water Elemental

type of Summoner :
Alric Stormbringer, Lyanna Natura, Malric Inferno, Selenia Sky, Tyrus Paladium, Zintar Mortalis

6. 능력을 가지고 있는 유닛 구분

abilities (23)
Blast, Dodge, Enrage, Fear, Flying, Group Heal, Heal, Inspire, Magic Reflect, Piercing, Poison, Protect, Resurrect, Retaliate, Shield, Slow, Sneak, Snipe, Stun, Thorns, Trample, Void, Weaken

Blast :
Fire Demon,Elemental Phoenix,Gold Dragon

Dodge :
Serpentine Soldier,Elemental Phoenix,Water Elemental,Mischievous Mermaid,Goblin Sorcerer,Spirit of the Forest,Air Elemental,Twisted Jester

Enrage :
Pit Ogre,Naga Warrior,Stonesplitter Orc,Clay Golem,Lord of Darkness,Chromatic Dragon

Fear :
Screaming Banshee,Lord of Darkness,Chromatic Dragon

Flying :
Giant Roc,Elemental Phoenix,Spirit of the Forest,Angel of Light,Dark Enchantress,Lightning Dragon,Chromatic Dragon,Gold Dragon

Group Heal :
Crustacean King,Spirit of the Forest,Divine Healer,Angel of Light

Heal :
Water Elemental,Flesh Golem,Earth Elemental,Haunted Spirit,Gold Dragon

Inspire :
Pirate Captain,Silvershield Knight,Angel of Light

Magic Reflect :
Elemental Phoenix,Frozen Soldier,Silvershield Paladin,Haunted Spirit,Gold Dragon

Piercing :
Serpent of the Flame,Minotaur Warrior,Silvershield Knight,Lightning Dragon,Chromatic Dragon

Poison :
Serpent of the Flame,Haunted Spider,Skeleton Assassin

Protect :
Crustacean King,Spirit of the Forest,Defender of Truth,Angel of Light

Resurrect :
Angel of Light

Retaliate :
Cerberus,Serpent of the Flame,Naga Warrior,Stonesplitter Orc,Lord of Darkness

Shield :
Frozen Soldier,Frost Giant,Stone Golem,Silvershield Paladin,Defender of Truth

Slow :
Goblin Shaman,Frost Giant,Swamp Thing,Divine Healer,Undead Priest

Sneak :
Kobold Miner,Sabre Shark,Goblin Sorcerer,Feral Spirit,Skeleton Assassin

Snipe :
Fire Beetle,Pirate Captain,Spirit of the Forest,Twisted Jester

Stun :
Pit Ogre,Medusa,Frost Giant,Stone Golem,Dark Enchantress,Lord of Darkness,Lightning Dragon

Thorns :
Serpentine Soldier,Spineback Turtle,Spineback Wolf,Lightning Dragon

Trample :
Giant Roc,Frost Giant,Rexxie,Silvershield Knight

Void :
Flesh Golem,Swamp Thing,Clay Golem,Animated Corpse,Haunted Spirit

Weaken :
Goblin Shaman,Swamp Thing,Undead Priest

7. 보나스 : 소스코드 (일부 라이브러리는 포함안됨에 유의 ㅋ)

const wfile = require('./util/wfile');

let getNum = (source) =>{
  if(!source || isNaN(source)){
    return 0;
  }
  return source;
}

let printAttr = (mons, name)=>{
  let cards = {};
  for(let mon of mons){
    cards[mon[name]] = getNum(cards[mon[name]]) + 1;
  }
  console.log(`${name} : `, cards);
}


let arrFlat = (arr) =>{
  let out = [];
  for(let aa of arr){
    for(let a of aa){
      out.push(a);
    }
  }
  return out;
}

let unique = (arr, sum=[]) =>{
  for(let ar of arr){
    if(!sum.includes(ar)){
      sum.push(ar);
    }
  }
}

let printByType = (mons, type, param) =>{
  let out = [];
  for(let item of mons.filter(x=>x[type]==param)){
    out.push(item.name);
  }
  out.sort();
  console.log( `${type} of ${param} : \n${out.join(', ')}\n` );
}

(async ()=>{
  let mons = JSON.parse((await wfile.read('monster.json')));
  
  console.log(`카드 갯수 : ${mons.length} 장`);

  let abilities = ["Blast" , "Dodge" , "Enrage" , "Fear" , "Flying" , "Group Heal" , "Heal" , "Inspire" , "Magic Reflect" , "Piercing" , "Poison" , "Protect" , "Resurrect" , "Retaliate" , "Shield" , "Slow" , "Sneak" , "Snipe" , "Stun" , "Thorns" , "Trample" , "Void" , "Weaken"];

  printAttr(mons, 'color');
  console.log();
  printByType(mons, 'color', 'Red');
  printByType(mons, 'color', 'Blue');
  printByType(mons, 'color', 'Green');
  printByType(mons, 'color', 'White');
  printByType(mons, 'color', 'Black');
  printByType(mons, 'color', 'Gold');
  console.log();
  printAttr(mons, 'drop_rate');
  console.log();
  printByType(mons, 'drop_rate', '2');
  printByType(mons, 'drop_rate', '10');
  printByType(mons, 'drop_rate', '22');
  printByType(mons, 'drop_rate', '80');
  console.log();
  printAttr(mons, 'is_starter');
  console.log();
  printByType(mons, 'is_starter', false);
  printByType(mons, 'is_starter', true);
  console.log();
  printAttr(mons, 'rarity');
  console.log();
  printByType(mons, 'rarity', '1');
  printByType(mons, 'rarity', '2');
  printByType(mons, 'rarity', '3');
  printByType(mons, 'rarity', '4');
  console.log();
  printAttr(mons, 'type');
  console.log();
  printByType(mons, 'type', 'Monster');
  printByType(mons, 'type', 'Summoner');
  console.log();

  console.log(`abilities (${abilities.length})`);
  console.log(abilities.join(', '));
  console.log();
  let sum = [];
  for(let mon of mons){
    if(mon.type=='Monster'){
      let ab = mon.stats.abilities;
      let flat = arrFlat(ab);
      mon.flat = flat;
    }
  }

  let res = {};
  for(let ab of abilities){
    res[ab] = [];
    for(let mon of mons){
      if(mon.type=='Monster'){
        if(mon.flat.includes(ab)){
          res[ab].push(mon.name);
        }
      }
    }
  }
  for(let ab of Object.entries(res)){
    console.log(`${ab[0]} :\n${ab[1]}\n`);
  }

})();

맺음말

분석이 나름 빡샘 ? ㅋ

Sort:  

자료 잘 봤습니다. ㅎㅎ.. 이제 분석 해주세요 ㅠㅠ.... 어렵네 ㅋㅋ

You have received a Steemmonsters upvote! This post has been upvoted by Steemmonsters Discord member, wonsama.

Please find out more about Steemmonsters: https://steemmonsters.com/

ㅠㅠ 이거 해석해주세요.. ㅋㅋㅋ 천천히 훑어보게..

자료 감사합니다.

다 영어 ㅠ.ㅠ

ㄷㄷㄷ;;; 이...이제 해석과 분석을 부탁드려요 ㅋㅋㅋㅋ

엄청난 분석글입니다. 원사마님!

Hi @wonsama!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 3.377 which ranks you at #7055 across all Steem accounts.
Your rank has improved 25 places in the last three days (old rank 7080).

In our last Algorithmic Curation Round, consisting of 487 contributions, your post is ranked at #103.

Evaluation of your UA score:
  • You're on the right track, try to gather more followers.
  • The readers like your work!
  • Good user engagement!

Feel free to join our @steem-ua Discord server

잘 쪼개셨네요 ㅎ!
스몬 나마 데이터 너무 복잡해서 활용좀 할라믄, 다 디비에 넣어야 하지 않을까 싶어요 ㅠ

pairplay 가 kr-dev 컨텐츠를 응원합니다! :)

Coin Marketplace

STEEM 0.26
TRX 0.11
JST 0.032
BTC 63617.36
ETH 3070.79
USDT 1.00
SBD 3.82