생각을 정리하기 위한 기법
- 의사 (pseudo) 코드
- 간단한 UML
- 플로우차트
의사코드
특정 프로그래밍 언어가 아닌, 일반적인 언어로 코드를 흉내내어 작성된 코드 (컴파일이 안됨)
한글로 작성해도 무방하다. (가장 익숙한 언어니까···)
ex : 배틀그라운드의 "재장전" 이라는 함수를 의사코드를 이용해서 구현 해 보면
- 총알이 비어있으면 재장전을 시작
- 총기 정보를 테이블에서 가져옴
- 퀵드로우가 적용되어 있는가?
- 대용량탄창이 적용되어 있는가?
- 내가 보유한 총알이 충분한가?
- 장전중에는 발사 금지
- 인벤토리에서 장전한 총알만큼 차감
순서대로 쭉 쓰면 빠진 것을 알 수 있다.
의사코드의 장점
- 필요한 명세표 단순화
- 불필요한 절차 확인 (명확한 구현 부)
- 논리적 검증 및 훈련
- 프로그래머도 확인 가능
- 구현단에서 최소화
(영상 시청)
https://youtu.be/I5cq54MFQCo?si=VLu67AyUUNNIOcqX
UML (Unified modeling language)
다이어그램을 이용해서 소통
개발자간의 의사소통의 불일치를 해소.
글자보다는 그림이 이해하기 편하고, 코드를 모르더라도 개념적으로 접근이 가능하다.
게임 엔진
게임 엔진은 게임을 만들 때 필요한 기초적인 재료와 도구를 모아 놓은 것이다.
음식을 만들 때 만들고자 하는 요리에 알맞는 음식재료와 요리 도구가 필요하듯,
게임을 만들 때도 그 게임을 위해 준비된 재료와 도구가 필요하다.
예전에는 게임을 만들 때마다 그에 맞는 게임 엔진을 만들었다. 그러다가 게임의 퀄리 티가 높아지면서 게임 엔진 개발에 들여야 하는 시간과 비용이 많아졌기에 하나의 게 임 엔진을 만들면 이를 이용해 여러 게임을 만들게 됐다. 그래서 하나의 개발사에서 만 든 게임들이 이름은 다르지만, 그래픽은 대체로 비슷한 느낌을 주는 경우가 많다.
게임 엔진의 시초
존 카맥 - 게임 제작에 필요한 코드 라이브러리와 엔진을 라이선스 혀익으로 공개하거나 판매하는 형태.
언리얼 엔진의 시초가 됨.
게임엔진의 활용은 게임엔진의 발전과 밀접하게 연관되어 있다.
게임 개발환경의 변화
기계어와 고급어의 차이.
사람이 알아들으면 고급어 (C언어)
무슨 말인지 못 알아들으면 기계어 (어셈블리)
당시의 게임개발은 굉장한 하이테크놀로지. 개발자가 없었다.
종류가 80여개 정도 뿐. 게임엔진 종류도 마찬가지.
표준으로 제공하는 그래픽 API가 상용화되면서 DirectX 시대로 접어들어 3D 게임의 시대가 시작됨.
게임 개발환경의 역사
1. 게임엔진의 개념이 생기기 이전 : 어셈블리, C 등의 언어를 이용한 소규모 게임
2. Direct X의 보급과 자체엔진의 시대 : 3D 게임의 시작
3. PC 게임엔진 : 언리얼, 게임브리오, 크라이, 하복 등 PC플랫폼 게임엔진 전성기
4. 멀티플랫폼 엔진 : 유니티, 언리얼, 디폴드 등 소규모 인디엔진의 등장
상용화에 성공하고, 잘 된 엔진 : Valve - 소스엔진 (ex : 마영전), Unreal
엔진이 발전하면서 게임을 만들기 쉬워짐.
이에 따라 게임 개발을 하는 사람들이 많이 늘어나게 되었다.
로스트아크 개발진 300여명.
기획은 기획만 할까?
엔진이 쉬워지면서 복합적인, 확장된 기획이 많이 생겨나게 되었다.
- 사운드 기획 : 리스트업, 발주, 외주 작업자와 소통, 엔진에서 셋업.
비주얼 스크립트의 등장
Visual Scripting은 프로그래밍 진입 장벽을 낮추기 위해 고안된 도구이다.
코드보다 더 시각적이어서 이해하는 것이 쉬우며 아티스트, 애니메이터, 게임 디자이너 및 다른 사람들도 논리의 흐름을 쉽고 빠르게 파악할 수 있다.
가장 일반적인 사용 케이스
- 엔진을 배우고 싶지만 아직 프로그래밍 경험이 전혀 없는 게임 개발 입문자
- 프로그래밍에 대한 경험이 없고 간단한 프로토타입이나 게임을 만들고 싶어하는 아티스트와 게임 디자이너
- 팀으로 일하면서 아티스트나 게임 디자이너에게 게임 논리의 일부를 주어 그들의 작업량을 줄이기 원하는 프로그래머
비주얼 스크립팅의 등장으로 기존의 텍스트 코딩과는 달리 시각적인 기능구현을 지원함으로, 프로그래밍 언어가 익숙하지않는 이들을 포함하여 모든 연령층이 보다 쉽게 프로그래밍 할 수 있는 환경을 제공한다.
교육용으로 개발된 "스크래치"와 "엔트리"의 보급을 기점으로 대중화된 비주얼 스크립팅은 게임엔진의 보다 쉽고빠르게 개발하고자 하는 개념과 동일한 방향성을 제시한다.
비주얼스크립팅을 위해서는 기획자도 논리적인 영역이 필요하다.
렌더링 파이프라인
언리얼, 유니티의 좌표계
- X축 수평, Y축 높이, Z축 깊이 (엄지는 Y, 검지는 Z, 중지는 X) 방식이 데카르트 좌표계 (왼손 좌표계)
- 3D상에서의 차원, 회전, 위치 등도 이 방식으로 표현 가능하다.
- 다음과 같은 방식으로 좌표 정보를 전달한다. (3, 5, 3)
렌더링 파이프라인
가상의 3차원 공간(게임의 공간)을 2차원(모니터)으로 표현하기위해 원근 개념을 도입하여 화면에 출력하는 일련의 과정
- 3차원을 2차원으로 표현하기 위한 과정
- 효율적인 성능을 위한 최적화 과정
- 총 9가지의 단계를 거치며, 계산
1. 모델 좌표 변환 (로컬, 월드)
2. 뷰 스페이스 변환
3. 은면 제거
4. 라이트 적용 (광원)
5. 클리핑 - 보이지 않는 구간들은 삭제
6. 투영 (원근)
7. 동차공간 (뷰포트 변환)
8. 화면 맵핑 (레스터라이즈)
단순한 직선을 그리려면?
Bresenham 선 그리기 알고리즘
- 소수점 계산 없이 정수의 더하기 연산과 시프트 연산만으로 처리 (속도 빠름)
- 정수 단위의 픽셀에 그려지기 때문에 정수연산만으로 가능
- 현재 대부분의 출력 시스템에서 선을 그릴 때 Bresenham 알고리즘이나 이를 변형한 알고리즘을 사용하고 있음
언리얼 설치
언리얼 홈페이지:https://www.unrealengine.com/ko/
언리얼 엔진 | 가장 강력한 리얼타임 3D 제작 플랫폼
언리얼 엔진은 게임, 시뮬레이션, 시각화의 디자인 및 개발에 사용되는 통합 크리에이터용 툴세트입니다.
www.unrealengine.com
- 언리얼 계정생성
– 에픽런쳐 설치 & 실행
다음 수업 안내
3D게임을 만들기 위한 수학
- 파이썬을 이용한 간단한 코딩 (변수와 반복문,조건문)
'대학생활 > 수업' 카테고리의 다른 글
게임그래픽프로그래밍심화 3주차 - 그래픽스 API 초기화 및 렌더링 (0) | 2023.09.11 |
---|---|
게임배경음악과효과음 2주차 - 게임 사운드 기획 (0) | 2023.09.07 |
레벨디자인심화 2주차 - 영화를 이용한 게임 플레이 (1) | 2023.09.07 |
리얼타임엔진 2주차 - 시작해요 UEFN (0) | 2023.09.05 |
게임인공지능 2주차 - Design Pattern, 전략 디자인 패턴, 옵저버 패턴, 데코레이터 패턴 (1) | 2023.09.05 |