새로운 툴 추가 MTControl

아이템샵 기능을 만들어넣다가 이래저래 하다 보니 아무래도 툴이 필요했다. 하는 김에 모델뷰에다가 어거지로 때려넣었던 클래스 프로퍼티, 무기 프로퍼티, 방어구 프로퍼티 툴까지 몽땅 통합했으면 좋겠다는 생각이 들었다. 해서 후닥닥 만들었다. 몸만 안아팠으면 2일이면 됐을것을. 금요일 작업하고 월요일 골골대고 화요일까지 작업해서 대충의 프레임을 잡고 아이텝샵 생성 기능을 만들어 넣었다. 이 와중에 DB에도 테이블 두개 추가. 이름하여 MTControl. … More 새로운 툴 추가 MTControl

멀티플 클라이언트 제작

  mmorpg프로젝트다보니 이래저래 작업을 하다보면 클라이언트를 몇개씩 띄워야할 때가 많다. 메모리를 100메가가 넘게 쳐먹는 클라이언트를 여러 개 띄우려면 꽤나 짜증이 난다. 일단 옆에 둔 노트북이 큰 도움이 되긴 하지만서도. 로딩시간도 그렇고 화면이 계속 갱신되는데다, 마우스랑 키보드 컨트롤 게임이다보니 디버깅 하려고 콘솔을 조작하면 게임 상태도 계속 영향을 받는다. 해서 한 프로세스로 여러 개의 클라이언트를 시뮬레이션 해주는 … More 멀티플 클라이언트 제작

몬스터가 나를 때린다

유져가 접속해있는 에이전트 서버, 게임 컨트롤 서버, NPC 서버가 따로 존재하다보니 NPC입장에서 유져를 탐색하고 공격하고 그에 대한 판정을 하는게 쉽지는 않았다. 여기서 NPC란 대체로 몬스터를 칭하지만  그외 플레이 하지 않는 모든 캐릭터를 말한다. 하여간 대단히 복잡한 구조를 구상하고 코딩하다가, 삽질임을 깨닫고 좀 간단한 방법으로 코드를 다시 짰다. 삽질임을 빨리 깨달아서 다행이다. 일주일을 예상했지만 생각보다 빨리 끝냈다. … More 몬스터가 나를 때린다

비디오 텍스쳐

2004년도에 졸업논문의 주제로 선택한 것은 ‘d3d와 픽셀 쉐이더를 이용한 실시간 포스트 이펙팅’ 이였다. 쉽게 요약하자면 1.동영상 플레이어다. 2.픽셀쉐이더를 이용해서 실시간으로 이펙트를 먹여준다 3.샤픈,모션블러,흑백,연필화느낌 필터…등등등 따위의 필터가 가능하다 하여간 그때 일도 바빴고 급하게 준비하느라 무지 고생했던 기억이 난다. 우선 dshow를 이용해서 4DyuchiGXMedia.dll컴포넌트를 만들었다. 이 녀석을 엔진의 렌더러와 연결했다. 이 DLL을 사용하여 엔진에서 avi텍스쳐를 생성할 수 있도록 … More 비디오 텍스쳐

개밥먹기

발렌타인데이 PT를 마치고서 저는 팀원들 모두가 접속하는 테스트를 정기적으로 해야겠다고 생각했습니다. 원래는 3월부터 2주 간격으로 실시할 예정이었습니다만, 하루라도 빨리 시작하는 편이 좋겠다 싶더군요. 2주 간격도 너무 깁니다. 일주일 간격으로 테스트하기로 했습니다. 그리고 오늘이 그 첫 테스트 날이었습니다. 얼마전 PT를 끝내고 코드를 왕창 고쳤습니다. 칼 공격 처리를 하다보니 이전 코드는 좀 문제가 있더군요. 내용상으론 사소한 문제였지만 … More 개밥먹기

_NT_SYMBOL_PATH

_NT_SYMBOL_PATH srv*c:\symbols\*http://msdl.microsoft.com/download/symbols _NT_SYMBOL_PATH srv*C:\symbols\os\*http://msdl.microsoft.com/download/symbols;srv*c:\symbols\MetalTomato\;c:\windows\system32 _NT_SYMBOL_PATH SRV*c:\symbols*http://msdl.microsoft.com/download/symbols

주말 동안 작업 내역-라이트맵 관련

주중에는 게임 코드를 짜고 주말에는 엔진을 업데이트 하자는 계획에 따라 이번주에도 엔진을 좀 손봤다. 토요일에는 db관련 코드를 짜느라 정신이 없었지만, 일단 db관련 코드는 마무리를 지었으므로 일요일 밤은 엔진에 투자할 정신적 여유가 생겼다. 4DyuchiGX엔진은 라이트맵 계산을 비롯하여 편집용 코드는 몽땅 다 엔진에 들어있다. 툴에서는 엔진의 api만을 사용한다. 따라서 라이트맵 계산 중에 화면을 어떻게 갱신해주느냐 하는 것도, … More 주말 동안 작업 내역-라이트맵 관련

DB에 세이브 기능 구현

두달쯤 전에 ole db를 이용한 멀티 스레드 db억세스 모듈을 하나 만들었었다. 비동기 쿼리함수, 동기식 쿼리함수로 아주 간단한 인터페이스를 가진 DLL모듈이다. 간단한 SELECT문으로 로그인 처리와, 게임의 기본 설정 데이타를 받아오는데만 사용하고 있었다. 이제 캐릭터 정보를 db에 저장하는 기능을 구현하려고 보니 케이스 바이 케이스로 쿼리문을 만들어주는게 무진장 짜증났다. 생각해보면 ole db를 사용하는 이상 모든걸 쿼리로 처리할 필요는 … More DB에 세이브 기능 구현

64비트 어셈에서 스택 사용시 주의사항

엔진과 기타 몇몇 컴포넌트에서 DPC(함수호출에 대한 내용을 일단 저장해두고 나중에 함수 호출)가 필요했기 때문에 꽤 오래전에 DPC 코드를 작성해서  공용 라이브러리 DLL에 넣어놨었다. DPC(Deffrred Procedure Call)를 구현하기 위해서는 가변인자처리를 해야했고, 따라서 어셈블리코드를 반드시 써야만했다. x64랑 x86이랑 calling convention이 달랐으므로 파라미터를 넘기는 부분에서 꽤 애먹었었다. 여튼 코드를 작성해서 지금까지 잘 사용하고 있었다(그렇다고 믿었다.) 몇일전에 그 DPC를 통해서 … More 64비트 어셈에서 스택 사용시 주의사항