Unity/레트로의 유니티 게임 프로그래밍 에센스
-
19장 좀비 서바이버 멀티플레이어 : 네트워크 게임 월드 구현Unity/레트로의 유니티 게임 프로그래밍 에센스 2021. 7. 20. 15:41
19.1 네트워크 플레이어 캐릭터 준비 19.1.1 Photon View 컴포넌트 - 네트워크를 통해 동기화될 모든 게임 오브젝트는 Photon View 컴포넌트를 가져야 함. - Photon View 컴포넌트는 게임 오브젝트에 네트워크상에서 구별 가능한 식별자인 View ID를 부여 - 또한 Observed Components 리스트에 등록된 컴포넌트들의 변화한 수치를 관측하고, 네트워크를 넘어서 다른 클라이언트에 전달. - View ID 1~999까지? -> 정보를 담을 스크립트를 위한 게임오브젝트로 개수 제한에서 벗어날 수 있지 않을까? - max 값 변경 : https://answers.unity.com/questions/596457/how-can-i-add-more-photonview-ids.h..
-
18장. 좀비 서바이버 멀티플레이어 : 네트워크 이론과 로비 구현Unity/레트로의 유니티 게임 프로그래밍 에센스 2021. 5. 21. 11:59
18.1 네트워크 동기화 - 4인 멀티플레이어 게임에서 플레이어 캐릭터는 총 16명이다. - 각자 컴퓨터에 4개의 캐릭터가 존재. 18.1.1 로컬과 리모트 - 로컬 오브젝트 : 주도권이 자신에게 있음 - 리모트 오브젝트 : 주도권이 네트워크 너머의 타인에게 있음 18.1.2 동기화 18.1.3 로컬 권한 검사 - 로컬의 플레이어 게임 오브젝트의 update() 등에서 확인. 18.2 게임 서버의 종류 18.2.1 전용 서버 - 서버의 모든 자원이 온전히 네트워크 서비스를 유지하는 데 사용. - 서버가 플레이어로서 게임에 직접 참가하지 않는 형태. 서버 자신이 클라이언트가 아닐 때. 18.2.2 리슨 서버 - 전용 서버가 없는 대신 플레이어 클라이언트 중 하나가 서버 역할. Play as Host. - ..
-
17장 좀비 서바이버 : 최종 완성과 포스트 프로세싱Unity/레트로의 유니티 게임 프로그래밍 에센스 2021. 5. 20. 18:05
17.1 HUD Canvas와 UI 매니저 17.1.1 HUD Canvas 추가 17.1.2 UIManager 스크립트 17.1.3 싱글턴 프로퍼티 17.1.4 UIManager의 필드 17.1.5 갱신 메서드들 17.1.6 게임 재시작 메서드 17.1.7 재시작 버튼 설정 17.2 게임 매니저 17.2.1 싱글턴 프로퍼티 17.2.2 GameManager의 필드 17.2.3 Awake() 17.2.4 Start() 17.2.5 AddScore() 17.2.6 EndGame() 17.3 적 생성기 17.4 아이템 생성 17.5 포스트 프로세싱 17.5.1 포스트 프로세싱 스택 - 포스트 프로세싱 : 후처리. - 게임 화면이 최종 출력되기 전에 카메라의 이미지 버퍼에 삽입하는 추가 처리. 17.5.2 렌더..
-
16장 좀비 서바이버 : 생명과 좀비 AIUnity/레트로의 유니티 게임 프로그래밍 에센스 2021. 2. 17. 23:46
16.1 다형성 16.1.1 상속 관계에서 다형성 16.1.2 다형성을 사용한 패턴 16.1.3 오버라이드 - virtual 키워드로 지정된 메서드는 가상 메서드가 됨. 가상 메서드는 자식 클래스가 오버라이드할 수 있도록 허용된 메서드. 기존의 부모 타입으로 변환하고 메서드를 실행해도 자식 타입에서 재정의한 메서드가 실행됨. - base : 부모 클래스를 지칭. 16.2 LivingEntity 16.2.1 LivingEntity 전체 스크립트 16.2.2 LivingEntity의 필드 - protected 접근 한정자 : 클래스 외부에서는 접근 불가능하지만 자식 클래스에서는 접근 가능. 즉, 해당 클래스를 상속하면 변경가능. - private는 상속을 해도 접근 불가. 16.2.3 Action - Act..
-
15장 좀비 서바이버 : 총과 슈터Unity/레트로의 유니티 게임 프로그래밍 에센스 2021. 2. 13. 01:47
15.1 인터페이스 15.1.1 C# 인터페이스 - 인터페이스를 상속하는 클래스는 해당 인터페이스의 메서드를 public으로 반드시 구현해야함. - 인터페이스의 메서드는 선언만 존재하고 구현이 없음. 형태만 결정(선언만 함). 15.1.2 느슨한 커플링 (loose coupling) - 어떤 코드가 특정 클래스의 구현에 결합되지 않아 유연하게 변경 가능한 상태. - 인터페이스처럼 특정 메서드의 행위는 신경쓰지 않고, 해당 메서드가 구현되어 있어서 사용할 수 있는지만 신경씀. 15.1.3 IDamageable - 공격 당할 수 있는 모든 대상이 상속하도록... 15.2 총 게임 오브젝트 준비 15.2.1 Gun 게임 오브젝트 준비하기 - 탄알 궤적. Add Component > Effects > Line ..
-
14장. 좀비 서바이버 : 레벨 아트와 플레이어 준비Unity/레트로의 유니티 게임 프로그래밍 에센스 2021. 2. 12. 10:05
- 다루는 내용 14.1 프로젝트 구성 14.2 레벨 아트와 라이팅 설정 14.2.1 레벨 아트 추가하기 14.2.2 라이트맵 - 라이팅은 연산 부담이 큼. 라이팅 데이터 에셋(Lighting Data Asset)을 사용해서 씬의 변화가 감지될 때마다 매번 새로운 라이팅 데이터 에셋을 생성. - 라이트맵 : 오브젝트가 빛을 받았을 때 어떻게 보일지를 미리 그려둔 텍스쳐 - 라이트맵을 생성 -> 라이트맵을 굽는다 14.2.3 라이팅 설정하기 14.2.4 글로벌 일루미네이션 - 글로벌 일루미네이션(Global Illumination)은 물체 표면에서 직접 들어오는 빛뿐만 아니라 다른 물체의 표면에서 반사되어 들어온 간접광까지 표현 - 실시간 글로벌 일루미네이션 : 라이트맵을 여러 방향에 대해 생성. 여러 경..
-
13장. 유니런 : 발판 반복 생성과 게임 완성Unity/레트로의 유니티 게임 프로그래밍 에센스 2020. 11. 18. 15:20
13.1 발판 만들기 13.1.1 Platform 스크립트 13.1.2 Platform의 OnEnable() 메서드 - OnEnable() 메서드는 Awake()나 Start() 같은 유니티 이벤트 메서드 - Start() 메서드처럼 컴포넌트가 활성화될 때 자동으로 한 번 실행됨. 처음 한 번만 실행되는 Start() 와 달리 스크립트 컴포넌트가 활성화 될 때마다 실행됨 => 스크립트 컴포넌트를 끄고 켜는 방식으로 재실행할 수 있음. 또는 게임 오브젝트를 활성화/비활성화로도 가능 - Random.Range(0, 3) : 0, 1, 2 중에서 한 숫자를 랜덤으로 변환. 13.1.3 Platform의 OnCollisionEnter2D() 메서드 13.1.4 Platform 스크립트의 전체 코드 13.1.5 ..
-
12장. 유니런 배경 스크롤링과 게임 매니저Unity/레트로의 유니티 게임 프로그래밍 에센스 2020. 11. 17. 18:08
12.1 배경 추가하기 12.1.1 정렬 레이어 - 스프라이트 렌더러 컴포넌트가 그리는 그래픽의 앞뒤 정렬은 트랜스폼 컴포넌트의 위치값과 상관없음 => z축이 필요한데 2D에서는 z축 값이 무의미하게 취급되기 때문.. - 2D 게임 오브젝트가 그려지는 순서는 스프라이트 렌더러의 정렬 레이어가 결정. - 레이어 목록에서 가장 아래쪽 정렬 레이어가 가장 앞쪽에 그려짐. => 배경은 가장 위쪽 캐릭터는 가장 아래쪽. 12.2 움직이는 배경과 발판 12.2.1 ScrollingObject 12.2.2 반복되는 배경 만들기 - Box Collider 2D 컴포넌트는 2D 스프라이트 게임 오브젝트에 추가되면 자동으로 그 크기에 맞춰짐. - Awake() : Start() 메서드처럼 초기 1회 자동 실행되는 유니티 ..