오늘 11월 1일 자정까지만 무료입니다. 필요하신 분은 지금 바로 신청하세요.
"유니티 물리시스템 강의"의 기본 패키지를 이번 주말(11월 1일) 자정까지 무료로 제공하고 있습니다. 필요하신 분은 지금 신청하세요!
유니티로 게임을 만들 때 리지드바디나 콜라이더 등 기본적인 물리 시스템을 사용하는 방법은 알지만, 그 원리에 대해서는 잘 모르고 그냥 사용하시는 분들이 많을 겁니다.
이 강의는 바로 그런 분들의 궁금증을 해소해 드리기 위해 제작되었습니다.
왜 리지드바디가 필요한지,
Character Controller는 왜 따로 존재하는지,
충돌 시스템은 어떤 원리로 작동하는지,
조인트는 무엇이고, 보간은 어떤 원리로 이루어지는지
이러한 질문에 대해 차근차근 알기 쉽게 설명 드립니다.
이번 주말에 1시간 30분 정도만 투자해서 들어 보세요. 게임 개발에 많은 도움이 될 겁니다.
batstudio.gumroad.com/l/bodb…
오늘은 로봇에 래그돌(ragdoll)을 넣어 보았습니다. 고도엔진에서도 잘 되네요.
그리고 이를 위해 좀 어색한 동작이지만 달리기와 스프린트 동작을 넣고 로봇의 이동 속도를 동작과 대략 맞췄습니다.
로봇이 충돌체와 부딪치는 순간 래그돌 상태가 되고, 충격에 따라 튕겨나갑니다.
일단 오늘은 여기까지...
게임에서 레벨(Level) 개념이 필요했던 이유
오늘날 게임에서 레벨(Level)이라고 하면 일반적으로 플레이어가 탐험하거나 전투를 벌이는 등 게임 플레이가 이루어지는 공간을 의미합니다.
물론 맞는 말이지만, 원래 레벨이라는 개념은 하드웨어의 메모리 문제를 해결하기 위해 고안된 것이기도 합니다.
초창기 게임 하드웨어는 메모리 용량이 매우 작았습니다. 따라서 게임에 등장하는 모든 배경과 캐릭터, 적, 장애물 등의 데이터를 한 번에 메모리에 올리는 것은 사실상 불가능했죠.
이 문제를 해결하기 위해 게임 개발자들은 게임을 여러 개의 작은 레벨로 나누고, 한 번에 하나의 레벨에 필요한 데이터만 메모리에 불러오는 방식을 생각해 냈습니다.
플레이어가 해당 레벨을 완료하면 기존 데이터를 메모리에서 정리하고, 다음 레벨에 필요한 데이터를 새로 불러오는 방식으로 게임을 구성한 것이죠.
물론 이러한 방식은 오늘날에도 여전히 활용되고 있습니다. 하드웨어의 성능은 초창기와 비교할 수 없을 정도로 강력해졌지만, 그만큼 게임 자체도 점점 더 복잡해지고 규모가 커졌기 때문입니다.
사실 레벨뿐만 아니라 우리가 흔히 경험하는 많은 게임 시스템이 초창기 게임 하드웨어의 메모리 제약을 극복하는 과정에서 발전했습니다.
예를 들어, 과거 GDC 에서 코지마 히데오씨의 강연을 직접 들은 적이 있는데, 메탈 기어 솔리드가 잠입 액션 게임으로 만들어진 것도 사실은 메모리가 너무 부족해서였다고 합니다. (한 화면에 등장할 수 있는 캐릭터나 총알 개수에 극도의 제한이 있었다고 이야기한 것으로 기억합니다.)
BatStudio retweeted
과거에는 1인 개발이라고 하면 개발 난이도나 에셋 제작 비용 등의 이유로 당연히 2D 게임 만들어야 하는 것으로 생각했습니다.
그런데 지금은 AI 덕분에 3D 게임 개발이 더 쉬운 선택지가 된 것 같습니다. 언리얼 MCP 플러그인 활성화하고 클로드와 연동한 뒤 작업해 보면, 코딩이나 스크립팅으로 기능 추가하는 것 간단하고, 원하는 효과를 위한 셰이더도 말만 하면 뚝딱 만들 수 있습니다.
블록 아웃도 쉽고, 레그돌 세팅이라든지 콘트롤, 심지어 블록아웃도 이미지 그려 계획 전달하면 바로 만들어 플레이 가능합니다.
에셋도 블랜더에서 그냥 로우 폴리 모델 생성해서 fbx 로 익스포트 하는 것도 말만 하면 금방 해 줍니다.
이렇게 블록 아웃 기반으로 실제 완벽히 돌아가는 게임 플레이를 다 구현하고 나서 환경 디자인과 폴리싱 하면 됩니다. 이 단계에서 비용이 좀 들겠지만 해 볼만 한 수준일 겁니다.
3D 게임 만드세요. 필요한 건 게임 개발의 다양한 영역에 대한 도메인 지식입니다.
아, 그리고 레벨 디자인 연습하세요. 앞으로는 레벨 디자이너가 게임 개발의 주인공일 테니까요.
BatStudio retweeted
블록아웃의 컬러 코딩(Color Coding)이라는 개념 들어 보셨나요?
컬러 코딩은 게임 레벨 디자인의 블록아웃(Blockout) 단계에서 블록의 기능과 역할을 색상으로 구분하는 규칙입니다.
예를 들어 회색은 일반 지형, 빨간색은 위험 지역, 파란색은 이동 가능한 경로, 초록색은 안전 지역, 노란색은 상호작용 가능한 오브젝트로 지정할 수 있습니다.
이처럼 색상 규칙을 미리 정하면 복잡한 레벨에서도 각 공간과 오브젝트의 역할을 직관적으로 파악할 수 있습니다.
또한 팀원 간 의사소통이 쉬워지고, 플레이어의 이동 경로와 게임플레이 구조를 빠르게 검토할 수 있습니다.
어제 로봇에 레이저 빔 공격 모션을 넣었는데, 조작이랑 카메라 각도가 재미 없어서 오늘은 두 가지를 추가해 봤습니다.
- 게임 콘트롤러 지원
- 조준 사격 느낌으로 공격하는 카메라 움직임 및 조준점 추가
오늘은 gemini flash 3.8 - low 로 시도했는데 카메라 움직임 처리가 미숙해서 Argon - low 로 잠깐 바꿔서 카메라 로직만 구현시키고 다시 flash 3.8로 되돌렸습니다.
작업을 위해 제일 먼저 비슷한 카메라 움직임을 가진 기존의 게임들을 분석, 보고하게 했습니다. 그리고 제가 원하는 방식을 지정해서 구현시켰습니다.
게임 개발 용어 중, LKP(Last Known Position) 라는 말 들어 보셨나요?
LKP는 Last Known Position의 줄임말인데, '마지막으로 알려진 위치'라는 의미입니다. 게임 AI 개발에서 많이 쓰는 용어죠.
NPC 가 타겟을 추적하다가 타겟이 시야(Line of Sight)에서 사라지는 경우, 가장 마지막으로 발견했던 지점을 의미합니다.
만약 게임에 이 개념이 없다면 적 AI는 플레이어가 시야에서 사라지자마자 방금까지 총을 쏘던 일을 잊고 제자리로 돌아가거나, 반대로 벽 뒤에 숨은 플레이어의 위치를 투시하듯 실시간으로 알고 끝까지 쫓아오게 됩니다.
그 결과 플레이어 입장에서는 적 AI가 너무 멍청하거나 아니면 치팅을 한다고 생각하게 되죠.
LKP는 바로 이 문제를 해결하기 위해 적 AI에게 일종의 짧은 '기억'을 심어주는 것입니다.
예를 들어 플레이어가 적에게 쫓기다가 골목길 모퉁이를 돌아 숨었을 경우, 적 AI는 플레이어가 시야에서 사라진 바로 그 모퉁이 지점을 LKP로 기록하고, 일단 그 위치까지 달려갑니다.
그리고 막상 모퉁이에 도착했는데 플레이어가 보이지 않는다면, 그 주변을 두리번거리며 일정 시간 동안 수색을 시작합니다.
만약 수색 중에 플레이어를 다시 찾아내면 곧바로 교전을 이어가고, 끝내 찾지 못하면 그제야 경계를 풀고 원래의 순찰 코스로 복귀합니다.
어쌔신 크리드 같은 게임을 해 본 분들은 아마 이 방식에 익숙하실 겁니다. 다만 LKP 가 개발 용어라 다소 생소할 뿐이죠.
"유니티 물리시스템 강의"의 기본 패키지를 이번 주말(11월 1일) 자정까지 무료로 제공하고 있습니다. 필요하신 분은 지금 신청하세요!
유니티로 게임을 만들 때 리지드바디나 콜라이더 등 기본적인 물리 시스템을 사용하는 방법은 알지만, 그 원리에 대해서는 잘 모르고 그냥 사용하시는 분들이 많을 겁니다.
이 강의는 바로 그런 분들의 궁금증을 해소해 드리기 위해 제작되었습니다.
왜 리지드바디가 필요한지,
Character Controller는 왜 따로 존재하는지,
충돌 시스템은 어떤 원리로 작동하는지,
조인트는 무엇이고, 보간은 어떤 원리로 이루어지는지
이러한 질문에 대해 차근차근 알기 쉽게 설명 드립니다.
이번 주말에 1시간 30분 정도만 투자해서 들어 보세요. 게임 개발에 많은 도움이 될 겁니다.
batstudio.gumroad.com/l/bodb…
BatStudio retweeted
모 사에서 일할 때 이런 짐을 거의 감옥처럼 다닥다닥 붙여놔서 혼자 몬스터 감옥이라고 생각했던 기억이 새록새록하네요
혹시 게임 만들 때 짐(Gym)을 사용하고 계신가요?
게임 개발 경험이 없는 분들은 실제 게임 레벨(본 레벨)을 처음부터 만든 뒤 그 안에서 전투 시스템도 구현하고, 퍼즐도 만들고, 잠입 시스템도 만들고 하시더군요.
그런데 이건 매우 비효율적이고 불편한 방식입니다. 지금까지 그렇게 작업해 오셨다면, 짐(Gym)을 만들어 개발하는 방식을 도입해 보세요.
게임 개발에서 짐(Gym)이라는 것은 게임의 특정 기능이나 게임플레이 요소를 개발하고 테스트하기 위해 만드는 실험용 레벨을 가리키는 말입니다.
쓸데 없는 배경이나 장식 없이 필요한 요소만 배치해 기능이 제대로 작동하는지, 실제로 플레이했을 때 재미있는지 확인하는 공간이라고 보시면 됩니다.
예를 들어 전투 시스템 개발팀은 전투용 Gym을, 퍼즐 공간 개발팀은 퍼즐용 Gym을 만들어서 이곳에서 충분한 실험을 한 다음에 완성된 시스템이나 장치를 본 레벨로 옮겨서 적용합니다.
점프 기능을 테스트한다면 전용 Gym을 만든 뒤, 높이와 간격이 다른 발판, 움직이는 플랫폼, 장애물 등을 배치합니다. 이를 이용해 캐릭터의 점프 거리와 높이, 공중에서의 조작감 등을 테스트하고 수정하면서 완성시켜 가는 것이죠.
전투 시스템을 테스트할 때는 여러 종류의 적과 엄폐물, 장애물을 배치합니다. 적의 위치나 수를 바꿔가며 공격과 회피가 자연스럽게 이루어지는지, 적의 행동 패턴이 적절한지 이곳에서 충분히 구현하고 실험합니다.
Gym은 테스트하려는 기능에 맞춰 단순하게 구성하기 때문에 문제가 발생했을 때 원인을 파악하기 쉽습니다. 그래서 일정 규모 이상의 게임을 개발한다면, Gym 사용은 필수입니다. 좁은 실험용 공간 안에서 다양한 실험을 통해 게임의 개별 시스템의 완성도를 끌어 올릴 수 있으니까요.
만약 짐(Gym) 없이 실제 게임 레벨(본 레벨) 안에서 모든 작업을 다 하고 계시다면, 지금 바로 개발 방법을 바꾸시기 바랍니다.
어제 AI 에게 로봇 3D 모델과 애니메이션 만들게 해서 게임 안에서 움직이게 하는 방법을 보여 드렸는데요,
어제 만든 예제를 버리기가 아까워서 그냥 여기에서부터 매일 조금씩 발전시켜 가기로 했습니다.
오늘은 어제 만든 로봇에 광선 빔 발사 동작과 이펙트를 만들어 붙였습니다.
제가 한 것은 Gemini Flash 3.8 - Low 에게 애니메이션 두 개 (예비 동작, 발사 동작) 추가하라고 한 것과 캐릭터 콘트롤 추가 (마우스 우측 버튼으로 준비 및 발사)한 것, 그리고 빔 효과 만들라고 지시하고 몇 번 수정 요청한 것밖에 없습니다.
AI 덕분에 금방 구현했지만, 이걸 예전처럼 제가 수작업으로 다 만들고 코딩까지 했으면 아마 하루나 이틀 이상은 걸렸을 것 같네요.
놀라운 세상입니다.
BatStudio retweeted
X 추천 포스트에 종종 AI 로 게임 만드는 분들의 글이나 영상이 올라오는데, 게임 개발 경험이 별로 없으셔서 그런지 삽질(?)을 많이 하시는 것 같습니다. 토큰 낭비도 심하구요.
현업 게임 개발자들이 게임 만드는 방식을 적용해서 AI 와 함께 게임 만드는 법의 일부를 잠깐 보여 드릴께요.
BatStudio retweeted
내일 30일 자정까지만 무료입니다. 일단
무료 등록하시고 나중에 천천히 보셔도 되니 지금 바로 신청하세요.
대부분의 3D 게임에는 월드가 존재합니다. 게임을 구성하는 모든 게임 오브젝트가 놓여 있는 공간이죠.
이들은 플레이어와 상호작용하며 게임 플레이를 만들어 냅니다. 그런데 이 게임 월드는 상당히 많은 것들을 고려하면서 제작해야 합니다.
따라서 동적인 요소, 정적인 요소. 그리고 최적화된 메모리 관리를 위한 월드 분할이나 스트리밍 등 다양한 것들에 대해 알고 있어야 하죠.
이처럼 게임 월드가 어떻게 구성되어 있고, 게임 개발자들은 어떤 점들을 고려해서 월드를 만들어야 하는지에 대해 알기 쉽게 설명한 강의가 있습니다.
바로 "게임 월드는 어떻게 만들어지는가: 게임플레이 시스템과 데이터 주도 설계의 원리"입니다.
이 강의는 현재 유료 판매 중이지만, 기본 패키지를 이번 주 금요일(30일) 자정까지 기간 한정 무료로 수강하실 수 있게 공개했습니다.
만약 3D 게임 개발을 좀 더 체계적으로 배우고 싶으시다면, 다음의 링크에서 지금 신청하시기 바랍니다.
batstudio.gumroad.com/l/game…
혹시 게임 만들 때 짐(Gym)을 사용하고 계신가요?
게임 개발 경험이 없는 분들은 실제 게임 레벨(본 레벨)을 처음부터 만든 뒤 그 안에서 전투 시스템도 구현하고, 퍼즐도 만들고, 잠입 시스템도 만들고 하시더군요.
그런데 이건 매우 비효율적이고 불편한 방식입니다. 지금까지 그렇게 작업해 오셨다면, 짐(Gym)을 만들어 개발하는 방식을 도입해 보세요.
게임 개발에서 짐(Gym)이라는 것은 게임의 특정 기능이나 게임플레이 요소를 개발하고 테스트하기 위해 만드는 실험용 레벨을 가리키는 말입니다.
쓸데 없는 배경이나 장식 없이 필요한 요소만 배치해 기능이 제대로 작동하는지, 실제로 플레이했을 때 재미있는지 확인하는 공간이라고 보시면 됩니다.
예를 들어 전투 시스템 개발팀은 전투용 Gym을, 퍼즐 공간 개발팀은 퍼즐용 Gym을 만들어서 이곳에서 충분한 실험을 한 다음에 완성된 시스템이나 장치를 본 레벨로 옮겨서 적용합니다.
점프 기능을 테스트한다면 전용 Gym을 만든 뒤, 높이와 간격이 다른 발판, 움직이는 플랫폼, 장애물 등을 배치합니다. 이를 이용해 캐릭터의 점프 거리와 높이, 공중에서의 조작감 등을 테스트하고 수정하면서 완성시켜 가는 것이죠.
전투 시스템을 테스트할 때는 여러 종류의 적과 엄폐물, 장애물을 배치합니다. 적의 위치나 수를 바꿔가며 공격과 회피가 자연스럽게 이루어지는지, 적의 행동 패턴이 적절한지 이곳에서 충분히 구현하고 실험합니다.
Gym은 테스트하려는 기능에 맞춰 단순하게 구성하기 때문에 문제가 발생했을 때 원인을 파악하기 쉽습니다. 그래서 일정 규모 이상의 게임을 개발한다면, Gym 사용은 필수입니다. 좁은 실험용 공간 안에서 다양한 실험을 통해 게임의 개별 시스템의 완성도를 끌어 올릴 수 있으니까요.
만약 짐(Gym) 없이 실제 게임 레벨(본 레벨) 안에서 모든 작업을 다 하고 계시다면, 지금 바로 개발 방법을 바꾸시기 바랍니다.
블록아웃의 컬러 코딩(Color Coding)이라는 개념 들어 보셨나요?
컬러 코딩은 게임 레벨 디자인의 블록아웃(Blockout) 단계에서 블록의 기능과 역할을 색상으로 구분하는 규칙입니다.
예를 들어 회색은 일반 지형, 빨간색은 위험 지역, 파란색은 이동 가능한 경로, 초록색은 안전 지역, 노란색은 상호작용 가능한 오브젝트로 지정할 수 있습니다.
이처럼 색상 규칙을 미리 정하면 복잡한 레벨에서도 각 공간과 오브젝트의 역할을 직관적으로 파악할 수 있습니다.
또한 팀원 간 의사소통이 쉬워지고, 플레이어의 이동 경로와 게임플레이 구조를 빠르게 검토할 수 있습니다.
내일 30일 자정까지만 무료입니다. 일단
무료 등록하시고 나중에 천천히 보셔도 되니 지금 바로 신청하세요.
대부분의 3D 게임에는 월드가 존재합니다. 게임을 구성하는 모든 게임 오브젝트가 놓여 있는 공간이죠.
이들은 플레이어와 상호작용하며 게임 플레이를 만들어 냅니다. 그런데 이 게임 월드는 상당히 많은 것들을 고려하면서 제작해야 합니다.
따라서 동적인 요소, 정적인 요소. 그리고 최적화된 메모리 관리를 위한 월드 분할이나 스트리밍 등 다양한 것들에 대해 알고 있어야 하죠.
이처럼 게임 월드가 어떻게 구성되어 있고, 게임 개발자들은 어떤 점들을 고려해서 월드를 만들어야 하는지에 대해 알기 쉽게 설명한 강의가 있습니다.
바로 "게임 월드는 어떻게 만들어지는가: 게임플레이 시스템과 데이터 주도 설계의 원리"입니다.
이 강의는 현재 유료 판매 중이지만, 기본 패키지를 이번 주 금요일(30일) 자정까지 기간 한정 무료로 수강하실 수 있게 공개했습니다.
만약 3D 게임 개발을 좀 더 체계적으로 배우고 싶으시다면, 다음의 링크에서 지금 신청하시기 바랍니다.
batstudio.gumroad.com/l/game…
어제 올린 레벨 디자인 방법에 많은 분들이 호응해 주셔서, 다른 노하우 하나 알려 드릴께요.
간단한 게임 프로토타이핑용 캐릭터가 필요할 때, 컴퓨터에 Blender가 설치되어 있고 Claude 나 Codex 를 사용할 수 있다면 움직이는 캐릭터는 몇 번의 간단한 요청으로 바로 만들어 볼 수 있습니다.
그리고 로봇을 레벨에 직접 올려 놓지 말고 PlayerStart 스폰 위치를 만들어서 게임이 실행되면 이 위치에 로봇을 spawn 하는 방식으로 만들어 달라고 합니다. 이게 일반적인 방식입니다.
"그리고 로봇을 씬에 바로 배치하지 말고 playerstart 스폰 영역을 만들어 넣고, 게임 실행시 로봇 캐릭터가 여기에 스폰되도록 해줘요"







