게임개발44 [Unity] 드로우콜 (Draw Call) 게임에 기능을 모두 넣고 종료 시점까지 한 사이클을 굴렸다면, 최적화라는 과제가 남는다. 게임 개발에서 최적화를 공부할 때 반드시 등장하는 것이 드로우콜과 배칭이다. 드로우 콜(Draw Call) 드로우콜이란 CPU가 GPU에게 오브젝트를 그리라고 명령하는 것을 의미한다. GPU는 CPU에 의해서 처리되고 GPU가 Mesh를 렌더링 할 때 지오메트리 데이터를 읽어오는 공간이 바로 GPU Memory이다. 따라서 Mesh를 그리기 위해서는 GPU Memory에 Mesh 관련 정보가 있어야 한다. GPU는 CPU Memory에 접근할 수 없기 때문에 GPU Memory에 데이터를 다시 복사한다. 이 과정을 거쳐 GPU Memory에는 메쉬 정보가 저장된다. GPU는 그릴 대상에 대한 상태 정보를 담는 테이블.. 2024. 2. 26. [C#] SOLID 원칙과 상속의 특징 기술면접 대비하기 #10 Q. SOLID 원칙이란 무엇인가? 객체지향 설계에서 지켜야 할 5개의 소프트웨어 개발 원칙. 1) SRP : 단일 책임 원칙 한 클래스는 하나의 책임(기능)만 가져야 한다. = 기능을 하나만 가지고 있을 때, 기능 수정이 필요할 때 코드를 변경하기 쉽기 때문. (유지보수성 상향) 2) OCP : 개방 폐쇄 원칙 확장에는 열림(Open) / 수정에는 닫힘(Closed) 즉, 기능 추가를 위해 클래스 확장을 하되 수정을 최소화하는 방식이다. 상속을 통한 클래스 구축, 추상화 사용의 이점 극대화. 3) LSP : 리스코프 치환 원칙 부모 클래스로 객체를 선언해 자식 클래스의 인스턴스를 받으면, 부모의 메서드를 사용해도 정상적으로 작동해야 한다. 오버라이딩 시 주의해야할 원칙이며, 다.. 2024. 2. 8. [C#] 객체지향(OOP)과 객체지향의 특징 4가지 기술면접 대비하기 #9 객체지향이란? 컴퓨터 프로그램을 어떤 데이터를 입력받아 순서대로 처리하고 결과를 도출하는 명령어들의 목록으로 보는 시각에서 벗어나 여러 독립적인 부품들의 조합, 즉 객체들의 유기적인 협력과 결합으로 파악하고자 하는 컴퓨터 프로그래밍의 패러다임을 의미한다. 객체를 먼저 만들고 이렇게 만들어진 여러 객체들을 조립해서 하나의 완성된 프로그램을 만드는 프로그래밍 방법론이다. 객체지향의 특징은? 객체 지향적 설계를 통해서 프로그램을 보다 유연하고 변경이 용이하게 만들 수 있다. 소프트웨어를 설계할 때 객체 지향적 원리를 잘 적용해 둔 프로그램은 각각의 부품들이 각자의 독립적인 역할을 가지기 때문에 코드의 변경을 최소화하고 유지보수를 하는 데 유리하다. 나아가, 코드의 재사용을 통해 반복적인.. 2024. 2. 7. [Unity] 2가지 타이머 적용하기(코루틴) 최종 프로젝트 개발 일지 #2 GameScene에서 위 그림처럼 [ Round (숫자) : (초) s ] 형식의 UI를 좌측 상단에 띄웠다. 우리 게임의 GameScene 흐름은 다음과 같다. Start => 1라운드 파밍페이즈 - 1라운드 배틀 페이즈 if 누군가의 점수가 1이라면 => 2라운드 파밍페이즈 - 2라운드 배틀 페이즈 if 누군가의 점수가 2라면 => Game Over else if 1대1이라면 => 3라운드 파밍페이즈 - 3라운드 배틀 페이즈 => Game Over 점수에 따라서 라운드가 다음으로 진행되고, 파밍페이즈와 배틀 페이즈의 타이머가 따로 분리되어 있는 형태이다. // RoundTimer.cs IEnumerator FarmingTimer() { //yield return new .. 2024. 1. 30. [C#] 델리게이트와 이벤트 / action과 func 기술면접 대비하기 #6 델리게이트(Delegate)란? 델리게이트는 메서드를 다른 메서드/클래스로 전달하기 위해 만들어졌다. 반환 타입과 매개변수 타입이 같은 메서드의 포인터를 가리킬 수 있는 C#의 기능이다. 델리게이트는 메서드의 입력 파라미터로 전달될 수 있으며, 메서드의 리턴값으로 전달 받을수도 있다. 델리게이트 정의에서 중요한 것은 입력 파라미터와 리턴 타입이다. 어떤 메서드가 델리게이트 메서드의 입력 파라미터 타입/개수, 리턴 타입이 동일하다면 그 메서드는 해당 델리게이트에서 사용할 수 있다. 델리게이트는 컴파일러에서 클래스로 변환되므로 클래스와 비슷하게 new를 사용해 객체를 생성할 수 있다. 호출할 때에는 Invoke 메서드를 주로 사용하지만, invoke 없이 바로 함수처럼 사용할 수도 있.. 2024. 1. 29. 성공적인 8주 프로젝트를 위하여 성공적인 프로젝트를 위한 도움말 form Unity 1기 신우석님 1. 유저가 게임을 이해하기 쉽도록 튜토리얼 만들어보자. 2. 프로젝트 규모를 줄여라. 프로덕트 (출시)를 위한 프로젝트인가? 아니면 포트폴리오를 위한 프로젝트를 하는건가? = 포트폴리오가 중요! 게임의 컨텐츠를 많이 넣으면 시간이 부족해져서 마감을 지키기 위해 개발과정에서 코드가 복잡해진다. 리팩토링이 적고, 하드 코딩을 해서라도 게임을 완성해야 하기 때문. 적절한 곳에 적절한 기술을 제대로 사용하지 못한다는 것은 포트폴리오의 치명적 문제이다. 포트폴리오에서는 게임 외적인 부분보다 내적인 부분(코딩과 개발 과정)이 더 중요하다. 컨텐츠의 양과 기술의 양은 비례하지 않는다. 포트폴리오에서 가장 매력적인 부분은 최적화. 최적화는 컨텐츠나 시.. 2024. 1. 12. 이전 1 2 3 4 ··· 8 다음