언리얼로 간단하게 제작한 숫자 야구 게임이다.
https://github.com/balamwind/LeanProject9
함수 줄바꿈 무조건 해라
WhiteSpace 보는 옵션이 있는데 그거 키면 불필요한 띄어쓰기 있으니까 지워라
한방에 지워주는 단축키 있다.
저장시 WhiteSpace를 싹 다 지워주는 옵션이 있을거다
UObject 변수인데 UPROPERTY 없으면 노란줄 뜸
잘못하면 GC가 가져감 꼭 붙이셈
생성해서 넣는거면 꼭 필요한거 까진 않음
그래도 꼭 붙여주는게 좋음
그게 싫으면 TWeakObjectPtr을 쓰셈
UPROPERTY(Transient)를 해서 런타임에서 생성하는 거라 삭제 신경 덜써도 된다 표시를 해주면 된다.
한줄짜리 if 쓰지 않는걸 추천한다.
문자로 Widget을 구해오는 등할 때 TEXT() 반드시 붙여줘야한다
윈도우는 문제 없어도 리눅스나 다른 OS에서 실행할 때 문제가 될 수 있다.
함수 좀 길어진다 싶으면 함수 분리해라
람다로 만들던가
const는 항상 붙여주자
왠만하면 초기값을 .h에서 초기화해줘라
특히 블루프린트 노출 변수는 기본값 설정을 해줘야한다
안하면 경고 메세지 뜸
check() 같은거 붙여서 nullptr 체크 하는게 좋다.
GetWidgetFromName()은 무거우니까 왠만하면 쓰지 말아라
GameMode에서 PostLogin으로 처리하는게 더 좋았을거다
튜터 쌤이 알기론 PlayerController의 Login 에서 실행될 텐데 자기 Pawn까지 생성하고 보내는걸로 안다
FString보다 FName이 비교가 더 빠르다
기술 면접에서도 많이 물어보는데 FText, FString, FName이 어떻게 다른지 공부해두는게 좋다.
다른 사람이 봤을 때 딱 알아볼 수 있게
check() 같은거를 붙여주는게 좋다.
예를 들어 Problem이 길이가 3으로 고정되는건 나만 알고 있으니까
앞에 check(Problem.Len() == 3) 이런걸 붙여주면 좋다.
증감 연산자는 전위가 아주 살짝 더 빠르니까 앞에 붙이자 ( ex) ++ProblemCount )
아예 조건이 비슷하지 않는건 그냥 if문으로 분리하고 return;을 붙여주는게 낫다
아예 if문으로 조건을 붙이고 return을 해서 밑으로 코드를 내리는게 대부분 더 낫다
if문으로 정리하는게 더 깔끔할 때도 있는데 그건 하다보면 느낄꺼다
그냥 상수로 쓸꺼면 const만 붙이지말고
constexpr을 쓰거나 inline static constexpr를 붙이는게 나을꺼다
RPC는 최소한으로 쓰는게 좋다
같은 함수에 여러번의 RPC를 호출하는 것 보단 한번의 RPC로 줄여라
멀티 게임 제작할 땐 RPC의 호출을 최소화 해주는게 좋다.
함수 내부에 식을 넣지 마라. 헷갈린다
값을 나는 알고있지만 다른 사람이 볼 때는 모르니까 한방에 알 수 있게 check문 같은걸 넣어야한다.
RandomIndex를 선택하고 걔꺼를 뽑고 그거를 맨 뒤에 있는애랑 swap하고 RnadomIndex를 뽑을 때 최대 값을 1씩 줄이는 방식으로 원하는 랜덤을 뽑으면서 메모리도 쓰는 시간도 안쓸 수 있다.
튜터님이 알기론 ?? 피셔 알고리즘 이라고 한다.
람다 쓸 때 [&]만 띡 쓰지 말고 실제로 쓰는 변수를 직접 넣어라
[Temp = Variable] 이런식으로 자동으로 Variable에 맞는 타입으로 캡쳐해서 쓸 수 있으니까 써라
UObject라면 MakeWeakObjectPtr()을 써서 캡쳐를 해라
그냥 깡 숫자 말고 static constexpr 같은걸 붙여서 어떤 의미를 가지고있는 상수인지 표현해주는게 좋다.
그냥 최대한 RPC를 안보내는게 더 중요하다
최대한 한 함수로 모아서 그 안에서 분기로 분리되게 만드는게 더 좋다