Files
2022-10-26 12:25:11 +08:00

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 관리