no image
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘(4) / 미로 준비, Binary Tree 미로 생성, Side Winder 미로 생성
맵 만들기 소스코드 class Board3 { const char CIRCLE = '\u25cf'; public TileType[,] _tile; // 배열 public int _size; public enum TileType { Empty, Wall, } // 배열 초기화 public void Initialize(int size) { _tile = new TileType[size, size]; _size = size; for (int y = 0; y < _size; y++) { for (int x = 0; x < _size; x++) { if (x == 0 || x == size - 1 || y == 0 || y == size - 1) _tile[y, x] = TileType.Wall; else _ti..
2021.10.21
no image
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘(3) / 선형 자료 기초
배열, 동적 배열, 연결 리스트 비교 프로그래밍은 데이터를 저장하고, 그것을 꺼내서 잘 활용하는 것이 게임이고 프로그래밍인 것이다. 자료 구조는 크게 선형 자료구조와 비선형 자료구조로 나눌 수 있다. 선형 구조 : 자료를 순차적으로 나열한 형태 배열 연결 리스트 스택 / 큐 비선형 구조 : 하나의 자료 뒤에 다수의 자료가 올 수 있는 형태. 트리 그래프 ex) 파일구조 자료구조와 알고리즘을 공부할 때 자료구조와 알고리즘은 책으로 복잡하게 외우는 것은 쓸모가 없다. 애초에 이 학문은 실생활 문제를 해결하고 도움을 주기 위해 발전한 학문이기에, 최대한 현실상황에 맞게 생각을 하면서 어떤 식으로 언제 활용할 것인지 공부하는 것이 오래 남는다. 배열 - 사용할 방 개수를 고정해서 계약하고 (절대 변경 불가) -..
2021.10.02
no image
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘(2) / 환경설정
환경설정 모든 게임은 입력 로직 렌더링 이 세 개를 계속 반복하는데, 입력단계는 정말 마우스나 키보드의 모든 인풋을 감지하는 거고, 이 인풋을 감지해서 로직을 실행하는 것이다. 인풋에 따라 연산된 아니면 게임AI의 로직들을 다 실행한다음에 최종적으로 연산된 게임세상을 렌더링을 통해서 이쁘게 그려주는 것임. 모든 게임은 이 세 가지 단위로 이루어진다. 온라인 게임은 그냥 게임 로직을 연산하는 부분이 서버에서 이루어진다의 차이가 있다. 로컬과 온라인의 큰 차이가 있진 않음. 네트워크 통신을 통해서 로직의 결과를 주고 받는다. --- 프레임 관리를 알아보자. 60프레임 정도면 OK. 30프레임 이하면 뚝뚝 끊기는 상황이 발생하면서 부드럽지 않게 표현이 될 것이다. 프레임은 단지 위 이미지의 루프가 1초에 몇번..
2021.10.02
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘(1) / Big-o 표기법
Big-O 표기법 BIG - O 표기법 1단계 : 대략적인 계산 - 수행되는 연산(산술, 비교 대입 등)의 개수를 '대략적으로'판단 BIG - O 표기법 2단계 : 대장만 남긴다. 규칙1) 영향력이 가장 큰 대표 항목만 남기고 삭제 규칙2) 상수 무시 (ex. 2N => N) O(1 + N + 4 * N^2 + 1) 이런식으로 나와도 N^2임. 근데 이러한 표기 때문에 사실 같은 O(N)이라도 속도가 다를 수 있다는 것도 염두에 두고 있어야 함. O(4 * N^2) => O(N^2) O는 Order Of라고 읽는다. 재귀함수같은 경우엔 좀 복잡할 수 있지만, 대부분의 경우에는 산출하기 쉽다. 빅오 표기법의 의미? => 데이터가 늘어남에 따라 어떤 식으로 연산량이 증가하는 지 알고 싶은 것. N^2은 워낙..
2021.09.29