그래픽스/OpenGL 6

인공지능 - 길찾기 BFS

길 찾기 알고리즘은 두 지점의 경로상에 있는 장애물을 피해서 길을 찾는다.이 길 찾기의 복잡성은 두 점 사이에는 여러 다양한 경로 집합이 존재할 수 있다는 사실에 있다.하지만 이러한 경로 중 아주 적은 수의 경로만이 최단 경로이다.장애물의 표면을 따라 이동하는 AI는 지능적으로 보이지 않는다.그래서 최단 경로를 찾기 위해서 모든 가능한 경로를 효율적으로 탐색하기 위한 방법이 필요하다. 그래프 길 찾기 문제를 풀기 전에 먼저 AI가 통과할 수 있는 게임 세계의 부분을 표현하는 방법이 필요하다.일반적으로는 그래프 데이터 구조를 많이 선택한다.그래프는 일련의 노드를 포함한다. 이 노드는 에지를 통해서 서로 연결된다. 이 에지는 방향성이 없는 경우가 있는데방향성이 없다는 것은 양방향으로 이동할 수 있다는 걸 의..

그래픽스/OpenGL 2024.10.30

인공지능 - 상태 기계 설계 해시맵 이용하기

게임 인공지능 구현에 빠질 수 없는 것이 있다.State Machine Behaviors 상태 기계 행위이다. 아주 간단한 게임에서는 AI는 항상 같은 행위를 한다.다음과 같은 3가지 행위를 가지는 AI가 있다고 가정해보자. 플레이어 쫒아가기흩어지기플레이어로부터 멀어지기이러한 행위의 변화를 표현하는 한 가지 방법으로 각 행위가 하나의 상태를 가지는상태 기게 (State Machine)이란 것이 있다. 상태 기계 설계하기 상태 그 자체는 부분적으로 하나의 상태 기계만 정의한다.그래서 상태 기계 설계에 있어서 상태 기계를 변경하거나상태 기계 간 전이하는 방법을 결정하는 것이 중요하다. state 상태를 구분할 때는 주로 enum class를 사용한다.enum class 혹은 enum을 사용하면switch 문..

그래픽스/OpenGL 2024.10.27

2D 운석 피하기 게임 속 수학

운석에 6번 맞으면 플레이어 사망,레이저와 플레이어가 운석이 직접 충돌하는 것으로 운석 부술 수 있음 벡터와 물리 벡터는 방향 + 스칼라입니다. 벡터는 방향을 나타낼 수 있으므로 게임에서는 오브젝트의 방향을 표현하고자벡터를 종종 사용합니다. 오브젝트의 전방 벡터는 오브젝트가 나아가는 직선 방향을 나타내는 벡터입니다.예를 들어 x축을 따라 쭉 이동하는 오브젝트는 전방 벡터 을 가집니다. 개발자는 게임상에서 다양한 벡터 연산을 수행하여 기능 구현을 합니다.따라서 일반적으로 게임 프로그래머는 이런 다양한 벡터 연산을 수행하기 위해 라이브러리를 사용합니다.이로인해 벡터 관련 방정식을 기억하는 것 보다는,어떤 벡터 연산으로 어떤 문제를 해결할 수 있는지를 아는 것이 더 좋습니다.  2D 좌표 평면에서는 x,y축을..

그래픽스/OpenGL 2024.10.20

게임 객체와 컴포넌트의 관계

게임 객체란? 게임 객체는 게임 세계에서 자신을 갱신하거나 그리거나 또는 갱신과 그리기 둘 다 수행하는 모든 오브젝트를 가리킨다. 게임 객체를 표현하는 데는 몇 가지 방법이 있다. 일부 게임에서는 객체 계층 구조를 사용하고, 다른 게임에서는 합성을 사용하며, 또 다른 게임에서는 매우 복잡한 방법을 활용한다. 구현 방법에 상관없이 게임은 이러한 게임 객체를 추적하고 갱신하는 방법이 필요하다. 게임 객체의 타입 일반적인 타입의 게임 객체는 루프의 '게임 세계 갱신' 단계 동안 갱신되며, '출력 생성' 단계에서는 그려진다. 모든 캐릭터나 생명체 또는 움직일 수 있는 오브젝트는 이 범주에서 벗어나지 않는다. 예를 들어 슈퍼 마리오 브라더스에서 마리오나 적들 그리고 모든 동적인 블록은 게임이 갱신하거나 그리는 게..

그래픽스/OpenGL 2024.03.26

선형보간 및 폴리곤 메시

선행보간 선형 보간을 통한 매개변수 방정식을 이용하여 색상 보간으로 색을 추출할 수 있다. 그렇다면 만약 엔진 제작자가 마우스 위치에 따른 색상표를 뽑아낸다고 한다면 해당 이미지처럼 마우스 위치와 정점의 거리를 계산하여 선형보간으로 색상을 추출할 수 있다. 폴리곤 메시 저해상도의 메시는 빠르게 렌더링할 수 있지만 폴리곤의 각진 특징이 드러나기 쉽다. 반면 고해상도 메시는 처리 시간이 더 걸리지만 폴리곤의 각진 특징을 가려줄 수 있다. 정점의 개수가 많으면 해상도가 높다고 말하며, 정점이 적으면 해상도가 낮다고 말한다. 폴리곤 메시 표현은 삼각형 메시를 표현하는 것을 예로 들겠다. 이는 정점 배열로 나열하여 나타낼 수 있다. 이렇게 정점들이 저장된 배열을 정점배열이라고 한다. (vertex array) 삼..

그래픽스/OpenGL 2023.11.01

컴퓨터 그래픽스의 개요

컴퓨터 그래픽스란? 컴퓨터를 이용하여 영상을 생성하는 작업을 컴퓨터 그래픽스라 한다. 이 작업의 입력이 3차원 데이터로 주어지는 경우 3차원 그래픽스라고 부른다. 그래픽스의 발전은 나날이 눈에 띄게 발전되오고있다. 지난 30년간 영화 특수효과 뿐만 아니라 3차원 게임 내에서도 굉장한 발전을 이뤄오고있다. 이는 단순한 PC, 콘솔 게임 뿐만 아니라 모바일 영역에서도 고성능의 그래픽스를 찾아볼 수 있다. 실시간 그래픽스란? 그래픽스는 실시간 그래픽스와 비실시간 그래픽스로 나눌 수 있는데 실시간 그래픽스의 기준은 각 이미지를 1/30초 이내로 렌더링해야한다는 것이 기준이다. ( = Real-time graphics systems must render each image in less than 1/30th of..

그래픽스/OpenGL 2023.10.24