본문 바로가기

반응형

Game Programming in C++

(19)
Game Programming in C++ Chapter2 - Animation 책의 소스 코드를 직접 작성해보면서 정리한 글입니다. (실습환경: windows)책 소스 코드: GitHub - gameprogcpp/code: Game Programming in C++ Code1. 애니메이션(animation) 원리대부분의 2D 게임은 플립북 애니메이션(flipbook animation) 기술을 사용해서 구현한다.플립북은 연속적인 이미지를 빠르게 넘겨서 움직임을 만들어내는 기법을 말한다. 2. Animation Frame Ratechapter2에서 애니메이션 속도는 24FPS다. 물론 고정된 값은 아니고 게임에 따라 다양한 선택지가 있다.현재 출력해야할 애니메이션 프레임 번호는 다음과 같이 구할 수 있다._ship.current_frame += 24.0f * delta_time; c..
Game Programming in C++ Chapter2 - 배경 스크롤 책의 소스 코드를 직접 작성해보면서 정리한 글입니다. (실습환경: windows)책 소스 코드: GitHub - gameprogcpp/code: Game Programming in C++ Code1. 배경 스크롤(background scroll) 원리이미지를 계속 이어 붙이면 된다.2. 텍스처(texture)도형에 이미지를 입히는 것, 이때 사용되는 이미지를 텍스처라 한다.배경 텍스처를 저장하기 위해서 다음과 같은 자료구조를 사용한다.struct BGTexture{ SDL_Texture* sdl_texture; float x, y; float scroll_speed;}; 3. 소스 코드chapter1과 동일하다.Main.cppGame.hppGame.cpp 4. 프로그래 흐름loadData()에서 png ..
Game Programming in C++ Chatper2 - 개요 책의 소스 코드를 직접 작성해보면서 정리한 글입니다. (실습환경: windows)책 소스 코드: GitHub - gameprogcpp/code: Game Programming in C++ Code1. 목표a. SDL3 사용b. 배경 스크롤 구현c. 우주선 애니메이션 구현d. Component 기반 게임 객체 구현 2. Chapter2 게임 3. SDL_Image이미지(그림) 파일 처리를 위한 라이브러리이다. (SDL3_image.dll)이번 실습에서는 SDL3와 SDL_image(3.2.4)를 사용한다.GitHub - libsdl-org/SDL_image: Image decoding for many popular formats for Simple Directmedia Layer.
Game Programming in C++ Chapter1 - 정리 책의 소스 코드를 직접 작성해보면서 정리한 글입니다. (실습환경: windows)책 소스 코드: GitHub - gameprogcpp/code: Game Programming in C++ CodeChapter1에서는 Game이라는 하나의 객체를 만들었다.Game 객체의 동작은 다음과 같다.1. processInput(): 사용자 입력을 받아 paddle의 방향을 설정2. updateGame(): delta time을 기준으로 게임 세상을 업데이트3. generateOutput(): 업데이트 된 게임을 화면에 출력void Game::runLoop(){ while (_running) { processInput(); updateGame(); generateOutput(); }} 전체 소스1. game.h..
Game Programming in C++ Chapter1 - 공 움직이기 책의 소스 코드를 직접 작성해보면서 정리한 글입니다. (실습환경: windows)책 소스 코드: GitHub - gameprogcpp/code: Game Programming in C++ Code1. 공(ball)의 움직임공을 움직이기 위해서는 공의 위치, 공의 속도(속력과 방향), 충돌감지 코드가 필요하다. 2. 공의 위치공의 위치는 공을 그릴 때, 사용했다.struct Vector2{ float x, y;}; 3. 공의 방향공은 x, y 방향으로 모두 이동한다.공의 방향은 Vector2 자료구조를 이용해서 구현할 수 있다. +-x오른쪽으로 이동중왼쪽으로 이동중y아래로 이동중위로 이동중 4. 충돌감지공은 paddle 혹은 wall에 충돌할 수 있다. 둘 다, 공의 방향을 바꿔주면 된다.단, paddle..
Game Programming in C++ Chapter1 - paddle 조작 책의 소스 코드를 직접 작성해보면서 정리한 글입니다. (실습환경: windows)책 소스 코드: GitHub - gameprogcpp/code: Game Programming in C++ Code1. 움직임게임에서 움직임이란, 매 순간 정적인 그림들을 빠르게 출력하는 것이다. 2. Frame프레임이란 한 장면에 해당하는 시간 간격을 의미한다. 3. Delta Time앞 프레임과 시간차이를 delta time이라고 한다. 4. 퐁 게임 시간퐁 게임의 시간 단위는 1ms(0.001초) 이다.또한 16 delta time을 가질 것이다. 즉, 16ms(0.016초)마다 게임 세계를 갱신할 것이다.이는 1초(1000ms)를 16ms로 나눈 것(\( 1000 \div 16 = 62.5 \))과 같으며,결과적으로 ..
Game Programming in C++ Chapter1 - paddle 및 ball 추가 책의 소스 코드를 직접 작성해보면서 정리한 글입니다. (실습환경: windows)책 소스 코드: GitHub - gameprogcpp/code: Game Programming in C++ Code1. paddle, ball앞에서 그렸던 wall은 고정된 위치에 그렸었다.하지만 paddle과 ball은 시시각각 그 위치가 달라질 것이다. 따라서 그 위치(x, y)를 기록할 자료구조가 필요하다.struct Vector2{ float x, y;}; paddle은 세로로 긴 막대 형태이다.paddle의 높이를 나타내는 변수(_paddle_h)를 추가하고, paddle의 폭은 벽 두께(thickness)와 동일한 값으로 설정한다. paddle을 그릴 때, 유의사항이 있다.a. 왼쪽에 바짝 붙이지 않을 것. b. ..
Game Programming in C++ Chapter1 - 벽(wall) 그리기 책의 소스 코드를 직접 작성해보면서 정리한 글입니다. (실습환경: windows)책 소스 코드: GitHub - gameprogcpp/code: Game Programming in C++ Code1. 벽 그리기벽을 그리기 위해서는 화면 좌표계에 대한 이해가 필요하다.좌표의 원점(0, 0)은 좌측 상단이다.x값이 증가하면, 왼쪽에서 오른쪽으로 이동한다. (왼쪽 → 오른쪽)y값이 증가하면, 위에서 아래로 이동한다. (위 → 아래) 2. Game.hpp_thickness 변수를 추가한다.#include "SDL3/SDL.h"class Game{public: ...(생략)...private: ...(생략)... const float _thickness; // 벽 두께}; 3. Game.cpp생성자에 _thick..

반응형