공부의 기록/유니티 게임프로그래밍 입문

유니티(Unity) 게임프로그래밍 입문 1일차 수업

파티피플지선 2024. 11. 10. 17:33

■ 교재 : 그림으로 이해하고 만들면서 익히는 유니티 교과서

 
■ 학습 목표 : Unity 기본 활용과 게임 개발 경험하기 
학습 방향성
 - 6주간 교재를 바탕으로 기본 기능을 실습하는 것을 더 많이 할 것
 - "교재는 각자 읽어보고 다 따라 해보세요."
 - C# 책을 따로 더 보는걸 추천함(+직접 써보고 만들어보는게 제일 빠르긴 함)
 - 이론과 기본기 중요
 
■ 게임 개발과 관련한 기본 내용
  1. 게임 개발 규모
    - AAA규모 : 대규모 개발팀(150~200명), 개발 비용(인당 최소 1억), 개발 시간이 큼
    - 캐쥬얼 게임 : 탕탕 특공대 예시로 → 이야 이건 AAA에 비하면 쉬워 보이는데? → ㅋ 아닐걸 ㅋ

      ㄴ 탕탕특공대를 예로 들면 한 화면에 무수히 많은 오브젝트를 for 문 같은 걸로 하면 저사양으로 게임 돌릴 때 망함

      ㄴ UI 배치도 마찬가지로 고민 요소 : 누군가 처음 해보는 게임 장르 일 때 UI를 눈에 띄게 하려면 어케 해야하나?

      ㄴ 이벤트나 보상을 기획하고 구현하는 방법도 고민해야 하고!

  2. 게임을 구성하는 요소
    인터랙티브 : UI, 캐릭터가 내 입력에 반응하며 상호작용 함 (단, 모바일 게임에서는 자동사냥 등 지켜보기 형태로 변형)

    비주얼 : 일반적으로 장르나 컨셉을 표현하고 유저에게 선택 받을 때 중요함

    사운드 : 중요하다고 여겨지지 않지만 게임과 관련해 가장 오래 남는 기억,

                  클릭음, 배경음악, 기타 여러 소리는 인터랙티브 형성에 상당한 영향을 미침

    조작감 : 마우스, 키보드, 터치 등 사용하는 기기에 따른 조작 느낌이 다름

    최적화 : 엄청 멋지고 쩌는 게임이어도 멈춤이 잦으면 하지 않게 되므로 중요한 요소임 -> 개발 초기 단계부터 고려해야

    재미 : 재미 있는 게임이면 완성도는 나중에 높여가면 된다. 재미가 없으면 유저가 손을 대지 않는다.
  3. 이론적인 게임 개발 절차
     회사 결정권자들이 컨셉과 장르 선택 후 기획자들이 기획 시작

       ※ 이때 기획자들이 만든 텍스트만으로 어느 정도 게임의 성패 여부가 판단 가능해야 기획자가 실력있다 할 수 있음

       ※ 기획자들이 개쩌는걸 기획해도 결정권자들이나 마케팅 부서의 안목이 없는 등의 이유로 반려 드롭되는 경우도 다수
     → 구체 기획/ 일정 기획 후 개발 시작
     → 기반 작업 /리소스 제작(개발 시작되면서 기본적인 UI도 거의 같이 시작됨)
     → 기획 구체화 작업은 계속 같이 수반
     → QA 테스트는 할 수 있으면 좋음

       ※ QA만큼 다양한 게임을 많이 해보거나 개발된 게임을 많이 한 사람이 없음 → 버그나 게임 이해도가 높은 사람들임
     → 마케팅(유저가 출시 여부 알 수 있게 홍보) 
     → 런칭(물론 만들었다고 런칭인건 아님) 
     → 라이브 서비스(런칭해도 재방문, 유입률, 잔존률 등의 지표를 봤을 때 수익 유지가 안 되면 서비스 종료 될 수도)
 
■ 게임 개발자의 언어와 마인드

개발자들이 사용하는 언어와 유저들이 사용하는 언어 자체가 다르기도 하고, 게임을 볼 때의 마인드도 달라야 한다.

와 게임 개쩐다 아 재밌네 끝 (X)이걸 어떻게 구현하지? 어떻게 만들었지? 이건 어떻게 하는게 나을텐데 까지 확장해야
ex ) 와 캐릭터 복장 어케 구현한거지? 누가 애니메이션을 만들어야 하려나? 이 화면에서 용을 뷰하는 카메라 워킹은? 배경의 원경에 보이는 건물의 폴리곤을 구체적으로 할 필요 없겠는데? 불 이펙트는 통으로 된 하나짜리인가 원기둥 타원 등 몇 개가 곂친걸까?  이런 것들을 개발자 입장에서 고민해야 함
 
■ 유니티와 언리얼엔진

유니티 언리얼 엔진
게임 개발에도 사용되고 기타 산업에서도 많이 사용됨
일정 금액 이상의 매출이 없으면 무료, 있으면 비용 지불하는 정책
1인 or 소수 그룹 개발 가능 혼자서 모든 기능을 다 못 다룸
C# : 윈도우랑 잘 맞는 언어 사용 C++ : 더 어렵고 빠른 언어 사용

유니티와 언리얼 엔진 말고도 다른 개발 엔진들도 있지만 우리나라에서 가장 많이 쓰는건 이 두 개

 

 

■ 유니티 도큐먼트( Unity 매뉴얼 )

유니티 도큐먼트에 있는 내용은 유니티 엔진이 제공하는 서비스인데,

기능을 못 찾겠으면 그냥 구글에서 유니티 어쩌구 검색하면 제일 상단 검색 결과로 도튜먼트 링크 나옴..

 

 


■ 유니티 설치와 허브 기본 화면

Installs > Install Editor > (Official releases/Pre-releases에 없으면)Archive > download archive > 필요한 버전 찾아 설치 

내 프로젝트 따라 프로젝트에 맞는 여러 버전의 유니티를 설치할 수 있음

우리가 쓸 버전은 2023.2.4f1이어서 download archive 가서 2023년도에서 찾아서 다운로드 함

 

LTS의 경우는 Long Term Service로 장기적으로 제공할 예정으로 만든 서비스들이라 뭘로 할지 모르면 이걸로 하는걸 추천하심
Project : 내가 만들 게임 / Installs : 유니티 엔진 버전 설치 / Learn : 3D, 2D 등 게임 만들기 소개용 프로젝트 / Community : 에셋이 공유되는 곳

 

■ 유니티 프로젝트 시작하기

Unity Hub > Projects > New project > Editor version, template, project name, location, cloud connect > create project

템플릿에 따라 빌트인 2D, 3D 빌트인 렌더 파이프라인이 정해진 템플릿도 있고, 유니버설 렌더 파이프라인을 직접 프로그래밍할 수 있는 템플릿도 있고, 모바일이나 VR, AR 게임을 만들기 위한 템플릿도 존재. 우리는 지금 유니티 클라우드까지는 사용하지 않는다!

 

■ 유니티 프로젝트 화면과 주요 기본 기능 : 정육면체 만들기

용어 설명
Hierarchy Scene에 배치한 오브젝트 이름이 목록으로 나타나는 창
Scene 눈으로 보는 게임 월드 작업 화면을 보여주는 창
Game 실제 게임을 실행했을 때 플레이어 입장에서의 화면을 보여주는 창
Inspector 하이어라키에 있는 오브젝트들의 상세 사양을 나타내는 창(inspector : 탐정처럼 상세하게 분석해놓음)
Project 본 프로젝트와 관련된 에셋과 스크립트, 패키지 등의 리소스를 관리하는 창
Console 스크립트의 오류를 확인할 수 있는 창

 

■ Scene 오브젝트 기본 조작


■ 기본 스크립트 연습 : Console 창에서 Debug.Log()명령어를 써서 코드 확인 가능

int보다 float가 값 형식이 더 범위가 커서 float로 계산 된 것을 int로 출력하려면 오류가 나거나, int 형변환 하여 값 로스가 있다
조건문 : a라는 정수형 변수에 입력된 숫자가 '10보다 크면' → 'High', 아니면 '10보다 작으면' → 'Low', 아니면 'Ten'을 출력
반복문 : "Number is 어쩌구" 의 어쩌구 자리에 0~9까지 숫자가 들어간 문장이 반복됨
조건문과 반복문을 함께 사용했는데 이런 식으로 코딩 습관을 들이면 나중에 아래처럼 절대로 못 간다하셨음
이 방식으로 코딩하는게 낫다고 하심
아 오타.... ㅠㅠ
함수 이름을 직접 넣어도 됨

 

클래스 함수를 이용하는 이유는 이해했으나 클래스 함수는 이해를 못함

 

클래스 선언해서 하는거라는데 열심히 따라 쳤는데 오류나서 공부 다시 해야함 ㅠㅠ

 

 

■ 오늘의 과제
 ① 교재 맨 처음부터 읽고 따라하기
 ② C# 책 처음부터 읽고 따라하기
 ③ 게임 유료탬 사보기(?)