메모리 게임

Windows
MacOS
Linux

CardGame_Board.png

Memory Game 샘플은 간단한 PC/모바일 로직 게임 예제입니다. 별도의 코드 지원 없이 블루프린트 로만 만들어졌습니다.

게임 로직

BP_LogicMem 블루프린트GameMode 클래스에서 파생되었습니다. 바로 Default Pawn, HUDClass, PlayerController, Spectator, GameReplicationInfo 클래스가 설정되는 블루프린트 입니다.

BP_LogicMem 블루프린트 에는 그래프 가 둘 있습니다. EventGraph 에는 게임의 초기 셋업, 게임플레이에 필수인 로직 테스트, 메뉴 버튼으로 돌아가거나 Hint 버튼으로 모든 카드를 표시하는 등의 부가 함수성이 들어 있습니다. FinishGame 은 플레이어의 승패, 플레이어가 얻은 별 수, 필수적인 게임끝 정리 등을 처리합니다.

BP_Counter블루프린트 인터페이스 를 사용해서 BP_LogicMem 에 의해 호출되는데, 표시된 이동 횟수 변경, 남은 이동 횟수 3 회 이하일 때 이동 횟수 글씨 색 변경 등의 작업을 해 줍니다.

카드 처리

BP_DeckMem, BP_CardMem 블루프린트 는 게임에서 카드의 정의 방식과 레이아웃을 관리합니다. BP_DeckMem 의 인스턴스 하나가 게임 레벨에 놓이면, BP_CardMem 스폰을 처리합니다.

BP_DeckMem 에는 카드 덱 생성 및 셔플, 카드 스폰 및 보드상에 배치, Hint 버튼을 눌렀을 때 모든 카드 표시 등의 로직이 들어있습니다. 덱 셔플 부분에 대한 망은 Shuffle 함수에 저장되어 있으며, 이 함수는 새 게임 준비 도중 메인 이벤트 그래프 에서 호출됩니다. 덱 셔플 이후, BP_DeckMem 에서는 카드의 총 갯수에 따라 배치를 달리하여 카드를 스폰합니다. 보드상의 모든 위치에는 인덱스가 있습니다: CardDeckObjects 배열에는 해당 인덱스에서의 BP_CardMem 블루프린트 가 들어있는 반면, CardDeckShuffled 배열은 해당 인덱스에서의 카드 유형에 대한 정보가 들어 있습니다. BP_DeckMemRotate 이벤트는 Hint 버튼이 눌렸을 때 모든 카드를 뒤집습니다.

BP_CardMem 는 각 카드의 그림 정의, 카드 배치와 뒤집기와 제거할 때의 애니메이션 정의, 카드 비교시 사용되는 파티클 이펙트 와 사운드를 설정합니다.

CardGame_ParticleEffects_Right.png

클릭 입력

BP_PlayerControllerMem 블루프린트 는 마우스 인터페이스를 활성화시킵니다. 클릭 이벤트는 활성화시키는 반면, 마우스오버 이벤트는 활성화시키지 않습니다. 클릭 이벤트가 들어있는 블루프린트BP_MenuMem, BP_CardMem, BP_Scoreboard 입니다. 이 Assign OnClicked 노드 는 모두 ReceivedBeginPlay 이벤트를 통해 실행되는데, 이 이벤트는 플레이어가 게임을 시작할 때 한 번 발동되는 것입니다.

Assign OnClicked 노드 는 OnClicked 델리게이트에 묶인 이벤트를 생성합니다. 델리게이트란 상태를 보고하고 그 상태 변화에 따라 이벤트를 발동시키기 위해 블루프린트 컴포넌트에서 사용하는 방식입니다. 예를 들어 게임에서 Hint Button 이 클릭되면, 클릭이 되었다고 보고를 하고, Hint Button 의 OnClicked 델리게이트가 발동되어 배치된 카드 전부를 뒤집게 만드는 노드 시퀀스를 실행합니다.

BlockClick 변수는 뒤집혀 있거나 그 과정에 있는 카드를 클릭하지 못하도록 합니다.

고정 카메라

BP_LogicMem 블루프린트SpectatorPawn 을 디폴트 Pawn Class 로 정의합니다. Memory Game 에 대한 레벨 블루프린트 는 PlayerStart 위치에 SpectatorPawn 를 배치하며, SpectatorPawn 의 프로퍼티를 통해 게임플레이 내내 카메라를 그자리에 고정시킵니다.

메뉴

Memory Game 시작 메뉴는 BP_MenuMem 블루프린트 에 간단한 StaticMeshComponents 를 사용하여 구성되어 있습니다. 문자와 숫자에는 TextRenderComponents 가 사용되며, 게임 창 밖으로 메뉴를 이동시키는 데는 Timeline 이 사용되었습니다.
메뉴를 사용해서 사용할 카드 갯수, 쌍이 갖춰지면 게임을 끝내게 될 검정 카드 쌍을 사용할지 여부에 대한 변수를 설정합니다. 이러한 변수는 BP_LogicMem, BP_DeckMem 블루프린트 에, BPI_Communication 블루프린트 인터페이스 를 통해 전송됩니다.

CardGameMenu.png

BP_Scoreboard 블루프린트StaticMeshComponentsTextRenderComponents 를 조합시켜 게임 종료시 나타나는 요약 메뉴를 만듭니다.

CardGameEndMenu.png

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback