flow-vector
article thumbnail

Architecture Diagram

채택한 방식들

  • 커스텀 자료구조 사용
    • 이유
      • stl 사용시 디버깅 바이너리가 너무 커짐 (템플릿 인스턴스화로 인해)
      • 큰 배열을 사용하려고 할때, 미리 할당된 버퍼와 연결됨
      • 손쉬운 메로리 트래킹 방법이 내장 되어 있음
      • 다국어 문자열 처리 문제를 해결하는 별도의 string 타입을 사용
  • 예외 사용 안함
    • 어떤 경우에도 crash를 허용하지 않음
    • 예외 상황이 발생 했을 때는, error를 출력하고 계속 프로그램이 진행 되도록 함
    • 예외를 사용할 경우 실행파일 크기가 커지고 컴파일시간이 증가하는 단점이 있
  • ECS 사용 안함
    • 오픈 소스이기 때문에 여러 사용자들이 이해하기 편한 엔진 구조는 명시적인 상속 구조가 드러나는 구조라고 생각했기 때문
    Why isn't Godot an ECS-based game engine?

멀티 스레딩

  • 엔진의 기본 작동 시퀀스
    • 해당 시퀀스에서 어떤 부분을 비동기 적으로 처리할 수 있을까?
      • physics 부분과 렌더링 부분

  • 사용자들이 이해하기 쉬운 구현을 위해 서버라는 것을 만들었음
    • 각 스레드가 끝나고 다음 스레드의 수행이 필요하다는 명령을 서버로 보내서 buffering 하게 하고 서버는 해당 명령어를 처리하는 구조

'Project > GameEngine' 카테고리의 다른 글

프로젝트 셋팅 - 진행 시 규칙  (0) 2024.01.25
나만의 게임 엔진 개발 하기 - 시작  (0) 2023.12.31
profile

flow-vector

@flow-vector

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!