본문 바로가기
반응형
[C++로 배우는 게임 엔진 개발] Day 16: 2D 조명과 그림자 효과 2D 조명과 그림자 효과오늘은 OpenGL과 GLSL을 사용하여 2D 조명과 그림자 효과를 구현하는 방법을 학습하겠습니다. 이를 통해 게임 그래픽을 더욱 현실감 있게 만들 수 있습니다.1. 조명 효과의 개요조명 효과는 물체의 밝기와 색상을 변경하여 현실적인 느낌을 주는 그래픽 기법입니다. 2D 게임에서는 주로 점광원(Point Light)을 사용하여 조명 효과를 구현합니다.2. GLSL 쉐이더 수정조명 효과를 구현하기 위해 기존의 버텍스 쉐이더와 프래그먼트 쉐이더를 수정하겠습니다. 버텍스 쉐이더shaders/vertex_shader.glsl 파일을 다음과 같이 수정합니다.#version 330 corelayout(location = 0) in vec3 aPos;layout(location = 1) in .. 2024. 8. 1.
[C++로 배우는 게임 엔진 개발] Day 17: 입자 시스템 구현 입자 시스템 구현오늘은 OpenGL과 GLSL을 사용하여 입자 시스템을 구현하고, 다양한 시각 효과를 만드는 방법을 학습하겠습니다. 입자 시스템은 폭발, 연기, 불꽃, 눈, 비 등 다양한 시각 효과를 표현하는 데 사용됩니다.1. 입자 시스템의 개요입자 시스템은 작은 입자들로 구성되어 특정한 규칙에 따라 움직이는 시스템입니다. 각 입자는 위치, 속도, 색상 등의 속성을 가지며, 시간에 따라 변화합니다.2. 입자 클래스 설계먼저 입자를 관리하기 위한 Particle 클래스를 설계합니다. 헤더 파일 작성include/Particle.h 파일을 생성하고 다음과 같이 작성합니다.#ifndef PARTICLE_H#define PARTICLE_H#include struct Particle { glm::vec3 .. 2024. 8. 1.
[C++로 배우는 게임 엔진 개발] Day 19: 스크립팅 시스템 기초 (Lua) 스크립팅 시스템 기초 (Lua)오늘은 Lua를 사용하여 스크립팅 시스템을 구현하고, 게임 로직을 스크립트로 작성하는 방법을 학습하겠습니다. 스크립팅 시스템을 통해 게임 로직을 유연하게 변경하고, 확장할 수 있습니다.1. Lua 설치 및 설정먼저 Lua를 설치하고 프로젝트에 설정합니다. Lua 다운로드 및 설치Lua 공식 웹사이트에서 Lua 바이너리 파일을 다운로드합니다.다운로드한 파일을 프로젝트 디렉토리로 이동합니다.CMakeLists.txt 수정CMakeLists.txt 파일에 Lua 라이브러리를 추가합니다.cmake_minimum_required(VERSION 3.10)# 프로젝트 이름과 버전 설정project(GameEngine VERSION 1.0)# C++ 표준 설정set(CMAKE_CXX_ST.. 2024. 8. 1.
[C++로 배우는 게임 엔진 개발] Day 20: 리소스 관리 시스템 구현 리소스 관리 시스템 구현오늘은 게임 엔진에서 사용할 리소스(텍스처, 사운드, 폰트 등)를 효율적으로 관리하기 위한 리소스 관리 시스템을 구현하겠습니다. 리소스 관리 시스템은 리소스의 로드, 캐싱, 해제를 담당하여 메모리 사용을 최적화하고 성능을 향상시킵니다.1. 리소스 관리 시스템 설계리소스 관리 시스템을 설계하고, 텍스처를 관리하는 TextureManager 클래스를 구현합니다. 헤더 파일 작성include/TextureManager.h 파일을 생성하고 다음과 같이 작성합니다.#ifndef TEXTUREMANAGER_H#define TEXTUREMANAGER_H#include #include #include #include class TextureManager {public: static Text.. 2024. 8. 1.
[C++로 배우는 게임 엔진 개발] Day 21: 네트워크 기초 (ENet) 네트워크 기초 (ENet)오늘은 네트워크 프로그래밍의 기본 개념을 이해하고, ENet 라이브러리를 사용하여 간단한 네트워크 기능을 구현하는 방법을 학습하겠습니다. ENet은 효율적인 비동기 네트워킹을 제공하는 라이브러리로, 게임 네트워크 프로그래밍에 적합합니다.1. ENet 설치 및 설정먼저 ENet 라이브러리를 설치하고 프로젝트에 설정합니다. ENet 다운로드 및 설치ENet 공식 GitHub 페이지에서 ENet 소스 코드를 다운로드합니다.다운로드한 소스 코드를 프로젝트 디렉토리로 이동합니다.ENet 소스 코드를 빌드하고 설치합니다.CMakeLists.txt 수정CMakeLists.txt 파일에 ENet 라이브러리를 추가합니다.cmake_minimum_required(VERSION 3.10)# 프로젝트.. 2024. 8. 1.
[C++로 배우는 게임 엔진 개발] Day 22: 3D 그래픽스 기초 (OpenGL/DirectX) 3D 그래픽스 기초 (OpenGL/DirectX)오늘은 3D 그래픽스의 기초를 이해하고, OpenGL을 사용하여 간단한 3D 모델을 렌더링하는 방법을 학습하겠습니다. 3D 그래픽스는 2D 그래픽스보다 복잡하지만, 게임 개발에서 중요한 요소입니다.1. OpenGL 3D 기초 설정먼저, OpenGL을 사용하여 3D 그래픽스를 렌더링하기 위한 기초 설정을 합니다. 헤더 파일 작성include/Graphics3D.h 파일을 생성하고 다음과 같이 작성합니다.#ifndef GRAPHICS3D_H#define GRAPHICS3D_H#include #include #include class Graphics3D {public: Graphics3D(); ~Graphics3D(); bool Initializ.. 2024. 8. 1.
[C++로 배우는 게임 엔진 개발] Day 23: 3D 모델 로딩 및 렌더링 3D 모델 로딩 및 렌더링오늘은 실제 3D 모델을 로딩하고, 게임 엔진에서 렌더링하는 방법을 학습하겠습니다. 이를 위해 Assimp 라이브러리를 사용하여 모델 파일을 로드하고, OpenGL을 사용하여 렌더링합니다.1. Assimp 설치 및 설정먼저 Assimp 라이브러리를 설치하고 프로젝트에 설정합니다. Assimp 다운로드 및 설치Assimp 공식 GitHub 페이지에서 Assimp 소스 코드를 다운로드합니다.다운로드한 소스 코드를 프로젝트 디렉토리로 이동합니다.Assimp 소스 코드를 빌드하고 설치합니다.CMakeLists.txt 수정CMakeLists.txt 파일에 Assimp 라이브러리를 추가합니다.cmake_minimum_required(VERSION 3.10)# 프로젝트 이름과 버전 설정pro.. 2024. 8. 1.
[C++로 배우는 게임 엔진 개발] Day 24: 카메라 시스템 구현 카메라 시스템 구현오늘은 3D 씬을 탐색하고 조작할 수 있는 카메라 시스템을 구현하는 방법을 학습하겠습니다. 카메라 시스템은 게임 엔진에서 중요한 역할을 하며, 사용자가 3D 세계를 탐색하고 상호작용할 수 있도록 합니다.1. 카메라 클래스 설계카메라의 위치, 방향 및 프로젝션을 관리하는 Camera 클래스를 설계합니다. 헤더 파일 작성include/Camera.h 파일을 생성하고 다음과 같이 작성합니다.#ifndef CAMERA_H#define CAMERA_H#include #include enum Camera_Movement { FORWARD, BACKWARD, LEFT, RIGHT};const float YAW = -90.0f;const float PITCH = 0.0f;cons.. 2024. 8. 1.
[C++로 배우는 게임 엔진 개발] Day 25: 3D 물리 엔진 기초 (Bullet) 3D 물리 엔진 기초 (Bullet)오늘은 Bullet 물리 엔진을 사용하여 3D 게임 오브젝트 간의 물리적 상호작용을 구현하는 방법을 학습하겠습니다. Bullet 물리 엔진은 게임 개발에서 널리 사용되는 물리 엔진으로, 현실적인 물리 시뮬레이션을 제공합니다.1. Bullet 설치 및 설정먼저 Bullet 물리 엔진을 설치하고 프로젝트에 설정합니다. Bullet 다운로드 및 설치Bullet 공식 GitHub 페이지에서 Bullet 소스 코드를 다운로드합니다.다운로드한 소스 코드를 프로젝트 디렉토리로 이동합니다.Bullet 소스 코드를 빌드하고 설치합니다.CMakeLists.txt 수정CMakeLists.txt 파일에 Bullet 라이브러리를 추가합니다.cmake_minimum_required(VERSIO.. 2024. 8. 1.
[C++로 배우는 게임 엔진 개발] Day 26: 스카이박스와 환경 맵핑 스카이박스와 환경 맵핑오늘은 스카이박스와 환경 맵핑을 통해 3D 씬의 시각적 품질을 향상시키는 방법을 학습하겠습니다. 스카이박스는 게임의 배경을 설정하여 더 몰입감 있는 환경을 제공하며, 환경 맵핑은 물체가 주변 환경을 반사하는 효과를 추가합니다.1. 스카이박스 구현먼저 스카이박스를 구현합니다. 스카이박스는 6개의 텍스처로 이루어진 큐브 형태의 배경입니다. 헤더 파일 작성include/Skybox.h 파일을 생성하고 다음과 같이 작성합니다.#ifndef SKYBOX_H#define SKYBOX_H#include #include #include #include #include #include class Skybox {public: Skybox(); ~Skybox(); bool Initial.. 2024. 8. 1.
반응형