- 게임 프로그래밍 패턴 11장 ~ 13장 (22. 06. 09) 5주차 (22. 06. 09) 행동 패턴 게임 내 개체들이 해야 할 일을 알려주는 대본에 해당하는 행동behavior. Chapter11. 바이트 코드 가상 머신 명령어를 인코딩한 데이터로 행동을 표현할 수 있는 유연함을 제공. 성능과 안정성을 위해 C++ 같은 중량 언어heavyweight language를 사용. ⇒ 하드웨어 성능을 최대한 끌어낼 수 있는 저수준 표현과 버그를 막거나 적어도 가둬두기 위한 풍부한 타입 시스템을 함께 제공. 게임 출시 이후에도 업데이트를 통해서 버그를 고치거나 콘텐츠를 추가할 수 있어야 함. 전부 하드코딩되어있다면 변경사항이 있을 때마다 게임 실행 파일을 패치해야 한다. 심지어 모드mod를 지원해야 한다면? 유저가 게임에서 커스텀을 하고 싶다면? 게임을 빌드하기 위해 컴.. 2023.06.25
- Metal 스터디 8주차 (23.02.02) Interaction 게임의 실패 시나리오는 Player가 Paddle에서 공을 놓치고 공이 보드 뒤쪽이나 Paddle 뒤에서 튀는 경우이다. 또한 Player에게 3번의 기회를 준다. 먼저 lives 속성을 설정한다. var lives = 3 bounceBall에서는 공이 테두리의 상단과 하단에 대해 튕기는지 확인한다. func bounceBall() { ... if abs(ball.position.z) > gameArea.height / 2 { ballVelocity.z = -ballVelocity.z lives -= 1 if lives < 0 { print("GAME OVER - YOU LOST") } else { print("Lives: ", lives) } } ... } 볼 위치 Z를 확인한다... 2023.04.16
- Metal 스터디 7주차 (23.01.26) Introduction 게임 엔진에 대한 Metal Rendering 이후, 게임을 작성하는 방법에 대해 알아보자. Breakout* 게임을 따라 Raybreak라는 프로젝트를 만들어볼 것이다. Breakout (비디오 게임)은 1976년 아타리가 개발한 아케이드 게임. 간단한 게임이지만 대부분의 게임에서 사용하는 많은 원칙이 포함되어 있다. 새로운 Model이 있는 새로운 Scene을 만든다. 게임 경기장의 크기를 결정하고 모든 Model의 시작 위치를 계산한다. 그런 다음 Models bounding Box를 사용하여 2D에서 간단한 충돌 검사를 수행한다. (=모든 방향에서 모델의 높이와 너비를 알 수 있다.) 효과음과 음악을 게임에 추가하고 게임을 마무리하기 위해 승패 여부를 보여주는 두 번째 Sc.. 2023.02.11
- Metal 스터디 6주차 (23.01.19) Function Specialization 두 가지 다른 대안을 처리해야 하는 Fragment Shader에 문제가 있다. Model의 Texture에 UV 좌표가 있는 경우 Rendering에 Texture 색상을 사용한다. 그렇지 않은 경우 Material 색상을 사용한다. 예시는 단순한 상황이고, 대부분의 Model에는 Bump Map, Ambiens Occlusion 및 Spercularity에 대해 4개 또는 5개의 서로 다른 Texutre가 존재하기도 한다. Model은 사용 가능한 Texture 중 일부를 사용할 수 있지만 모든 Texture가 동일한 Texture를 사용하지는 않는다. 조건 분기와 GPU Shader 함수는 비용이 크므로 배제한다면, 함수 전문화Function Special.. 2023.02.06
- Metal 스터디 5주차 (23.01.12) Introduction Surface에 대해 배울 예정. 하드 코딩된 색상 배열 대신에 기존 Meterials의 색상으로 모델을 렌더링한 다음 alternative look으로 기차에 대한 Texture를 추가한다. 또한 성능 저하가 거의 없이 100개의 기차를 렌더링하는 방법과 성능에 대해 배운다. Materials Model I/O를 사용하여 Model을 읽는다. Index drawing을 위해 MDL mesh와 submesh를 MetalKit mesh와 submesh로 변환한다. submesh는 material도 갖고 있다. material 속성들은 mesh group의 surface를 보여준다. 각 모델 I/O submesh에는 material 관련 속성(base color, specular in.. 2023.01.15