C++ 게임에서의 비트 연산 활용
·
C++
앞서 얘기했던 비트 연산자들이 게임에서 어떻게 활용되는지 예시를 들어보겠다. 먼저 6번째 줄에서 int형 변수 state 는 32개의 비트가 모두 0으로 초기화 돼있는 상태이다. 여기서 비트 연산자 |를 통해 1이라는 값을 가지고 있는 정의어 HUNGRY와 합 연산을 할경우 맨 뒤에 자리의 비트의 값이 1이 되게된다. 즉 000000000...000인 비트값을 가지고 있던 state가 00000000000...001이 되는 것이다. 이를 활용해 위 코드처럼 작성하게 되면 어떠한 상태값을 원하는 state 변수하나만 으로 원하는 비트 자리에 저장하고 기록할수 있게 되는것이다. 즉 위에 그림처럼 특정 자리의 비트 값이 1이되면 그것이 곧 그 상태가 ON이 됐다는 것을 정의 할수 있게 되는것이다. HUNGRY..
C++ 비트 연산자 (&, |, ^, ~)
·
C++
C++의 비트 연산자 중 &, |, ^, ~가 의미하는 것이 무엇인지 알아보겠다. 먼저 &은 곱하기 라고 생각하면 편할 것이다, 전자 회로쪽을 공부한 사람이라면 알고 있을 AND게이트의 역할과 동일하다고 보면 된다. 요약하자면 &은 둘다 1일 경우에만 1을 값을 반환한다고 보면 된다. 1010과 1001을 &으로 계산하게되면 1000이라는 결과 값이 나오게 되는데 이는 &이 둘다 1일 경우에만 1을 반환하는 연산을 하기 때문이다. 디버깅 결과 값 역시 2진수 1000, 즉 10진수 8이라는 결과값이 나오게 되었다. 그렇다면 비트연산자 |는 어떠한 연산을 할까? |는 OR연산, 즉 덧셈을 한다고 생각하면 이해가 빠를것이다. 요약하자면 |는 둘중 하나라도 1이 있으면 1, 나머지는 0을 반환한다. 1010 ..
C++ 비트 연산(시프트 연산)
·
C++
C++의 비트 연산자는 , &, |, ~, ^ 가 있다. 차례대로 각자 무슨 역할을 하는지 알아보자. 먼저 는 시프트 연산자라고도 한다. 는 각각 비트값을 왼쪽, 오른쪽으로 이동시켜주는 연산을 하는 연산자 이다. 예시를 보면서 어떻게 연산되는지 확인해 보겠다. num의 값에 10진수 1이 들어가 있는 상태이다. 즉 메모리 공간에 아래의 그림과 같이 저장되어있을 것이다. 여기서 >1, 즉 비트값을 오른쪽으로 1칸 밀게 되면, 2를 나타내는 비트들이 전부 한칸씩 오른쪽으로 이동한다는 것이다. 즉 00000010 -> 00000001이 된다는 것이다. 그렇다면 결과 값은 어떻게 될까? 결과는 원래 값의 1/2이 된다는 것이다. 그렇다면 만약 num = 5, 2진수로 표현하면 101인 비트를 오른쪽으로 1칸 밀..
C++ 실수 표현 방식
·
C++
C++에서 실수를 표현할수있는 자료형은 크게 float과 double이 있다. float과 double은 각각 4byte,8byte의 크기를 가지고 있는 데이터 타입인데. 앞서 얘기했던 정수 표현방식과 다르게 컴퓨터는 실수를 받아들일때 부동소수점 방식으로 실수값을 저장하게된다. 부동 소수점 방식이란. 예를들어 우리가 아래 처럼 flaot A = 21.8125라는 값을 집어넣었다고 가정 해보자 컴퓨터는 float형 변수 A를 저장하고 읽어 들일때 부동 소수점 방식을 활용해서 실수를 구분하게 된다. 21.8125라는 실수 값을 정수부분인 21과 소수점 아래 부분인 8125로 나눠서 2진수로 변환해보자. 21은 위에 그림처럼 10101이라는 수로 변환할수 있을것이다. 그렇다면 실수부분인 8125는 2진수로 어..
C++ 정수 자료형
·
C++
C++에서 자료형은 크게 정수형과 실수형으로 나눌수 있다 먼저 정수형의 대표적인 자료형은 char,int,long,long이 있다. 각각 char = 1byte, integer = 4byte, long = 4byte, longlong = 8byte의 크기를 갖는다. 실수형의 대표적인 자료형은 float, double이 있고 각각 float = 4byte, double = 8byte의 크기를 갖는다. 여기서 알아둬야하는 중요한 포인트는 1byte = 8bit라는 것이다. bit는 0,1을 나타낼수있는 데이터의 최소 단위이다. 즉 1bit는 0,1 총 2가지의 경우의 수를 나타낼수있고 2bit는 00,01,10,11등 4가지의 경우의 수를 나타낼 수 있게 되는것이다. 3비트는 000,001,010,011,1..
비주얼 스튜디오에서 C++ 프로젝트 생성하는 법
·
C++
비주얼 스튜디오에서 C++ 프로젝트를 생성하기 전에 먼저 C++ 구성요소가 깔려있는지 확인하기 위해 Visual Studio를 Installer를 확인해보는것이 좋다, 이후 수정 버튼을 눌러 깔려있는 프로그램을 확인해야한다. 이후 아래 동그라미 쳐진 3개중 적합한 한개가 깔려있는지 확인하고, 만약 안돼있다면 설치를 진행해야한다 그뒤에 Create a new Project를 눌러 프로젝트를 생성해주고 Empty Prject, 빈프로젝트를 생성 해준다. 이후 편하게 프로젝트 이름 및 파일 경로를 설정해주고 프로젝트를 생성한 후 이후 생성된 프로젝트에서 솔류션 탭에 오른쪽 마우스 버튼을 눌러 ADD를 눌러 New Item을 눌러준다. 이후 생성된 CPP 파일에서 자유롭게 코드를 작성해서 프로그램을 짜면 된다.
게임 개발에서 C++이 중요한 이유
·
C++
게임 개발에서 C++이 갖는 장점은 운영체제에서 바로 프로그램이 실행되기 때문에 속도가 빠르고 데이터 관리를 중간에 어떤 가상머신의 도움 없이 직접 전부 관리할수 있다는 점이다. 하지만 일일이 다 구현해야하기 때문에 많은 시간이 들고 어중간한 지식을 가지고는 구현이 불가능하다는 단점이 있다. C++을 사용하지 않고 유니티, 언리얼엔진과 같은 게임툴을 사용해서 개발을 진행하면 물론 속도면이나 퀄리티 면에서 좋은 게임을 빠른 시간내로 만들수 있지만, 결국 편리한 게임 엔진 없이는 게임을 개발할 수 없는 인력이 되어버릴 가능성이 높아질 것이라고 생각한다. 실제로 대부분의 게임회사에서 자체 개발한 엔진은 C++로 이뤄저 있다. 유니티랑 언리얼 또한 C++로 제작된 엔진이라는 점을 봐도 C++을 다룰줄 아냐 못하..