본문 바로가기

전체 글44

[게임 디자인 패턴] Singleton Pattern // 유니티로 배우는 게임 디자인 패턴 제 2판 (데이비드 바론, 구진수) 을 기준으로 작성되었습니다. 싱글턴 패턴 Singleton Pattern유니티 개발자들 사이에서 가장 널리 사용되는 패턴인 싱글턴 패턴. 특정 인스턴스의 유일성을 보장한다.싱글턴 패턴에 의해 초기화된 이후에는, 런타임 동안 단 하나의 인스턴스만 메모리에 존재한다. 주로 게임 매니저와 같은 매니저 클래스들이 싱글턴으로 구현된다.씬 사이를 드나들면서도, 매니저 클래스들은 사라지지 않고 존재하며, 덕분에 다른 씬에서의 정보도 그대로 가져갈 수 있다. 즉, 여러 씬이나 스크립트에서 동일한 데이터를 공유하고 접근하므로 데이터의 일관성이 만들어진다!예를 들어, 1번 씬에서 플레이어의 골드가 50이 되었다면, 2번 씬으로 이동한 뒤에서 플레이.. 2024. 7. 3.
[DevLogs] 구체 플레이어 구현 - 2, 이동, 공격, 애니메이션 이동 코드의 개선저번에 구현했던 구체 형태 플레이어의 이동방식은 AddForce로 구현한 매우 간단한 형태였다.따라서 조작에 여러모로 불편한 부분들이 많았는데, 그 중 가장 큰 단점은 바로 조작감이다.조작이 어려운 게임을 만들고 싶진 않았기 때문에, 더 간단한 조작을 위하여 CharacterController 컴포넌트를 사용하기로 했다.  private void Move() { float horizontal = Input.GetAxis("Horizontal"); float vertical = Input.GetAxis("Vertical"); //if(horizontal == vertical) RigidbodyReset(); direction = .. 2024. 6. 7.
[DevLogs] 구체 로봇 플레이어 만들기 - 아이디어와 기본 이동 "파괴" 를 바탕으로 만드는 게임에 어울리는 플레이어 캐릭터지금 진행하고 있는 프로젝트의 메인 키워드는 "파괴" 다. 플레이어나 지형지물의 Mesh가 게임 진행에 따라 파괴되는 점이 부각되는 메카 게임을 만들고 있었다.문득, 지금 이 플레이어의 형태나, 나아가서 게임의 구조 자체가 "파괴" 라는 키워드를 제대로 살리지 못하고 있는 것 같다. 좀 더 빠르고 활동적인 플레이어를 만들고 싶었는데, 마음에 드는 메카 애니메이션 리소스를 찾는 것이 여간 쉬운 일이 아니여서 계속 고민을 하고 있었다. 타협에 타협에 타협을 하다보니... 결국 본래 원하던 방향과는 너무나 멀어진 것. "파괴" 라는 핵심에서 멀어지는 것만 같았다. 그러던 도중, 과거에 취해 옛날에 들었던 노래들을 듣고 있었다.마이클 사이런스의 "Rec.. 2024. 5. 28.
[DevLog] 유니티 잡설, 새로운 프로젝트 LineRenderer를 통해 총의 궤적 표현하기유니티의 LineRenderer 컴포넌트는 인게임에서 선을 그려주는 컴포넌트다. LineRenderer를 아주 짧은 시간 켜줌으로써 총알이 날아가는 듯한 표현을 해줄 수 있다. _muzzleRenderer.enabled = true; // LineRenderer 활성화_muzzleRenderer.SetPosition(0, Muzzle.position); // LineRenderer의 시작점과_muzzleRenderer.SetPosition(1, _hitInfo.point); // 끝점 지정StartCoroutine(ShootFireCoroutine());  LineRenderer 컴포넌트를 muzzleRender라고 정의했고, 이를 활성화한 뒤에 Corou.. 2024. 5. 25.
[DevLog] 맥북, 발표, 그리고 논문 맥북 구매  이전에는 13인치 M1 맥북 에어를 사용했다. 어디서든 원하는 작업이 가능하다라는 점과 가볍다는 점이 크게 작용해 구입하여 사용했다.중고로 산 M1 맥북 에어였는데, 새 맥북을 맞출 만큼 돈이 많지 않았다. 나는 가난한 대학생이다..!   하지만 휴학을 하게 되면서 집 밖보다는 집 안에서 작업을 하는 경우가 많아졌다. 집에는 데스크탑이 있기 때문에 굳이 작은 화면의 맥북으로 작업할 이유가 없기 때문이다.    중고로 산 맥북 에어를 다시 중고로 팔아버리고, 올해 초 복학하게 되면서 노트북 혹은 패드가 필요하게 되었다. 매번 노트북과 함께 대학생활을 해왔기 때문에, 새로운 변화를 주고자 아이패드 프로 11인치를 구매했다.    휴대성은 만족스러웠지만, 밖에서 짜투리 시간을 활용해 작업하기가 많.. 2024. 5. 14.
[Memory Views and Copies in Numpy] Numpy 기본기. 개요 어떤 값을 의도적으로 덮어쓰고 싶을 때는 상관이 없지만, 덮어쓰고 싶지 않을 때 덮어쓰는 실수를 할 수도 있다. == view라는 개념을 잘 이해하지 못하면 우리가 가지고 있는 값을 덮어쓰는 실수를 저지를 수 있다. => view의 개념을 잘 이해함으로써 불필요한 copy를 피할 수 있고, 메모리 자원을 아끼는 데에 큰 도움이 된다. import numpy as np ary = np.array([[1,2,3], [4,5,6]]) first_row = ary[0] first_row += 1 print(first_row) print(ary[0]) 출력값을 보면, 분명 first_row에 ary[0]를 복사에서 더해줬는데, ary[0]에도 똑같이 연산이 수행되었음을 알 수 있다. ary[0]를 first.. 2024. 4. 16.
UE4) Cloth Simulation / 1vs1 Fighting Game https://www.youtube.com/watch?v=BU1-Vroz7Jc 2022년 2학기 "게임콘텐츠캡스톤디자인" 프로젝트 2024. 4. 8.
UE4) Torn Cloth Generation / Simulation https://www.youtube.com/watch?v=otvgOcHjQgA&t=6s 개요 UE4에서 너덜너덜한 천의 모습을 생성하고, 인게임에서 simulation할 수 있도록 구현 다양한 환경에서 적용가능한 기술 개발 멤버 문철호 핵심 기술 Cloth simulation (천 물리 시뮬레이션) Torn cloth mesh generation (찢어진 천 생성) 성과 펄어비스 x 소프트웨어융합학과 3차 인재양성 프로그램 2024. 4. 8.
[EOF, End Of File] 파일 종료 EOF는 말 그대로, 파일의 끝(End of file)을 나타낸다. 파일에 더이상 읽어들일 데이터가 없다는 의미이며, 파일 뿐만 아니라, 입력의 끝을 알리는 신호로 사용된다. EOF의 입력 방법은 윈도우 : Crtl + Z Mac / Unix / Linux... : Crtl + D 이다. 예시 소스코드의 동작을 살펴보자. #include int main() { int a, b; while (true) { std::cin >> a >> b; if (std::cin.eof()) break; else std::cout 2024. 2. 16.
[에라토스테네스의 체] 소수를 구하는 알고리즘 소수란, " 1과 자신만을 약수로 가지는 수" 를 의미한다. 죠죠의 엔리코 푸치 신부는 마음의 평정을 유지하기 위해 소수를 셌다. 우리에게 평안을 가져다주는 소수, 어떻게 구할 것인가? 이번 글의 주제인 "에라토스테네스의 체" 라는 고대 그리스 수학자의 알고리즘에 대해 알아보기 전에, 간단한 알고리즘부터 살펴보자. # 1 범위 내의 모든 정수들 가지고 그보다 작은 수들로 나눠본다. 누구나 상상할 수 있고, 가장 간단한 방법. 범위 내의 모든 수를 가지고 소수인지를 판별하는 방법이다. 소스코드로 나타내면 이러하다. template bool Check(T input) { for (int i = 2; i 2024. 2. 11.