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

JungHoon Eum·2026년 3월 31일

오늘의 교훈

  • 사실 어제 빌드가 거의 완성되어서 오늘 쓸 내용은 그리 많지 않다. 밸런스 수정이 대부분.
  • 방어력 계산 등등의 스탯계산을 로그식으로 적용하는 게임들이 많은 이유가 있다. 대부분의 스탯이 결과적으로 곱연산식으로 계산되는데 이 때 발생하는 인플레이션을 감당하기 최적의 구조 같다.
  • 완성에선 한참 거리가 먼 상태지만, "최소한을" "최대한 빨리" 구현하는 게 이후 수정하며 구현을 추가하기 최고인 것 같다.
    • 확장성을 생각하며 설계를 잘 하는 것도 물론 중요하지만, 그게 속도에 차질을 주면 안 된다. std::unique_pointer<enemy> 사태 처럼, 그냥 질러놓고 어케어케 맞춰 가야 그 때 되서 문제가 인식이 되고 "결정" 이 될 수 있다.

오늘의 코드뭉치

  • 스트링엔 +가 된다
    currentLog.push_back("The enemy dealt " + std::to_string(damage) + " damage.");
    이런 식으로.
  • Intentional Fallthrough
    switch-case 문에서 break; 생략하기: case A에서 실행할 거 + case A 와 B에서 실행할 것. 이렇게 B 내용을 A case에서도 실행하고, B '에서만' 실행해야 할 게 딱히 없거나
    여러 가지 case 중에 겹치는 내용을 실행하는 case 들이 있을 때.
switch (roomCount)
{
case 1:
case 2:
    minType = 0;
    maxType = 3;
    break;
case 4:
case 5:
    minType = 2;
    maxType = 5;
    break;
case 7:
case 8:
    minType = 5;
    maxType = 8;
    break;
default:
    break;
}

이런 식일 때 쓴다.

  • 삼항 연산자 실제로 사용해 봄
    return (roomCount == 10) ? 2 : 0; 10번 방일 땐 2(게임 전체 클리어) 반환, 아닐 땐 0(그냥 전투 스테이지 클리어) 반환
  • continue;: break; 와 다르게 반복문 자체를 끝내는 건 아니고 반복문 다시 돌리라는 뜻. 위로 돌아가라.
profile
개발지망생

0개의 댓글