게임개발일지/멀티플레이 FPS 7

언리얼 엔진 네트워크 FPS 게임 개발 일지#6 에임 오프셋 기능 개선

[velog에서 블로그 이전하며 가져온 글입니다] 작성 일자 : 2022년 7월 12일 개발일지 #4의 후속 게시글이다. 대부분의 FPS 게임에는 3인칭 캐릭터의 움직임을 자연스럽게 보이도록 카메라를 회전시킬 때 액터가 회전하지 않고 시선만 돌아가는 기능이 있다. 일정 각도 이상으로 돌아가면 캐릭터가 몸이 정면을 바라보도록 자세를 다시 잡는다. UE4에서는 캐릭터의 시선을 돌리는 기능을 에임 오프셋으로 지원한다. CameraComponent->bUsePawnControlRotation 값이 true인 상태로 이 기능을 구현했지만 총기 반동을 위한 RecoilComponent를 추가하기 위해서는 false인 상태로 기능을 구현해야 했다. 값이 true 이라면 부모 컴포넌트는 카메라 컴포넌트의 Rotatio..

언리얼 엔진 네트워크 FPS 게임 개발 일지#5 총알 자국(Bullet holes), 데칼(Decal)

[velog에서 블로그 이전하며 가져온 글입니다] 작성 일자 : 2022년 7월 8일 참고 영상 링크 총알자국 총을 벽에 발사하게 된다면 그 벽에는 총알 자국이 남는다. UE4에서는 데칼(Decal) 기능으로 이것을 지원한다. 참고 영상에서는 블루프린트에서는 SpawnDecalAttached 노드로 데칼 컴포넌트를 피격된 컴포넌트에 Attach 하여 데칼을 표시하는 방식을 선택했다. C++에서도 Kismet/GameplayStatics.h 헤더를 include하면 블루프린트에서 사용할 수 있는 노드를 사용할 수 있다. UGameplayStatics::SpawnDecalAttached(...) 를 블루프린트 노드와 동일하게 사용할 수 있다. 데칼 컴포넌트 뿐 아니라 데칼 액터도 동일하게 존재한다. ADec..

언리얼 엔진 네트워크 FPS 게임 개발 일지#4 탄퍼짐, 반동 구간 반복, 반동 안정성

[velog에서 블로그 이전하며 가져온 글입니다] 작성 일자 : 2022년 6월 14일 탄퍼짐 구현 탄퍼짐은 움직임에 따른 탄퍼짐과 반동 중 무작위 방향으로 퍼지는 탄착군으로 나눌 수 있다. 이것을 구현하기 위해 무기 클래스를 만들 때 MovementStability 변수와 Accuracy 변수를 만들어 두었다. 아래 코드는 총을 발사할 때 카메라 방향으로 LineTrace를 실행하는 함수이다. bool AHitScanWeapon::LineTrace(FHitResult& HitResult) { AFpsCharacter* Character = Cast(GetOwner()); if (!IsValid(Character)) { UE_LOG(LogTemp, Log, TEXT("AHitScanWeapon::Line..

언리얼 엔진 네트워크 FPS 게임 개발 일지#3 무기 반동

[velog에서 블로그 이전하며 가져온 글입니다] 작성 일자 : 2022년 6월 11일 반동 애니메이션 발로란트에서는 무기 반동 애니메이션이 3가지로 나뉜다. 첫 번째는 총을 쏘기 시작할 때 총기가 들어올려지는 것, 두 번째는 발사를 종료했을 때 총기가 내려오는 것, 마지막으로 반동 중 총기가 좌우로 흔들리는 것이다. 반동 시작 애니메이션이다. 자세히 보면 총기를 발사하기 시작할 때 총이 위로 천천히 올라가는 모습을 확인할 수 있다. 최대 높이로 총의 각도가 올라간 후 좌우로 움직이는 것을 확인할 수 있다. 반동 종료 애니메이션이다. 자세히 보면 발사를 종료한 후 총기가 빠르게 아래로 내려가는 모습을 확인할 수 있다. 현재 프로젝트에는 무기를 발사할 때 반동 애니메이션만 있고, 시작과 종료 애니메이션이 ..

언리얼 엔진 네트워크 FPS 게임 개발 일지#2 무기 클립핑 현상 수정

[velog에서 블로그 이전하며 가져온 글입니다] 작성 일자 : 2022년 5월 13일 클립핑 현상? 클립핑 현상은 두 모델이 겹쳐진 부분이 잘려 보이지 않는 현상이다. 첫 번째 사진은 정상적으로 렌더링된 상태이고, 두 번째 사진은 손과 무기가 컨테이너와 겹치며 부분적으로 잘려보인다. 온라인 FPS 게임을 하다보면 벽에 붙어있는 상태에서도 손과 무기의 모든 부분이 출력되는 것을 알 수 있다. 해결책 무기 클립핑 현상 고치는 방법 강좌 해결책은 두 가지로 나눌 수 있다. 머티리얼을 수정해서 모델이 겹쳐도 렌더링이 가능하도록 수정하는 방법과 모델의 스케일을 낮추는 방법이다. 카메라 컴포넌트의 스케일을 조절하는 것은 간단하고 빠르게 클립핑 현상을 해결할 수 있다는 장점이 있고, 머티리얼을 수정하는 방법은 벽에..

언리얼 엔진 네트워크 FPS 게임 개발 일지#1 개발환경 세팅

[velog에서 블로그 이전하며 가져온 글입니다] 작성 일자 : 2022년 5월 10일 어떤 게임을 만들까? 언리얼 엔진 네트워크 FPS 게임 개발 일지#0에서 링크한 UE4 프로젝트는 일반적인 FPS 게임을 만들자는 생각으로 시작했다. 하지만 하나의 기능을 만들 때 어느정도 수준까지 만들지에 대한 기준과 자세한 기획이 없었고, 개발할 때 시간이 늘어지거나 완성도가 낮아지는 문제가 있었다. 개발 중 새로운 기능이 떠오르면 원래 만들었던 기능을 다시 뜯어 고치는 등의 시간을 낭비하는 일이 비일비재했다. 이대로 가면 영원히 프로젝트를 완성하지 못하겠다는 생각이 들었다. 이런 문제를 해결할 수 있는 방법은 모작이다. 요즘 다시 주목받는 FPS게임인 Valorant와 최대한 똑같이 게임을 만들어보려고 한다. 텍..

언리얼 엔진 네트워크 FPS 게임 개발 일지#0

[velog에서 블로그 이전하며 가져온 글입니다] 작성 일자 : 2022년 5월 9일 소개 일기 형태로 작성되는 글입니다. 개발과 직접적으로 관련된 내용과 아닌 내용 모두를 포함하려고 합니다. 반성 GitHub : https://github.com/kjinwoo12/UE4Study-NetworkFPS 게임 개발자로 취직하기 위해 UE4를 공부하면서 시작한 개인 프로젝트이다. 2020년 12월부터 시작했으니 1년하고 5개월동안 만들었지만 게임이라고 부를 수 없는 습작이다. 게으름이 한 몫 했다. 꿈은 높지만 현실은 시궁창이고, 내 실력은 믿지만 남에게 보여줄 결과물이 없다. 정신을 차려야한다. 며칠 전 정보처리기사 실기 시험을 치뤘다. 결과는 아직 나오지 않았다. 필기 시험 공부를 했던 한 달처럼 실기 시..