지금 까지 공부한 내용을 바탕으로 간단한 나만의 게임엔진을 만들어 보기로 하였다.
목적은 어느정도 규모 있는 프로그램을 만들어 보면서 공부한 내용 복습 및 개발 과정에서 발생하는 문제를 해결하면서 새로운 걸 배울 수 있을 것 같기 때문이다.
앞으로 만들 프로그램이 어떤 것인지에 대한 정의를 해보고 어떤 기능을 만들어 볼지 적어보려고 한다.
내가 생각하는 게임 엔진의 기본 기능
- 특정 파일의 데이터를 불러와 프로그램 내부에서 정의한 자료구조에 저장한다.
- 파일 i/o
- 저장된 데이터 형식에 알맞은 처리를 한여 모니터에 그린다.
- 렌더러 기능
- 실시간으로 사용자와 소통하여 화면에 그려진 물체가 변환 되어야함
- event 처리 기능
구현 목표
- 수학 라이브러리와 obj, png파일 로더 구현
- 이미 훌륭한 라이브러리는 존재하지만 학습을 목표로 간단하게 구현해 본다
- 추후 상용 라이브러리로 대체할 계획이기 때문에 인터페이스는 사용라이브러리와 동일하게 구현 한다.
- 크로스 플랫폼을 위한 그래픽 API, window API, GUI API 추상화
- openGL을 그래픽 API로 사용하되 한번 더 추상화된 인터페이스를 구현하여 추후 direct3D 추가하는 것이 목표
- AppLayer와 WindowLayer를 나눠서 구현
- AppLayer
- 메인 로직 및 추가될 기능들
- WindowLayer
- 사용자 input, event 처리
- AppLayer
꼭 지켜보고 싶은 점
우선 간단한 렌더러를 시작으로하여 계속 새로운 기능을 붙여 나가고 크로스 플랫폼을 계획 하고 있기 때문에 아래 한가지는 꼭 유념하면서 개발해 보려고 한다.
- 확장 가능성 있는 코드를 작성하자
- 객체지향적인 코드 작성
'Project > GameEngine' 카테고리의 다른 글
프로젝트 셋팅 - 진행 시 규칙 (0) | 2024.01.25 |
---|---|
상용 엔진 구조 분석 - Godot Engine (0) | 2023.12.31 |