[UE5 TIL] Day 26 - C++ 팀프로젝트

JungHoon Eum·2026년 4월 1일

팀프로젝트 발표/ 감상

  • DeltaTime 등 이용해서 실시간을 구현하기 시작하면 넣을 수 있는 시각적 이펙트가 상당히 많다.
  • 타이핑 하는 듯 동적인 텍스트 출력, 실시간 폭발 이펙트, 프레임별로 그린 ASCII 아트...사실상 UE5에선 구현하기 시작할 영역
  • 스킬에 turncount 도입해서 턴카운트 적용된 버프/디버프 넣을 수 있다.
  • 깃은 최대한 많이, 자주 커밋 푸시 하라고 만든 프로그램이다. Rebase to this commit 등 이용해서 계속 오류 해결하면서 서로 코드들 확인하고 병합하고를 반복할 수 있다.
    • 서로 완벽한 상태에서 코드 병합하려고, 병합을 신성한 행위라고 생각하지 말 것
  • 네이밍 역시 고민을 자주 해야 한다. Template Manager 를 일반적인 템플릿이라고 생각해서 이름붙일 수 있겠지만, C++ 코드에서 템플릿이란? 템플릿 클래스 등을 연상시킴. 이렇게 읽으면서 오해할 수 있는 Naming은 지양할 것.
  • BSP - Binary Space Partitioning. Procedural Generation 에 대해서 공부해 보고 싶다.
  • 전투 시스템에 "전투 관련 모든 요소"를 집어넣으면? 확장성 구려진다. 각자 용도를 설정하고 그 용도에 맞는 클래스와 함수를 설계하자.

기억해야 할 코드뭉치

  • Double Buffering, BSP, Singleton, Factory, Bit Flag
  • 특히 Bit FlagSingleton, BSP, Double Buffering.
    • FSM은 내가 만든 게 FSM이고...
  • Double Buffering -> 화면 렌더링을 내 코드 같은 경우는
case BattleUIState::Default:
    ClearScreen();
    RenderHeader(data);
    std::cout << '\n';
    RenderEnemies(data);
    RenderHand(data);
    RenderLogs(data);
    RenderCommands(data, battleUIState);
    break;
  • 이런 식으로 화면을 지운 후 하나하나 함수를 돌려서 렌더링 하면서 출력과 연산을 동시에 함.
    • 이래서 화면 전환 떄마다 깜빡임이 일어나는 것.
  • 화면 전체를 미리 그려둘 변수를 BattleUI에서 선언 해놓고 std::cout 이 아니라 std::ostringstream 으로 거기에 저장. 이후 화면을 교체 하는 식으로 출력하는 것.
  • 그래픽 설정 하는 화면에서 이중 버퍼링, 삼중 버퍼링 하던 게 이거였구나...
profile
개발지망생

0개의 댓글