일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- DirectX
- InputManager
- 네트워크
- DirectX12
- 네트워크 게임 프로그래밍
- 게임 클래스
- Dynamic Indexing
- Frustum Culling
- 큐브 매핑
- Render Target
- gitscm
- direct3d
- TCP/IP
- 입방체 매핑
- C++
- gitlab
- 게임 프로그래밍
- Deferred Rendering
- Direct3D12
- 조명 처리
- effective C++
- light
- 동적 색인화
- 노멀 맵핑
- 디퍼드 렌더링
- 절두체 컬링
- 직교 투영
- 장치 초기화
- 게임 디자인 패턴
- FrameResource
- Today
- Total
목록게임 소프트웨어 (5)
코승호딩의 메모장
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bLzmg3/btswpXefDrl/9krhjpG9FhAnO4ogdiMmfK/img.png)
오브젝트란 월드(씬) 상에 배치될 수 있는(화면에 그려질 수 있는) 모든 것을 의미한다. 오브젝트는 부피, 무게와 같은 물리적 특성을 지니며 예를 들어 건물, 장애물, 유닛, 총알 등이 있다. 이 모든 것들이 Object라는 클래스 안에 만들어질 것이다. 이번 글에서는 오브젝트를 생성하고 위치, 크기와 같은 특성을 부여하면 자동으로 화면에 그려지도록 구현하는 것이 목표이다. 이번 프로젝트 구현의 목표는 다음과 같다. GSEGame 클래스에서 ObjectMgr 보유 ObjectMgr 클래스에서 Object 관리 Object Maximum 개수 제한(디버깅 및 유지관리 시 장점) 랜덤 포지션으로 많은 Object 생성 후 화면에 그리기 우선 앞서 작성하였던 GSEGame 클래스 안에 Object를 생성을 할..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cEW0La/btsvmzloSRQ/AeKO9ywY1bvrJKbvnxiqj0/img.png)
이번 포스팅에서는 지난 시간 만든 SampleProject를 GitLab을 이용해서 연동을 할 것이다. 일단 이미 만들어진 ID를 기반으로 GitLab에 접속하여 Project를 생성(GitLab Cloud Storage에 생성)하고 생성된 Project를 Clone을 통해 Local PC로 옮기고 Local Storage에 올린다. 1. Craete Project 우선 GitLab의 페이지에서 Create a Project를 누른다. Create a Project를 누르면 다음과 같은 창이 뜨는데 왠만하면 Create blank Project를 선택하도록 한다. Project name을 채워서 Project를 생성한다. 2. Project members 다음 자신의 Project를 관리 및 감독할 수 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bd06jE/btstSikIdSi/YcxOkYOPQoA00PkLnMkx8k/img.png)
메인 루프(메인 쓰레드, 게임 쓰레드)란 과연 무엇일까? 게임은 응용 프로그램이 종료되지 않도록 지속적으로 무한 루프를 돌며 실행하는 구조이다. 위 구조는 렌더링이 중요한 응용 프로그램에서 동일하게 적용이 된다. 오른쪽 그림은 간단한 OpenGL 코드를 이용한 응용 프로그램이다. 이 프로그램 또한 하는 일은 하나의 점 밖에 찍고 있지 않지만 계속 루프를 돌며 종료되지 않도록 하고 있다. OpenGL에서는 흔히 GLUT라는 메인 루프를 사용하고 있으며 이 메인 루프에서는 다른 쓰레드에서 이벤트가 들어왔다는 전달을 받을 것이다. 이러한 쓰레드 들이 왼쪽 그림에 나타난 Display, Idle, Keyboard, Mouse, Special 이벤트 등의 부가적인 콜백 함수이다. int main(int argc,..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/MSvsu/btstRsg4WiC/2wKsJTDgtbdJtmGnE0gQck/img.png)
소프트웨어 : 저장장치(휘발성 메모리, 비휘발성 메모리 등)에 저장된 특정한 목적의 하나 또는 다수의 컴퓨터 프로그램 원래 소프트웨어는 공학 분야가 아니었으며, 공대에 속해있지 않고 자연대(물리, 화학, 기초과학 등)였다. 과거 컴퓨터 공학과는 대부분 컴퓨터 회로나 구조가 중요한 학과였다. 현재는 하드웨어 자체는 전자 공학과쪽에 밀접해졌고 컴퓨터 공학과는 하드웨어가 아닌 소프트웨어를 다루는 학과가 되었다. 즉, 공학은 소프트웨어와 동 떨어져 있는 분야였다. 위 그림은 소프트웨어 구조의 그림이다. 우선 사용자(인간 or AI)가 상호 작용을 하면서 필요한 무언가를 사용할 수 있게 해주는 것을 응용 소프트웨어라고 한다. 여기서 소프트웨어가 독자적으로 동작을 한다는 것은 굉장히 비효율적이다. 왜냐하면 하드 디..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/LafQb/btstHcqaD7d/CbLL5rQIVjKIukBsPXM9DK/img.png)
이번 포스팅에서는 형상 관리 툴인 Git을 활용하여 결과적으로 C++과 OpenGL을 활용한 2D 게임 개발 프로젝트를 진행하며 코드를 Git을 통해 관리하는 방법을 기술하고자 합니다. 또한 GitHub가 아닌 GitLab을 사용하여 형상 관리를 하고자 합니다. 위 주제는 한국공학대학교 게임공학과 이택희 교수님 수업 게임 소프트웨어 공학에서의 내용을 기반으로 진행될 것입니다. Git이란 Git : 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하는 분산 버전 관리 시스템, 변화를 시간에 따라서 관리해 주는 형상 관리 시스템 Git의 기능은 무궁무진할 정도로 매우 많으며 Git만 알고 있어도 복잡한 어플리케이션을 만드는 데 있어서 형상 관리를 굉장히 빠르고 쉽게 할 수..