/// <summary>
/// 플레이어의 착수를 Stockfish에게 전달
/// </summary>
public void SendPlayerMoveToStockfish(int x, int y, int mx, int my)
{
// string playermove = GridMoveToUCI(x, y, mx, my);
// UnityEngine.Debug.Log("플레이어의 수 : " + playermove);
// moves += " " + playermove;
// input.WriteLine("position startpos" + moves);
input.WriteLine("position fen " + board.GetFENstring());
input.Flush();
input.WriteLine("go depth 10");
input.Flush();
}

캐슬링 하면 안되는 상황에서도 캐슬링하는 버그 발생
private string FEN_Castling()
{
string fen_castling = "";
if (BothFirstMove((1, 1), (5, 1))) fen_castling += "K";
if (BothFirstMove((8, 1), (5, 1))) fen_castling += "Q";
if (BothFirstMove((1, 8), (5, 8))) fen_castling += "k";
if (BothFirstMove((8, 8), (5, 8))) fen_castling += "q";
if (fen_castling == "") fen_castling = "-";
return fen_castling;
}
또 코파일럿이 짜준 코드를 대충 확인해서 발생했던 문제.
킹 캐슬링 판정과 퀸 캐슬링 판정이 뒤바뀌어 있었다.
좌표를 정상화하여 해결.
p.1 ~ 48
코드가 진짜 문제가 되는 부분을 디자인 패턴이나 설계 원칙을 통해 개선해야 한다. 이전에 봤던 어떤 적용 시나리오와 유사하다고 해서 적합성을 판단하지 않고 마구 적용하면 안된다.
디자인 패턴을 적용하는 목적은 단일 책임을 위해 큰 코드 조각을 작은 클래스로 분할하여 코드가 높은 응집도와 낮은 결합도를 갖게 하는 것이다. 코드가 복잡하지 않으면 복잡한 디자인 패턴을 도입할 필요가 없다.
디자인 패턴을 적용하면 확장성은 향상되지만 가독성은 나빠질 수 있다. 또한 팀 전체가 복잡한 설계에 따른 작업을 항상 수행해야 한다. 잘못된 예측으로 인한 과도한 설계를 피하기 위해 지속적인 리팩터링을 해야 한다.
객체 지향 설계 프로세스
p.172 ~ 200

https://www.udemy.com/course/lighting-in-unity-l
섹션 1-4. ~ 1-5.

GameObject > Light에 있는 광원 중에 Area Light 말곤 real time
Light에 Shadow Type으로 그림자 설정
Directional Light



Rendering > Lighting > Environment > Sun Source를 지정하면 첫 번째 만들어진 Directional Light가 아니여도 태양 위치 조절
머테리얼 만들고 Shader를 Skybox > Procedural로 바꾸고 Skybox Material에 삽입