2024/02 16

2월 마무리

10일간 게임인재원에서 프리스쿨 경험 후 우리 팀이 인기상을 받았고 이후 최종합격 하였으나 거리의 문제와 엔진 사용법도 모르는데 자체엔진을 배우기에는 너무 부족한 실력이라 느껴 인재원은 최종 등록을 포기하였다. 이후에는 지인들과 언리얼로 프로젝트를 진행하며 구현 뿐만아니라 엔진 내부코드를 읽어보는 연습과 구조짜는 연습 등을 하며 프로젝트 경험을 쌓고있다.

Instantitate()와 Destroy()함수

오브젝트 스포닝이란 유니티에서 오브젝트 스포닝에 사용하는 함수인 Instantitate 함수에 대해 간략히 설명하겠다. Unity에서 Instantiate()로 새로운 게임 오브젝트를 생성하는 것 즉 Instantiate 함수를 사용하여 기존의 오브젝트의 복사본을 만드는 것을 "스포닝"이라고 부르기도 한다. 네트워크 HLAPI에서 "스폰"은 더 세부적인 의미를 가지는데, 서버에서 오브젝트를 "스폰"하게되면 오브젝트가 서버에 연결된 클라이언트에서 생성되어야 하며 이들을 오브젝트 스포닝 시스템이 관리하게 된다는 의미이다. 오브젝트가 스포닝 시스템에 속하게 된 후에는 오브젝트가 서버에서 제거되면 클라이언트에서도 동일하게 제거된다. 스폰된 오브젝트는 서버가 관리하는 네트워크 오브젝트가 동일하게 해당 클라이언트에..

Unity 2024.02.15

게임 인재원 6기 프로그래밍 OT

지식을 배운다기보단 지식을 쌓을 자세나 태도를 돌아보는 관점을 배웠다. 추가적으로 사회에서 일을 한다는 것은 책임을 진다는 것이고 책임을 진다는 말이 어떤 것인가에 대해서 고려해보는 계기도 되었기에 정말 뜻깊은 시간이 되었다. 게임잼을 통해서 협업에 대해서 많이 생각해 볼 계기도 되었는데, 아무래도 유니티를 직접 사용해보진 않고 갔었기에 더욱 난이도가 느껴졌었다. 하지만 팀원분들이 잘 수습해준 덕에 잘 해결되었다. 이후 인기상을 수상한 뒤 2일간 못잤던 잠을 몰아잤다. 게임잼 이후에 팀프로젝트의 경험의 중요성을 알게되었으며, 게임잼 이후 바로 팀을 꾸려서 프로젝트 하나를 진행하고 있다. 게임잼에서 배운 것 하나는 팀 프로젝트의 중요성이고, 다른 하나는 개발PM의 존재의 중요성이었다. 아무래도 기획 아트 ..

적을 만들지 않는 대화법

해당 서적 제목만 보면,적을 만들지 않는 건 대충 비위만 맞춰주면 되는 거 아닌가 싶을 수 있다. 하지만 이 책은 누군가에게 아첨하는 방법이 아닌,학교에서는 잘 가르치지 않는 부당한 대우를 받았을 때의 대처법을 말하고 있다.말없이 상처를 감수하거나 보복하려고 하는 두 가지 모두 도움 되지 않는다고 말한다. 저자는 일상적으로 만나게 되는 문제들이 대해서 즉시 해결하도록 하고자 하며,유연하게 살아가는 대처법을 제시해 준다.이 책을 읽는다고 단숨에 인간관계에 능수능란한 마법사가 된다는 뜻은 아니지만, 해당 서적을 읽으며 느낀 점은쿵푸를 할 때 상대 공격을 잘 받아치는 것이 중요한 것처럼,대화도 상대와의 티키타카가 중요하다는 점을 강조하고 있었다. 해당 책에서는 상대방의 상황을 이해함으로써 상대방과의 소통의 원..

트리거 콜라이더

콜라이더 설정하기 총알과 총알이 충돌했을 때, 튕겨나지 않고 그냥 통과하도록 만들 고 싶을 수도 있다. 이때 트리거로 설정된 콜라이더를 사용하면 해당 의도를 반영한 프로젝트를 만들 수 있다. 트리거 콜라이더 트리거 콜라이더는 충돌한 물체를 밀어내는 물리적인 표면이 없다. 그래서 트리거 콜라이더는 다른 일반 콜라이더와 겹치거나 서로를 뚫고 지나갈 수 있지만, 충돌 자체는 감지한다. 따라서 트리거 콜라이더는 충돌이 감지되었을 때 어떤 기능을 실행하는 방아쇠로 많이 사용한다. 예를 들어 플레이어가 특정 영역으로 진입했는지 검사할 때 트리거 콜라이더를 많이 사용한다. 보이지 않는 트리거 콜라이더를 어떤 위치에 배치하고, 플레이어가 해당 트리거 콜라이더를 통과할 때 새로운 적을 출현시키거나 컷씬을 재생하는 방식으..

Unity 2024.02.11

유니티 기본 설정 값 작업

해당 작업으로 배운 내용 요약 머티리얼은 게임 오브젝트 표면의 색을 결정한다. 카메라 컴포넌트의 Clear Flags를 변경하여 게임 배경을 변경할 수 있다. Update() 메서드는 매 프레임마다 (게임 화면이 갱신될 때마다) 실행된다. gameObject() 메서드는 게임 오브젝트로부터 원하는 타입의 컴포넌트를 찾아온다. Vector3는 x,y,z 값을 가지는 타입이다 - Vector3로 위치, 스케일, 속도 등을 나타낼 수 있다. - new Vector3(x, y, z)를 통해 새로운 Vector3 값을 생성한다. 리지드바디 컴포넌트의 Constraints 필드에서 특정 축의 위치나 회전이 변경되지 않도록 고정할 수 있다. 리지드바디 컴포넌트는 현재 속도를 표현하는 변수 velocity를 제공한다...

Unity 2024.02.11

0206 모든 1일 체크 리스트 첫 달성

조금이라도 그날 공부한 것은 파란색으로 칠했다. 사실 해야하는 분야나 들어야 하는 강의나 정리해야 할 것들은 이외에도 정말 많은 것들을 배워야 하지만 지금 세운 목표 오늘 할일에 집중하고자 다음과 같은 to do list 들을 세워놓고, 하루에 다 못했던 경우도 많았다. 매일 어느 하나의 공부에 치우치지 않기 위해서 다음과 같은 목표를 세웠고, 오늘 처음 이뤘다. 그러한 것들은 1일 체크리스트 외에 별도로 면접스터디에서 조금씩 채워나가고있다. 균형있는 공부와 균형있는 기본기를 위해서 더 탄탄하고 더 완성도 높은 기본기를 위해서 꼭꼭 더 많이 배우기위해서 지금 오늘 할 수 있는 것에 몰입하고자 노력했지만, 늘 결국에는 언리얼만 하거나, 집중력이 흐려지거나 하곤했었다. 그래도 내일은 꼭 균형있게 공부해야지 ..

리스트 List(배열 기반)

으래 그냥 리스트라고 하면 연결 리스트를 종종 떠올린다. 하지만, 리스트에는 순차 리스트와 연결 리스트가 있다. 순차 리스트는 배열을 기반으로 구현된 리스트이며 연결 리스트는 메모리의 동적 할당을 기반으로 구현된 리스트이다. 하지만 이는 리스트의 구현방법의 차이에서 비롯된 것이기 때문에 이 둘의 ADT가 동일하다고 해서 문제가 될 것은 없다. 물론 각각의 특성의 차이 때문에 ADT에 차이를 두기도 한다. 이는 ADT는 각종 자료구조들의 표준이 아니기 때문이다. 정의하는 사람이나 회사에 따라서, 다시 말해 피룡에 따라서 ADT에도 차이가 난다. 물론 필요에 따라 확장도 가능하다. 하지만 그렇다고 해서 해당 자료구조의 기본 특성을 무시하는 형태로 ADT가 정의되는 것은 아니다. 리스트 ADT 정의를 위해서 ..