[DrugWars] 개발 소스로 살펴본 공방전 - Combat in a Development Source

in #drugwars5 years ago (edited)



https://drugwars.io



전쟁 잘 하고 계신가요?
현재는 빈집털이만 하고 있는데, 점점 빈집이 줄어들고 있어서 언젠가는 실제로 전투를 해야 할 거 같아서 어떤 방식으로 공방전이 이루어지는지 개발 소스를 통해 알아보았습니다.

참고로 저는 개발자는 아닙니다. 그냥 예전에 배운 것을 기초로 소스 분석만 조금 할 줄 아는 정도입니다.

먼저 용어 정리부터 해보겠습니다.

  • Army : 공격, 방어시 동원되는 Unit들의 전체를 말합니다.
  • Troop : 공격, 방어시 동원되는 동일 Unit의 그룹을 말합니다.
    • 예를들어 Bouncer 10개, Knifer 5개를 공격으로 보냈다면, Bouncer 그룹이 하나의 Troop이 되고, Knifer이 하나의 Troop이 됩니다.
  • Unit : 각각의 Unit을 말합니다.

큰틀의 공방전

  • 예전에 @drugwars의 글에서 라운드라는 말이 있었는데, 이런 의미였군요. 라운드는 전투시에 서로 공방을 한번씩 서로 교환하는 단위네요.
  • 서로의 Army를 이용하여 공격을 하는데, 실제 공격으로 인한 damage를 계산한후, takeDamages라는 함수를 이용하여 Damages를 적용합니다.
  • 상호간 Damages를 적용한후에 살아남은 병력이 있다면 다시 라운드를 시작합니다. 라운드는 최대 5번까지 진행이 됩니다.

Troop들간의 공격순서

  • Army는 여러 Troop로 구성됩니다. 그렇다면 어떤 Troop부터 Target의 어떤 Troop을 공격할까요?
  • 위에서 보시는 것처럼 "priority"라는 것을 기준으로 정렬을 합니다. 이는 공격자나 Target의 군대가 모두 동일한 기준으로 정렬됩니다. 각 Unit별로 priority 값은 다음과 같습니다.
UnitPriority
Rowdy50
Bouncer55
Knifer60
BigMama65
Ninja70
Gunman75
Sniper80
Hitman85
Bazooka90
Mercenary100

공격시 Unit을 선택하는 순서에 따라 다른 결과가 나올수 있다는 글을 보았는데, 현재 기준으로는 차이가 없는 것으로 보입니다. 제가 놓친 부분이 있다면 코멘트 부탁드립니다.

  • 다시 정리하면, 양쪽의 각 Troop들을 priority기준으로 두줄로 세운후 서로 마주보고 있는 것들끼리 공격을 하는 것입니다.
  • 한쪽의 Troop이 더 많으면 어떻게 할까요? 짝이 맞아야 하겠죠. 그러니.. 남은 Troop들은 상대방의 살아남은 첫번째 Troop부터 다시 공격을 합니다.
  • 마주보고 있는 Troop에 공격을 할때, 나의 공격력과 상대방 Troop의 방어력과의 관계는 다음과 같습니다.
    • 공격자 공격력 > 방어자 방어력 : 해당 Troop 전멸
      • 공격력이 남는다고 해서 다음 Troop을 공격하지는 않습니다. 방어자의 Troop만 전멸시키고 끝입니다.
    • 공격자 공격력 < 방어자 방어력 : 공격력만큼의 방어자의 Troop내의 Unit갯수를 계산하여 Die, 남는 것은 살아남습니다.

https://steemitimages.com/p/2BCfkBRHmbhyfuMqxU5YT6Gz2LKYdwfh84cCVGPhMuHsgcLLr6bjgi?format=match&mode=fit&width=640

결론

  • 얼마전 @drugwars의 글에 아래와 같은 이야기가 있었습니다.
    What we can advise you is to build different types of units if you are aiming to let them go into a Battle, because each type of unit will be able to attack only once each round.
    이 말이 이제 이해가 되는군요.. 공격력을 최대로 끌어내가 위해서는 공격시 동원되는 Unit의 수도 중요하지만, 종류도 상당한 영향이 있습니다.
  • 상대방의 전력을 파악해서 내가 보낼 병사들을 선발해야 하는데, priority기준으로 줄을 세우므로 처음에는 약한 Unit으로 구성된 Troop들이 있을 겁니다. 이를 처리하기 위해 바주카나 빅마마 같은 강력한 것들로만 구성하는 것은 낭비일 수 있습니다. 서로 줄을 세웠을때 효과적인 공격을 할 수 있는 구성을 고민해야 할 것입니다.
  • 현재 전쟁 방식이 조금씩 변화하고 있으므로, 위의 내용이 항상 맞는 것은 아닙니다. 언제든지 바뀔 수 있으니, 최신 정보를 확인하세요.
  • 참고로 새로운 카톡방에 들어가보니, @wonsama 님이 시뮬레이터를 공개해 놓으셨더군요. 위의 내용을 이해한후 시뮬레이터를 이용하면 효과적인 전쟁을 수행할 수 있을 것으로 보입니다. 즐겜하세요.





지난글



방치형 게임. 같이 해보지 않으시렵니까?
https://drugwars.io


Sponsored ( Powered by dclick )

dclick-imagead

Sort:  

@peterpa님께서 이 포스팅에 많은 관심을 가지고 있어요. 리스팀을 해주셨군요~!

Congratulations @tinker-bell! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You published a post every day of the week

Click here to view your Board
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Vote for @Steemitboard as a witness and get one more award and increased upvotes!

제대로 설명해주신것 같습니다~
주말까지만 해도 공격순서는 Priority로 Sorting 하지 않았었는데, 그새 또 바뀌었더군요..

그래도 지금도 공격자가 훨씬 유리한것만은 사실인듯 하네요~ 상대방의 병력을 꿰뚫어 보고 쳐들어 가니까요~ ㅎㅎ

아. 감사합니다.
주말까지는 소팅하지 않았군요..
소스의 커밋 날짜가 1일전이긴 했어요.. 뭐가 바뀌었는지는 확인하지 못했지만.. ㅎㅎ

!bookkeeping drugwars

Hi @tinker-bell!

drugwars

Received:

  • 25.216 STEEM from daily
  • 23.529 STEEM from heist
  • 0.314 STEEM from referral

Spent:

  • 34.978 STEEM

Total:

  • 14.081 STEEM

First transfer was before 23.33 days.
Your ROI per day is 6.01 % and you are earning approx. 2.10 STEEM per day.

ROI when taking only the last 5 days into account

Your ROI per day is 5.35 % and you are earning approx. 1.87 STEEM per day.

Hi @tinker-bell!

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

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

Evaluation of your UA score:
  • Only a few people are following you, try to convince more people with good work.
  • Your contribution has not gone unnoticed, keep up the good work!
  • Try to work on user engagement: the more people that interact with you via the comments, the higher your UA score!

Feel free to join our @steem-ua Discord server

@innovit님께서 이 포스팅에 많은 관심을 가지고 있어요. 리스팀을 해주셨군요~!

리스팀합니다. 정리 감사합니다.

아낌없이주는 나무에 대한 후원으로 왔어요. 미약하나마 보팅 하고 가요.

Posted using Partiko Android

KR 커뮤니티 출석부 함께 응원합니다~♩♬

Posted using Partiko Android

Coin Marketplace

STEEM 0.24
TRX 0.11
JST 0.031
BTC 61875.79
ETH 3013.13
USDT 1.00
SBD 3.69