분류 전체보기 77

소울라이크 팀 프로젝트 Desecration : 시작부터 MVP까지 (7)

● 버튼이 100개면 함수를 100개 만들 것인가?1. 이전에도 언급했지만 마음에 들지 않는 코드private: //클래스 선택 버튼1 UFUNCTION() void OnClickSelectClassButton1(); //클래스 선택 버튼2 UFUNCTION() void OnClickSelectClassButton2(); //클래스 선택 버튼3 UFUNCTION() void OnClickSelectClassButton3(); //클래스 선택 void SelectClass(int32 ClassNum); //클래스 버튼1 UPROPERTY(meta = (AllowPrivateAccess = true, BindWidget)) TObjectPtr SelectClassButton1; //클래스 버튼2 U..

소울라이크 팀 프로젝트 Desecration : 시작부터 MVP까지 (6)

● 너의 이름은지금 구현한 클래스 선택 레벨에서 당장 추가할 것을 말하자면 현재 이름 입력 기능이 없다. 기획에 따르면 클래스를 선택하면 이름을 입력한 뒤에 튜토리얼을 시작해야 하지만 지금은 그런거 없이 바로 튜토리얼을 시작한다. 그래서 이름 입력 기능을 구현해야 한다. 1. 코드 구성class DESECRATION_API UT3InputNamePanel : public UUserWidget{ GENERATED_BODY() friend UT3SelectClassWidget;protected: virtual void NativeOnInitialized() override; private: //확인 버튼 UFUNCTION() void OnClickConfirmButton(); //취소 버튼 UFUNCT..

소울라이크 팀 프로젝트 Desecration : 시작부터 MVP까지 (5)

● 블루프린트 생성C++ 클래스를 만들었으니 이를 기반으로 하는 블루프린트를 만들 차례다. 1. 게임 모드타이틀 화면의 게임 모드처럼 얘도 블루프린트에서 딱히 추가로 해줄 것은 없다. 역시 동일하게 월드 세팅에서 이 블루프린트를 현재 레벨의 게임 모드로 지정해준다. 이후 플레이어 컨트롤러 블루프린트를 만들면 여기서 지정해준다. 2. UI플레이어 컨트롤러 블루프린트를 만들기 전에 이 위젯 블루프린트를 먼저 만든다. 가로 박스(HorizontalBox)에 3개의 버튼을 넣음으로 클래스 선택 버튼을 만들었다. 그 외 나머지 선택 버튼과 돌아가기 버튼은 기획서대로 밑에 배치한다. 각 버튼 위젯은 C++코드에서 선언한 변수명과 동일한 이름으로 명명하여 잘 연결됐는지 확인한다. 3. 플레이어 컨트롤러플레이어 컨트롤..

소울라이크 팀 프로젝트 Desecration : 시작부터 MVP까지 (4)

● 클래스 선택 레벨타이틀 화면 레벨은 이정도로 하고 클래스 선택 레벨에서 기능을 구현할 차례다. 레벨 자체는 타이틀 화면의 기능 구현을 위해 이미 생성해뒀지만 구현한 것은 아무것도 없으니 그냥 빈 깡통 수준이다. 플레이어 클래스를 선택하는 기능이라서 들어가는 기능은 다르겠지만 여기도도 UI 외에는 출력할 것이 없기 때문에 대략적인 C++ 클래스 구조는 타이틀 레벨과 다르지 않다. 게임 인스턴스는 이미 만든 상태라서 이를 제외한 나머지를 만들면 된다. ● 게임 모드UCLASS()class DESECRATION_API AT3SelectClassGameMode : public AGameModeBase{ GENERATED_BODY() protected: virtual void BeginPlay() overri..

소울라이크 팀 프로젝트 Desecration : 시작부터 MVP까지 (3)

● 지금 타이틀 레벨에서 추가로 구현할 수 있는 것1. 새 게임을 누르면 다음 레벨로 이동하기코드로는 미리 UGameplayStatics의 OpenLevel함수를 사용했지만 정작 그 대상인 클래스 선택 레벨은 없는 상태다. 그래서 그 상태에서는 눌러도 아무 일도 생기지 않는다. 그래서 클래스 선택 레벨을 만들었다. 이 상태에서 작동해보니 아무것도 없는 빈 레벨인 클래스 선택 레벨이 잘 열리는 것을 확인했다. 2. 설정 패널을 누르면 타이틀 버튼을 잠시 숨기기지금은 만들었던 블루프린트 편집화면대로, 설정 화면을 열면 타이틀 화면 위에 그대로 설정 패널이 출력된다. 패널이 열린 상태지만 뒤에 덮힌 버튼들은 여전히 누를 수 있는 상태다. 어제 잠깐 언급된 내용 중 패널이 열린 동안 버튼이 잠시 사라진다고 했지..

소울라이크 팀 프로젝트 Desecration : 시작부터 MVP까지 (2)

● 레벨 생성클래스를 만들었다면 그 클래스를 적용할 곳이 필요하다. 바로 레벨(맵)이다. 이 레벨은 타이틀 화면을 보여주는 곳이라서 이 게임의 얼굴을 담당한다고 볼 수 있다. 그래서 여기에서의 기능은 게임 진행하는것 만틈이나 중요하다.타이틀 화면을 제일 먼저 보여줄거면 프로젝트 세팅에서 게임 기본 맵으로 지정하는 것을 잊지 말자 ● 블루프린트 생성옛날이면 모든 기능을 코드로 구현해야 했지만 요즘은 블루프린트로 충분히 구현할 수 있다. 하지만 모든 것을 블루프린트로 만드는 것은 코딩이라고 할 수 없다. 나같은 경우, 핵심 기능은 코드로 구현하고 변수 값 할당, 간단한 키 입력 등은 블루프린트에서 해결하는 하이브리드 방식을 지향한다. 그리고 블루프린트로 구현하는 것을 선호하는 팀원과의 협업을 하려면 블루프린..

소울라이크 팀 프로젝트 Desecration : 시작부터 MVP까지 (1)

● MVP란 무엇인가스포츠에서 말하는 Most Valuable Player도 아니다. 백화점 같은 곳에서 중요 고객을 칭하는 VIP의 일종 같은것도 아니다. 당연히 메이플스토리의 MVP 시스템도 아니다. 여기서 말하는 MVP는 Minimum Viable Product의 약자로, '최소한의 기능만을 갖춘 상품'이라는 의미다. 어떻게 생각해보면 프로토타입과 비슷하다고 볼 수 있다. 게임이라고 불릴 수 있도록 핵심적인 기능만 구현해둔 상태를 말할 수 있다.이 MVP라는 것은 완성을 위한 초석이라고 할 수 있는데, 만드려고 하는 게임을 MVP를 거치지 않고 한꺼번에 모든 것을 구현하려고 하면 막대한 분량, 막연한 방향에 의해 진행이 막혀버리고 말 것이다. 하지만 MVP를 먼저 완성하면 이후 추가적인 기능은 MV..

소울라이크 팀 프로젝트 Desecration : 설계 (3)

● UI 기획 시작앞서 약속한 내용대로 UI 기획을 했다. 여기 부터 UI 나 혼자서 기획하고 남은 내용은 팀장, 부팀장이 기획한다. 다만 나 혼자 완전 독단적으로 만들지는 않고 다른 사람의 의견을 수렴하면서 기획할 것이고 1차로 다 만든 다음에는 팀장의 컨펌을 받을 것이다. ● 기획할 내용처음부터 완성본을 만들 수는 없다. 괜히 뱁새가 황제 따라가다가 다리 찢어진다는 말이 나온게 아니다. MVP(Minimum Viable Produc)를 먼저 만들고 이를 기반으로 완성 하는 것이 올바른 방법이다. 이 MVP에 사용할 컨텐츠에 대한 UI를 기획하는 것이 나의 목표다.앞서 간단히 기획했던 내용을 확인해보니 타이틀화면(+ 옵션), 클래스 선택, 기본 UI, 튜토리얼, 인벤토리를 기획하면 되겠다. ● UI 기..

소울라이크 팀 프로젝트 Desecration : 설계 (2)

● 기획 담당자로 지원하다모든 팀에게 1명의 기획 담당자를 지명하라는 지시를 받았다. 내가 있는 팀도 마찬가지다. 그래서 팀장인 분이 기획자로 지원할 사람을 구하고 있었다. 이에 내가 지원했다. 비록 기획에 대해선 잘 알지 못하지만 일을 하면서 기획자와 소통을 많이 해보고 기획자가 만든 기획서를 많이 보고 그 기획에 따라 프로그래밍을 해본 적이 많아 내가 해도 되지 않을가 하는 마음이었다. 그리고 가능한 다양한 경험을 쌓고 싶었기 때문이기도 하다. 다만 나 혼자서 나 포험 10명이 만들 내용을 다 만드는 것은 아니고 팀장과 부팀장과 함께 총 3명이서 기획하기로 했다. 애초에 기획자로 지명된 사람 뿐만이 아니라 팀장과 부팀장도 같이 기획 특강 시간을 가졌는데 3명이서 기획을 하라는 교육기관의 의도로 보인다..

소울라이크 팀 프로젝트 Desecration : 설계 (1)

최종 팀 프로젝트 제작 단계가 시작됐다. 이 프로젝트는 대형 프로젝트로 내가 지금까지 배운 모든 지식을 쏟아부어 완성을 해야 한다. 마지막 프로젝트를 함께 만들 팀을 찾다가 총원 10명인 조에 합류하여 프로젝트를 시작했다. ● 역할 나누기총 10명이라서 각자 파트를 어떻게 나눌지가 관건이었다. 이전에 팀 프로젝트를 할 때는 팀원 별로 어떤 역할을 맡을지 정하는 데에 항상 어려움이 뒤따랐는데 다행이도 이번 팀장은 역할 분배를 잘 해줬다. 초기 역할 분배안이다. 이후에 좀 내용이 변경되고 컨텐츠가 추가되긴 했지만 제법 깔끔하게 나누고 정리하는 모습이 좋았다. Miro라는 사이트를 이때 처음 알았는데 팀장이 이 사이트를 이용하는 것이 인상깊었다. 그 중에서 내가 처음에 맡기로 한 것은 게임 시스템이었다. 초안..