알라딘MGG와이드바


NDC 2010 백두산(넥슨) - 마비노기 브랜치 관리 전략과 도구, 조국현(넥스토릭) - 바람의 나라 타겟팅 시스템 개선 개발 이야기

백두산(넥슨) - 마비노기 브랜치 관리 전략과 도구 #

  • 브랜치 관리는 힘들다. (Alienbrain 사용하는 듯?)
  • 개선 방향
    • Feature 단위로 변경점 검색
      • Feature(피처) : 기능. ex) 스킬랭크, 자동생산, ...
    • 피처로 묶기. 방법?
      • 통행료처럼 소스 컨트롤로 가기 위해 반드시 거쳐야 하는 과정
      • 체크인 순간을 hooking 하는 plug-in 을 통해서 관련피처 400개(헉..) 중에서 하나를 선택하게 한다.
  • 피처별로 폴더 생성하고, feature.xml 에 다음과 같이 정리
    • 이름, 키워드, 설명, 활성화시즌, 비활성화 시즌
    • feature.xml 을 .h 로 사용자 지정 빌드해서 소스 코드 중에서 특정 코드의 활성화 여부를 결정.
      • #define 과 비슷한 용도 enum _EGameFeature ...
    • 개발 편의성 & 서비스 안정성 두 마리 토끼를 노렸음
  • Q/A
    • 콤보박스 뜰 때 XML를 get latest 하게 했다(Alienbrain get 이 느려다는 불만 있음)
    • 애매한 피처를 구현, 수정했다면?
      • '피처에 관계없음; 선택항목이 있다. 체크인할 때 팀장 확인을 받는다. 서비스 초기에는 피처에 관련없는 항목이 좀 있었을지 몰라도, 지금은 거의 해당 피처가 있다.
    • enum 은 define 은 아니다. 그러면 그냥 xml 를 그대로 읽는게 더 낫지 않느냐
      • runtime 비교하는 게 싫어서 그렇게 만들었다고...
    • 마비노기 국가 브랜치 같은 경우 code 에 define 이 들어있기도 하고, data 스크립트로 나누기도 한다.
    • 국가별 데이터 관리는?
      • 텍스트는 따로 파일이 있다. 번역된 text 를 국가별로 따로 배포
      • 이런 부분은 feature 로 안 한다.

조국현(넥스토릭) - 바람의 나라 타겟팅 시스템 개선 #

  • 타겟팅이란? 마법 적용될 대상 선택하는 방법
  • 서버에서 할 일 : 마법 사용될 때 대상 클래스, 파티 등을 보고 마법 걸릴 대상 골라내어 마법 적용하기
  • 마법 data : 마법명, 클래스, 이펙트, 타겟팅 방법
  • 옛날 타겟팅 방법
    • 2번 : 지정된 타겟 주변 1칸
    • 3번 : 클라 시야 전체
    • 6번 : 캐스터 전방 3칸
    • n : 시야에서 그룹원 제외
    • n+1 : 시야에서 그룹원, 유저, 몬스터 제외
  • 기획자가 처음 제안한 방식 : DCBAA / arg
    • D 값은 지정된 타겟에 관련, C 는 속성, ...
    • 의도는 좋지만, 좀 더 좋게 만들 수 있겠다.
  • 프로그램적으로 나온 결과
    • composite pattern 으로 여러 조합 가능한 타겟팅 시스템 제작
    • 먼저 기존 코드에서 부품으로 사용할 수 있는 단위를 찾아 부품클래스로 구현
      • 유저, 몬스터, 펫 체크(클래스)
      • 전후좌우(방향)
      • 범위, 위치, 상태, 제한...
    • 부품 클래스 심볼을 테이블로 선언
      • dia : ?TargetExtDiamond
      • tri, rect, dan...
      • *(And), +(OR), !(NOT)
    • 예 : front1 + rear1 + left1 + right1 (십자가 모양), dia1 * !offset0, dia3 * !dia2
  • 변환 후 결과
    • 방법2 -> front1 + rear1 + left1 + right1
    • 방법3 -> C
    • 방법6 -> front3# (#는 캐스터 전방을 의미)
    • 방법n -> C*!group
    • 방법n+1 -> C*!(group+user+monster)
  • 결론
    • 전체 마법수 : 5300개 중에서 시스템 도입 후 1500 개 추가
    • 타겟팅 조합 방법 : 28종 -> 96개 (사실 조합 방법은 무한)
    • 타겟 시스템 메모리는 2MB 미만
    • 프로그래머는 타겟팅 클래스 2개 추가를 위해 12줄 작성만 하면 되었음
    • 기획자는 다양한 시도를 해 볼 수 있어서 좋아함
    • 바람의 나라 서버는 Objective-C 를 사용한다. 써 보면 꽤 좋은 언어라고 함.

핑백

덧글

댓글 입력 영역


Yes24위대한게임의탄생3

위대한 게임의 탄생 3
예스24 | 애드온2