본문 바로가기

전체 글

Shader Study 후기 - Flow Fields and Steering Behaviors [GDC 2022: AOE IV] (22/10/05) GDC 2022에서 발표된 에이지 오브 엠파이어 4 엔티티 네비게이션 AI를 위해 사용된 기법입니다. 자세한 내용은 셰이더 스터디 카페를 참고 부탁드립니다. 본 기록은 발표 내용을 개인적 이해와 함께 재구성한 것입니다. 발표자분의 의도와 다를 수 있으며, 잘못된 내용이 있을 수 있으니 양해 부탁드립니다. 발표 내용 에이지 오브 엠파이어는 많은 수의 엔티티가 실시간으로 동시에 길을 찾아 이동하고 전투를 수행해야 하는 RTS 게임입니다. 일반적으로 액터의 길찾기는 A* 알고리즘을 통상적으로 사용하는데요. 상호 작용이 가능한 동적 오브젝트를 고려하면 매 프레임 계산을 수행해야 하고, 길을 찾으려는 엔티티 수가 늘어날 수록 연산은 더 많아지고 비싸지게 됩니다. 더구나, 다른 오브젝트를 피하기 위해서 Steeri.. 더보기
Shader Study 후기 - Fourier transform (22/10/05) 2회차 참석한 셰이더 스터디입니다. 이번 발표는 푸리에 변환을 주제로 김대국님께서 준비해 주셨습니다. 발표자료 및 자세한 내용을 셰이더 스터디 카페를 참고 부탁드립니다. 지난 시간에는 구면 조화 함수에 대한 발표를 들었었는데요, 지나가듯이 푸리에 변환이 언급 되었습니다. 구면 조화 함수는 3차원 공간에 대한 세기를 여러 orthonormal 한 공간 벡터와 계수의 곱으로 나타내는 것으로 추상화해 생각해 볼 수 있습니다. 푸리에 변환은 유사한 콘셉으로, 어떤 곡선이든 주기 함수들의 합으로 나타내는 과정이라고 이해하면 간편합니다. 푸리에 변환에 대한 세부적인 내용은 다음 링크로 대체합니다. https://www.jezzamon.com/fourier/ko.html 푸리에 변환을 반응형으로 소개합니다 푸리에 변.. 더보기
Shader Study 후기 - Streaming Virtual Texture (22/09/19) 본 글은 김정기 님의 발표를 토대로 남긴 후기 및 개인 복습 기록입니다. 보다 자세하고 정확한 내용은 셰이더 스터디 카페에 게시된 자료를 참조 부탁드립니다. (_ _) 자료: 유나이트 2020 Steaming Virtual Texture in Unity https://www.youtube.com/watch?v=qqomQNsLdjA 후기 같은 날 있었던 구면 조화 함수 다음의 토픽이었습니다. 죄송스러운 이야기지만 깊게 집중할 수가 없었는데요, 회사에서 꽤 중요한 의사 결정이 이루어 지고 있었기에 슬랙을 자주 확인해야 했던 상황이었습니다. 그래도 나름 최선을 다해 내용을 흡수하려고 노력했고 복습과 실습도 마쳤습니다. 복습 4K 크기의 텍스쳐를 사용한 PBR 머티리얼을 사용하면, 3개의 BC Compress .. 더보기
Shader Study 후기 - Spherical Harmonics (22/09/19) 계기 발표 내용에 대한 후기에 앞서 셰이더 스터디에 참석한 후기를 간단히 설명드리자면, TA 스터디 월간 온라인 토크에서 자주 이야기를 나누던 Aniz 님의 추천으로, Shader Study 오프라인 모임에 처음으로 참석하게 되었습니다. 해당 모임에 관한 내용은 네이버 카페 - 셰이더 스터디 https://cafe.naver.com/shader 에서 일정을 확인하실 수 있습니다. 후기 회사 업무에 예상치못한 이슈가 생겨 아슬아슬한 시간에 퇴근을 성공하고, 거의 약속 시간에 맞추어 모임 장소에 도착했습니다. Spherical Harmonics와 Streaming Virtual Texture 2가지 토픽으로 발표가 있었는데요, 두 가지 모두 자주 사용하지만 세세하게 어떤식으로 동작하는지에 대해서는 명확히 알.. 더보기
OAuth 서드파티 시퀀스 다이어그램 레퍼런스 : https://plantuml.com/ko/guide PlantUML Language Reference Guide plantuml.com GitHub TPA 로그인 플로우를 만들어보려고 고민하면서 시퀀스 다이어그램을 끄적끄적... @startuml test skinparam SequenceBoxBackgroundColor #FFFFFF30 skinparam SequenceBoxBorderColor #00000070 box "LOCAL" actor PLAYER as user participant GAME_CLIENT as client end box box "REMOTE" participant GAME_AUTH_SERVER as server database GAME_DB as db end box.. 더보기
Unity: 호출하는 스코프에 따라 달라지는 값, Time.deltaTime 유니티 스크립팅은 게임오브젝트에 컴포넌트를 붙이고, 유니티 코어로부터 들어오는 이벤트를 기반으로 동작을 처리하며 행동을 디자인 합니다. 가장 많이 사용되는 예시로는 Awake, Start, Update, FixedUpdate 등이 있는데요. MonoBehaviour 클래스를 상속받고 이 함수를 구현하면, 유니티 코어가 인식하여 해당 함수를 실행시켜 줍니다. 본 아티클에서는 이 함수들 중, Update와 FixedUpdate에 대해서 얘기해 볼까 합니다. Update Update 함수는 매 프레임 호출됩니다. 게임의 타겟프레임이 60fps라면, 1초에 60번 호출될 것이라고 기대할 수 있습니다. 물론 이 Update 루프에서의 작업이 1초 / 60 의 수치인 0.0166667 초 보다 오래 걸렸다면 1초에.. 더보기
Unity. Windows 플랫폼에서 키보드 입력 막기 유니티는 Input 클래스와 비교적 최근 새로 추가된 InputSystem 클래스를 통해서 사용자의 입력을 받고 처리할 수 있습니다. Legacy 방식인 Input 클래스로는 유니티 게임 루프의 Update에서 Input.GetKeyDown, GetKeyUp 등의 이번 루프의 프레임에서 해당 키가 눌러지기 시작했거나 끝났는지 확인 하는 방식을 취합니다. Input System에서는 이벤트 방식으로, 어떤 키 입력에 대해 액션 이벤트를 트리거할지 정해두고, 이벤트에 델리게이트를 등록해두고 들어오는 신호를 토대로 입력을 핸들링합니다. Input System의 경우에는 글로벌한 스위치가 있어, 플레이어의 입력을 의도적으로 모두 차단 할 수 있는데요. Input 클래스는 그런 기능을 따로 제공해주고 있지 않습니.. 더보기
Unity: 패키지 매니저 상대 경로 사용하기 흔하지는 않지만 여러 프로젝트를 같은 루트에 두고 작업할 때, 패키지로 빼내어 공유하고 싶은 경우가 생깁니다. 절대경로로 로컬 디스크 패키지를 임포트하면 협업간에 디렉터리를 맞춰야하는 등 번거로움이 동반될 수 있습니다. 가급적 그런 케이스를 미연에 방지하기 위해 상대경로로 로컬 패키지를 로드하도록 해 두면 됩니다. ProjectKaya/Assets/Shared/package.json 프로파일이 있어, Kaya-MMORPG 프로젝트에서 임포트해 사용합니다. manifest.json 에서 file:../ 경로는 ProjectRoot/Packages 디렉터리입니다. 더보기