Top

유니티 2D 게임 개발 [유니티와 C#으로 시작하는 인디 게임 개발]

  • 원서명Developing 2D Games with Unity: Independent Game Programming with C# (ISBN 9781484237717)
  • 지은이재레드 할펀(Jared Halpern)
  • 옮긴이김홍중
  • ISBN : 9791161754130
  • 30,000원
  • 2020년 04월 29일 펴냄
  • 페이퍼백 | 396쪽 | 188*235mm
  • 시리즈 : 게임 개발 프로그래밍

책 소개

소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(https://github.com/AcornPublishing/2d-unity-game)

요약

유니티와 C# 언어를 사용해서 2D 게임을 개발하는 방법을 알려준다. 유니티와 다른 게임 엔진 비교, 유니티 설치 방법, 에디터 기능 소개, 스프라이트, 캐릭터 애니메이션, 타일, 타일맵, 충돌 판정, 인벤토리, 디자인 패턴, 코루틴, 간단한 AI 등 다양한 주제를 다룬다. 그리고 예제를 통해 간단한 탑다운 방식의 2D RPG 게임을 만들어가는 과정을 보여준다. 특히 초보 게임 개발자에게 유용한 내용이 가득한 책으로 말미에는 초보 개발자가 참고할 만한 사이트도 함께 소개한다.

이 책의 대상 독자

유니티를 사용해서 비디오 게임을 만드는 데 관심이 있는 프로그래머를 대상으로 한다. 이 책을 통해 유니티 프로그램을 처음 접하는 것은 추천하지 않는다.
이 책에서 사용하는 프로그래밍 언어는 C#이다. 이 책에서 C# 언어의 기초를 다루지는 않지만, C# 언어의 문법은 널리 쓰이는 다른 프로그래밍 언어와 비슷하다. 자바 같은 언어에 익숙하다면 C# 문법도 자연스럽게 이해할 수 있을 것이다. C#과 관련된 설명은 게임을 만들면서 사용한 코드 예제와 함께 수록했다.

상세 이미지

저자/역자 소개

지은이의 말

저자의 비디오 게임 “역사”는 공공도서관에서 “베이직으로 컴퓨터 게임을 만드는 법”과 비슷한 제목의 낡은 책 여러 권을 찾았을 때부터 시작됐다. 책의 코드를 그대로 입력하면 아주 기초적인 어드벤처 게임을 만들 수 있었다. 대학생 시절에는 C++와 다이렉트X를 사용해 스타트렉을 주제로 한 비주얼드 아류작을 만들었다. 그리고 iOS 개발자로서 애플의 SceneKit, SpriteKit 프레임워크를 사용해 가상 애완동물 게임을 만들었다. 유니티 게임 엔진을 만난 순간 지금까지 노력해온 모든 일이 한번에 이뤄졌다. 스프라이트 조각을 파싱하는 코드를 작성하느라 사나흘씩 보내지 않아도 유니티에서 스프라이트 시트를 끌어다 놓고, 버튼을 클릭하면 필요한 작업이 끝났다. 드디어 대부분의 시간을 코드 작성이 아닌 게임 제작에만 집중할 수 있었다.
물론 유니티나 다른 게임 엔진 없이도 멋진 비디오 게임을 만들 수 있다. 하지만 필요 이상으로 긴 시간이 걸린다. 게임 엔진이 알아서 해결해주는 문제를 직접 해결하느라 시간과 노력을 들여야만 한다. 완성까지 몇 년이 걸릴 수도 있다. 어찌어찌 완성할 수도 있겠지만, 사실 게임을 완성하지 못할 가능성이 크다. 경험을 바탕으로 이야기하자면, 유니티를 알기 전에 진행했던 게임 프로젝트 중에 완료한 프로젝트는 몇 개 없다.
테디 루스벨트는 자신의 자서전에서 “지금 바로 여기서 네 능력으로 할 수 있는 일을 하라”라고 했다. 전적으로 동의한다. 또 아무리 혼자 열심히 해도 항상 목표에 도달할 수는 없다고 믿는다. 흔히 성공이란 활용의 문제라 할 수 있다. 자신이 지닌 자원을 상황에 따라 가장 큰 효과를 볼 수 있는 방식으로 활용해야 한다. 시간을 효율적으로 활용하려면 생산성을 높일 수 있는 방법을 찾아야 한다. 유니티가 그런 방법의 하나다. 유니티를 사용하면 밤, 주말, 점심시간 30분 등의 시간을 게임 개발에 활용할 수 있다. 그렇게 시간을 최대한 활용하면 게임을 완성할 가능성이 더 커진다.
이 책을 쓰기 시작할 때 유니티를 처음 배우는 사람의 입장에서 읽고 싶은 책을 만들고 싶었다. 실제로도 그랬으면 좋겠다. 이 책을 통해 유니티로 비디오 게임을 만들 때 필요한 기본적인 기술을 배워서 게임 역사에 자신만의 흔적을 남길 수 있길 바란다.

지은이 소개

재레드 할펀

컴퓨터 과학을 전공한 뒤 12년 넘게 다양한 방면의 실무 경험을 쌓아 왔다. 최근 애플과 유니티를 전문으로 다루고 있다. 게임, 증강 현실, 사진 촬영, 전자 상거래, 동영상, GIF 등 다양한 아이폰 앱을 만들었으며 스위프트, 유니티, AR, 게임 개발 그리고 이런 기술을 활용한 창의적인 애플리케이션 개발에 흥미를 느끼고 있다.
다른 매체가 할 수 없는 방식으로 이야기와 경험을 전달하는 양방향 미디어인 게임의 잠재력에 열정을 쏟고 있다. 지금은 프리랜서 개발자로 일하고 있으며 트위터 계정 @JaredEHalpern과 웹사이트(https://JaredHalpern.com)를 통해 만나볼 수 있다.

옮긴이의 말

제9의 예술로 인정받은 만화에 이어 제10의 예술 자리를 놓고 논의가 일고 있는 게임은 예술이기 전에 이미 전 세계적으로 151조, 국내만 해도 14조가 넘는 시장을 거느리고 있는 거대 산업이다(2018년 기준). 시장의 규모만큼이나 다양한 수요를 바탕으로 매년 AAA 게임은 물론, 인디 게임도 끊임없이 성공 신화를 써 내려가고 있다. 자본, 인력의 규모와 상관없이 성공의 길이 열려 있다는 뜻이다.
이 책은 AAA 게임 개발자가 아닌 인디 게임 수준의 작은 게임을 개발하려 하는 초보 개발자를 대상으로 유니티와 C#으로 게임을 만드는 방법을 소개한다. 단순히 소개에 그치지 않고 실제로 예제를 통해 간단한 탑다운 방식의 2D RPG를 만드는 과정을 함께 보여준다. 책을 읽으면서 예제를 잘 따라 하다 보면 2D 게임 개발에 필요한 지식을 얻는 동시에 어느새 유니티에 익숙해져 있을 거다. 그 정도만 해도 이 책의 역할은 충분하다고 본다. 도구에 익숙해야 창의성을 발휘할 수 있다. 유니티라는 멋진 도구를 통해 창의성을 한껏 발휘할 기회를 손에 쥐기 바란다.

옮긴이 소개

김홍중

중앙대학교 컴퓨터공학과를 졸업했다. 재학 중 삼성소프트웨어 멤버십 회원으로 활동하다가 삼성전자에 입사했다. DM 연구소, VD 사업부에 근무하면서 윈도우 CE, 임베디드 리눅스 환경에서 PDA, 셋톱박스, DTV 등 다양한 기기에 들어가는 애플리케이션을 개발했다.
2007년, 답답한 삶을 털어내고 훌쩍 미국으로 날아가 한껏 여유를 즐기다가 빈손으로 돌아왔다. 이후 웹호스팅사, 게임 개발사, 스타트업 등 여러 회사를 거치며 다양한 iOS 앱을 개발했고 한동안 번역가, 프리랜서로 연명하기도 했다. 언제 이룰 수 있을지 모르지만, 독립 개발자로 우뚝 서는 꿈을 포기하지 않고 있다.
에이콘출판사에서 출간한 『게임프로그래밍 알고리즘』(2015), 『유니티 5.x와 함께하는 C# 첫걸음』(2016) 등을 번역했다.

목차

목차
  • 1장. 게임과 게임 엔진
    • 게임 엔진
      • 집을 짓는 첫 번째 방법
      • 집을 짓는 두 번째 방법
      • 첫 번째 방법 평가
      • 두 번째 방법 평가
      • 결론
    • 역사적인 게임 엔진
    • 최신 게임 엔진
    • 유니티 게임 엔진
    • 요약

  • 2장. 유니티 소개
    • 유니티 설치
    • 유니티 설정
    • 스크립트 에디터: 비주얼 스튜디오
    • 유니티 인터페이스
    • 각종 창 소개
    • 레이아웃 설정과 변경
    • 변환 도구
    • 도구 핸들 포지션 토글
    • 재생/일시정지/단계 버튼
    • 유니티 프로젝트의 구조
    • 유니티 문서
    • 요약

  • 3장. 기초 공사
    • 게임 오브젝트: 컨테이너 엔티티
    • 엔티티-컴포넌트 디자인
    • 컴포넌트: 구성 요소
    • 스프라이트
    • 애니메이션
      • 애니메이터 상태 머신
    • 콜라이더
    • 리지드바디 컴포넌트
    • 태그와 레이어
      • 태그
      • 레이어
      • 정렬 레이어
    • 프리팹 소개
    • 스크립트: 컴포넌트의 로직
    • 상태와 애니메이션
      • 상태 머신 심화 과정
      • 애니메이션 파라미터
    • 요약

  • 4장. 게임 세계 구축
    • 타일맵과 타일 팔레트
    • 타일 팔레트 생성
    • 타일 팔레트로 그리기
      • 타일 팔레트
    • 복수의 타일맵 사용
    • 그래픽 설정
    • 카메라
    • 시네머신
      • 시네머신 설치
      • 시네머신 설치 후
    • 가상 카메라
      • 시네머신 제한자
    • 안정화
    • 머티리얼
    • 콜라이더와 타일맵
      • 타일맵 콜라이더 2D
      • 복합 콜라이더
      • 물리 모형 수정
    • 요약

  • 5장. 기본 지식 종합
    • Character 클래스
    • Player 클래스
    • 프리팹 준비
      • 동전 프리팹 생성
      • 써클 콜라이더 2D 설정
      • 태그 설정
    • 레이어 기반 충돌 감지
    • 트리거와 스크립트
      • 스크립팅 가능한 오브젝트
      • 스크립팅 가능한 오브젝트 생성
      • Consumable 스크립트 작성
      • 아이템 구성
      • 플레이어 충돌
      • 체력 아이템인 하트 생성
    • 요약

  • 6장. 체력과 인벤토리
    • 체력 바 생성
      • 캔버스
      • UI 요소
      • 체력 바 생성
      • 앵커
      • 앵커 포인트 수정
      • UI 이미지 마스크
      • 폰트 임포트
      • 체력 텍스트 추가
      • 체력 바 스크립트
      • 스크립트 가능한 오브젝트인 HitPoints
      • Character 스크립트 수정
      • Player 스크립트 수정
      • HealthBar 스크립트 작성
      • 체력 바 컴포넌트 설정
    • 인벤토리
      • 인벤토리 슬롯 이미지 임포트
      • 인벤토리 슬롯 설정
      • Inventory 스크립트 생성
    • 요약

  • 7장. 캐릭터, 코루틴, 스폰 위치
    • 게임 매니저 생성
    • 싱글톤
      • 싱글톤 생성
      • 게임 매니저 프리팹 생성
    • 스폰 위치
      • 스폰 위치 프리팹
      • 플레이어 스폰 위치 설정
      • 플레이어 스폰
      • 요약
      • 적의 스폰 위치
    • 카메라 매니저
      • 카메라 매니저 사용
      • Character 클래스 설계
      • virtual 키워드
    • Enemy 클래스
      • 리팩토링
      • internal 접근 제한자
    • 코루틴
      • 코루틴 호출
      • 실행의 일시 정지 또는 “양보”
      • 코루틴 완료
      • 시간 간격을 두는 코루틴
      • abstract 키워드
      • Enemy 클래스 구현
      • DamageCharacter() 메서드
      • ResetCharacter()
      • OnEnable()에서 ResetCharacter() 호출
      • KillCharacter()
    • Player 클래스 수정
      • 프리팹을 인스턴스화 하는 코드의 리팩토링
      • 재확인
      • 작성한 코드 사용
      • OnCollisionEnter2D
      • OnCollisionExit2D
      • Enemy 스크립트 설정
    • 요약

  • 8장. 인공 지능과 무기
    • 배회 알고리즘
      • 시작
      • 배회 스크립트 작성
      • 변수 추가
      • Start() 메서드
      • 배회 코루틴
    • 새로운 목적지 선택
      • 각도, 호도, 벡터
      • 적 애니메이션
      • Move() 코루틴
      • Wander 스크립트 설정
      • OnTriggerExit2D()
      • 기즈모
    • 정당방위
      • 필요한 클래스
    • Ammo 클래스
      • 에셋 임포트
      • 컴포넌트 추가, 레이어 설정
      • 레이어 충돌 매트릭스 수정
      • Ammo 스크립트 작성
      • 잊기 전에 AmmoObject 프리팹 생성
    • 오브젝트 풀링
    • Weapon 클래스 작성
      • 메서드 스텁
      • SpawnAmmo 메서드
      • Arc 클래스와 선형보간
      • 화면 공간과 월드 공간
      • FireAmmo 메서드
      • Weapon 스크립트 설정
      • 포물선 궤적
    • 새총 발사 애니메이션
      • 애니메이션과 블렌드 트리
    • 블렌드 트리
      • 애니메이터 정리
      • 걷기용 블렌드 트리 생성
      • 레이어 중첩
      • 블렌드 타입
      • 애니메이션 파라미터
      • 파라미터 사용
      • 설정의 이유
      • 루프 시간
      • 전환 생성
    • MovementController 수정
      • 새총 발사 스프라이트 임포트
      • 애니메이션 클립 생성
      • 발사용 블렌드 트리 생성
      • 종료 시간
      • Weapon 클래스 수정
      • 변수 추가
      • Start()
      • Update() 수정
      • 방향 결정
      • 기울기 메서드
      • 기울기 계산
      • y 절편 비교
      • HigherThanNegativeSlopeLine()
      • GetQuadrant() 메서드
      • UpdateState() 메서드
    • 맞았을 때 깜빡이는 효과
      • Player, Enemy 클래스 수정
    • 기타 플랫폼용 빌드
    • 게임 종료
    • 요약
    • 앞으로 할 일
      • 커뮤니티
      • 추가 학습
      • 도움을 구할 곳
      • 게임잼
      • 새로운 소식과 기사
      • 게임과 에셋
    • 마치며

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안