분류 전체보기

게임에서 컴퓨터 그래픽스(Computer Graphics)는 필수적인 요소다. 초기의 단순한 텍스트 기반 게임에서 시작하여, 시각적인 요소를 더해주기 위해 픽셀 게임이 등장했고, 점차 2D에서 3D로 발전해왔다. 이러한 그래픽의 발전은 게임의 몰입감과 현실감을 크게 향상시켰다. 오늘날의 게임은 정교한 그래픽 기술을 활용해 매우 사실적인 시각적 경험을 제공하며, 플레이어의 상상력을 현실로 구현해준다.나 역시 게임 개발자 나부랭이로 발전하기 위해 컴퓨터 그래픽스에 대해 공부하려고 한다. 하지만 그 이전에, 컴퓨터 그래픽스가 어떻게 발전하였는가에 대해 알아보려고 한다.1. 초기 컴퓨터 그래픽스 (1960-1970년대)초기 1960년대, 컴퓨터 그래픽스는 단순한 와이어프레임 모델로 시작됐다. MIT와 같은 선도..
· 유니티
게임에서 빼놓을 수 없는 것이 AI(Artificial Intelligence)입니다. AI는 컨텐츠를 풍부하게 하는 주 전력이 되며, 플레이어에게 도움을 주거나, 혹은 적대하거나, 혹은 능동적인 상호작용을 통해 플레이어에게 다양한 경험을 제공할 수 있습니다. 저의 경우 AI를 구현할 때 FSM(Finite State Machine - 유한 상태 머신) 방식을 사용했다. 정의할 상태나 상태전이가 적은 소규모 프로젝트에서는 충분했지만, 더 많은 상호작용과 시스템이 있는 대규모 프로젝트에서는 FSM을 사용하여 AI를 구현하기 힘들어집니다. FSM은 다른 기법들에 비해 쉽고 직관적이기 때문에 프로그래머가 아니더라도 누구나 쉽게 설계할 수 있다는 장점이 있지만, 상태와 액션이 다양해지고 복잡해질수록 각 상태의 ..
· 유니티
1. 유한 상태 머신(FSM)이란?유한 상태 머신(FSM)은 상태의 유한 집합과 그 상태들 간의 전환을 정의하는 계산 모델입니다. 각 상태는 시스템이나 프로세스의 특정 조건을 나타내며, 이벤트나 조건의 발생에 따라 다른 상태로 전환할 수 있습니다. 상태(State)상태는 시스템이 어떤 특정 시점에서 존재할 수 있는 모든 조건 또는 상황 중 하나를 의미합니다. 각 상태는 시스템의 행동, 즉 시스템이 수행하는 작업을 결정합니다. 예를 들어, 트래픽 신호등에서는 '빨간색', '노란색', '초록색'이라는 세 가지 상태가 있을 수 있으며, 각 상태는 신호등의 빛의 색을 결정합니다.상태는 시스템의 특정 속성이나 상황을 나타내며, 시스템이 그 상태에 있을 때만 일정한 행동을 하거나 특정 이벤트를 기다립니다. 따라서,..
정의 중국인의 나머지 정리(The Chinese Remainder Theorem, CRT)는 여러 개의 서로 다른 소수인 모듈러(moduli)에 대해 독립적으로 주어진 나머지들을 만족하는 정수를 찾는 문제를 해결하는 수학적 정리입니다. 이 정리는 시스템의 일련의 동시 합동식(congruences)을 하나의 합동식으로 표현할 수 있게 해 줍니다. 중국인의 나머지 정리는 서로 다른 모듈러 \( m_1, m_2, \ldots, m_n \)가 서로 소일 때 (즉, \( \gcd(m_i, m_j) = 1 \) 일 때, \( i \neq j \)) 아래와 같은 연립 합동식에 대하여 해를 찾는 정리입니다 \( x \equiv a_1 \mod m_1 \) \( x \equiv a_2 \mod m_2 \) \( x \e..
정수론은 수학의 한 분야로서, 정수와 관련된 다양한 수학적 성질을 연구합니다. 이 분야는 기본적인 정수의 나눗셈부터 시작하여, 소수, 이차 형식, 다항식의 정수 해, 그리고 숫자의 분할과 같은 복잡한 주제까지 포괄합니다. 정수론은 수학 이론뿐만 아니라 컴퓨터 과학, 암호학, 그리고 수많은 응용 과학 분야에서도 중요한 역할을 합니다. 소수의 패턴, 정수들 사이의 관계, 그리고 숫자들의 이론적 특성을 탐구함으로써, 이 분야는 근본적인 수학적 이해를 제공합니다. 1. 유클리드 호제법 유클리드 호제법은 두 양의 정수의 최대공약수를 찾는 알고리즘입니다. 간단하면서도 매우 빠르게 최대공약수를 구할 수 있기 때문에, 컴퓨터 과학에서도 널리 사용되는 알고리즘 중 하나입니다. 구현 방식 두 수 a와 b (a > b)가 ..
단어 검색 알고리즘 단어 검색 알고리즘은 대규모 문자열 데이터에서 특정 단어나 문장을 효율적으로 찾기 위해 필요합니다. 작은 데이터셋에서는 각 문자열을 순차적으로 검사하는 브루트 포스 방법으로 충분할 수 있으나, 수만 또는 수백만 개의 데이터가 있는 경우 이 방법은 비효율적입니다. 이런 상황에서 단어 검색 알고리즘은 필수적으로, 이는 문자열 데이터 처리의 효율성을 크게 향상시키는 데 중요한 역할을 합니다. 트라이(Trie) 알고리즘 트라이는 문자열 집합을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료구조입니다. 트라이의 주요 특징은 다음과 같습니다. 효율적인 검색: 대규모 데이터셋에서도 문자열의 길이에 비례하여 빠른 검색이 가능합니다. 공간 최적화: 공통 접두사를 공유하는 문자열들이 경로를 공유함으..
등장 배경 초기 프로그래밍은 주로 절차적 방식으로 이루어졌습니다. 이는 입력을 받아 명시된 순서대로 처리하고 결과를 내는 방식이었는데, 주요한 관심사는 프로그램의 논리적 구성과 실행 순서였습니다. 하지만, 프로그램이 복잡해질수록 관리하기 어려운 스파게티 코드가 만들어지는 문제가 있었습니다. 복잡성이 증가함에 따라 기존의 절차적 프로그래밍으로는 한계에 부딪혔습니다. 이에 대한 대안으로 구조적 프로그래밍이 등장했습니다. 이 방식은 프로그램을 여러 함수 단위로 나누어 각 함수가 서로를 호출하는 형태였습니다. 큰 문제를 작은 함수로 쪼개 해결하는 탑-다운(하향식) 접근 방식이었죠. 그러나 구조적 프로그래밍도 데이터를 효과적으로 구조화하는 데에는 한계가 있었습니다. 전역 네임스페이스의 과부하 문제, 특히 GUI ..
등장배경 1990년대 이전에는 하드웨어의 제약으로 인해 개발자들은 주로 하드웨어의 효율성을 최우선으로 고려한 코드를 작성하는 경향이 있었습니다. 즉, "기기 입장에서 효율적인 코드"가 중요시되었죠. 이러한 배경은 하드웨어 성능의 제한 때문에 발생했으며, 유지보수성이나 확장성보다는 실행 효율성이 더 중요한 고려사항이었습니다. 그러나 시간이 지나면서 하드웨어의 성능은 크게 향상되었습니다. 이러한 발전은 무어의 법칙이 예측한 것처럼 하드웨어의 성능이 지속적으로 빠르게 증가하면서 나타난 현상입니다. 하드웨어 성능의 향상으로 인해 개발자들은 하드웨어의 제약에서 벗어나 유지보수성, 확장성, 재사용성 등을 중요시하는 코드를 작성할 수 있게 되었습니다. 이러한 환경 변화 속에서 객체지향 프로그래밍(OOP)이 주목받게 ..
NewtronVania
'분류 전체보기' 카테고리의 글 목록