본문 바로가기
게임 프로그래밍/게임 프로그래밍의 기초

게임 개발의 기초(6) - C++

by jyppro 2023. 4. 8.

C++

지난번엔 유니티에서 사용되는 언어 C#에 대해서 알아보았습니다. 이번에는 유니티와 양대산맥을 이루는 대표적인 게임엔진인 언리얼에서 사용되는 C++에 대해 자세히 알아보겠습니다.

 

C++는 C 언어의 확장판으로 개발된 객체 지향 프로그래밍 언어입니다. C++은 C 언어의 특성인 저수준의 메모리 제어와 빠른 속도를 그대로 유지하면서 객체 지향 프로그래밍의 특성을 추가한 언어입니다.

C++의 특징은 다음과 같습니다.

객체 지향 프로그래밍(OOP) 언어: C++은 객체 지향 프로그래밍을 지원하며, 클래스, 상속, 다형성, 캡슐화 등의 개념을 사용합니다.

저수준의 메모리 제어: C++은 C 언어와 마찬가지로 메모리를 직접 제어할 수 있는 기능을 가지고 있습니다. 이를 통해 하드웨어와 직접적으로 상호작용할 수 있는 기능을 제공합니다.

다중 패러다임 지원: C++은 객체 지향 프로그래밍 뿐만 아니라 절차 지향 프로그래밍, 함수형 프로그래밍 등 다양한 패러다임을 지원합니다.

높은 성능: C++은 메모리 제어가 가능하기 때문에 하드웨어와 직접적인 상호작용이 가능합니다. 이를 통해 높은 성능을 발휘할 수 있습니다.

크로스 플랫폼: C++은 다양한 플랫폼에서 사용될 수 있습니다. 하지만 C++은 컴파일러에 따라 구현이 달라질 수 있기 때문에, 이식성을 보장하기 위해서는 몇 가지 주의사항이 필요합니다.

대용량 시스템에서 사용: C++은 대규모 시스템에서 사용되는 언어입니다. 예를 들어, 게임 엔진, 운영 체제, 데이터베이스 등 대용량 시스템에서 C++이 주로 사용됩니다.

 

전체적으로 C 계통의 언어들은 비슷한 점을 가지고 있습니다. 하지만 각자 지향하는 방향에 따라 다른 방식으로 발전했습니다. C언어는 사용된지 오래되었고, 최신 언어나 프레임워크가 매우 빠른 속도로 나오고 있지만, 오래 사용된 만큼 기초적으로 갖춰야 하는 언어인 셈입니다.

 

특징에서는 주로 장점에 대해 설명을 드렸는데요. 단점에 대해서도 한번 같이 알아보겠습니다.

 

단점

 

복잡한 문법: C++은 다른 객체 지향 언어보다 복잡한 문법을 가지고 있습니다. 이를 다루기 위해서는 높은 수준의 프로그래밍 경험이 필요합니다.

메모리 관리: C++은 메모리 관리를 직접 처리해야 합니다. 이는 개발자가 메모리 할당, 해제 등을 관리해야 함을 의미하며, 메모리 누수 등의 문제가 발생할 수 있습니다.

보안 취약점: C++은 메모리 접근에 대한 제약이 적기 때문에 보안 취약점이 발생할 가능성이 높습니다. 이를 보완하기 위해서는 보안에 대한 엄격한 접근 방법이 필요합니다.

코드 길이: C++은 기본적으로 코드 길이가 길어질 수 있습니다. 이는 개발 시간을 늘릴 수 있고, 디버깅이 어려울 수 있습니다.

이식성: C++은 플랫폼에 종속적이며, 이식성이 낮을 수 있습니다. 이를 보완하기 위해서는 다른 언어와의 호환성을 고려하여 코드를 작성해야 합니다.

컴파일 시간: C++은 컴파일 시간이 오래 걸릴 수 있습니다. 이는 대규모 시스템에서는 큰 문제가 될 수 있습니다. 최적화를 통해 컴파일 시간을 줄일 수 있지만, 이는 추가적인 작업을 요구할 수 있습니다.

 

우리는 이번에 C++ 에 대해서 알아보았는데요, 언리얼에서는 프로그래밍 언어 이외에도 알아야 할게 한가지 더 있습니다.

바로 블루프린트 입니다. 다음에는 블루프린트에 대해 알아보겠습니다. 감사합니다.