분류 전체보기 930

인게임 구현 - 최종) 플레이어 턴 텍스트 수정 + 승리 애니메이션

- 개요플레이어의 턴에 따라 턴을 알려주는 텍스트를 수정하고 플레이어가 승리하면 승리 방식에 따라 애니메이션을 재생한다 - 클라이언트 사이드1) UI_WinLine 클래스 승리 방식에 따른 선을 그리기 위한 정보를 지니고 있는 LineConfig 클래스를 추가한다승리 방식마다 4개의 프로퍼티를 각각 설정하여 원하는 방식의 애니메이션을 연출할 수 있다멤버변수의 구성은 다음과 같다X 프로퍼티 : 선의 X 값Y 프로퍼티 : 선의 Y 값Height 프로퍼티 : 선의 높이값ZRotation 프로퍼티 : 선의 회전값 UI_WinLine 클래스의 멤버변수는 위와 같다_xColor 멤버변수 : X 유저의 승리시에 적용할 색깔_yColor 멤버변수 : Y 유저의 승리시에 적용할 색깔Image 멤버변수 : 애니메이션에서..

게임 맵 - 3) 몬스터 스포너와 맵 재시작 구현

- 개요특정 지점에 도달하면 몬스터를 스폰하는 시스템을 추가하고또 플레이어가 쓰러지면 해당 맵에서 재시작하는 기능을 추가한다 - C++ 사이드1) MVVM_LoadSlot 클래스 현재 맵의 애셋 이름을 지정하는 MapAssetName 멤버변수를 추가한다 2) MVVM_LoadScreen 클래스 NewSlotButtonPressed 함수를 위와 같이 수정하여 게임 데이터를 저장하는 데이터 슬롯의 MapAssetName을 설정한다 3) AuraEnemySpawnPoint 클래스 스포너에서 소환하는 몬스터의 위치를 지정하기 위한 AuraEnemySpawnPoint 클래스를 생성한다멤버변수의 구성은 다음과 같다EnemyClass 멤버변수 : 소환하는 몬스터의 클래스EnemyLevel 멤버변수 : 소환하는 몬스터..

게임 맵 - 2) 던전 구조물과 입구 추가

- 개요던전에 새로운 구조물들을 추가하고 또 다른 지역으로 입장할 수 있는 던전 입구를 추가한다 - C++ 사이드1) LoadScreenSaveGame 클래스 맵 애셋의 이름을 지정하는 MapAssetName 멤버변수를 추가한다 2) AuraGameModeBase 클래스 기존의 함수를 위와 같이 수정하고 새로운 함수를 추가한다 SaveWorldState 함수를 위와 같이 수정하여 인자로 받은 값이 빈 값이라면,SaveGame 인스턴스의 MapAssetName과 MapName을 임의로 설정한다 GetMapNameFromMapAssetName 함수의 로직은 위와 같다Maps 멤버변수를 순회하면서 인자로 받은 이름과 동일한 맵 애셋의 맵 이름을 반환한다 3) HighlightInterface 클래스 Set..

게임 맵 - 1) 커서 동작 수정

- 개요프로젝트에서 마우스 커서가 동작하는 방식을 개선한다 - C++ 사이드1) Aura 클래스 마우스 커서로 가리키는 대상에게 적용할 하이라이트 효과의 수치를 위와 같이 추가한다 2) HighlightInterface 클래스 BlueprintType 어트리뷰트를 추가하여 HighlightInterface를 블루프린트에서 변수로 사용할 수 있도록 설정한다 3) Checkpoint 클래스 CheckpointMesh 멤버변수에 BlueprintReadOnly 어트리뷰트를 추가하여 읽기 전용으로 설정한다 4) AuraPlayerController 클래스 마우스 커서의 타겟팅 상태를 의미하는 TargetingStatus 열거형을 추가한다멤버들은 다음과 같다TargetingEnemy : 적을 타겟팅하고 있는 상태..

체크 포인트 - 최종) 월드 저장하고 불러오기

- 개요월드에 배치된 체크 포인트 중에서 활성화된 체크 포인트도 게임 데이터에 저장하여저장된 데이터를 로드하여 게임을 시작하면 활성화된 체크 포인트를 동작시키도록 설계한다 - C++ 사이드1) LoadScreenSaveGame 클래스 SavedActor 구조체를 새롭게 생성한다해당 구조체를 사용하여 활성화된 체크 포인트와 같은 특정 Actor를 데이터에 저장한다멤버변수의 구성은 다음과 같다ActorName 멤버변수 : 해당 Actor의 이름Transform 멤버변수 : 해당 Actor의 TransformBytes 멤버변수 : 해당 Actor의 정보를 uint8로 직렬화하여 저장하기 위한 TArray SavedMap 구조체를 새롭게 생성한다해당 구조체를 사용하여 하나의 맵에 존재하는 특정 Actor들을..

인게임 구현 - 5) 서버와 클라이언트의 마커 결과 핸들링

- 개요보드판에 놓아진 마커의 결과를 서버와 클라이언트에서 각각 핸들링하여 처리하도록 설계한다 - 서버 사이드1) Game 클래스 SwitchCurrentPlayer 함수를 추가하여 현재 플레이어를 상대 플레이어로 설정할 수 있도록 한다 AddWin 함수를 추가하여 승리한 플레이어의 타입에 맞춰 플레이어의 승수를 증가시킨다 2) UsersManager 클래스 IncreaseScore 함수를 추가하여 인자로 받은 플레이어의 아이디에 해당하는 플레이어의 점수를 증가시킨다 3) MarkCellRequestHandler 클래스 클라이언트로부터 전달받은 MarkCellRequest 패킷을 핸들링하는 핸들러 클래스에 대한 Logger를 추가하고생성자에서 추가한 Logger를 설정한다 Handle 함수를 위와 같..

Scene의 구조 (3) - 로컬 공간과 로컬 축

- 개요물체를 표현하기 위해 만들어진 메시 데이터는 자신만의 공간에서 물체를 구성하는 각 정점의 위치 정보를 저장한다이헐게 물체의 정보를 저장하기 위해 부여한 공간을 로컬 공간이라고 표현한다그런데 게임 콘텐츠는 다양한 종류의 물체가 모여 배경을 이루므로 여러 물체를 담을 별도의 공간이 필요하다여러 물체를 모아 게임 콘텐츠를 만드는데 사용하는 새로운 공간을 월드 공간이라고 표현한다 따라서 게임 콘텐츠에서는 게임 오브젝트마다 월드 공간과 로컬 공간이라는 2개의 공간 개념이 존재한다그러므로 주어진 2개의 공간 정보를 적절하게 활용해야 한다위와 같은 상황에서 기본적으로 월드 공간을 중심으로 설정된 플레이어의 위치 좌표가 필요하다그러나 플레이어의 방향을 조종하려면 월드 공간과 무관한 플레이어의 로컬 좌표도 필요..

유니티 엔진의 구성 - 10) RenderTexture

- 개요Render Texture는 카메라의 출력을 화면이 아닌 전달받은 텍스처 에셋에 직접 그리는 기능을 의미한다 - Render Texture에 대하여1) 생성방법 프로젝트 창에서 우클릭 -> Rendering -> Render Texture를 선택하여 Render Texture 애셋을 생성할 수 있다 2) Render Texture 설정 Render Texture 애셋에 대한 설정은 위와 같다간단하게 다음과 같이 동작한다Size 설정 : 텍스처의 해상도를 의미, 높을수록 품질이 좋으나 성능 비용 발생함, 렌더링 성능에 직접적인 영향을 줌Anti-aliasing 설정 : 계단 현상 방지 여부를 설정, 성능에 영향을 줌 Depth Buffer 설정 : 깊이 정보 포함 여부를 설정 3) 카메라 연결 방법..

인게임 구현 - 4) 보드판에 놓여진 마커 검증 + 승패 판단

- 개요플레이어가 보드판에 놓은 마커의 결과를 판단하고 결과에 따라 승패를 결정하는 로직을 추가한다 - 서버 사이드1) BasicExtensions 클래스 확장 메서드를 소유하고 있는 BasicExtensions 클래스를 생성한다GetRowCol 함수의 로직을 위와 같이 구성하여 인자로 받은 인덱스에 해당하는 행과 열의 값을 반환한다 2) UsersManager 클래스 GetConnection 함수의 오버로드 버전을 추가한다인자로 사용자의 아이디를 받아 일치하는 사용자의 ServerConnection을 반환한다 3) Game 클래스 동일한 namespace에 MarkResult 구조체를 새롭게 생성한다구성은 다음과 같다Outcome 멤버변수 : 놓여진 마커로 인해 발생한 3가지 결과WinLineType ..

유니티 엔진의 구성 - 9) 그리드

- 개요 유니티 엔진의 Scene 뷰에서 사용할 수 있는 Grid의 기능을 알아본다 - Grid의 기능1) Grid Visibility Scene 뷰의 좌측 상단의 그리드 아이콘으로 Grid Visibility를 활성화 / 비활성화할 수 있다활성화되면 Scene에서의 그리드를 표시하거나, 표시하지 않도록 설정할 수 있다 2) Grid Visual 관련 설정 Scene에서 보여지는 Grid 관련 설정은 그리드 아이콘 옆의 화살표를 눌러 드롭다운 메뉴에서 설정할 수 있다설정할 수 있는 값들은 다음과 같다Grid Plane 설정값 : X, Y, Z축 중 그리드가 그려질 평면 선택2D 게임은 주로 X나 Z 사용 Move to Handle / Origin 설정값 : 그리드를 현재 선택한 오브젝트 높이(Handle..