거창하지만 대략적인 기능이 완성 되었다는 것입니다.

 

애니메이션에서 꼬여서 아예 다시 만들자는 발칙한 생각을 한지 몇주가 지났습니다.

 

또다른 개발에서 애니메이션은 잘 완성하고 그동안 못한 지금의 프로젝트를 시작한게 4일 전입니다.

 

4일간 데디케이트 서버와 리슨 서버 구축을 공부하였습니다.

 

데디케이트 서버 구축 방법을 대략 알아봤는데 시간이 걸릴 것 같아 잠시 고민했습니다.

 

근데 어느 친절한 러시아 개발자가 약간의 코드만 다를 뿐 기본 골자는 차이가 크게 없다고 하여 흔쾌히 리슨 서버부터 먼저 구축을 시작했습니다.

 

Find, Join 쪽이 문제인지 실행하면 방을 못찾고 바로 Host로 가는 것 같습니다.

 

혹은 둘이 연결 되었는데 이를 인지 못했거나...

 

암튼 좀 더 다듬어야 하지만 기본적인 부분은 완성되어 나름 기쁘네요.

 

이번주 내로 완성을 하고 캐릭터 애니메이션을 다시 구현해볼까 합니다.

 

또 다른 프로젝트는 조준경 화면 전환을 구현해볼 생각입니다.

'개발일지' 카테고리의 다른 글

20.05.02 비개발일지  (0) 2020.05.02
20.04.25 비개발일지  (0) 2020.04.25
게임 제작 근황  (0) 2019.06.17
Animation Replicate 삽질 일기  (0) 2019.05.19
5월 1일 공격 판정 적용  (0) 2019.05.02

작업한 것이 완료되지 않았지만 나름 큰 분기점인 것 같아서 일지를 간만에 적어봅니다.

 

안 적은지 한달 넘었나...

 

상당히 오랜 시간 리팩토링을 하고 있었습니다.

 

주 목적은 character와 animinstance의 기능들을 정리하여 최대한 깔끔하게 돌아가게 하고, 리소스들을 에디터에서 지정해 코드 안에 경로들을 삭제하는 것이었습니다.

 

근데 delegate에서 runtime error가 발생하여 지난 주말 50시간을 투자하여 고쳐보려 했으나 고치지 못했습니다.

 

일주일동안 커뮤니티 이곳저곳에 질문을 올려보고 답을 못찾으면 기존의 리팩토링들 기능들을 한꺼번에 처리하기 위해 프로젝트를 다시 만들것 같습니다.

 

새로 만드는 프로젝트는 다음과 같은 목표들을 우선으로 하려 합니다.

 

1. 리소스 경로 정리

2. 코드와 리소스의 분리

3. 멀티플레이 기능 우선 구현 후 액터들의 기능의 RPC 기본 제공

 

예전에 글을 적었지만 지금 언리얼 프로젝트를 2개를 하고 있습니다. 

 

그 중 하나는 기능 구현을 어느정도 해놓으면 1~ 2주 쉬면서 못했던 또다른 프로젝트에 좀 더 투자를 할 예정입니다.

 

7월 내로 정리가 되어 일지를 다시 쓸 수 있도록 해보겠습니다.

'개발일지' 카테고리의 다른 글

20.04.25 비개발일지  (0) 2020.04.25
0701 리슨서버 골자 구축  (0) 2019.07.01
Animation Replicate 삽질 일기  (0) 2019.05.19
5월 1일 공격 판정 적용  (0) 2019.05.02
Paragon Animation List  (0) 2019.04.01

평소에 하던 프로젝트 내용은 아닙니다.

 

아는 선배가 같이 게임 개발 공부 해보지 않겠냐고 하셔서 또다른 언리얼 프로젝트를 개발하고 있습니다.

 

기능 구현을 주 목표로 하고 있는데 1년 넘게 삽질 하면서 듣도 보지도 못한 것을 근 3주만에 배웠습니다.

 

개인적으로 서버, 통신 쪽은 잼병이라 혼자 개발 할 때도 멀티플레이는 항상 나중으로 미뤘었는데 이 부분을 먼저 처리해주셔서 replicate를 제대로 고려해야 하는 상황을 직면했습니다.

 

해야한 일은 멀티 플레이에서 모든 모션이 동기화 되고, 기존의 FPS 템플릿에는 없는 전신 스켈레톤을 붙여야 했습니다.

 

스켈레톤을 붙이는 것 까지는 어떻게 됐는데 애니메이션 리플리케이션에서 일주일 넘게 막혔습니다.

 

덕분에 한 3일동안 먹는 족족 얹히기도 했고요.

 

문제는 당연히 "동기화가 되지 않는다." 입니다.

 

원인을 좀 꼽아보자면

 

1. RPC에 대한 이해 부족.

 

RPC를 안다고 생각했는데 이게 무엇인지만 알고 사용법은 몰랐던것 같습니다.

 

RPC 함수 호출을 어떻게 해야 하고 어떤 함수를 써야 하는지 아는데 이틀이 걸렸습니다.

 

2. 애니메이션에 대한 서툴름

 

애니메이션을 한번 만져봐서 자신 있었는데 안 만진 부분에서 4일 정도 시간을 먹었습니다.

 

특히 Montage Replicate를 하려고 하루에 12시간 넘게 인터넷 예시 코드를 따라 했었는데

 

결국 코드 문제는 아니었다고 합니다.

 

문제 해결하고 바로 글 쓰느라 뭔가 이상하네요.

 

저랑 비슷한 문제를 직면할 사람들을 위해 팁 형식으로 간단하게 정리하겠습니다.

 

1. RPC는 클라이언트가 UFUNCTION(Server, Reliable, WithValidation) 함수 A를 호출하면, A 함수가 서버에서 UFUNCTION(NetMulticast, Reliable) B 함수를 호출한다. 그럼 각 서버와 클라이언트에서 B 함수가 원하는 동작을 시행한다.

 

2. 선언 할 때는 A, B라 선언하지만 정의 할 때는 A_Implementation, B_Implementation라 정의해야 한다. 언리얼 코드 제너레이터가 뒤에 Implementation가 붙은 함수를 호출한다.

 

3. 추가로 bool A_Validate 함수가 필요하다. 아직까지 정확한 목적은 모르나 보통 return true만 넣어두면 정상 작동한다.

 

4. 모든 동작마다 replicate를 따로 해줘야 한다.

 

5. 발사와 같이 특정 방향 캐릭터 기준의 변수가 필요한 경우에는 UFUNCTION(Server, Reliable, WithValidation) 함수에 파라미터로 넘겨줘야 한다. 

 

6. 몽타주 실행을 위한 AnimInstance는 5번을 생각해서 파라미터로 넘겨주면 문제가 생길 수 있다. AnimInstance는 Transient하다. UFUNCTION(NetMulticast, Reliable) 내부에서 생성하자.

 

7. 몽타주의 전체 재생 시간보다 blend 시간을 압도적으로 짧게 잡아야 한다. 그렇지 않으면 blend 하는 사이에 애니메이션이 끝나 결과적으로 애니메이션이 재생되지 않는 것처럼 보인다.

 

거의 하루에 1개씩 깨달음을 얻은 수준이네...

 

암튼 이 글이 누군가에게는 도움이 되어 저처럼 오랜시간 삽질하지 않기를 빕니다.

'개발일지' 카테고리의 다른 글

0701 리슨서버 골자 구축  (0) 2019.07.01
게임 제작 근황  (0) 2019.06.17
5월 1일 공격 판정 적용  (0) 2019.05.02
Paragon Animation List  (0) 2019.04.01
3월 29일 복-귀 및 콤보 어택 수정  (0) 2019.03.29

까먹은거 아닙니다. 유의미한 결과가 없어서 글을 쓰지 않았습니다.

 

그리고 오늘 유의미한 구현을 하여 글을 작성합니다.

 

캐릭터의 행동을 여러가지 적용하다가 게임 그 자체에는 크게 필요하지 않은 것들이 많아서 다 삭제했습니다.

 

지금은 점프 앉기 공격 뛰기와 이들의 혼합체만 구현되어 있습니다.

 

이게 한 4월 8일 언저리였습니다.

 

근데 만들고 나니까 일반 공격의 1타는 타격 판정이 나는데. 일반 공격 2타 3타와 점프 공격, 대쉬 공격, 대쉬 중 점프 공격은 타격 판정이 나지 않았습니다.

 

이 부분을 코드만 계속해서 들여다보던게 한 3주.

 

29일 쯔음에 부끄럽게도 디버그 방법을 알아서 디버그를 해보며 생각대로 호출 되는 함수 그렇지 못한 함수 나누어 보았으나 델리게이트가 작동해야 하는데 작동하지 않은 것을 고치려면 어떻게 작동해야하는지 알아야 한다는 사실에 늘어져 있었습니다.

 

혹시 뭔가 놓친게 있나 싶어 다시 보다가 AnimNotify 부분을 찾아 보고 혹시나 해서 Montage를 봤는데...

 

notify 부분이 비어 있었습니다.

 

그렇습니다. 

 

코드의 델리게이트와 Montage가 연결이 되어있지 않았던 것입니다.

 

정확히는 모든 공격은 Attack 함수 안에서 구현하여 델리게이트 함수는 공유하였으나, 참고도서를 보고 만든 일반 콤보 공격은 notify가 설정되어 있어 montage에서 AttackCheck가 되었는데 다른 공격들은 이 부분이 빠진 것이었습니다.

 

안그래도 요즘 회사 공채 열려서 멘탈 약해졌는데 이게 멘탈을 다 깨트려버렸네요.

 

이번주는 짬을 내서 꼭 게임을 할것입니다.

 

이 부분에서 남은 것은 공격 별로 피해량에 차등을 주는 것입니다.

'개발일지' 카테고리의 다른 글

게임 제작 근황  (0) 2019.06.17
Animation Replicate 삽질 일기  (0) 2019.05.19
Paragon Animation List  (0) 2019.04.01
3월 29일 복-귀 및 콤보 어택 수정  (0) 2019.03.29
2월 16일 오브젝트 현황  (0) 2019.02.16

Paragon Animation List.zip
0.03MB

어딘가에서 제공 될 수도 있지만 에픽에서 공짜로 배포한 파라곤 캐릭터 에셋들을 쓰고 싶어서 이것저것 보고 있었습니다.

 

근데 언리얼 에디터로 보면 클릭을 꽤 해야 해서 귀찮더군요.

 

그래서 간단하게 경로를 입력해서 파일 리스트를 출력했습니다.

 

 

OpenWorldAnim이나 TraversalAnimset처럼 PDF로 했으면 좀 더 깔끔했을수도 있겠으나 PDF는 뭔가 다시 하려니 귀찮더군요.

 

기타 정보들도 있으면 좋겠지만 우선은 txt 파일로 만족해 주시면 감사하겠습니다.

 

캐릭터 이름이 완벽히 동일하지 않을 수 있습니다. 

 

애니메이션 경로가 [Paragon + heroName1]/Characters/Heros/[heroName2]/Animations/*인데 대부분은 heroName 1과 heroName 2가 동일한데 한 3개? 정도는 이 둘이 달라서 임의로 하나로 통일했습니다.

 

그래도 대부분 알아보실 수 있으실겁니다.

 

그리고 파라곤 캐릭터 에셋은 스켈레탈이 모두 다릅니다. 

 

당연할 수도 있지만 전 지금 이걸 체크 안해서 큰 수정을 직면했습니다.

 

이 점 참고하세요.

'개발일지' 카테고리의 다른 글

Animation Replicate 삽질 일기  (0) 2019.05.19
5월 1일 공격 판정 적용  (0) 2019.05.02
3월 29일 복-귀 및 콤보 어택 수정  (0) 2019.03.29
2월 16일 오브젝트 현황  (0) 2019.02.16
1월 31일 캐릭터 기능 구현  (0) 2019.02.04

우연히 넣은 서류가 잘 풀려서 한동안 개발을 멈추고 있었습니다.

 

근데 김치국 씨게 마셔서 그런지 면접 보고 떨어졌네요.

 

이제 어떻게 해야 할지 모르겠습니다.

 

해야 할건 너무 많고 자신은 없고...

 

운동도 더이상 미룰수 없고...

 

1월 2월에는 오전에 운동하고 오후에 게임 개발만 했었는데 이제 좀 분산해야 할 것 같습니다.

 

개발하던 게임은 최소한의 모습이 나올 때까지 계속 개발을 할 생각입니다.

 

그리고 알고리즘 공부를 다시 해볼까 합니다.

 

너무 오래 놓고 있었더니 꼴이 말이 아닙니다.

 

이 두가지는 일단 주중에 항상 잡고 가고 주말이나 평소에 시간 남을때는... 공부 좀 더 해야겠네요.

 

서류, 면접 결과 기다리는 동안 문명을 계속 잡고 있었는데 하던 것만 빨리 마무리하고 이제 놓아줘야겠습니다.

 

아 그리고 어디까지 했나 확인 차 다시 키고 좀 만지다가 콤보 어택이 제대로 되지 않는 것을 수정했습니다.

 

단순히 공격 모션 시간 신경 안쓰고 대략 인식 시간을 잡았더니 시간이 너무 짧아 콤보를 인식하기 전에 애니메이션이 끝났던 거더군요.

 

시간 두배로 늘려주니까 잘 되었다고 합니다.

'개발일지' 카테고리의 다른 글

5월 1일 공격 판정 적용  (0) 2019.05.02
Paragon Animation List  (0) 2019.04.01
2월 16일 오브젝트 현황  (0) 2019.02.16
1월 31일 캐릭터 기능 구현  (0) 2019.02.04
Unreal Project Setting 1  (0) 2018.12.28

맵 상에 존재 할 오브젝트로 문, 함정, 퍼즐, 아이템, 기타 장치를 설정해 놓았다.


이 중 문은 좀 많이 전에 사실 끝내버렸다(...)


그렇다 또 일지 쓰는게 늦어버렸다.


destructible mesh에 material 적용하고 hit 이벤트 붙이는데 시간 좀 할애를 했다.


그 외에는 크게 문제 되는건 없었다.


문제는 함정이었는데 rotate 중심을 돌리는데 일주일을 써버렸다.


구상하는 함정은 가시바닥이 내려 찍는 함정이었다.


그렇기에 board가 한쪽 변을 중심으로 돌아야 한다.


그런데 보통 rotate를 하면 mesh 바닥 중심에 잡혀 있다.


이걸 자연스럽게 옮기기 위해 온갖 생쇼를 다 하다가 답을 찾았다.


https://unrealcpp.com/rotate-actor-around-player-with-rotation/


똑같은건 아니지만 FVector::RotateAngleAxis()를 사용하는 것이 힌트가 되어 일주일만에 구현하였다.


구현된 기능은 모두 영상 촬영을 하였으며 나중에 정리해서 올려보겠다.

'개발일지' 카테고리의 다른 글

Paragon Animation List  (0) 2019.04.01
3월 29일 복-귀 및 콤보 어택 수정  (0) 2019.03.29
1월 31일 캐릭터 기능 구현  (0) 2019.02.04
Unreal Project Setting 1  (0) 2018.12.28
windows에서 git2go 사용하기 - 2(完)(실패)  (0) 2018.07.30

https://youtu.be/bi9NU1a0BjA


간단하게 조작, 공격, 상호 작용 정도만 넣어 둔 상태.


대략적으로만 하고 끝낸 이유는 어차피 기획이 확정된게 아니라 조금 수정 될 수 있기 때문.


이 글을 이제야 쓰는 이유는 개발 다 하고 한참 놀다가 이제서야 다시 일 할 마음 생김.


취직 하고 싶다....


다음에 하려는 것은 함정이나 오브젝트 같은 기믹과 관련된 요소들 만들 예정.


이 또한 프로토타입으로 기능 위주로 구현 할 예정.


그렇다면 컨텐츠는 언제 추가 되는가?


그건 플레이 완성 되고....


사실 글 쓰기 전까지 한 일이 있따.


대략적인 함정 종류를 기획했다. 욕심을 내 보았으나 생각의 한계가 찾아와 빈약하다.


하지만 종류로 생각하면 네 다섯가지가 적은 건 아니니 열심히 만들 생각을 해야겠다.


그리고 조작법을 한 문서에 보기 좋게 정리 해 보았다.


예전에 캐릭터 구현 하면서 대략적인 조작법을 지정해 보았는데 다시 보니 키보드 바인딩이 겹칠 부분이 보였다.


쭉 정리를 해보니 대략 어떤 키를 캐릭터 스킬에 주고 어떤 키들이 성물이 쓸 수 있는지 판단이 선다.


캐릭터가 1달만에 일이 끝나 개인적으로 오브젝트 개발도 2월 안에 끝내보고 싶다.


하지만 더 큰 일일 것 같아 3월 말까지로 일정을 잡아놓았다.


그래도 2월 안에 끝낼 수 있었으면 좋겠다. 


한달에 하나씩 한다면 오브젝트, 캐릭터, 씬, UI, 스킬 구현하여 6월에는 간단히 플레이는 가능하고 7월에는 좀 더 자세한 맥락이 잡힐 수 있을텐데...

원래 언리얼을 오래 잡긴 했는데 C++쪽은 생산성이 떨어져 4년 가까이 블루프린트만 했었습니다.


그러다가 [이득우의 언리얼 C++ 게임 개발의 정석]이라는 책을 접했는데, 예제 코드와 설명, 그림 첨부가 친절하여 이를 읽고 Unreal C++ 개발을 다시 시작했습니다.


개발 하면서 미리 해두면 좋은 Setting을 기억나는대로 정리해보고자 합니다.


나중에 얼추 모이면 합본으로 다시 만들어 보겠습니다.


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


C++로 개발을 하면 프로젝트 안에 Source 라는 폴더가 있을 것입니다.


이 폴더에 들어가면 [Project name](여러분들이 만든 프로젝트 이름)의 폴더가 하나 더 있을 것입니다.


그 안에 처음 제공되는 GameModeBase 등의 코드들이 있을 것입니다.


이 Source/[Project name] 하위에 Public, Private 라는 이름의 폴더를 생성합니다.


그리고 모든 *.cpp 파일은 Private에, 모든 *.h 파일은 Public에 옮겨놓습니다.


그리고 밖으로 나와 uproject 파일을 우클릭 하여 VS Project 다시 생성을 누릅니다.


이제 VS로 프로젝트를 열면 Unreal 코드와 마찬가지로 자동으로 .h와 .cpp가 분리되어 있을 것입니다.


이렇게 한번 해두면 이후 새 코드를 생성할 때에도 자동으로 나뉘어서 들어가게 됩니다.

pthread 설치해야하는 상황서부터 화딱지 나서 다른 방법 찾던 중 우분투 설치가 너무 아름답게 손쉬워서 때려쳤습니다.


여담이라면 예전 노트북에 우분투 쓰다가 "내 삶의 신선한 자극이 필요해"라는 이유로 페도라를 설치 했었습니다.


페도라도 libgit2까지만 잘 되어 있고 git2go는 귀찮더군요....


그래서 그냥 우분투로 다시 돌아왔습니다.

'개발일지' 카테고리의 다른 글

3월 29일 복-귀 및 콤보 어택 수정  (0) 2019.03.29
2월 16일 오브젝트 현황  (0) 2019.02.16
1월 31일 캐릭터 기능 구현  (0) 2019.02.04
Unreal Project Setting 1  (0) 2018.12.28
windows에서 git2go 사용하기 - 1  (0) 2018.07.27

+ Recent posts