250324

lililllilillll·2025년 3월 24일

개발 일지

목록 보기
120/350

✅ What I did today


  • Project BCA
  • Udemy Course : Unity Shader


🎮 Project BCA


  • 최종 기획 (진짜리얼final) : 밝은 조명을 등지고 뒷모습만 보이는 사람이 책상에서 사라진다. 문이 열리면 책상으로 가고 게임이 시작된다.
  • 원래 생각했던, 서사 순서 바꾸는 건 폐기. 안 바꿔도 예전 아이디어 여러 개 조합하면 같은 정도의 임팩트 줄 수 있을 것 같다.
  • 가챠 기믹도 보류. 추가했을 때 게임에 확실하게 플러스 요소인지 잘 모르겠다. 그런데 검증하기 위해 만드는데 시간이 많이 듬. 일단 게임 완성하고나서 재검토.
  • 적이 랜덤으로 삭제하는 건 2차전 때 넣기. 게임이 더 매콤해질 것. 내가 원했던 랜덤성도 추가됨.

Intro & Ending Sequences

  • 전반부 재구성
  • 1차 엔딩 기초 작업

AI Random Piece Removing

public enum LineEffect
{
    None,
    Continue,
    Wait
}
[CreateAssetMenu(fileName = "ScriptContainer", menuName = "ScriptableObjects/ScriptContainer", order = 1)]
public class ScriptContainer : ScriptableObject
{
    [SerializeField] public ScriptType scriptType;
    [SerializeField] public string[] Texts;

    [Tooltip("bool이 true면 해당하는 인덱스의 텍스트가 기존 텍스트와 함께 출력")]
    [SerializeField] public LineEffect[] lineEffect;
}

스크립트 구조 변경하여 확장성 높임

    /// <summary>
    /// 맨 처음 게임 시작할 때 호출되는 함수
    /// </summary>
    public void StartGame(int phase)
    {
        this.phase = phase;
        stage = 1;
        currentState = playerTurnState;
        terminalText.BackToOriginalText();
        board.SetBoard();
    }

1차전, 2차전은 phase로 나눔, 단계는 stage로 나눔.

슈도 코드 작성과 기반 작업 완료.



🎞️ Udemy Course : Unity Shader


  1. ~ 25.

o.Albedo = texCUBE(_myCube, IN.worldRefl).rgb;

worldRefl : 내가 보는 방향과 표면의 노멀을 기준으로 계산된 반사 방향

model import settings에서 Normals를 Calculate로 바꾸고 Smoothing Angle을 조절하면 폴리곤 단위로 노말 계산

        struct Input {
            float2 uv_myDiffuse;
            float2 uv_myBump;
            float3 worldRefl; INTERNAL_DATA
        };

        void surf (Input IN, inout SurfaceOutput o) {
            o.Albedo = tex2D(_myDiffuse, IN.uv_myDiffuse).rgb;
            o.Normal = UnpackNormal(tex2D(_myBump, IN.uv_myBump)) * _myBright;
            o.Normal *= float3(_mySlider, _mySlider, 1);
            o.Emission = texCUBE(_myCube, WorldReflectionVector (IN, o.Normal)).rgb;
        }
  • worldRefl 이용하려고 할 때 Normal을 수정하면 오류가 생긴다. normal과 worldRefl은 연관돼있기 때문. worldRefl에 INTERNAL_DATA 붙이면 영향 안 받는 별개의 worldRefl 사용 가능.

Buffer

  • frame buffer : 스크린에 있는 모든 픽셀의 색깔 정보 담음
  • depth buffer (z buffer) : 픽셀의 깊이 정보 담음
    • frame buffer에 그려지기 전에 depth buffer에서 앞에 그려진거 있나 확인
  • G-Buffer (Geometry Buffer) : Deffered rendering에 쓰인다.

Rendering Types

  • Forward Rendering : Geometry > Vertex Shader > Geometry Shader > Fragment Shader Lighting (픽셀별로 계산됨) > Frame Buffer
  • Deferred Rendering : Forward Rendering이랑 거의 똑같은데 Fragment Shader 까지 한 결과물을 한꺼번에 G-Buffer에 넣고 Lighting 얹어서 Frame Buffer에 보냄

Render Queues

  • Background : 1000
  • Geometry : 2000
  • AlphaTest : 2450
  • Transparent : 3000
  • Overlay : 4000
  • Material Inspector에서 설정하거나,
    Shader에서 `Tags { "Queue" = "Geometry+100" } 으로 설정 가능


profile
너 정말 **핵심**을 찔렀어

0개의 댓글