303 lines
9.1 KiB
Plaintext
303 lines
9.1 KiB
Plaintext
|
|
========================================================================
|
|
SUN( Soul of the Ultimate Nation - Episode 1 )
|
|
========================================================================
|
|
|
|
* 주의사항
|
|
- Precompiled Header 설정을 했습니다. (SunPrecompiledHeader.h)
|
|
|
|
|
|
|
|
(21) 2005년 4월 2일
|
|
* SceneBase 클래스에 m_bEnableRender 변수 추가
|
|
- 각 씬의 Process()가 한번이라도 실행되어야 랜더링을 할 수 있다.
|
|
* 프로젝트 설정에서 디버그, 릴리즈 모드에서 중간 파일 생성 폴더를 각각
|
|
"../_Debug", "../_Relese" 에서 "Debug", "Relese" 로 변경( 기본 설정 )
|
|
|
|
|
|
(20) 2005년 4월 2일
|
|
Map생성후 만들어진 모든 Character Object는 Map이 파괴되기전에 먼저 Destroy 되어야합니다.
|
|
대신 Map생성후 만들어진 Character에대해서 Octree Index등에 신경쓸 필요가 없어졌습니다.
|
|
|
|
|
|
(19) 2005년 3월 21일
|
|
* GameParameter 에서 _bin 폴더안에 있는 GENERAL.INI 파일의 정보를 토큰화해서
|
|
기본설정을 할 수있습니다.
|
|
|
|
[PARAM]
|
|
NETWORK = 1 // NET ON / OFF
|
|
START_MAP_ID = 1 // MAPID -+
|
|
START_FIELD_ID = 0 // FIELDID -+-- _bin\data\Map.txt, Field.txt 확인
|
|
|
|
GAME_SERVER_IP = 10.1.28.135
|
|
GAME_SERVER_PORT= 6000
|
|
|
|
|
|
(18) 2005년 3월 21일
|
|
* GlobalFunc.h, cpp 추가
|
|
- 글로벌 함수를 등록하기 위한 헤더와 cpp를 추가하였습니다.
|
|
현재 g_pNetwork->Send(...) 를 SendPacket(...) 로 랩핑하였습니다.
|
|
--> 함수의 이름이 겹칠수도 있는 문제로 인해서 namespace GlobalFunc 으로 감쌌습니다.
|
|
|
|
|
|
(17) 2005년 3월 21일
|
|
* 그림자 관련루틴 재적용
|
|
* 그림자 관련루틴 Map으로 이동.
|
|
|
|
|
|
(16) 2005년 3월 14일( 오후 )
|
|
* 3월 14일자 엔진패치 이후
|
|
* 멥에 Blur 설정이 멥데이터로 빠져버린 상태여서 일단 최신 데이터가 나오기전까지
|
|
블러를 껐습니다.
|
|
|
|
|
|
(15) 2005년 2월 16일( 오후 )
|
|
|
|
* GlobalData.h 파일에 별거 다 있어서, 좀만 수정해도 리빌드가 되고 있다.
|
|
- 꼭 필요한 엔진 관련 정보만 남기고 분산 시키자.
|
|
--> 확인해보겠음. (J0)
|
|
* 입력 처리( 다이렉트 인풋 )를 현재 각 프로세스 안에서 처리하고 있다.
|
|
- 각 스테이트 마다 똑같은 처리를 해야 하므로 코드 중복이 있다
|
|
- 밖으로 빼자니 입력 처리의 감도가 게임 진행의 감도와 어긋난다.
|
|
- 입력 처리 큐 구조를 만들어야 겠다.
|
|
|
|
* 멥 데이터에 있는 스카이 박스를 사용하지 않고 따로 처리하고 있다.
|
|
- 수정 작업, 엔진팀에 요청 등 필요하다
|
|
--> 수정요청하였고 현재 멀티테스쳐링이 구현되지 않아 사용하고있지않다
|
|
멀티텍스쳐링이 구현되면 바로 적용가능함.
|
|
|
|
|
|
(14) 2005년 2월 6일( 오후 )
|
|
|
|
* 스킬 공격 패킷 보내는 부분을 공격 스테이트 안으로 넣었다.
|
|
- 잘 보내고 있다
|
|
|
|
|
|
* 글로우 효과 설정값
|
|
|
|
St_PE_BLUR sBlur;
|
|
sBlur = g_pSunRenderer->x_pManagerPostEffect->GetTechBlur();
|
|
sBlur.m_iBlurCount = 4; //블러 횟수
|
|
sBlur.m_fMinLuminance = 0.55f; //적용할 최소 희도 0.0~1.0
|
|
sBlur.m_fSelectSubTract = 0.5f; //선택 색상 에서 마이너스 할 값
|
|
// sBlur.m_arfFunc[4]; //적용할 휘도 공식 Default (0.30,0.59,0.11,1.0f)
|
|
// sBlur.m_arfDeadColor[4]; //샘플링 안되는 칼라 Default (0.0,0.0,0.0,1.0f)
|
|
sBlur.m_fFinalColorHighLight[0] = 0.4f; // add 할 파라 미터 이갑에 곱해서 나중에 더해짐 (1.0,1.0,1.0,1.0f)
|
|
sBlur.m_fFinalColorHighLight[1] = 0.4f; // add 할 파라 미터 이갑에 곱해서 나중에 더해짐 (1.0,1.0,1.0,1.0f)
|
|
sBlur.m_fFinalColorHighLight[2] = 0.4f; // add 할 파라 미터 이갑에 곱해서 나중에 더해짐 (1.0,1.0,1.0,1.0f)
|
|
sBlur.m_fFinalColorHighLight[3] = 1.0f; // add 할 파라 미터 이갑에 곱해서 나중에 더해짐 (1.0,1.0,1.0,1.0f)
|
|
sBlur.m_fSelectHighLight[0] = 0.0f; // 선택된 색깔 HighLight량 (0.0,0.0,0.0,1.0);
|
|
sBlur.m_fSelectHighLight[1] = 0.0f; // 선택된 색깔 HighLight량 (0.0,0.0,0.0,1.0);
|
|
sBlur.m_fSelectHighLight[2] = 0.0f; // 선택된 색깔 HighLight량 (0.0,0.0,0.0,1.0);
|
|
sBlur.m_fSelectHighLight[3] = 1.0f; // 선택된 색깔 HighLight량 (0.0,0.0,0.0,1.0);
|
|
g_pSunRenderer->x_pManagerPostEffect->SetTechBlur( sBlur );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(14) 2005년 2월 6일( 새벽 )
|
|
|
|
* 스킬 공격 패킷 보내는 부분을 공격 스테이트 안으로 넣었어야 하는데 깜빡했다.
|
|
- 따라서 클릭할 때마다 계속 보내고 있다
|
|
|
|
|
|
|
|
|
|
|
|
(14) 2005년 2월 1일
|
|
|
|
* 사운드 라이브러리 업데이트( 웨이브와 세그먼트의 차이점 )
|
|
- 웨이브는 같은 소리를 여러번 출력하면,
|
|
서로 독립적인 다른 소리 객체가 생겨서( 리턴되는 핸들값이 다르다 ) 따로 제어가 되고
|
|
- 세그먼트는 서로 다른 타이밍으로 출력이 되긴 하지만,
|
|
리턴되는 핸들 값이 같아서 효과를 주면 동시에 같이 적용된다
|
|
* 스킬 테스트( 왼쪽 쉬프트 + 마우스 왼쪽 클릭 )
|
|
- 전방 120도 안에 있는 놈들( 그리고 사정거리 안에 있는 ) 모두 죽여 버린다.
|
|
- 다중 공격
|
|
|
|
|
|
|
|
|
|
(13) 2005년 1월 31일
|
|
|
|
- 멥 로딩 쓰레드에서 일단 뺐음. 랜더링을 하면서 동시에 로딩하면 뻑나는 문제.
|
|
|
|
|
|
|
|
|
|
(12) 2005년 1월 27일( 오랫동안 할 일이 많아서 늦어졌다 )
|
|
|
|
- 몬스터와 플레이어에 있는 공통된 테스트 코드를 캐릭터 객체에 정리해서 집어 넣었으나 더 손봐야 함
|
|
- 다이렉트 인풋 처리
|
|
인터페이스 위에 마우스 포인터가 있으면 다른 메시지 출력( 인터페이스 위에 있는가 판별 수정 필요 )
|
|
따라서 둘 다 검사해야 한다.( 나중에 수정 필요 )
|
|
- 피 튀는 효과를 위해 빌보드로 이미지 에니메이션 시킨다( 임시로 추가 )
|
|
- 카메라 회전( 시계 방향으로 돌때, 거의 도착하기 직전에 튀는 현상 있음 )
|
|
- 로딩 쓰레드( 쓰레드 실행 중에 종료되었을 때, 마무리 시키는 작업 나중에 손보자 )
|
|
- 일단, 몬스터 스테이트 따로 추가
|
|
- 플레이어 스테이트 구조 변경( 주인공과 다른 플레이어를 구분 하면서 처리되므로 매우 거시기 함 )
|
|
* 나중에 캐릭터 스테이트와 히어로 스테이트로 나누어야 한다.
|
|
멥은 하나로 사용하고, 업데이트, 랜더링 코드도 하나로 돌아가지만,
|
|
다른 플레이어와 몬스터는 같은 스테이트( 캐릭터 스테이트 )를 사용하여 같은 처리를 하고
|
|
히어로는 히어로 스테이트로 히어로 만의 처리를 해주되,
|
|
m_pNextState, m_pCurrentState 변수가 가리키는 스테이트 객체는 서로 다른 스테이트 객체를 가리킨다.
|
|
|
|
* 이동 동기화 : 처음 <버전 1> 구현했다가, 다른 방식 <버전 2> 로 수정했음
|
|
<버전 1>
|
|
- 클라이언트가 서버에 길찾기 정보를 보내고 멈춰서 기다린다.
|
|
- 서버로 갔던 패킷이 다시 클라이언트로 돌아오면 그 때, 셋팅하고 이동한다.
|
|
- 먼저 보내고 받은 다음에 이동하기 때문에 모든 클라이언트끼리 동기화가 맞는다.
|
|
- 특별한 보정 작업 필요 없어 보임
|
|
- 응답 속도( 핑 속도, 랙 등 )가 느릴 경우, 클릭할 때마다 멈칫하므로 답답하고 액션성이 떨어진다.
|
|
<버전 2>
|
|
- 클라이언트가 서버에 길찾기 정보를 보내고 바로 출발한다.
|
|
- 내가 보냈던 패킷은 나한테 보내지 않는다.( 서버에서 이상이 없다고 판단되면 보낼 필요 없다 )
|
|
- 이동 패킷을 받았다는 건, 다른 플레이어의 정보이므로 셋팅시키고 이동 시킨다.
|
|
- 바로 움직이기 때문에 액션성을 살리고 답답함이 줄겠지만, 동기화 보정 작업 필요
|
|
- 서버에 보내고 출발하는 데, 내 패킷이 서버에 늦게 도착하면 동기화에 차이가 생김
|
|
|
|
* 공격 동기화를 하면서 데미지 받는 에니메이션 연출을 일단 뺐음
|
|
- 캐릭터마다 에니메이션 시간도 다르고 서버에서 얼만큼 기다려야 하는지 알기 까다롭다.
|
|
|
|
* 공격 동기화 : [몬스터가 플레이어를 공격] 먼저 작업 함
|
|
- 몬스터가 이동하다가 플레이어를 감지하면( 1초 단위로 감지 )
|
|
- 플레이어의 바로 앞( 몬스터 공격 사정거리 - 0.5 )을 목표점으로 이동 패킷 보냄
|
|
- 몬스터 공격 사정거리 - 0.5 이 공식은 float 계산의 오차 때문에 0.0001 정도의 오차로
|
|
더 갈 수도 없고( 너무 가까운 거리라서 이동 해야할 위치와 현재 위치가 같다고 판단 됨 ),
|
|
공격할 수도 없고( 수치상 공격 사정거리보다 멀리 있다 )
|
|
이런 상황에 놓이는 것을 없애기 위해 필요( 0.5 이 상수 값을 적절히 조절할 필요 있음 )
|
|
- 몬스터가 이동하면서 사정 거리 안에 들어왔는가 검사
|
|
- 사정거리에 들어오면 이동을 멈추고 클라이언트에 공격 패킷 보냄
|
|
- 공격 패킷 안에 위치 보정 좌표가 들어 있다.
|
|
- 이동을 멈추고, 이 위치값으로 무조건 셋팅하고, 공격 시킨다.
|
|
- 이 위치값으로 무조건 셋팅하는 게, 동기화가 깨진 상태면 워프 현상 발생
|
|
|
|
* 공격 동기화 : [플레이어가 몬스터를 공격] 작업 함
|
|
- 몬스터를 픽킹해서 그 놈을 타겟으로 잡는다
|
|
- 몬스터와 거리가 사정거리 보다 멀면 몬스터 바로 앞( 플레이어 공격 사정거리 - 0.5 )을 목표점으로 이동
|
|
- 이동하면서 사정 거리 안에 들어왔는가 검사
|
|
- 사정거리에 들어오면 이동을 멈추고 서버에 공격 패킷 보냄
|
|
- 서버도 공격 패킷을 받으면 이동을 멈추고 공격 상태로 셋팅
|
|
- 클라이언트에 계산된 결과 패킷 보냄
|
|
- 서버한테 받은 결과 패킷에 데미지( 몬스터 머리위에 출력 ),
|
|
타겟 HP( 덮어 쓴다, 만약 0이면 죽인다, HP 가 0이면 3초 후에 Leave 패킷 날라온다 )
|
|
- 결과 패킷을 받으면 타겟 몬스터 위치에 피 튀는 이펙트( 임시로 빌보드로 구현 ) 객체 추가
|
|
|
|
|
|
|
|
|
|
|
|
(11) 2005년 1월 13일
|
|
|
|
- 노말멥 몬스터 추가
|
|
- 카메라 회전( 회전 속도 수정 작업 남음, 위 아래 이동 수정 남음 )
|
|
- 로딩씬 분리
|
|
|
|
|
|
|
|
|
|
(10) 2005년 1월 7일
|
|
|
|
- 주의 사항
|
|
|
|
|
|
|
|
|
|
(9) 2005년 1월 5일
|
|
|
|
- 카메라 처리
|
|
- 로그인 씬, 로딩 씬 구성
|
|
|
|
|
|
|
|
|
|
(8) 2004년 12월 30일
|
|
|
|
- 네트워크 패킷 테스트( 멥로딩까지 성공 - 캐릭터 리스트를 받아 선택하면 게임 화면으로 전환 )
|
|
- 다이렉트 인풋( 인터페이스 사용시 입력 못하게 처리해야 함 )
|
|
- "TEST_NET" 이 매크로를 프로젝트 속성창에서 선언해 줬다.
|
|
( 선언해 주면, 네트웍 기능 ON, 선언 안하면 네트웍 기능 오프 )
|
|
|
|
|
|
|
|
|
|
|
|
(7) 2004년 12월 27일
|
|
|
|
- 네트워크 패킷 테스트( 성공 )
|
|
|
|
|
|
|
|
|
|
|
|
(6) 2004년 12월 24일
|
|
|
|
- 캐릭터 액션 처리 클래스
|
|
- 임시 캐릭터 객체 생성
|
|
- 인터페이스 객체 추가
|
|
- 네트워크 객체 추가
|
|
- SunMatrix 객체 삭제
|
|
|
|
|
|
|
|
|
|
|
|
(5) 2004년 12월 17일
|
|
|
|
- SunMatrix 객체 추가
|
|
- 카메라 객체 추가
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* Object Hierarchy
|
|
-------------------
|
|
|
|
|
|
Object
|
|
|
|
|
+---- Character
|
|
| |
|
|
| +---- Player
|
|
| |
|
|
| +---- Monster
|
|
| |
|
|
| +---- NPC
|
|
|
|
|
+---- NonCharacter
|
|
|
|
|
+---- Item
|
|
|
|
|
+---- MapObject
|
|
|
|
|
|
|
|
(4) 2004년 12월 16일
|
|
|
|
- 멥 위에서 캐릭터 이동
|
|
- Objet 계층 구조
|
|
|
|
|
|
|
|
(3) 2004년 12월 15일
|
|
|
|
- 멥 출력
|
|
|
|
|
|
|
|
(2) 2004년 12월 14일
|
|
|
|
- 캐릭터 출력
|
|
|
|
|
|
|
|
(1) 2004년 12월 13일
|
|
|
|
- SUN 엔진을 이용하여 프레임웍 구성
|
|
- Scene 관리
|
|
|