반응형

 

 

 

 

※ 해당 프로젝트는 3D 기능파악 및 최적화에 중점을 둔 프로젝트입니다.

 

 

 

 

제작기간

- 총 2일 (게임 제작 1일, 최적화 1일)

 

 

 

구현 내용

- UI

  • SafeArea를 적용하여 펀치홀 기종에 UI가 겹치지 않도록 조정
  • 커스텀 버튼을 구현하여 적용

- Game

  • 쉐이더(투명화, 툰)를 적용
  • 싱글톤(Manager class) 디자인 패턴 적용

 

 

 

최적화(배칭)

- UI

  • Sprite atlas 사용

- Game

  • Static batching으로 Batches를 줄임

 

 

 

Batches 수치 변화

※ 위 Batches의 수치는 평균값을 찍은것으로 두더지 출몰 수에따라 ±10정도 변경된다.

- 툰 쉐이더가 멀티패스를 사용하고 있어서 이 부분을 염두해두고 최대한 배칭작업을 진행했다.

- 처음에는 이 프로젝트도 Dynamic batching으로 배칭 처리를 하려고 배경에 구멍을 뚫기 위해 사용한 메쉬를 Sphere에서 Cylinder로 변경하여 배칭을 시도해봤지만, z-fighting 문제로 배칭처리가 되지않았다.

- 위의 문제도 있고, 두더지는 Skinned Mesh Renderer 컴포넌트를 갖고있어서 Dynamic batching 기능이 무의미하다고 판단함.

- 최종적으로 구멍 게임 오브젝트들은 움직이는 오브젝트들이 아니니 Static batching으로 변경하여 배칭처리를 했다.

 

 

 

 

 

반응형

'Game > Personal development' 카테고리의 다른 글

[Unity] 미로 게임 제작  (0) 2022.04.28
[Unity] 모바일 전략 시뮬레이션  (0) 2022.04.16
[WIN API] 서커스 찰리 게임  (0) 2022.02.05
[WIN API] 카드 맞추기 게임  (0) 2022.01.30
산성비 게임 제작 (C++)  (0) 2022.01.23
반응형

 

 

※해당 프로젝트는 3D 기능파악 및 최적화에 중점을 둔 프로젝트입니다.

 

 

 

 

제작기간

- 총 2일 (게임 제작 1일, 최적화 1일)

 

 

 

구현 내용

- UI

  • SafeArea를 적용하여 펀치홀 기종에 UI가 겹치지 않도록 조정
  • 커스텀 버튼을 구현하여 적용

- Game

  • 미로 생성 알고리즘 적용
  • 싱글톤(Manager class) 디자인 패턴 적용

 

 

 

최적화(배칭)

- UI

  • Sprite atlas 사용

- Game

  • Dynamic batching으로 Batches를 줄임
  • 캐릭터의 그림자를 Fake shadow로 대체
  • 카메라의 절두체 수치를 최대한 좁혀서 렌더링을 줄이고 절두체에 잘리는 끝부분은 Fog로 가려줘서 어색함을 줄임

 

 

 

Batches 수치 변화

- UI에서 2, 미로(벽, 천장, 바닥)에서 3, FakeShadow에서 1, 나머지는 유니티짱 모델에서 발생한다.

- 이번 프로젝트에서는 맵이 고정이 아닌 동적 오브젝트들이기 때문에 Dynamic batching을 사용해서 배칭처리를 했다.

 

 

 

 

 

반응형
반응형

 

 

 

 

 

 

 

 

 

제작기간

- 약 8주

 

 

 

구현내용

  • UI

- Safe area를 활용하여 펀치홀(노치) 기종에 UI가 겹치지 않도록 조정

- 커스텀 버튼, 슬라이더 구현하여 적용

  • Game

- 제스처 기능(카메라 이동, 줌) 적용

- A* 알고리즘 적용 (OpenList에 Heap 적용)

- 싱글톤(Manager class), FSM(Unit) 디자인패턴 적용

  • Data

- Player data : JsonUtility를 사용해 저장

- Game data(보상, 유닛 레벨, 능력치 등) : 엑셀로 테이블을 만들어 CSV파일로 관리

- Encryption : JSON과 CSV 등 모든 데이터를 라인달(AES) 암호화를 통해 암호화, 복호화하여 저장하고 불러온다

 

 

 

최적화

- SpriteAtals를 활용하여 Batch 줄임

- A* 알고리즘에서 OpenList와 CloseList에 발생하는 GC로 인해 프레임 드랍 발생하여 각 리스트에서 발생하는 할당을 줄여서 프레임 드랍 완화

 

 

 

 

 

반응형

'Game > Personal development' 카테고리의 다른 글

[Unity] 두더지 잡기 게임 제작  (0) 2022.04.28
[Unity] 미로 게임 제작  (0) 2022.04.28
[WIN API] 서커스 찰리 게임  (0) 2022.02.05
[WIN API] 카드 맞추기 게임  (0) 2022.01.30
산성비 게임 제작 (C++)  (0) 2022.01.23
반응형

 

 

 

 

 

 

 

 

제작 기간

- 총 15일

 

 

 

게임 클래스 구성

 

 

 

 

GameManager

- 싱글톤 클래스이다. (wWinMain 함수에서 반복문을 구성해 해당 클래스의 Update함수를 호출한다.)

- 클래스 멤버는 MainScene, GameScene을 가지고 있고, 화면을 그리기 위한 HDC, HWND를 멤버로 가지고 있다.

- Update 함수에서 메인화면, 게임화면의 로직을 호출한다.

 

 

 

BitmapManager

- 싱글톤 클래스이다.

- Bitmap배열의 vector를 멤버로 가지고 있다.

- 게임 리소스를 로드해서 저장하고 관리한다.

 

 

 

MainScene

- 메인화면을 관리하는 클래스이다.

- 각 메뉴 및 애니메이션(별 전광판)을 표현하기 위한 Bitmap 포인터(배열)와 좌표 구조체를 멤버로 가지고있다.

- 메뉴를 선택할 수 있고, deltaTime을 적용해 타이틀에서 별 전광판 애니메이션을 재생한다.

 

 

 

GameScene

- 게임화면을 관리하는 클래스이다.

- 상단 UI(GameUI), 배경(Background), 장애물(Ring, Lamp, Rostrum)을 관리하는 클래스를 멤버로 가지고 있다.

- Player의 상태를 구분(Play, Die, Clear)해서 다른 처리를 하도록 한다.

- deltaTime을 이용하여 일정 시간마다 점수, 장애물 세팅을 한다.

 

 

 

Bitmap

- 그래픽 리소스의 크기를 멤버로 가지고있다.

- backDC, 좌표를 오버로딩하여 그리는 함수들이 정의되어있다.

 

 

 

Player

- 키 입력을 받아서 캐릭터의 좌표를 이동시킨 뒤, 애니메이션을 그린다.

- 각 종 장애물의 Collider hit 판정을 위한 Rect 반환 함수를 가지고 있다.

 

 

 

Ring(BigRing, SmallRing), Lamp, Cash, Rostrum

- Ring의 경우 BigRing, SmallRing에 상속을 한 뒤, GameScene에서 업캐스팅으로 사용한다.

- Player에서 Collider rect를 받아와 매 프레임 Hit 체크를 해서 Player의 상태를 변경한다.

- deltaTime을 이용해 애니메이션을 재생한다.

 

 

 

Background

- 배경을 스크롤링한다.

- 게임 클리어시 배경 애니메이션을 재생한다.

 

 

 

기타

- 더블 버퍼링을 적용하여 화면 깜빡임을 제거했다.

 

 

 

 

 

반응형

'Game > Personal development' 카테고리의 다른 글

[Unity] 미로 게임 제작  (0) 2022.04.28
[Unity] 모바일 전략 시뮬레이션  (0) 2022.04.16
[WIN API] 카드 맞추기 게임  (0) 2022.01.30
산성비 게임 제작 (C++)  (0) 2022.01.23
RPG 게임 제작 (C++)  (0) 2022.01.22
반응형

 

 

 

 

 

 

 

 

제작 기간

- 총 1일

 

 

 

게임 클래스 구성

 

 

 

GameManager

- 싱글톤 클래스이다. (WndProc 함수에서 인스턴스가 호출된다.)

- 클래스 멤버는 BitmapManager, Card를 가지고 있고, 화면을 그리기 위한 HDC, HWND를 멤버로 가지고 있다.

- Update 함수에서 전체 프레임 로직을 호출한다.

 

 

 

BitmapManager

- 클래스 멤버는 Bitmap을 배열로 가지고 있다.

- 비트맵 이미지를 로드해서 Bitmap 객체들에게 인수로 넘겨줘서 초기화한다.

 

 

 

Bitmap

- 비트맵 이미지를 가지고 있다.

- 해당 클래스에서 이미지를 그린다.

 

 

 

Card

- 좌표, 상태(앞, 뒷면), 카드 종류(모양), Bitmap 배열을 멤버로 가지고 있다.

- 카드 세팅, 마우스 클릭 감지, 앞 혹은 뒷면 카드를 그린다.

 

 

 

기타

- 더블 버퍼링을 적용하지 않아서 화면 깜빡임이 발생한다.

- Win API의 기능을 익히기 위한 프로젝트이기 때문에 더블 버퍼링을 적용하지 않음.

 

 

 

 

반응형

'Game > Personal development' 카테고리의 다른 글

[Unity] 모바일 전략 시뮬레이션  (0) 2022.04.16
[WIN API] 서커스 찰리 게임  (0) 2022.02.05
산성비 게임 제작 (C++)  (0) 2022.01.23
RPG 게임 제작 (C++)  (0) 2022.01.22
뱀 게임 제작 (C++)  (0) 2022.01.22

+ Recent posts