BEST
게임 개발

/

게임 프로그래밍

유니티(Unity)로 시작하는 게임개발: Part 3. 슈팅게임 개발

유니티의 기본적인 기능 및 메모리 동작을 이해할 수 있으며, 프로토타입이 아닌 실제 한 사이클이 돌아가는 게임을 만드는 방법을 배울 수 있습니다.

(4.9) 수강평 19

수강생 550

Thumbnail

초급자를 위해 준비한
[게임 프로그래밍] 강의입니다.

이런 걸
배워요!

  • 유니티 동작의 메모리 구조

  • 유니티로 슈팅게임을 만드는 방법

  • 프로토타입이 아닌 실제 게임을 만드는 방법

비전공자 & 입문자를 위한 게임 개발!
유니티 + C#의 구조와 원리를 함께 이해해보세요. 

유데브앱 / UdevApp / udevapp

강의 소개 📝

유니티(Unity)의 C#을 배우고 나서 게임을 만들고 싶은 입문자들에게 가장 필요한 강의가 무엇일지 생각해 보았습니다. 바로 유니티의 내부적인 기능들과 실제 코드와 메모리가 어떤 관계를 이루는 것을 아는 것입니다. 큐브를 하나 만들어도 캐릭터를 하나 만들어도 실제 내부적인 메모리 동작을 모르면 더 이상 게임 제작은 불가능합니다. 그냥 공이 통통 튀는 프로젝트만 만들 수 있을 뿐입니다. 그러한 문제를 해결하기 위해 이 강좌를 만들었습니다.

그래서 다른 게임 강좌와 다르게 유니티로 게임을 만드는 도중에 유니티 기능과 C# 문법을 같이 학습합니다. 기능의 사용에만 초점을 맞추고 있지 않습니다. 기능 하나가 내부적으로 내가 만드는 코드와 어떤 관계를 맺는지 실제 클래스와 인스턴스와 메모리가 유니티 기능과 내 코드 사이에서 어떻게 동작하는지를 설명합니다. 굳이 어려운 문법을 사용하지 않아도 게임 제작은 가능합니다. 딜리게이트나 인터페이스 다중상속이 가능한 캐릭터 클래스를 만드는 작업은 여러 게임을 쉽게 제작하고 올려보고 나서 해야 할 일입니다.

• 계층뷰에 있는 게임오브젝트의 메모리가 어떻게 존재하는지 
• 왜 드래그를 해서 오브젝트를 연결하는지 
• 왜 Time.deltaTime을 벡터에 곱하는지 
• 왜 게임 프로그래밍에서 벡터3이 있는지 
• 리지드바디와 충돌체가 왜 나뉘어 있는지에 대한 원리와 이유에 대해서 설명합니다.

이런 내용들은 다른 강의에서는 1분 정도 설명하고 끝내는 내용입니다. 그 강의는 실제 개발자를 위한 강의이기 때문입니다. 하지만 게임 개발에 입문하는 비전공자, 비전문가에게는 다른 강의가 필요합니다. 왜 유니티에 이러한 기능이 있는지에 대해 이해해야 합니다. 

그래서 이 강의에서는 게임제작 외에 유니티의 기능을 C#과 같이 이해하고 실습하는 내용이 강의 분량의 절반을 넘어갑니다. 게임은 중반 이후에 나옵니다. 원리를 알기 전까지 프로그래밍을 작성할 수 없기 때문입니다. 게임 개발만 있는 강의를 배울 수 있는 사람들은 실제 개발자들 뿐입니다. 

비전공자들과 입문자들이 어떻게 게임을 만들 수 있을지에 대한 내용을 알려드리기 위해 이 강의를 제작했습니다.

왜 배워야 하는지 ✒️

본 강의는 게임개발에 대한 내용을 비전공자들과 입문자들의 입장에서 어떻게 접근할 수 있는지 알려주는 강의입니다. 그렇다고 쉽지만은 않습니다. 예를 들어 모노비헤이버에 있는 게임오브젝트 변수가 동작하는 원리 같은 것을 설명하기 위해 소유참조, 역참조, 상호참조의 예제를 설명하고 나서 게임오브젝트 변수의 동작 원리를 설명합니다. 비슷한 구조의 작은 예제를 소개하는 것을 보시면 이걸 왜 해야 하는 것일지에 대한 궁금증이 들 수도 있습니다. 하지만 프로그래밍은 컴퓨터의 내부 원리를 이해하고 컴퓨터에 말을 거는 작업입니다. 내 말대로 컴퓨터가 동작하기 위해서는 클래스 바깥으로 빠져나와 저희가 사용할 수 있는 변수와 함수가 어떻게 동작하는지를 알아야 합니다. 다른 사람에게 말을 하기 위해서 다른 사람의 생각을 역지사지하는 것과 똑같습니다.

그리고 그것이 가능해야 디버깅이 가능해집니다. 프로그래밍은 원래 고난과의 싸움입니다. 얼토당토하지 않은 말도 안되는 오류가 나올 수 있습니다. 이러한 문제를 해결하기 위해서는 기초가 필수적입니다.

입문자분들이나 초보자분들의 경우에는 기초 C#(Part.2에 해당하는 내용)을 모르면 이 강의의 이해가 불가능합니다. 하지만 이 강의를 배우고 나서 내가 비슷한 예제를 만들 수 있게 되면 실제 게임을 만드는 두려움이 사라질 것입니다. 

  • 게임을 만들기 전에 원리부터 학습합니다. 원리를 알면 응용이 가능합니다. 이해를 하지 않고 따라하기만 하면 게임을 만들 수 없습니다.
  • 강의당 10분의 학습시간을 넘지 않습니다. (넘는 강의도 있습니다만 넘어도 된다고 생각하기에 그렇게 제작했습니다. 혹시길어서 학습에 방해가 된다고 생각하면 나누거나 다시 찍도록 하겠습니다.)

 

이 강의에서 배우는 것들 ✏️

  • 유니티의 기능을 사용하여 필요한 기능을 추가하는 방법을 배울 수 있습니다.
  • API 문서를 보는 방법을 배울 수 있습니다.
  • 유니티의 기능이 내부적으로 어떻게 동작하는지를 설명합니다. 
  • 작성하는 코드의 메모리와 원리에 대해 설명합니다. 
  • 내가 작성한 코드와 유니티의 기능들에 대한 메모리에 대해 설명합니다.

 

강의 특징 💡 

유니티의 메모리구조를 살펴보면서 문법을 배우고 실제 게임을 개발하는 것을 목표로 합니다. 간단한 슈팅게임이지만 실제 스토어에까지 올리는 작업을 실행할 것입니다.

이 강의를 듣고 나면 간단한 게임을 개발할 수 있게 됩니다. 다만 입문자의 경우 길게 잡고 하루 30분씩 꼭 연습이 필요합니다. 유니티에 접근하는 초보자들이나 비전공자들에게 큰 도움이 될 것으로 생각합니다.

현재 강의는 약 8시간 분량으로 짧습니다만 강의수가 100개 가까이 됩니다. (계속 추가예정)
짧은 강의로 짧게 공부하고 연습하면 하루 30분으로 빠르면 30일 길면 3개월에 유니티 C# 프로그래밍의 기초를 학습할수 있습니다. 하지만 비전공자들은 학습을 느리게 하는 것이 좋습니다. 프로그래밍은 언어이기 때문에 장기기억으로 쌓아야 자신이 직접 프로그래밍을 할 수 있습니다. 

  

섹션마다 간단한 소개 📖

섹션 0. C# 복습하기

  • 전공자가 유니티에 접근하기 위해 유니티를 알아보고 C#을 복습하는 단계입니다.
  • 기존 학습자의 경우 건너뛰셔도 좋지만 복습 차원에서 보시는 것을 추천합니다.
  • 특히 객체지향 1과 객체지향 2의 강의는 꼭 들어주세요.

섹션 1. 게임개발과 유니티

  • 실제 유니티의 기능들이 어떻게 메모리가 동작하는지를 살펴봅니다.
  • 게임오브젝트와 컴포넌트의 관계를 알아보고 실제 내부동작을 테스트합니다.
  • 내부적으로 어떻게 메모리에서 동작하는지 알면 프로그래밍에 대한 두려움이 사라집니다.

섹션 2. 클래스의 포함관계(기존 예정이 없던 강의로 추가하였습니다)

  • 클래스는 같은 클래스라도 포함관계를 가집니다. 
  • 클래스중에 누가 메인이고 누가 서브인지를 알면 둘 다를 확실하게 관리할 수 있습니다.
  • 소유참조와 역참조, 상호참조를 배우고 이것이 유니티에서 어떻게 동작하는지 살펴봅니다.
  • 유니티의 API를 보는 법을 학습합니다. 익숙해지면 API만 보고도 개발이 가능합니다.

섹션 3. 기본문법과 유니티

  • C# 문법이 유니티에서 어떻게 사용되고 어떤식으로 제공되는지 알아야 합니다. 
  • 스태틱과 일반화 프로그래밍을 유니티 관점에서 알아봅니다. 
  • 키보드의 입력과 마우스의 입력을 알아봅니다.
  • 문법이 유니티에서 사용되는 모습을 이해하면 유니티 클래스를 보는 관점이 달라집니다.

섹션 4. 물체의 이동

  • 벡터3가 그냥 벡터3가 아닙니다. 사용되는 곳마다 위치, 방향, 속도, 크기, 각도 등의 다른 의미로 사용됩니다. 벡터3가 그냥 벡터라고 생각하면 안됩니다.
  • 물체의 이동과 속도를 아주 쉽게 알려드립니다. (왜 속도라는 것이 있는지를 고민하였습니다.)
  • 왜 이동 시에 벡터를 곱하고 시간을 곱하고 더하는 과정을 거치는지 명확하게 알려드립니다.

섹션 5. 물체의 관리와 충돌

  • 충돌체와 강체를 적용하기가 왜 까다로운지를 설명합니다. 
  • 소유하고 있는 물체를 어떻게 해야 관리할 수 있는지를 설명합니다.
  • 유니티에서 적용한 내용을 실제 코드로 동작시키면 어떻게 되는지를 비교하여 유니티의 내부구조를 알아봅니다.

섹션 6. 슈팅게임 프로토타입 만들기 (기존 예정에 없던 강의로 난이도 조정을 위해 추가하였습니다)

  • 프로토타입을 만들고 실제 게임을 만들기 위해 준비합니다. 
  • 해상도를 하나로 고정하고 픽셀퍼유닛과 카메라 사이즈를 정의하는 방법을 알아봅니다.
  • 캐릭터와 적과 배경을 움직이고 간단한 프로토타입의 게임을 개발합니다.

섹션 7. 슈팅게임 만들기

  • 실제로 싸우고 모으고 업그레이드하여 간단한 성장과 적의 출현을 구현하는 "한 싸이클"이 있는 게임을 제작합니다.
  • 캐릭터의 업그레이드를 적용합니다.
  • 적 캐릭터가 스테이지에 따라 강해지는 내용을 추가합니다.
  • 보스 캐릭터를 적용합니다. 

섹션 8. 게임의 UI

  • 플레이하는 것만이 게임이 아닙니다. UI는 프로그래밍의 다른 한 축입니다. 
  • 캔버스의 좌표계를 알고 각각의 UI를 추가합니다. 
  • 게임의 화면을 구성합니다.

섹션 9. 스토어 업로드

  • 게임 외에 어떤 기능이 필요한지 알아보고 구현합니다.
  • 광고 기능을 게임에 연동합니다. 
  • 스토어에 업로드 전 준비사항과 주의점을 알아봅니다.

 

여기서 다루는 툴 🧰 

이 강의에서는 학습을 하시고 꼭 실습을 하시는 것이 좋습니다. 특히 비전공자는 평소에 프로그래밍으로 일을 하지 않기 때문에 그냥 보기만 해서는 절대 프로그래밍을 습득할 수 없습니다.
이해를 하시고 나서 꼭 실습을 해야 합니다. 

 

예상 질문 Q&A 🙋🏻‍♂️ 

Q. 비전공자도 들을 수 있나요?
A. 네, 비전공자와 전공자 모두를 위한 강의입니다. 단 비전공자나 입문자의 경우 인프런에 있는 선수과목인 Part2 의 C# 프로그래밍 강좌" 를 듣고 오셔야 들으실 수 있습니다. 이 강의의 0장에 있는 C# 복습은 전공자를 위한 내용입니다. 

Q. "슈팅게임 개발 강의"를 배우면 무엇이 좋은가요?
A. 원리를 알아야 응용이 가능합니다. 프로그래밍을 하는 것만이 아닌 오류를 잡을 때도 원리를 알아야 응용을 할 수 있습니다. 프로그래밍을 할 때 오류가 생긴다고 해서 다른 누군가가 문제를 해결해주지 않습니다. 실제 게임을 만들고 한 싸이클을 돌려보면 더 많은 것들을 할 수 있습니다. 

Q. "슈팅게임 개발 강의"를 들으면 어떤 일을 할 수 있나요?
A. 유니티로 게임을 만드는 시작점에 서게 될 수 있습니다.  또한 유니티로 다른 프로그램을 만들때 큰 도움이 됩니다. 원리를 알수 있기 때문에 응용이 가능합니다. 즉 간단한 게임이지만  게임을 만들 수 있는 실력을 가지게 될 수 있습니다. 또한 실제적으로 업로드 가능한 게임을 만들어 업로드까지 하는 실무적인 내용까지도 포함하기에 스마트폰 게임개발에 필요한 실제적인 팁을 얻을 수 있습니다.

Q. 이 강의만의 특별한 장점이 있을까요?
A. 처음 볼 때는 어려울 수 있습니다. 하지만 그 단계를 넘어가서 중반 이상 가게 되면 원리에 대한 개념이 생깁니다. 내부 구조를 알면 컴퓨터가 어떻게 돌아가는지 예상할 수 있습니다. 그렇게 되면 프로그래밍뿐만 아니라 디버그 실력도 향상됩니다. 경력자가 왜 경력자일까요? 디버그를 잘 해서 경력자인 것입니다. 디버그를 잘하는 경력자의 관점을 알려드립니다. 99%를 완성해도 오류가 있으면 그 게임은 성공하기 어렵습니다. 그리고 오류를 해결할 수 없다면 그것만큼 힘든 일이 없습니다. 이런 상황을 예방하기 위해 원리 그리고 메모리에 대한 공부가 필요합니다. 

이전 강의 보기 📼

유니티(Unity)로 시작하는 게임개발:
Part 1. 컴퓨터 구조 입문

비전공자도 쉽게, 컴퓨터가 동작하는 기본 원리를 이해해보세요.
유니티(Unity)로 시작하는 게임개발:
Part 2. C# 프로그래밍 입문

유니티 게임개발의 뼈대를 쌓아주는 첫 C# 프로그래밍!

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 기초 C#을 이제 막 학습하신 분

  • 유니티 오브젝트의 메모리 동작원리가 궁금하신 분

선수 지식,
필요할까요?

  • 구조지향과 관련되는 C# 프로그래밍 언어

  • C# 프로그래밍 Part1

안녕하세요. UDevApp 의 최형선이라고 합니다. 

무엇인가를 만들어낸다는 것은 정말로 행복한 일입니다. 

세상에 나의 제품이 나올 때의 느낌은 스티브잡스가 느낀 그것이나 

여러분들이나 저와 다르지 않다고 생각합니다. 

여러분들에게 그러한 감정을 드리는 사람이 되고 싶습니다. 

네이버카페와 블로그와 유튜브에도 많이 찾아와 주시길 바랍니다.

.

https://cafe.naver.com/ultimategunz(카페바로가기)

http://blog.naver.com/siwoo2406(블로그 바로가기)

https://www.youtube.com/user/ChoiHyungSun/(유튜브 바로가기)

감사합니다. 

커리큘럼

전체

230 ∙ 30시간 21분

수업 자료

가 제공되는 강의입니다.

강의 게시일: 2020년 07월 17일
마지막 업데이트일: 2020년 09월 21일

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!