Real-Time (실시간)
how quickly an image is rendered (or displayed) on the screen.
얼마나 이미지들이 실제로 보는 화면(스크린)에 빨리 반영되느냐? 를 말한다.
스타크래프트 같이 RTS라는 실시간 전략 시뮬레이션 게임 장르가 있다.
얘는 우리가 우클릭만 하면 유닛들이 바로바로 움직여서 화면에 움직이는 것을 알 수 있다.
그렇다면 개발자 입장에서 실시간은 무엇이냐?
게임을 업데이트할 때 업데이트에 이상이 있거나 잘 작동하는지 알아보려면 우리는 실행시켜서 확인을 해봐야 한다.
하지만 그 작업을 맨날 처음부터 우리가 수정했던 부분까지 확인하려면 시간이 정말 오래걸린다. (실제로 지금도 그렇게 하고는 있지만 컴퓨터 속도가 빨라졌다.)
그렇게 빨라져서 수정과 동시에 화면에 내가 수정한 부분이 나타나고 우리는 실시간으로 어떻게 적용되는지 알 수 있다.
이로 인해 개발자들이나 디자이너들이 시간을 단축시키고 품질이 올라가는 환경이 만들어졌다.
->하드웨어 스펙의 중요성
Game Engine (게임 엔진)
game engine is the point of convergence for all aspects of creating a game.
짧게 말하자면 OS의 축소판이다. OS는 컴퓨터 자원관리를 효율적으로 하게 도와주는데..? 바로 게임엔진이 그렇다.
우리가 컴퓨터 사용할 때 메모리 주소를 외워서 할당하지 않는 것처럼 우리도 굳이 게임이 우리 컴퓨터의 자원을 어떻게 쓰는지 생각하지 않는다.
우리는 그저 게임을 즐길 뿐이다. 게임을 즐길 수 있는 환경은 모두 게임엔진이 알아서 해준다고 보면 되겠다.
**그러나 우리는 게임엔진으로 게임을 만든다고 흔히 말한다. 그 측면에서 게임엔진은 무엇일까?
위의 모든 항목들을 게임에 넣을 수 있게 해주는 도구다.
**하지만 그 항목들을 만들 수는 없다.
그러한 Asset들은 DCC(Digital Content Creation) tool로 만들 수 있다.
밑에 그림이 그 예시다.
RigidBody(리지드 바디)
게임오브젝트(GameObject)를 실제 물리법칙에 적용할 수 있게하는 Component이다.
그냥 우리가 오브젝트를 만들면 질량도 없어서 중력같은 물리법칙을 따르지도 않는다.
오브젝트에다 컴포넌트를 더해야 되는 것이다. 오브젝트가 먼저 존재해야 한다.
**2D가 붙어있다면 2D를 위한, 없다면 default는 3D이다.
** Play button을 눌러야 실제로 물리법칙이 적용되는 것을 볼 수 있다.
Material(물질)
이것 또한 Component로 물질의 구성물질같은 것을 의미한다.
크기가 똑같은 스티로폼과 무쇠덩이가 있다면 무쇠덩이가 더 무겁듯이 물질 또한 영향을 끼친다.
(사실 빛에 대해서 유광, 무광같은 반사에 더 큰 영향을 끼친다.) ++ 둘다 가능
**특히 겉모습자체가 물질에 따라 바뀌는데 이미지 파일에서 가져올 수 있다.
Asset폴더에 집어넣으면 끝~
++ Asset폴더를 보고싶다면 Show in Explorer를 누르면 된다.
진짜로 이 물질(Material)로 어떤 오브젝트를 만들고 싶다???
Inspector창에서 Albedo를 누른다.
Albedo는 반사,물질 특성과 같은 것을 결정한다.
거기서 내가 원하는 Material을 추가시키면 된다. 그렇게 되면 적용되어 미리보기도 가능하다.
물론 다른 오브젝트에도 Albedo를 건들면 가능하겠지??
또한 물리적 물질구성도 바꿀 수 있다.
예를 들어서 튀기는 정도(Bounciness)를 바꿀 수 있다.
이 물질도 Asset으로 우리가 저장해놓고 언제나 이용할 수 있게 해놓을 수 있다. 위의 벽돌 무늬와 같이
Light (빛)
3D 환경에서는 Directional Light라는 것이 우리 지구의 태양과 같이 존재한다. 당연히 이 빛에 따라서 그림자도 바뀌고 광택도 바뀌겠지??
빛의 종류에는 여러가지가 있다. Point Light, Spot Light, Area Light.. 필요에 따라 다르게 쓰면 된다.
3D DCC(3차원 디지털 컨텐츠 제작)
이러한 컨텐츠는 각종 툴로 제작된다. Maya, ZBrush, Blender 등이 있다.
위와 같이 디자이너들이 만들면?? 우리는 유니티에서 가져와서 쓰면 된다.
즉, 우리가 모든 것을 만들 필요는 없다. 약간의 분업화랄까?
*개발자는 코드를 잘 짜는 사람이라기 보다는 자기가 알고 있는 코드를 잘 조립해야 하는 것이다.
그래서 유니티를 이용할 때는 Asset을 잘 가져올 줄 알아야 한다.
*Unity Asset Store 에서 가져오면 된다. 무료도 유료도 있다.
에셋을 쓸 때는 내 유니티 버전에 맞는지 꼭 확인해야한다.
그렇게 되면 My Asset에 담기게 되고
그 화면은 아래와 같다.
여기서 Open in Unity를 누르면 말 그대로 Unity에서 열린다.
원하는 패키지를 누르고 오른쪽 아래의 Download를 누른다. 이렇게 되면 Unity자체에 다운이 받아져서
다른 프로젝트에서도 접근이 가능하다.
Download가 다 되었으면
Import를 눌러준다. 다운로드 받은 Asset 중 어떤 에셋을 가져올지 정하는 것이다.
다하고 싶으면 다 체크하면 되는 것이고 그렇게 Import를 하면 내 프로젝트의 Asset Folder에 들어온다.
MonoBehaviour
새로운 클래스를 만들 때는 MonoBehaviour를 기반으로 만들어진다. 그래서 맨날 아래 그림 같이 시작한다.
** 그리고 class이름과 filename이 같아야만 한다. 이름이 맞아야만한다.
Frame(프레임)
프레임이란 연속된 이미지들 중 하나의 이미지를 말한다.
60FPS는 60 Frame Per Second 초당 60번이니.. 1초당 60번의 이미지를 갱신하는 것과 같다.
Variable(변수)
유니티에서 변수는 Script나 Inspector Window에서 수정이 가능하다.
일반적으로 Public 변수는 Inspector 창에서 수정가능
Scale(크기)
크기를 구성하는 것에 X,Y,Z 성분이 있다. 그러므로 크기를 수정할 변수를 만들 때는
Vector3로 선언해야한다.
public은 Inspector 창에서 수정가능하다고 했다.
시간이 지날 수록 커지게 하고싶다?
**저기서 숫자는 현재크기의 비율이라고 보면 되겠다. 만약 1로 설정한다? 매 프레임마다 배로 증가한다고 보면된다.
60FPS에서는 1초후 60배의 크기가 되는 것이다.
Update()에 넣어준다.
transform이란 지금 이 스크립트가 포함된 transform Component를 말한다.
즉 위 문장의 의미는
매 프레임마다 이 스크립트를 가진 GameObject의 localScale을 scaleChange만큼 더해준다는 뜻이다.
transform
많은 Property를 가지고 있다.
Scale, Position, Rotate 등 가장 기본적으로 물리적 특성을 결정할 수 있는 Component라고 보면 된다.
Audio(음악)
음악파일이 있으면 게임 안에 음악을 넣을 수 있다.
빈 오브젝트를 만들고 위치를 초기화한다.
그리고 Audio Source 를 Component로 추가한다.
그리고 Audio Clip에 음악을 추가시킨다.
Play가 되면 해당 음악이 나올 것이다.
** 나오지 않는다면 해당 오브젝트의 Play On Awake를 체크해주고 아래 사진을 확인한다.
**소리가 끊기지 않게 Continuously하게 하려면 Loop를 체크해야함
**3D Audio를 위해서는 Spatial Blend와 3D Sound Settings를 바꿔주면 된다.
Translate(x,y,z)
transform을 x,y,z만큼 움직여주는 메서드다. GameObject를 움직이게 할 때 쓸 수 있다.
When you want to make gameobject move, You can use Tranlate Method ok?
Sprites
스프라이트는 음료수가 아니라 2D에서 말하는 GameObject이다.
The GameObjects in 2D Scenes are called Sprites.
Collider
콜라이더라고도 불린다. 충돌을 하게 해주는 중요한 요소다.
The Collider Component adds additional properties that determine how objects interact with each other.
*3D에서 게임오브젝트는 Collider를 가지고 만들어진다.(built-in)
2D에서는 직접 만들어줘야 한다.
Freeze Position & Rotation
Rigidbody의 Constraints에 있는 항목으로 ground(땅)과 같이 움직이지 않고 위치 유지를 위해 쓰는 항목이다.
This can help gameobject to ramain in their place and not to fall.
'Game Development, 게임개발 > 개발' 카테고리의 다른 글
Time.deltaTime의 의미 [Unity] (0) | 2021.03.15 |
---|---|
Collider에 대한 모든 것(기본) [Unity] (1) | 2021.03.15 |
AddForce에 대한 모든 것(+RelativeForce) [Unity] (2) | 2021.03.14 |
C#, Unity에서의 접근제한자,Access modifier [Unity] (0) | 2021.03.11 |
게임 제작 과정에서 한 번쯤 생각해야 할 체크리스트 (0) | 2021.03.05 |