Study 10

Astar C++로 만들기

// Astar.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실행이 시작되고 종료됩니다.//#include #include "olcConsoleGameEngine.h"#include #include #include#include #include #include #include #include#include #include#define HASH_TABLE_COUNT 11#define DIR_COUNT 8using namespace std;enum NodeDirection : UINT8{ N, E, S, W, NE, NW, SE, SW};struct Vector2{ int x; int y; Vector2(int _x, int _y) : x(_x), y(_y) {}};Vector2 ..

Study 2024.10.10

하노이의 탑 C++로 만들기

// Hanoi.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실행이 시작되고 종료됩니다.//#include int count = 0;int max = 0;const int size = 3;int hanoi[size] = { 1,2,3 };void Hanoi(int n, int start, int goal){ int middle = max - start - goal; count++; if (n > 1) { Hanoi(n - 1, start, middle); } printf("링 [%d] : %d 기둥 -> %d 기둥\n", n, start, goal); if (n > 1) { Hanoi(n - 1, middle, goal); }}int main(){ for (int i = 0..

Study 2024.10.10

MVC, MVP, MVVM

MVC, MVP, MVVM- UI와 로직의 분리가 목적인 패턴- 불필요한 종속 관계를 줄임- 아키텍쳐 패턴- 관심사 분리(Soc) : 단순한 하나하나의 클래스가 아니고, 어떤 레이어/로직들간의 관계를 나타내는 개념 MVC - User는 View를 보고, User의 Input값은 Controller로 전달됨- View 자체는 문제가 없으나, Model 데이터의 변경사항을 수신하기 위해 View 별 코드가 필요함 (한계)MVP - 유니티에서는 주로 요걸 씀- Model - View를 분리시키는게 주 목표 / Presenter가 양쪽과 소통하면서 중재한다- User는 View하고만 소통하면 됨!  - 확장성 / 모듈성 / 재사용성 및 유지 관리성 충족- Presenter는 상태 변경을 감지하기 위해 Model..

Study 2024.09.30

효율적인 텍스쳐 압축 이해하기

Texture True Color(32bpp)우리가 일반적으로 생각하는 이미지R + G + B + A (각각 8비트) = 32 bppBit per Pixel 한 픽셀당 32비트를 쓴다 근데 이걸 그대로 사용하진 않음   PNG비손실 압축이미지에 들어있는 색상의 수 차이에 따라 용량 차이가 심함유사한 색상이 많을수록 압축 효율이 올라감 JPG손실 압축 이 이미지를 그대로 GPU 메모리에 올리게 되면 4MB를 먹는다GPU에서 사용하는 텍스처들은 ETC/PVRTC 등 GPU 전용 포맷들로 변환해서 사용하게 됨그렇기 때문에 원본이 PNG든 JPG든 PSD든 다 상관 없음 어차피 유니티에서 바꿔서 올리기 때문!   여기 있는 이 포맷으로 변환된다  GPU 입장에서 이미지를 GPU에서 사용해서 렌더링할 때 사용하게..

Study/Graphics 2024.09.05

디퍼드 렌더링이란?

렌더링/쉐이딩/라이팅의 여정 Realtime Light를 어떻게 다룰거냐? 에 따라 Forward / Deferred 가 나뉨- Realtime : 실시간 연산, 동적 라이팅- 여기서 Baked 는 논외 Forward Rendering 전통적인 라이팅 기법위의 그림처럼 앞에 있는 친구 먼저 그리고 뒤에 차를 그리기 때문에겹치는 부분만큼 픽셀 연산을 건너뛸 수 있다!  Depth Buffer 여기서 1이 위 그림의 펭귄, 2가 자동차라고 보면 됨Depth Buffer는 불투명 오브젝트만 가능하다Order In Layer 기능은 이거랑 관계 없이 렌더링 순서로 작동 Double Buffering  렌더링 순서대로 화면에 보이는 게 아니라 모든 렌더링이 완료된 화면이 뿅하고 모니터에 나올 수 있게 해줌렌더링 ..

Study/Graphics 2024.08.30

멀티 플레이어 프로그래밍(2)

인터넷서킷 스위칭(구)- 송수신 단말 사이에 회로 연결을 해두고 정보 전달- 송수신이 끝날 때까지 계속 연결 상태를 유지함- 높은 정보 전달 품질, 하지만 한 번에 하나의 통신 전용으로만 회선을 사용해야하므로 가용성 면에서 제한적임 패킷 스위칭(신)- 회선 자체는 공유하되, 송수신 내용을 패킷이라는 작은 뭉치로 나눈 뒤 저장 후 전달- 각각의 노드는 수신한 패킷을 저장 후 목적지에 가까운 노드로 전달- 한 번에 많은 송수신 패킷 처리 가능!  이더넷 - MAC(매체 접근 제어 주소) 사용- MAC : 이론 상 고유한 48비트 숫자, 네트워크에 연결 가능한 장비 하나하나 고유한 값으로 부여-> 이러한 장비를 NIC라고 부름(메인보드에 내장되어있다)- 모든 이더넷 패킷은 총 8바이트의 16진수로 시작함. 이..

Study/Network 2024.08.20

멀티 플레이어 게임 프로그래밍(1)

1장 - 네트워크 게임의 개요트라이브스 (1998, FPS) - 효율성 문제로 비신뢰성 프로토콜 사용(반드시 도착한다는 보장 없음)- CS 모델 채용P2P 모델 - O(n2)의 대역폭 필요, 각각의 플레이어들이 주어진 대역폭을 나눠써야함(128명이라면 16,384로 나눠서)CS 모델 - 서버만 O(n) 대역폭 처리하면 됨 - 네트워킹 모델 1. 플랫폼 패킷 모듈패킷 - 네트워크로 보내기 위해 데이터를 묶어놓은 한 단위- 유일하게 플랫폼 종속적인 계층- 표준 소켓 API를 감싸놓은 것. 다양한 패킷 형식을 조립하고 전송하려는 목적으로(버클리 소켓과 유사) 2. 연결 관리자- 두 컴퓨터 사이의 연결 추상화- 윗단의 스트림 관리자가 내려주는 데이터를 플랫폼 패킷 모듈로 전달해주는 역할- DSN 보장(맡긴 패킷..

Study/Network 2024.08.20