본문 바로가기
728x90

[Unreal4]/간단지뢰찾기 게임 만들기8

[UE4 지뢰찾기] 클리어 시간 저장하고 불러오기 클리어하는 경우 시간 정보를 저장하고 불러와 화면에 노출하는 UI를 만들어본다. 먼저 SaveGame 클래스를 상속받아 FindMineSaveGame 클래스를 만든다. 이 클래스에는 저장할 정보들을 변수로 입력한다. HighSpeedClearTime 은 가장 빠른 클리어 시간을 저장하며 ClearTimes는 역대 클리어한 시간을 모두 저장한다. FindMineGameGameModeBase를 생성할 때 세이브파일이 있는지 체크하고 없는 경우 새로 만들어준다. 그 다음 최고 속도 클리어 타임과 역대 클리어 시간들을 저장한다. 게임을 실행하고 게임모드 베이스의 디테일 창을 보면 정상적으로 저장된 값을 볼 수 있다. 최고점을 체크하는 함수인 CheckFastestRecordUpdate() 함수에서 기록을 갱신했.. [Unreal4]/간단지뢰찾기 게임 만들기 2022. 12. 17.
[UE4 지뢰찾기] 재시작 UI 추가 타일만 있는 화면에 UI를 추가하기로 하였음. 굉장히 개발자스럽지만....난 그래픽 디자이너가 아닌걸... 우선 노란 배경이 되는 이미지 하나를 추가하였음 가운데 부분을 투명하게 처리하여 타일맵이 노출될 공간을 추가 위젯 블루프린트를 추가하여 바탕에 해당 이미지를 배치한다. 각종 팔레트를 이용하여 원하는 문구와 버튼을 배치하였음 그리고 현재 시간, 최고 시간, 다시하기 횟수는 유저 액션에 의해 변경되어야하기 때문에 변수인지 체크하여 그래프에서 사용할 수 있도록 하였음 그래프로가서 먼저 생성될 때 게임모드에서 최고 빠른 시간 정보를 가져와 세팅함 Tick에서는 현재 시간과 다시하기 횟수를 설정해줌 다시하기 버튼을 누르는 경우 게임을 재시작하는 로직을 추가함. 재시작 후 다시하기 횟수를 증가시켜줌 [Unreal4]/간단지뢰찾기 게임 만들기 2022. 12. 15.
[UE4 지뢰찾기] 키 입력 처리하기 키 입력을 처리하기 위한 Character를 만들었음. 사실 Pawn으로 만들어서 PlayerController를 붙여도 되긴하는데 Character에 이미 있는 Controller를 사용하기로 함 InputManageCharacter라는 이름으로 만든 이 액터는 플레이어의 입력만을 처리한다. void MouseLeftClick(), void MouseRightClick()만 추가하였음 플레이어의 인풋 정보를 셋업할 void AInputManageCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) 함수에다 입력 처리를 할 함수를 바인딩 해준다. MouseLeftClick은 마우스 왼쪽 클릭으로 지뢰찾기의 타일을 클릭하여 .. [Unreal4]/간단지뢰찾기 게임 만들기 2022. 12. 12.
[UE4 지뢰찾기] 타일의 머테리얼 세팅하기 타일은 스태틱 메시 전체를 변경하는 것이 아닌 머티리얼만 변경하는 것으로 설정하였음. 따라서 머티리얼을 어딘가에서 가지고 있어야하는데 GameManager 역할을 하는 ABoard가 들고 있도록 하였음. 이미지라고 주석을 달아놓았지만 사실 머티리얼임 주변에 지뢰가 없는 기본 타일 색상은 NumberTileMaterials의 0번째 인자로 넣음. 1부터는 숫자를 지정함 게임 리소스는 이렇게 직접 제작함. 그림판에서 규격 맞춰서 그냥 그린게 다임 사실 9는 필요 없는 이미지인데도 넣어보았음 ( 주변 지뢰 갯수는 8이 최대치 ) 콘텐츠 브라우저를 우클릭하여 에셋 임포트 기능을 사용함. png 파일을 임포트하면 하단에 빨간색으로 칠해져있는 Texture가 만들어짐. 이 텍스처를 우클릭하면 가장 상단에 머티리얼 .. [Unreal4]/간단지뢰찾기 게임 만들기 2022. 11. 30.
[UE4 지뢰찾기] 지뢰 매설하기 간단하게 지뢰를 매설하고 근처 지뢰 갯수를 세팅하는 함수를 만든다. void ABoard::CreateBoard(int32 row, int32 column, int32 mineCount) { int32 nInitMineCount = 0; FVector OriginLocation = GetActorLocation(); float x, y; this->Row = row; this->Column = column; this->TotalMineCount = mineCount; for (int i = 0; i < row; i++) { TArray RowArray; y = OriginLocation.Z - i * 100; for (int j = 0; j < column; j++) { ATile* tile = (ATi.. [Unreal4]/간단지뢰찾기 게임 만들기 2022. 11. 30.
[UE4 지뢰찾기] 타일을 관리하는 Board(판) 만들기 타일을 관리하는 Board 클래스를 생성한다. 게임이 시작되면 GameMode에 의해 Board는 타일맵을 생성한다. UCLASS() class FINDMINE_API ABoard : public AActor { GENERATED_BODY() public: ABoard(); protected: virtual void BeginPlay() override; float GamePlayTime = 0;// 이번 게임 플레이 시간 int32 Row = 0;// 행, x에 해당 int32 Column = 0;// 열, y에 해당 int32 UserSetFlagCount = 0;// 유저가 세운 깃발 수 int32 MineSetFlagCount = 0; // 실제 지뢰 위에 깃발 수 TArray TileMap; A.. [Unreal4]/간단지뢰찾기 게임 만들기 2022. 11. 16.
[UE4 지뢰찾기] 맵으로 사용될 타일 만들기 맵에 사용될 타일을 생성한다. 유저가 행동할 수 있는 상황에 맞춰 7가지 상태가 존재할 수 있다. 타일은 항상 7가지 상태 중 하나를 취한다. TS_Mine 상태가 하나라도 열리게 된다면 게임은 종료된 상태이다. TS_NotOpenFlagNotMine은 직전 상태를 체크하기 위한 상태이다. 유저가 꽂은 깃발이 진짜 지뢰 위에 있는 것인지 아닌지를 판별하고 갯수를 체크해야하는데 깃발을 다시 일반 타일로 되돌릴 때 수량 체크를 위해 사용한다. Tile.h, Tile.c 에는 위 ETileState 정보를 하나 가지며 여러가지 현재 상태에 대한 정보를 갖고 있게 된다. Tile이 사용하는 스태틱 메쉬는 기본으로 제공되는 Box이며 머테리얼만 변경할 예정이다. 해당 타일이 지뢰를 가진 타일인지 Get, Set하.. [Unreal4]/간단지뢰찾기 게임 만들기 2022. 11. 9.
[UE4 지뢰찾기] 간단한 지뢰찾기 게임 만들기 9x9 지뢰찾기 게임을 만든다. 총 81개의 타일 중 지뢰의 갯수는 30개 정도로 진행할 예정이며 이 숫자는 난이도에 따라 조정될 수 있다. 충분한 시간이 주어지는 일반 지뢰찾기와 달리 최대한 빨리 클리어하여 시간을 겨루는 것이 목적인 게임이다. 9x9 타일 배경 맵은 Unreal Match 3에서 가져왔다. 카메라는 Orthographic으로 설정하고 폭을 조절한다. 고정형 카메라이기 때문에 입력에 의한 이동처리를 받지 않는다. 게임모드에서 카메라를 찾아 플레이어 컨트롤러에 연결한다. 플레이어 컨트롤러 내부에서 찾는게 맞는 것 같기는한데 우선은 게임모드에서 세팅한다. 시작하면 이런 아무것도 없는 화면이 나온다. [Unreal4]/간단지뢰찾기 게임 만들기 2022. 10. 17.
728x90