2020. 10. 4. 22:41ㆍProject/Game
프로젝트 명 : Harbour Simulation - 5민랩
개발 기간 : 2020.05.19 - 2020.07.22
개발 환경 : Unity
개발 인원 : 3명
주요 역할 :
프로그래밍 - 항구 시뮬레이션 환경 구축, 각 장비들(크레인, 컨테이너, 배)의 액션 구현, Loading/Discharging 구현, 항구 모니터링 UI 구현
사전 조사 - 항구 시스템에 대한 이해를 위해 항만에서 일어나는 일에 대한 학습과 각 장비에 대한 선행학습을 진행.
게임 설명 : #3D #시뮬레이션
실제 항만에서 일어나는 일들을 유니티로 구현하는 것과 모니터링 할 수 있는 UI를 만드는 것이 프로젝트의 목표.
Simulation
배가 항만으로 들어오고 컨테이너들을 Loading / Discharging 하는 일들을 반복하는 것이 주된 업무이다.
항만의 구성요소는 배(Vessel) / 크레인(배와 항만을 이어주는 크레인(Gantry Crane)과 컨테이너 운반 차량과 항만을 이어주는 크레인(Transfer Crane) 두가지가 있다)/ 운반 차량(LTV) / 컨테이너가 있다.
Loading : 배에 컨테이너를 싣는 업무. 항만에 있는 컨테이너를 배로 옮기는 작업이다.
컨테이너의 이동은 Yard라고 불리는 항만의 컨테이너 저장소에서 Transfer Crane(TC) 를 통하여 운반차량으로 이동시킨 후 차량이 이동하여 Gantry Crane(GC)를 통하여 배에 정해진 위치에 컨테이너를 내려놓는다.
Discharging : Yard 에 컨테이너를 옮기는 업무. 배에 있는 컨테이너를 항만으로 옮기는 작업이다.
컨테이너의 이동은 배에서 GC를 통하여 운반차량으로 이동시킨 후 차량이 이동하여 TC를 통해 정해진 위치의 Yard에 컨테이너를 내려놓는다.
Monitoring
항만에서 일어나는 일들을 모니터링 할수 있는 창을 구현하는 것이 목표이다.
Loading / Discharging 을 Job 이라고 칭하는데 지금까지 일어났던 모든 Job들에 할당된 장비들의 목록을 나열하고 현재 항만에 있는 모든 장비들을 검색할 수 있어야하며 각 장비들의 상태를 볼 수 있어야한다.
그 외에도 장비를 클릭했을 시 장비에 대한 정보와 장비마다의 카메라 뷰를 제시해야 한다.(예를 들면 운반 차량을 클릭했을 경우 차량의 1인칭 시점을 제공하여야 한다.)
배운 점
- 화면에 맞게 UI크기를 조정할 수 있게 설계하는 것이 중요하다는 것을 배웠다. 특히나 PC 플랫폼에서는 유저가 자유롭게 창을 조절할 수 있기 때문에 필수적인 요소이다.
- 프로그램이 커지면 커질수록 리소스 관리의 중요성이 커진다. LOD를 활용하여 최대한 렌더링할 때의 자원을 아끼고, 프레임 관리도 신경써야 하는 부분이다.
- 여러가지 오브젝트들이 상호작용할 때 Unity의 Event 시스템을 잘 활용한다면 깔끔하게 코드를 작성할 수 있다.
- 하나의 오브젝트가 여러 개의 동작을 연속적으로 취할 때 IEnumerator 형식을 사용하여 yield return 을 적재적소에 사용하면 코드의 가독성을 높여주고 깔끔한 코드를 작성할 수 있다.
- 다른 스크립트에서 같은 변수나 메서드를 사용한다면, 부모 클래스를 이용하면 코드 라인 수를 줄일 수 있고 스크립트 관리가 더욱 편해진다.
Github : github.com/jaksalko/harbour_simulation
Youtube : youtu.be/GHhju0aS9RU
'Project > Game' 카테고리의 다른 글
Rifle - Shooting Game (0) | 2020.05.17 |
---|---|
Train Game - Runner Game (0) | 2020.05.17 |
Ping! Peng! Boong! - Puzzle Game (0) | 2020.05.17 |
나는 회사왕! - Clicker Game , 키우기 게임 (0) | 2020.05.17 |
Island - Story Game (0) | 2020.05.17 |