Magic Work Station 이라고 불리는 Magic the Gathering 이란 트레이딩 카드 게임을 온라인상에서 무료로 할 수 있는 프로그램이 있다. 이걸 만든 업체쪽에선 Wizard( 매직더게더링 원 저작권 업체.. )에 어떤 커미션도 제공을 하고 있는 것이 아니기 때문에 , 매직 게임 자체에 대해 어떤것도 넣을수가 없기때문에 , 그 게임을 할 수 있는 프레임만 제공한다. 카드 DB같은경우도 저작권에 걸리기 때문에 다른형식으로 공급하는데 .. 어쨌든 그렇게 비공식적으로 사용하는 것이기에 매직 카드 자체의 매력인 카드 이미지조차 제대로 제공돼지 못한다.
어디서 모아놓기도 그렇고 누군가 퍼다주기도 귀찮고 ..
그래서 사람마다 다른 카드 이미지를 가지고 있다. 어떤사람은 용량 적은걸로 , 어떤사람은 풀이미지로..
개인적으로 풀이미지를 무척 가지고 싶어했었는데 , 다음카페 매직동호회에서 '오영석'씨 께서 풀이미지를 구할수 있는 웹사이트에 대한 정보를 흘렸다. 찾아보니 http://magiccards.info 라는 카드 검색 사이트인데 , 여기있는 카드이미지가 가히 일품!. 이분께선 그걸 하나하나 검색해서 저장했다고 한다... 카드 검색하고 클릭하고 이미지보고 다른이름 저장하고...이걸..몇백장... -_-;;
그걸 보고 생각이 났다. 정의감에 타올랐다.
'저거 프로그램으로 만들면 그냥 쫙 받을텐데 -_-'
일도 하기 싫은데 농땡이 치면서 만들어볼까?.. 하고 시작한 프로젝트 ..;
요는 , magiccard.info 에서 원하는 카드 이미지를 익스펜션 셋별로 긁어다가 mws포멧으로 저장해주는 프로그램이다.. 라고 할수 있겠다.
우선 사용한 컴파일러는 Visual Studio 2005 Professional , MFC를 이용한 Dialog base 프로젝트로 시작했다. 간단한 프로그램 만들기엔 제일 좋은 구조. 어쨌든 대충 머리에 그리기를 .. 첫화면에선 다운로드 받을 익스펜션을 선택하면 될거같고.. 그리고 Download 버튼이 있고 누르면 새창이 뜨면서 프로그래스 바가 진행이 되면서 하나씩 다운 받는걸 생각 했다.
여기서 필요한 기술. MFC UI프로그래밍을 제외하고 ... 1,http 프로토콜을 이용해서 파일 저장.
2,위의 파일 저장작업을 Back thread로 처리
3,확장성을 위한 익스펜션의 스크립트화
음 2,3이야 하기가 귀찮아서 그렇지 늘상 하던 작업이기 때문에 어려울것이 없을거 같고 .. 작업을 시작할땐 1번이 문제였는데 .,.. 그냥 GetHttpFile( "url" , targetfile ) 해서 뚝딱 하고 떨어지는 함수를 누가 만들어주면 참 쉽겠지만 -_- 세상을 그렇게 날로 먹지 못하는 법이다. 검색검색 .. 아 이런함수가 있군 -_-;; google을 한 10분쯤 뒤지니까 http프로토콜을 이용한 스트링 출력하는 소스를 발견했다.
다행히도 magiccard사이트는 파일을 카드 이름으로 하지 않고 번호로 해두었기때문에 자동화가 가능했다. 단순히 익스펜션 심볼 (bok) 그리고 카드가 몇장이 있는지 알면 해당 익스펜션을 모두 다운 로드 받을수가 있는 것이다.
근데 문제는 이렇게 받은게 무슨카드인지 모른다는 건데.. 즉 번호->카드 이름을 바꿔줄 인터페이스가 필요했다. 처음에는 이걸 테이블로 만들 생각을 했는데..
bok,163,Umezawa's Jitte
bok,164, .....
.....
매직에 익스팬션이 좀 많다. 저걸 언제 손으로 다해 -_-;; 그래서 고민고민 하다가.. 이 정보 마저도 Magiccard.info 사이트에서 퍼오기로 했다. 저 이미지를 표시하는 웹페이지 http://magiccards.info/bok/en/163.html
이 주소를가지고 html파일을 분석해서 타이틀 태그에서 카드이름을 뽑아내기로 했다.
간단한 스트링 처리로 테스트 성공.
이제 한셋을 다운 받는데 1,익스펜션 심볼
2,해당 익스펜션의 카드 장수
3,MWS사용하는 심볼 ( 저장용 )
이것만 있으면 가능해졌다.
이 정보는 여러글을 참고해서 노가다로 정리해서 스크립트로 만들었다. http://magoja.com/expension.txt
그리고 이 스크립트 역시 서버에서 저장을 해서,
exe파일과 같이 옮겨다니고 , 매번 업데이트해야하는 귀찮음을 없엤다.
그리고 -_-;; 이게 다운로드를 하고 있으면 윈도우가 메시지를 못받는 비동기식이기때문에 다운로드를 백스레드로 돌리지 않으면 만족할만한 UI 를 뽑아 내기가 어려웠다. 처음에 프로토타입은 그런거 전혀 무시한채로 만들었는데 , 어차피 한번 귀찮으면 끝나는 문제이기 때문에 작업을 마무리 지어서 마무리 버젼을 제작했다.
뭐 나머지는 자잘한 UI작업들이기때문에 ( 하지만 대단히 중요한 -_- )
따로 설명은 하지 않겠지만 , 대충 이러이러 하여 프로그램이 완성이 됐다.
참 오랜만에 이런 유틸리티를 만들었다. 버쳐파이터 대진표 역계산 프로그램 MagFa 만든이후로 더 만든게 있던가 -_-?.. 야튼 대충 마무리 돼서 기분이 좋다.
총 제작기간 이틀 -_-; 회사에서 농땡이 치면서 ;
야튼 MWS쓰는 사람들에게 많이 도움이 됐으면 좋겠다.
Update Log 2007/06/01
- 같은 이름의 카드 넘버링 추가. ( ex Mountain (2) .. )
2007/05/31 ver 1.0b 배포
- 백스레드 처리 , UI 처리
- 모든 익스펜션 적용.
- TSB 블럭 처리.
- Split Card 처리 추가
- AEther 글자 처리.. ':' 처리 (COP)