본문 바로가기
기타/UNITY MMORPG 게임 개발

[PART1] 2. 데이터 갖고 놀기

by 9루트 2021. 6. 8.

2021.06.08

 

2. 데이터 갖고 놀기

문법에 집착하지 말자

 

2.1 정수 형식

main 함수는 프로그램 전체에서 하나만 써야 한다.

변수 : 데이터를 저장하는 바구니

보통 게임 아이디는 long에 저장한다.

문명 게임 일화 : 공격성이 없던 간디 캐릭터가 갑자기 폭력적으로 변화게 된 이유

attack 변수를 byte라고 정의하고

attack--;로 설정하면

byte는 0에서 255값이므로

attack=0일 때 attack--;는 -1이 되지 않고

rotation으로 255로 돌아가게 된다.

결국 간디라는 캐릭터는 공격성이 0 이었다가

255로 갑자기 공격력 최대가 되는 에러가 나타난다.

출력값은 255가 뜬다.

 

 

2.2 진수

2진수 : shift, 비트 연산에 쓰인다.

16진수 : 2진수로 쓰게 되면 문자가 너무 길어지므로 2진수와 변환하기 쉽게 16진수로 쓴다.

2→ 16 진수 일때 4개씩 끊어서 변화해주면 된다.

 

 

2.3 이진수 표현, 정수 범위의 비밀

2.3.1 byte

8bits = 1byte

1111 1111 = 255 이므로 byte는 최대 0에서 255까지 표현가능하다.

부호가 없을 때(byte)는 0000 0000으로 표현한다.
계산기 > 프로그래머 > 비트계산로고 > BYTE로 설정

2.3.2 sbyte

반면 부호가 있는 마이너스 값(sbyte)은

*000 0000에서 맨 왼쪽에 있는 *로 부호를 표현한다.

예를 들어 58을 -58로 변환하는 과정은

 

0b 0011 1010  > 모든 숫자를 뒤집는다 : 0b 1100 0101 > 1을 더한다 : 0b 1100 0110

 

2.4 문자 형식

소수의 경우 'f'를 끝에 붙이지 않으면 자동으로 double로 인식한다. 소수는 메모리를 많이 잡아먹으므로 최대한 정수 타입을 이용하도록 할 것
string은 char의 집합을 표현하는 변수 타입

2.5 형식 변환 -------------------> 다시 보기!

overflow : 초과하여 에러가 남, underflow : 부족하여 에러가 남 

 

2.6 데이터 연산

2.6.1 사칙연산

+ - * / % 

++위치에 따른 차이 정확하게 알기  hp++; VS ++hp;

hp--; VS --hp;

전위 증가 ++i

i의 값을 1 증가시킨 후에 증가된 값을 return 
int i = 1; 
int j = ++i; 
printf("i:%d, j:%d", i, j);

출력 : i:2, j:2
후위 증가 i++

i의 값을 1 증가시킨 후에, 증가되기 전의 값을 return 
int i = 1; 
int j = i++; 
printf("i:%d, j:%d", i, j);

출력 : i:2, j:1

 

2.6.2 비교 연산

< > <= >= != ==

실행(F5) 후 isAlive 변수에 마우스를 올려놓으면 true가 나온다.

 

2.6.3 논리연산

&& AND

|| OR

! NOT

 

2.7 비트연산

2.7.1 쉬프트연산

1) 정의

<< : 비트가 왼쪽으로 특정 칸씩 이동한다. 

>> : 비트가 오른쪽으로 특정 칸씩 이동한다.

1000 -> 0001 즉, 1이 출력

2) 웬만하면 마이너스 값은 int 대신 uint를 사용하자 

num >> 3;

int num = 0b 1000 0000; 일 때

맨 왼쪽 1을 그대로 두고 1 이동 

num = 0b 1001 0000

 

3) 쉬프트 연산을 사용하는 이유

int id; 에서 

1100 0000 0000 0000 라는 상황에서 굉장히 큰 수를 바로 쓰지 않고

쉬프트 연산을 사용하여 0b11(작은 수) <<  14; 를 이용하여 표시한다.

 


2.7.2 비트연산

&(and) : 모두 1일 때만 1, 나머진 0

|(or) : 1이 하나라도 있으면 1, 나머진 0

~(not) : 반대로 써주기
^(xor) : 둘을 비교했을 때 다르면 1, 같으면 0

 

2) 쓰임

&, | 은 아이디의 비트값을 조합시킬 때 사용

^(xor)은 id를 임의의 변수 key로 암호화 할 때 사용한다. 

^(xor) 를 두번 하면 원래 값으로 돌아온다는 것을 이용함, key값은 비공개. 

^연산을 두 번한 b값은 123 원래 값으로 그대로 나오게 된다.

네트워크 상에는 a = id^key 값을 알려준다. a값을 알아도 key 값을 모르므로 알고 싶은 id값은 알 수 없다.

 

 

2.8 데이터 마무리

1) 연산의 생략

위 아래 같은 표현, = 기호는 항상 오른쪽에 넣자

2) 연산자들의 우선순위를 외우지 말고 가로 ( )를 활용하여 코드가 명확히 보이도록 쓰자

3) var 변수 유형은 웬만하면 쓰지말고 다른 사람도 알아볼 수 있도록 때에 맞는 변수 유형을 쓰자

 

 

'기타 > UNITY MMORPG 게임 개발' 카테고리의 다른 글

[PART1] 1. 개론  (0) 2021.06.08