개인적으로 한 줄 평가를 하자면 자동전투에 의한, 자동전투를 위한 게임이다...

(이미지는 참 멋있는데....)

일단! 컨텐츠가 별로 없다. 하지만 모델링은 잘 나왔다. 물론 신규 게임이라는 패널티가 있지만...... 아무래도 마블의 퓨쳐파이트랑 비슷해서 비교가 되는건 어쩔 수가 없네요.



우선 컨텐츠 소개부터 하자면...

  • 이야기모드 
  • 언체인드 - 이야기모드의 코옵버전?
  • 결투 - pvp
  • 가상전투 - 무한층 컨텐츠
  • 팀 훈련 - 조합 효과를 강화
  • 또다른 이야기 - 어.......그냥 템주기 위한 콘텐츠?
  • 특별임무 - 활력 보충제를 얻기 위한 전투
  • 기지 - offline 시 템 확보를 위한 컨텐츠
이정도입니다.


 단점부터 얘기하겠습니다.
음....pvp 빼고는 다 컨트롤이 필요없습니다. 자동전투면 되죠 ㅎㅎ
그 흔한 보스전도 없어요 ㅠㅠ...  그냥 게임키면 자동전투 돌려놓으면 되요..
 컨텐츠가 부족해요.. 핵심 컨텐츠인거 같은 언체인드부터 얘기를 해보죠. 이야기 모드의 코옵버전인데.. 보상이 그렇게 크지도 않고, 코옵이라곤 해도 컨트롤은 필요없습니다. 역시 자동전투죠. 이야기모드에 비해서는 보상이 많아서 이야기 모드를 다 깨면 언체인드만 돌게 되죠. 그래서 이야기모드는 한 번 깨면 다신 볼 일도 없습니다. 그리고 이야기 모드에 랭크 시스템이 있는데 이건 존재의미가 없어요...ㅜㅜ s랭크 받아봤자 아무것도 없습니다. 네 이야기모드는 컨텐츠 여는 용도가 끝이에요.
 차라리 스토리 모드를 언체인드의 보상 정도로 바꿔서 성장을 위한 반복전투로 유도하고, 언체인드는 보스전 같은 완전히 코옵 컨텐츠로 가는게 어땠을까 싶네요... DC에도 다크사이드같은 네임드 보스가 많은데...앞으로 업데이트 되겠죠?

 또 집고 넘어가고 싶은게 또다른 이야기... 진행방식은 난이도에 따라 포인트를 주고, 일정 포인트를 모으면 보상을 받는 방식입니다. 근데 여기서 사용하는 캐릭터는 본인의 캐릭터도 아닙니다. 잉? 네 그냥 자동전투 돌려놓으란 소리죠... 이걸 넣은 의도는 아마 캐릭터 맛보기의 용도가 아닐까 생각이 듭니다. 하지만 이미 캐릭터 창에서 맛보기는 할 수 있고, 이런 캐릭터의 매력을 무기로 삼는 게임에서는 뭐가됐든 자기의 애정캐가 곧 주캐가 되니까 좀 의미없게 느껴집니다.




 단점이 많지만 장점도 있습니다. 캐릭터 퀄리티가 좋아요!! 꽤나 좋아요. 스킨도 멋져요!! 위에 사진이 플래시의 스킨입니다. (사진으론 좀 별로네요..실제론 더 멋져요!) 아직은 나온지 얼마 안되서 스킨도 캐릭도 별로 없지만 마퓨파를 넘어설 전자피규어 게임을 기대해 볼 수 있을 것 같아요! (음.... 근데 솔직히 DC의 전자 피규어라면 인저스티스가 이미 있어서....)
 그리고 한줄평에 자동전투를 위한 게임이라고 한 이유! 바로 전술 시스템입니다. 자동전투시 캐릭터가 상황에 따라 어떻게 대처할지를 토큰으로 조정할 수가 있어요. (예를 들면, 주변에 적이 5명 이상이면 동료를 호출한다, 1,2번 스킬은 연계해서 쓴다.) 이거는 다른 게임에서는 시도하지 않은 신박한 생각 같더라고요. 어정쩡하게 컨트롤 넣지 말고 아예 자동전투에 모든걸 쏟아붇자는 느낌?

간단하게 정리해보겠습니다.

개인적인 평가 : 6.0 / 10.0 

장점 

  •  캐릭터 퀄리티가 좋다
  •  전술 시스템
  •  만화책 느낌이 물


단점

  •  특징없는 컨텐츠
  •  별로 없는 이벤트 
  •  일부 의미를 모르겠는 컨텐츠 (랭크 시스템)

추천 : 컨트롤은 하기 싫고 그냥 DC의 캐릭터를 키우고 싶다. DC 캐릭터용 전자피규어를 가지고 싶다.


Posted by 검은거북

virtual 함수란?

 부모 클래스에서 virtual 키워드를 사용하여 함수를 만들면, 자식 클래스에서 이 함수를 재정의 할 수 있도록 허용하겠다는 의미입니다.


 특징

 - virtual 이 붙은 함수는 자식 클래스에서 재정의가 가능합니다.

 - 자식 클래스에서는 new 또는 override 키워드가 사용가능하다.

    - override는 재정의를 하겠다는 확장의 의미이고, new 는 기본 클래스를 숨기는 의미이다. 

 - 자식클래스의 함수 시그니쳐가 동일해야 재정의가 가능하다.

 - 자식클래스의 함수는 base 키워드를 사용해 부모 클래스의 함수를 호출 할 수 있습니다.

 - abstract 와는 달리 자식클래스에서 구현은 선택이다. (구현 안하면 부모의 함수 사용)

 - static, abstract, private, override 키워드와는 사용이 불가능하다.

예제

    public class Monster
    {
        public virtual void hit()
        {
            Console.WriteLine("Monster hit");
        }
    }

    public class Orc : Monster
    {
        public override void hit()
        {
            Console.WriteLine("Orc hit");
        }
    }

    public class Elf : Monster
    {
        public new void hit()
        {
            Console.WriteLine("Elf hit");
        }
    }

    public class Wolf : Monster
    {
        public void hit()
        {
            Console.WriteLine("Wolf hit");
        }
    }

위에서 Monster 클래스는 hit 함수에 virtual 키워드를 지정해 재정의를 허용했습니다.

Orc는 override를, Elf는 new 키워드를, Wolf는 별도 지정없이 동일한 시그니쳐의 함수를 작성했습니다.


이제 사용을 해보죠.

   class Program
    {
        static void Main(string[] args)
        {
            Monster monster1 = new Monster();
            Orc monster2 = new Orc();
            Elf monster3 = new Elf();
            Wolf monster4 = new Wolf();

            monster1.hit();
            monster2.hit();
            monster3.hit();
            monster4.hit();

            Monster monster5 = new Orc();
            Monster monster6 = new Elf();
            Monster monster7 = new Wolf();


            Console.WriteLine("////////////////////");
            monster5.hit();
            monster6.hit();
            monster7.hit();

        }
    }

monster 1~4 는 각 클래스별로 몬스터를 만들고,  monster 5~7은 Monster라는 변수에 각 하위 클래스의 인스턴스를 생성해 담아서 출력시켰습니다.


결과는

monster 1~4 는 그대로 잘 출력되네요. 사실 각 클래스에 자기 자신을 인스턴스로 담으면 virtual의 의미가 전혀 없습니다. ( 이렇게 쓸거면 재정의가 필요없죠)

하지만 monster 5~7은 결과가 다르죠.

ovrride를 한 Orc만 제대로 재정의되어 자신의 hit를 출력하고 있고, 나머지는 상위 클래스의 hit를 출력합니다.

여기서 new 키워드의 기본 클래스를 숨긴다는 의미도 알 수 있죠. 상위 클래스 변수에 담기면 하위 클래스가 아닌 상위 클래스의 함수를 호출한다는 것입니다. ( new 키워드를 사용하지 않은 경우, 즉 Wolf의 경우에는 new와 동일한 동작을 합니다.)


그럼 만약에 상위 클래스가 virtual 키워드를 쓰지 않았다면?

virtual 함수를 쓰지않으면 하위 클래스에서는 override를 쓰지 못합니다. 당연히 monster 6~7과 동일하게 동작합니다. 


결국 virtual과 override를 사용하여 재정의하는 이유는 상위 클래스 변수에 하위 클래스 인스턴스를 담을 때, 하위 클래스의 함수를 호출하고 싶기 때문이죠.

(Monster monster5 = new Orc();)



virtual 함수의 활용


 그럼 이런 재정의는 언제 활용을 하는걸까요

 상위 클래스 변수에 하위 클래스 인스턴스를 담아야 할 경우는 언제일까요

 위의 hit 함수를 생각해보죠.

 모든 몬스터가 Monster라는 하나의 클래스로 만들어지면 좋겠지만, 각자의 특징에 따라 Monster 하위 클래스가 만들어질 수 있습니다. 
그리고 Player가 몬스터를 때렸을때, 해당 몬스터의 hit를 호출한다고 칩시다.

virtual 함수를 쓰지 않는다면 어떻게 될까요? 
       void attack(Orc monster)
        {
            monster.hit();
        }
        void attack(Elf monster)
        {
            monster.hit();
        }
        void attack(Wolf monster)
        {
            monster.hit();
        }
 헉... 모든 해당 몬스터 즉, orc, elf, wolf 별로 hit 함수를 오버로딩하여 별도로 호출해야 합니다. 
 왜냐하면... virtual을 사용하지 않으면 저렇게 해야만 해당 몬스터의 hit를 호출할 수 있으니까요. ( 사용하는 입장에서 Orc가 hit를 override를 했을지, 안했을지 모르잖아요?)

만약 virtual 함수를 사용하고, 다른 하위 클래스에서 hit함수를 override했다면?
        void attack(Monster monster)
        {
            monster.hit();
        }

이거 하나면 됩니다.


monster.hit() 가 호출될 때 Monster 변수에 담긴 인스턴트별로 재정의 되어있는 hit 함수를 호출해 줄테니까요.

몬스터 종류가 무수히 많아졌을 때, 마냥 몬스터별로 함수를 오버로딩해서 작성할 수는 없습니다. 반드시 virtual이 필요해지죠.



* 사실 위와 같은 방식은 abstract 또는 interface로도 가능은 하죠. 

 하지만 abstract, interface와는 달리 virtual은 선택적으로 재정의가 가능하다는 점virtual 함수를 가진 상위 클래스도 인스턴스 생성이 가능하다는 점이 있습니다.

 솔직히 위의 Hit함수만 보면 어차피 모든 클래스가 구현을 해야한다면 abstract로 만드는게 맞지 않냐고 할 수 있습니다. Hit만 있다면 맞는 말이죠. 그리고 Monster라는 하나의 그룹을 정의하는 거라면 abstract가 맞습니다. 하지만 Orc 중에서 엘리트 Orc는 Hit시 반격을 하고 싶다면?모든 Orc의 함수는 동일하게 상속받아 행동하고, Move만 재정의 해야 한다면, virtual이 필요해지게 되죠. Orc도 하나의 인스턴스로써 동작해야하고, 엘리트 Orc는 hit를 재정의해서 만들어져야 하니까요. 즉, 특정 개체로부터 특정 함수만을 선택적으로 재정의하고, 그 외에는 그대로 상속 해야할 경우인거죠.

 결국 각자의 특징에 알맞게 사용해야겠죠. 예를 들어 abstract는 하위 클래스가 반드시 구현해야하는 것을 명시하거나 하나로 묶을 때, interface는 class에 한정되지 않고, 범용적으로 사용할 때 또는 디자인 정의가 필요할 때, virtual은 일부 함수에 대해 선택적으로 재정의가 필요할 때.

 






Posted by 검은거북


몇 달째 꾸준히 하고 있는 액트파이브의 열혈강호 M.


 일단 게임의 메인 장르는 던전앤파이터와 같은 2D 횡스크롤 액션 게임입니다. 

원래 2D 횡스크롤 게임 자체는 잘 하지 않는 편인데, 우리나라에서 열강이 많이 유명하다보니 호기심에 한 번 접해봤다가... 지금 한 2달 넘게 하면서 레벨 62까지 키우게 되었네요.



 처음 접했을 때의 느낌은 국산게임임에도 불구하고 왠지 중국스멜이 느껴졌었습니다. 아무래도 만화가 무협장르라 그런 것도 있고, 중국 게임 특유의 특징들이 좀 보이기도 했거든요. 예를 들어 쓸데없이 큰 데이터나 데미지들, VIP 시스템, 컨텐츠 순차오픈, 많은 이벤트. (지극히 주관적인 생각입니다)

 전 개인적으로 중국 게임 좋아하는 편입니다 ㅎㅎ 큰 데미지는 시원시원한 느낌을 주고, 다른 시스템도 나쁠게 없죠.. 무과금러 입장에서 VIP 시스템은 차별을 받긴하지만, 현질러와 엄연히 다르게 대우하는 건 어쩔 수 없다고 생각합니다. 그러다보니 열강에 빠져든게 아닌가싶네요. 특히 열혈강호 M은 스토리를 따라가다보면 만화책 컷씬을 통해 스토리를 이해할 수 있게 해주기때문에 그 부분도 몰입도를 높이는데 한 몫 했다고 생각이 듭니다. 그 무엇보다 전투력을 야금야금 키우는 맛이 가장 좋은 것 같네요. (현재는 어느새 9900만으로 곧 1억이 눈 앞에...)



 

 게임의 특징은 아무래도 다양한 컨텐츠겠네요. 우선 컨텐츠들이 확실하게 제 역할을 가지고 있다는 느낌이 들어서 좋습니다. 

 주요 서브 컨텐츠로는 

  • 무림외전 ( 동료들을 이용한 턴제 전투)
  • 등천각 (층을 올라가는 도전 컨텐츠)
  • 신수 대전 ( 다른 유저들과 협동하여 보스(신수)를 잡는 컨텐츠)
  • 결투대회( pvp - 유저간 실시간 대전입니다. 전투력 100만이 차이나는 유저한테 진적도 있죠...)
  • 무림쟁패 (동료 pvp - 위와는 반대로 이건 선빵필승입니다.ㅎㅎ)
  • 등등...

 게임 내의 재화나 재료는 각 컨텐츠들에서 별도로 얻을 수 있습니다. 때문에 위에서 각 컨텐츠의 역할을 가지고 있다고 말씀드린 겁니다. (비무대회 빼고... 비무대회는 비무첩의 상위 컨텐츠로 둘이 역할이 많이 겹칩니다.) 


 

 게다가 동료들을 키우고, 동료들을 통해 무림외전을 플레이해야해서 턴제 게임의 성격도 가지고 있죠. 전 원래 턴제를 좋아하다보니 처음 할때는 무림외전에 더 신경을 썼었죠... 동료를 키우면 주인공이 강해지고, 주인공을 키우면 동료 진형이 강해지는 식으로 어느쪽이든 강해지고 싶으면 포기할 수 없게 만든 것도 꽤 좋은 컨텐츠 소비인거 같습니다. 대체로 모든 컨텐츠가 강해지고 싶으면 다 해야되도록 유도하고 있죠.  

 특히 요즘에는 환영지림이나 동료 업데이트를 통해 동료쪽에 신경을 많이 쓰는 것 같더라고요. 업데이트나 이벤트도 자주하는 편이고, 턴제나 수집요소를 좋아하는 저로써는 할 맛이 나서 계속 붙잡게 되더군요.. 


 끊임없는 이벤트도 하나의 큰 장점이겠네요. 컨텐츠 소비를 위한 이벤트가 매달 이름만 바껴서 나오고 있죠. 유저 입장에서는 계속 재화를 얻을 수 있는 좋은 서비스입니다.



 그리고 하나더 특징이자 장점을 뽑자면 플레이블 캐릭터가 3명입니다. 언제든 맘에 드는 캐릭터를 선택해 키울 수 있고, 3명 다 키운다면 업적을 통해 각 캐릭터별로 유료재화를 수급할 수 있죠...ㅎㅎ





 사실 저는 이 게임에 대해 단점이 잘 느껴지진 않습니다. 그만큼 잘 만든 게임이라고 생각해요. 하지만 단점을 굳이 뽑자면, 문파와 의상 시스템을 들 수 있겠네요.

 문파는 문파 토큰을 모으고 이를 통해 아이템을 살 수 있단건 알겠는데... 문파원들과 뭔가 한다는 개념도 별로 느껴지지 않고, 사실 문파 없어도 지장없는 듯해요. (엇! 장점이 될 수도 있겠네요)

 의상 시스템은....아직 부가 요소들을 개발중인거 같아요. 현재로썬 사실 캐릭터 꾸미기 + 소소한 능력치 업 정도밖에 되질 않아요. 굳이 비싼 유료재화 들여가면서 뽑고 싶진 않더라고요.


 그리고 엔드 컨텐츠가 부족하다고 생각하긴 하는데, 사실 이건 열강에만 국한되진 않는 문제인 듯하네요... 저는 스테이지 깨는데 목적을 두다보니 중천 난이도가 없을 때 ,극악까지 다 깨니까 "다깼네...지울까" 했거든요. 하지만 pvp를 많이 즐기시는 분이라면 얘기가 다르겠네요. pvp에서 1인자가 되겠어 하면서 열심히 반복전투 눌러서 강해지려 하실 수도 있으니.

 


개인 평점 : 8.6 / 10.0


추천 

  • 열혈강호를 좋아하는 분 또는 입문하고 싶은 분
  • 2D 횡스크롤 액션을 좋아하시는 분.
  • 조합 같은 복잡한거 싫다하시는 분 ( 동료시스템은 강한 동료가 선빵때리면 장땡입니다. )
  • 캐릭터 수집을 좋아하시는 분.


Posted by 검은거북

블로그 이미지
프로그래밍 공부 요약 및 공부하며 발생한 궁금증과 해결과정을 포스팅합니다.
검은거북

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.1
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

글 보관함