교내에서 진행하는 소프트웨어 대회 출품을 목적으로
개발자 4명과 디자이너 2명이 한 팀으로
게임을 제작하기 위해 프로젝트를 진행했다.
대회 기간은 약 4개월 정도이지만
초반 기획 등을 거쳐 실질적인 개발기간은 2~3개월 정도였다.
7월부터 본격적으로 작업을 시작해서
지금 한 달 정도가 이미 지났으나
새벽 5시의 감성을 살려 개발일지를 작성한다.
초반 제목은 Gulliver Killer였으나
본제목은 변경됐다.
본제목은 Wi, Zard로 본인이 지었다.
나름 나쁘지 않다
위 사진은 게임 시작 전 사진인데,
2인용 게임이라 Unity Photon을 이용하여
멀티로 제작하였다.
멀티로 제작해서 기존 싱글플레이를 기준으로 만들었던 코드들이
각자가 아닌 두 플레이어 모두에게 적용되는 것들이 생겨서
이를 수정하는 데 애를 먹었다.
다른 팀원들이 Boss, Player 쪽을 만들고 싶다고 해서
본인은 남는 작업을 한다고 했고 결국 상호작용 파트를 맡아 진행했다
기획자 분이 친절?하게 할 일을 적어놨는데
결국 나중에 다 수정했다
기획자와 개발자의 뇌 동기화가 중요하다는 것을 새삼 느꼈다
현업에서는 어떻게 처리하는지 참 대단하다
코드를 짜면서 이렇게 구조적으로 생각한 적이 없었는데
여러 오브젝트에 어떻게 하면 통합적으로 관리할 수 있을까를
생각하면서 구조를 생각하니 위처럼 만들었다.
조금 더 잘 만들 수도 있겠으나
본인은 이것이 최선이다
그리고 이후 다른 개발자들이 건들기 쉽게 코드 설명 등도 포스팅했다.
https://burnt-geology-5b2.notion.site/Object-Interaction-7015bfd57d4543ad8f18c105ebb17420?pvs=4
본인이 작성한 페이지는 몰래 공개하였다
올해 1월 UNIDEV에서 진행한 게임잼 UNIJAM을 다녀왔을 때
메인 프로그래머 분이 정말 잘 하셔서많이 배워왔는데 그 중 하나가 Fork였다.
처음으로 GitHub를 통해 협업을 한 것이었다
2학년 때도 했으나 하나는 언리얼 엔진을 사용하여 Perforce를 이용했고
다른 하나는 유니티 용량이 너무 커서 본인이 수작업으로 merge를 했다
(지금 생각해보면 git ignore 설정 못해서 그런 듯)
이번 프로젝트에서는 Fork 하자고 했는데
다른 개발자들이 GitHub Desktop을 써서나도 깃헙 데스크탑을 썼다
나름 체계도 갖춰서 commit을 진행했다
팀장님의 짬밥으로 이런 것들을 기준으로 썼다
많이 배움
요새 잠을 많이 못 잤다
밤낮이 바뀐 기분이다곧 개강인데 어떻게 될지 모르겠다
본인은 일주일에 2~3번 정도 오전 9시 근로를 하느라 죽을 맛이다
8월 11일에 포톤 게임잼이라는 곳에 제출하려고
지난 며칠 동안 빡세게 진행했다
그동안 좀 설렁설렁 했는데 그에 대한 대가인 듯하다
여러 개발자와 디자이너들이 밤을 새워가며 만든 게임 장면
저 책 하나하나를 개별적으로 다룰 수 있다는 것이 킬포다
그래서 로딩이 오래걸린다
본 대회 때 시연을 위해 Unity로 만들었는데
RTX 3060Ti 컴퓨터에서도 약간의 렉이 발생한다(시연 가능할까..?)
개발 관련
먼저, GPT가 정말 효율적으로 코드 짜기 좋다
물론 실제 적용하려면 수정을 본인이 해야하지만
큰 틀을 바탕으로 만들어주기 때문에 생산적이다
그리고 이 수정 과정에서
여러 블로그 및 공식 문서를 많이 보게 되고 새로운 함수들을 많이 배운다
void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Projectile_Zard") ||
other.gameObject.CompareTag("Projectile_Wi"))
{
Collider ownCollider;
if (TryGetComponent<Collider>(out ownCollider))
{
// 충돌 지점의 월드 좌표
Vector3 contactPoint = other.ClosestPoint(transform.position);
// 충돌 오브젝트의 중앙 좌표
Vector3 objectCenter = ownCollider.bounds.center;
// 충돌 위치에 따른 회전 방향 결정
if (contactPoint.z < objectCenter.z)
{
// 충돌 위치가 중앙 기준 왼쪽
transform.Rotate(-90, 0, 0);
}
else
{
// 충돌 위치가 중앙 기준 오른쪽
transform.Rotate(90, 0, 0);
}
// Projectile 오브젝트 삭제
Destroy(other.gameObject);
}
}
}
대충 여기서 transform.Translate, Rotate 등의 함수를 처음 적용해봤다
그냥 GetComponent 시에는 불러오기가 실패하더라도 GC Alloc이 발생하기 때문에
TryGetComponent를 대체 사용했다
이러한 함수들과 비슷한 맥락으로
gameObject.CompareTag 사용하기 등
최적화를 위한 많은 수정을 하였다
(팀장이 누구한테 많이 갈굼 받아서 우리한테 그대로 쓴다)
마무리
경희대 게임 제작 동아리 Ludens(http://bit.ly/KHU_Ludens) 회장을 비롯해
(많은 관심 부탁드립니다)
여러 활동들을 진행하다 보니 몸이 너무 힘들다
그리고 빨리 늙는다
빨리 이 생활을 청산해야겠다
그리고 개발일지를 다시 쓸지는 모르겠다
'Diary' 카테고리의 다른 글
[개발일지] Project GK -2- (2) | 2024.11.21 |
---|---|
개발일지 - Unity 2D 음료수 회사 운영하기 게임 (0) | 2023.08.15 |
Unity - 음료수 회사 경영하기 첫 개발 여정 (1) | 2023.01.30 |
개발일지 - Unity 음료수 회사 경영하기 (0) | 2023.01.29 |
개발일지 - 유니티 2D (0) | 2023.01.25 |