Storage box

[ 분석 ] 유전 알고리즘을 통한 Match 3 Game Map 자동 생성 실험 결과

분석 특수 블록이 배치되지 않은 서로 다른 크기의 맵에서 목표달성에 필요한 스왑 횟수 측정 후, 자동플레이를 통한 특수 블록 미배치 맵의 스왑매치 경우의 수에 따른 평균 스왑 횟수 측정 특수 블록의 배치에 따른 스왑 횟수 증가량을 측정하였다. 특수 블록의 종류별 맵 크기와 스왑매치 경우의 수 감소에 따른 평균 스왑 횟수 측정 ...

[ Unity ] 블록 배치 기반 난이도 측정 구현

분석 그러나 이러한 유전 알고리즘을 통한 자동 플레이를 진행 시, 하나의 맵을 생성하는데 많은 시간을 투자하게 되어, 실시간으로 맵을 생성하기 어렵다. 따라서 이러한 난이도 측정 과정을 블록 배치를 통해 측정한다. 스왑을 통해 매치를 발생시키기 위해서는 매치 발생 조건, 수직 혹은 수평으로 같은 종류 일반 블록 3개 연속 배치를 충족해야 한다. ...

[ 분석 ] Match 3 Game 예측 결과

분석 클리어에 필요한 스왑 횟수에 따른 난이도 설정하였으나, 일반 블록의 랜덤성으로 인해 같은 레벨을 반복하더라도 각각의 클리어에 필요한 스왑 횟수가 다르다. 따라서 이를 반복하여 모평균을 추정하고자 한다. 이러한 추정을 위해 적절한 반복 횟수가 필요하다. 해당 맵에서 반복 플레이 했을 때 아래와 같은 결과를 확인할 수 있다. 반...

[ Reference ] Level Generation Using genetic Algorithms

개요 Fitness를 사용하는 대신, 선택 기준을 사용. 대칭적이고 좋은 디자인을 가진 레벨이 이미 다수 존재할 때, 이를 선택 기준으로 삼아 기존 맵들과는 다른 새로운 맵을 생성한다. 그리드의 대칭을 유지하기 위해 5 종류의 크로스오버 연산을 사용하여 그리드를 분할하고 해당 부분에서 연산을 수행. 그리드의 중간을 세로 혹은 가로...

[ Unity ] 난이도 측정을 위한 자동 플레이 구현

분석 Match-3 게임에서의 난이도는 레벨 성공 확률이라 할 수 있다. 레벨 제한 조건이 스왑 횟수인 경우, 목표 달성에 사용한 스왑 횟수가 제한 조건에 가까울수록 낮은 성공 확률을 보인다. 따라서 성공 확률이 낮을수록 더 어려운 난이도의 레벨로 판단할 수 있다. 그러나 게임 플레이 시, 같은 레벨을 반복하더라도 각각 목표달성에 사용한 스왑 횟...

[ Unity ] (solution) Match 3 Game 자동 플레이 구현

분석 보통 Match-3 게임은 클리어 조건 만족 시, 남은 스왑 횟수만큼 점수를 추가로 부여하는 경우가 많다. 이러한 경우 중 남은 스왑 횟수만큼 임의적으로 더 스왑시켜 추가 점수를 주는 경우가 있는데, 현재 에셋에서 이러한 방식을 통해 추가점수를 부여하므로, 이를 통해 자동 플레이를 구현하고자 한다. 게임의 상태를 판단하는 update()에서...

[ Unity ] (solution) 플레이 불가능 맵 발생

분석 특수 블록을 배치하여 게임 진행 시, 일부 셀 값에서 null이 발생, 게임이 진행되지 않는 경우가 발생했다. 이를 확인해본 결과, 아래 그림과 같은 형태로 특수 블록이 배치되었을 때, 빈 셀을 채우지 못해 해당 셀들이 블록이 없어 발생한 것으로 확인됬다. 해결 따라서 이를 해결하기 위해 각 셀 간의 연결 여부를 판단한...

[ Dx11 ] Motion Blur Stencil Routing

구현 원래 샘플링은 픽셀 셰이더에서 픽셀 당 한 번 시도한다. 그러나 멀티 샘플링의 경우, 지정 횟수 만큼의 샘플링을 시도하는 방식이다. 따라서 멀티 샘플링을 사용하는 경우 MSAA buffer가 생성되는데, 이를 활용하여 서로 다른 여러 이미지를 출력할 수 있다. 그리고 이러한 방법은 기존 a buffer를 사용하는 것보다 높은 성능을 보여주기...

[ Theorem ] 인공지능특론 (2)

정리 언어모델 : 단어 나열에 확률을 부여하여, 얼마나 자연스러운지 확률로 평가 CBOW 모델을 언어모델로 사용시, 단어의 순서는 지키나, 맥락의 크기에 비례해 매개변수의 개수가 증가 RNN :  순환신경망으로, 데이터가 순환하면서 정보가 끊임없이 갱신되고, 과거 정보를 기억한다.(확장성)  출력이 2개로 분기하여 하나는 다시 입력으로(둘은 ...

[ Reference ] Stencil Routed A Buffer

개요 1. 개요 멀티샘플 텍스처를 사용하여 픽셀당 조각 벡터를 저장함으로써 GPU 가속 A-버퍼를 구현하기 위한 스텐실 라우팅 알고리즘 모든 조각들은 래스터화 순서에 따라 픽셀별로 캡처 전체 화면 셰이더 패스는 bitonic sort을 사용하여 조각을 정렬(이때 정렬된 프래그먼트를 임의로 블렌딩하여 차수 독립 투명도 또는 계층화된 깊이...

[ Dx11 ] (solution) 모션 블러의 일부 픽셀 소실

문제 앞서, 자신에게 오는 모션 벡터를 잘못 찾아 물체 간 색상이 침범하는 현상을 해결하였으나, 또 다른 문제가 발생했다. 이러한 형태로 앞에 위치한 물체의 모양으로 뒤에 있는 물체에 일부 픽셀이 소실되는 현상이 발생했다. 모션벡터 반대방향 공의 일부 픽셀이 소실되는 현상 자신을 지나는 모션벡터맵의 첫번째 layer 이...

[ Dx11 ] (solution) 모션 블러가 원하는 위치에 생성 되지 않음

문제 아래 그림과 같이 여러 물체가 이동하는 씬에 모션 블러 적용 시, 모션 블러 효과가 이상하게 나오는 경우가 발생한다. 해결 모션 블러 효과는 자기 자신에게 오는 모션 벡터를 통해 시간 별 픽셀 이미지를 가져 온다. 이를 확인하기 위해 코드를 수정해서 이미지를 출력했다. 물체 간 서로 거리가 있을 경우, 아무런 ...

[ Dx11 ] (solution) 모션 블러가 사라지는 현상

문제 Depthpeeling을 통한 모션 블러 구현 시, 아래 그림과 같이 앞의 공의 모션 블러 효과는 존재하는데 뒤의 모션 블러가 사라지는 현상이 발생했고, 이를 해결하고자 했다. 앞의 공의 모션 블러 효과는 존재하는데 뒤의 모션 블러가 사라지는 현상 해결 먼저 해당 위치에서 발생한 문제를 확인했는데 레이어 별로 모션 벡터 맵을 출력했...

[ Reference ] K(+) Buffer; An Efficient, memory Friendly And Dynamic K Buffer Framework

k(+)-buffer 1. 개요 1) 제안 Fragment 깊이 정렬은 복잡한 렌더링 효과를 시뮬레이션 하는 다수의 이미지 기반 기술의 기본이나, 깊이 복잡도가 높은 장면을 래스터화 할 때는 시간과 공간의 관점에서 어려운 작업이다. 낮은 그래픽 메모리 요구 사항이 가장 중요할 때, k-버퍼는 생성된 모든 조각의 하위 집합에 대해 올바른 깊이 순...

[ Algorithm ] 탐욕 알고리즘

탐욕 알고리즘 1. 탐욕 알고리즘(greedy algorithm) 답을 하나씩 고르는데, 미리 정한 기준에 따라서 매번 ‘가장 좋아 보이는 답을 선택’ 동적 계획과 마찬가지로 최적화 문제를 푸는데 주로 사용(상대적으로 설계하기 더 쉬움)한다.동적 계획은 재귀관계식을 세워 입력 사례를 더 작은 입력 사례로 분할하는 반면, 탐욕 알고리즘은 입력 사...

[ 백준 ] 2869번 달팽이는 올라가고 싶다

문제 풀이 달팽이는  V미터인 막대를 올라가는데 낮에 A미터를 올라가고, 밤에 B미터 미끄러진다고 하며, 정상에 올라간 후에는 미끄러지지 않는다는 조건 안에 막대를 올라가는 시간을 구하고자 한다. 이 문제에서는 높이V와 낮에 올라가는 높이 A, 밤에 미끄러지는 높이 B가 입력 값으로 주어져 얼마간의 시간이 걸리는지 출력 값을 ...