
참고

셰이더 그래프로 재현
public void SetTerminalText(string text)
{
if (typingCoroutine != null) StopCoroutine(typingCoroutine);
terminalText.text = text;
typingCoroutine = StartCoroutine(TypeText());
}
IEnumerator TypeText()
{
terminalText.ForceMeshUpdate();
TMP_TextInfo textInfo = terminalText.textInfo;
int totalCharacters = textInfo.characterCount;
terminalText.maxVisibleCharacters = 0;
for (int i = 0; i < totalCharacters; i++)
{
terminalText.maxVisibleCharacters = i + 1;
yield return new WaitForSeconds(typingSpeed);
}
typingCoroutine = null;
}

텍스트 마지막에 타이핑 커서 깜빡이는 효과 구현하고 싶긴 한데 급한거 아니니까 나중에
폰트 : https://fonts.google.com/specimen/IBM+Plex+Mono
public void pressButton(ref bool deleteMode)
{
Debug.Log("Button Pressed");
if (isAnimating) return; // 이미 애니메이션 중이면 실행 안 함
isAnimating = true; // 애니메이션 시작
deleteMode = !deleteMode;
if (deleteMode)
terminalText.SetTerminalText("Delete mode enabled");
else
terminalText.SetTerminalText(" ");
애니메이션 진행중인지 검증하는 로직과 deletemode를 바꾸는 로직이 따로 있어서 빠르게 여러 번 누르면 오류 발생
ref로 아예 버튼에서 deletemode를 관리하도록 함

이 상황 포함 다른 상황에서도 체크메이트가 아닌 스테일메이트가 선언됨
/// <summary>
/// 자신의 움직인 후 상대방이 체크되는지 확인하는 함수
/// </summary>
public void MoveCheckCheck(Piece pieceScript)
{
var kingPosition = pieceScript.isWhite ? blackKingPosition : whiteKingPosition;
List<(int, int)> my_moves_to_enemy = new List<(int, int)>();
for (int i = 1; i <= 8; i++)
{
for (int j = 1; j <= 8; j++)
{
Piece piece = board.GetPieceScriptAt(i, j);
if (piece != null && piece.isWhite == pieceScript.isWhite)
{
my_moves_to_enemy.AddRange(piece.PossibleMove(CheckFrom.OtherSide));
}
}
}
if (my_moves_to_enemy.Contains(kingPosition))
{
if (pieceScript.isWhite)
isBlackKingChecked = true;
else
isWhiteKingChecked = true;
print("Check!");
}
else
{
if (pieceScript.isWhite)
isBlackKingChecked = false;
else
isWhiteKingChecked = false;
print("Not Check!");
}
}
해당 기물의 경로만 점검하는게 아니라 자신의 모든 기물을 점검하는 것으로 변경하여 해결.
gpt가 대답해준거라 환각 의심되긴 하지만 유용한 정보라 기록
(기본적으로 1스레드 사용 기준, 검색 속도는 초당 노드 수(NPS)로 측정)
| 탐색 깊이(Depth) | CPU 사용량(1스레드) | 초당 노드 수 (NPS) | 실행 시간(평균) |
|---|---|---|---|
| 10 | 5~10% | 100k~500k | <0.1초 |
| 20 | 20~30% | 1M~5M | 0.5초~2초 |
| 30 | 50~80% | 10M~50M | 5초~20초 |
| 40 | 90~100% | 100M+ | 30초 이상 |
| 탐색 깊이 (Depth) | 예상 Elo 레이팅 |
|---|---|
| Depth 5 | 약 1200 |
| Depth 10 | 약 1600 |
| Depth 15 | 약 2000 |
| Depth 20 | 약 2300 |
| Depth 25 | 약 2600 |
| Depth 30 | 약 2900~3000 |
| Depth 35+ | 3200+ |
| CPU 환경 (쓰레드 수) | Depth 30 도달 시간 |
|---|---|
| 8코어 16스레드 (풀파워) | 10초 |
| 4코어 8스레드 | 20초 |
| 2코어 4스레드 | 40초 |
| 1코어 2스레드 | 80초 |
게임 내에서 Stockfish를 사용할 경우, CPU 사용량을 조절해야 렉을 방지할 수 있음.
Threads 설정)Stockfish는 기본적으로 가능한 모든 CPU 코어를 사용하려고 함,
➡ 하지만 게임이 실행 중이라면 특정 코어만 사용하도록 제한해야 함.
setoption name Threads value 2
"Threads" 값을 2 이하로 설정하면 CPU 사용량을 줄일 수 있음.Stockfish는 탐색 깊이가 높을수록 CPU를 많이 사용하므로, 게임 내에서는 적절한 제한을 두는 것이 중요함.
go depth 15
Stockfish는 기본적으로 무한 탐색(go infinite)을 수행할 수 있는데,
➡ 게임에서는 특정 시간까지만 연산하도록 제한하는 것이 좋음.
go movetime 500
movetime 500 → 500ms(0.5초) 동안만 연산 수행. 
책상 아래에 그림자 드리워지던거
바닥의 Mesh Renderer > Rendering Layer Mask를 변경하여 그림자를 없앴다.

문 : https://assetstore.unity.com/packages/3d/props/interior/free-wood-door-pack-280509