최단 경로 찾기 알고리즘 최단 경로 찾기 알고리즘에는 여러가지 알고리즘들이 있는데, 상황에 따라 다르게 사용할 수 있다. 게임이 어떤 케이스인지 생각해보고 적용하면 된다. 한 개의 시작노드와 한 개의 도착노드 Greedy Best First Search - 휴리스틱 값에 기반한 우선순위 큐 사용. 즉 f(x) = h(x) A* - 게임에 주로 사용된다. 아래 설명 참고 한 개의 시작노드와 여러 개의 도착노드, 또는 여러 개의 시작노드와 한 개의 도착노드 Breadth First Search(BFS) - 가중치 없는 간선 Dijkstra(다익스트라) - 음수가 아닌 가중치가 있는 간선 Bellman-Ford(벨만포드) - 양수 또는 음수 가중치가 있는 간선 여러 개의 시작노드와 여러 개의 도착노드 Floy..
게임 개발
요즘 블로그 포스팅을 많이 못했는데 그 동안 게임 잼을 참가했다. 사실 그 전에 포스팅할 여유는 있었지만 주제도 딱히 없었거니와 3일 내내 작업해야하니 그 전에 번아웃 되지 않도록 어느정도 쉬엄쉬엄했었다. 이번이 첫 게임잼 참가였는데, 생각보다 결과물이 만족스러워서 기쁘다. 개발하면서 부딪혔던 타일맵 관련 내용은 이 글에 서술했다. 다른 어려움도 있긴 했지만, 이 프로젝트에 국한되는 문제라고 생각해서 따로 작성하지는 않을 예정이다. 게임 잼은 기획1, 프로그래밍 2, 아트 4로 팀을 이뤄 진행했다. GitHub - virtus2/gmtkGameJam: Game Maker's Toolkit 게임잼 2022 출품작Game Maker's Toolkit 게임잼 2022 출품작 . Contribute to vir..

타일형 게임을 구현할 때 유니티에서 제공하는 타일맵을 사용하면 팔레트를 이용해 쉽게 타일을 배치 할 수 있다는 장점이 있다. 단순히 타일을 배치하는 것만으로 충분할 수도 있지만, 구현하려는 게임에 따라 각 타일에 데이터를 저장 해야 할 때가 있다. 어떻게 해야할까? 먼저 타일맵부터 설명하고 그 이후 구현 방법을 서술하겠다. 타일맵에서 특정 좌표의 타일 얻기(또는 셀 좌표 얻기) 타일맵은 그리드 형태로 되어있으며 각 타일(셀)의 좌표는 다음과 같이 얻을 수 있다. Tilemap tilemap; // 타일맵 (GetComponent로 얻거나 인스펙터에서 할당해줬다고 가정) Vector3 localPos; // 로컬 포지션 Vector3 worldPos; // 월드 포지션 Vector3Int worldToCe..
의도 컬렉션에 들어 있는 객체별로 한 프레임 단위의 작업을 진행하라고 알려줘서 전체를 시뮬레이션한다. 쉽게 말하자면 게임에 존재하는 객체들의 동작이나 상태를 한 프레임씩 업데이트 하는 것이다. 동기 던전을 지키는 해골 전사가 있고 이 전사가 문 주위를 순찰한다고 해보자. 해골 전사를 왔다갔다하는 코드를 가장 간단하게 만든다면 다음과 같을 것이다. while(true) { // 오른쪽으로 간다. for(double x = 0; x 0; x--) skeleton.setX(x); } 하지만 이 코드는 무한루프가 있어서 해골 전사가 순찰도는 걸 플레이어는 볼 수 없다는 문제가 있다. 우리가 원하..