728x90

분류 전체보기 947

게임 레벨 디자인 관련 메모 (2024.03.27)

레벨 디자인 이론들 메모 정보의 제한. Z주목 학습의 법칙 https://www.youtube.com/watch?v=MMggqenxuZc 백문이 불여일견. 벨브 하프라이프2의 플레이어 행동 유도 디자인. Affordance : 행동 유도성 Signifier : 지각 가능한 단서 플레이어마다 인지력 역시 다르기에 디자이너는 최고점과 최저점 사이에서 절충안을 찾아내야 일부 디자이너들은 공간을 만든 뒤 스크린샷을 찍은 뒤 혹은 (감각이 더 발달했다면) 현장에서 화면 영역이나 공간별로 나눠 종류나 위치별로 배치 프랍 배치에 대한 9등분 기법 https://twitter.com/MaxPears/status/1059732251972456448?s=19 X의 Max Pears님(@MaxPears) Talking ea..

테트리스에 영감을 준 펜토미노(Pentomino)

1985년 테트리스는 구 소련의 개발자인 알렉세이 파지노프로가 개발하고 TTC(The Tetris Company) 에서 저작권을 보유 및 관리. 고대 로마의 전통 포즐인 펜토미노(Pentomino)에서 영감. 다섯 개의 정사각형으로 이루어진 폴리오미노. 5개의 단위 정사각형이 변끼리 붙어 이루어진 도형으로 모양을 만드는 놀이. 12가지의 알파벳 모양. 펜토미노 참고 링크들 https://creativeqedu.com/%ED%8E%9C%ED%86%A0%EB%AF%B8%EB%85%B8pentomino%EC%9D%98-%EB%9C%BB%EA%B3%BC-%EC%95%84%EC%9D%B4%EB%93%A4%EC%97%90%EA%B2%8C-%EC%A2%8B%EC%9D%80-%EC%A0%90-10%EA%B0%80%EC..

테트리스의 신작 <테트리스 리버스드> GDC 기사와 관련 자료 수집

GDC2024 기사들을 보다가 테트리스 관련 기사를 보게 됨. 기사 자체는 테트리스의 차기작, 새로운 테트리스를 개발하기 위한 프로토타입을 개발했던 과거 이야기를 푸는 GDC 강연? 강연이라기보다는 테이블 토크같은 느낌이었던 것 같은데... 기사 자체보다는 테트리스와 관련된 이야기들에 호기심이 생겨서 잠깐 서치해봄. 과거에 테트리스와 관련된 저작권 분쟁이 크게 있었던 기억. 관련 내용들을 각종 위키를 검색해보면 기사들이 잘 정리돼있음. 테트리스의 "테트"는 그리스 숫자 접두어인 Tetra, 4라는 의미를 갖고, 폴리오미노의 개념에서 4개의 정사각형으로 이루어진 테트로미노를 활용한 블록 퍼즐게임. 테트리스의 개발자인 파지트노프가 좋아하던 테니스(Tenis)를 합쳐서 "테트리스"라는 이름이 붙은 것. 테트리..

[Unity] 유니티 엔진으로 툴 제작 시 에디터 클릭 이벤트 후킹하기

Unity Engine 에디터 내에 Scene View 를 활용해서 툴을 만들 때, 마우스 좌클릭을 기본 도구에서의 선택 도구 외에 다른 용도로 사용하려고 하면 Unity Engine 의 Event 를 핸들링 할 필요가 있다. Event.current 가 에디터의 UnityGUI 이벤트가 되는데, 이 이벤트가 마우스 좌클릭일 때 Use() 를 호출해서 사용처리 해버리면 선택 도구로 작동하는 것을 후킹할 수 있다. if (Event.current.type != EventType.MouseDown) return; if (Event.current.button != 0) return; Event.current.Use(); // 툴에서 원하는 동작 처리. Event.current.button 의 값은 마우스 버튼..

[Unity] Texture2D와 RenderTexture의 핵심 차이

Texture2D와 RenderTexture의 핵심적인 차이는 다음과 같다: 사용 목적 Texture2D: 2D 이미지 데이터를 저장하고 사용하는 데 사용된다. 주로 텍스처 매핑, UI 요소, 그림 및 사진과 같은 이미지 표현에 사용된다. RenderTexture: 렌더링 결과를 저장하기 위한 특수한 유형의 텍스처이다. 주로 카메라의 렌더링 결과를 저장하거나, 이미지 처리, 후처리 효과, 텍스처 생성 및 수정에 사용된다. 렌더링 가능 여부 Texture2D: 렌더링 가능한 텍스처가 아니며, 즉 렌더링 파이프라인에 직접 사용할 수 없다. RenderTexture: 렌더링 결과를 저장하기 위한 텍스처로서, 렌더링 파이프라인에 직접 사용할 수 있다. 메모리 할당 방식 Texture2D: CPU 메모리에서 생성..

[Unity] 최초 실행되는 UnityMain 함수 만들기 (RuntimeInitializeOnLoadMethod 상세 순서 설명)

유니티 엔진에서 초기화를 하고싶어 유니티는 BuildSettings의 Scenes In Build 목록에 셋팅된 0번 인덱스 씬으로 시작하게 됨. 이 때 씬을 로드하면서 초기화도 같이 수행하게 되는데, 씬에 올라간, 씬의 Hierarchy 목록의 GameObject 들의 Awake와 Start의 호출 순서가 보장되지 않음. Awake, Start 호출 순서가 보장되지 않더라도 초기화 처리는 가능하겠지만, 어떤 GameObject 들의 초기화보다도 먼저 초기화 처리를 하고싶은 경우가 있을 수 있음. 이 때, [RuntimeInitializeOnLoadMethod] 어트리뷰트(Attribute)를 활용해서 특정 static 함수의 속성을 설정해서, 게임이나 앱 실행 후 가능한 빠른 시점에 호출되도록 핸들링 ..

[Unity] 유니티 셰이더 코드에서 _MainTex_TexelSize 변수의 정체는?

셰이더 코드는 참조하다보니 _MainTex_TexelSize; 라는 변수를 선언만 하고 바로 사용하는 모습들을 종종 보게 됨. 내장 변수인 것 같은데, 어떤 값을 담는지 설명은 검색해도 보이던데 어디서 어떻게 생성해서 값을 할당 해주는 것인지에 대한 내용이 잘 보이지 않더라. 일단 이 변수는 유니티 엔진 내부에서 생성 및 할당해주는 변수는 확실하고, 관련 설명은 아래 유니티 공식 문서에서 서술하고 있음. 주의해야 할 부분은, _MainTex_TexelSize 라는 이름의 변수명을 생성해주는 것이 아니고, {TextrueName}_TexelSize 라는 이름으로 생성해준다는 것. 셰이더를 작성할 때 보통 _MainTex 프로퍼티를 생성하기 때문에 결론적으로 _MainTex_TexelSize 라는 변수가 만..

[Unity] 셰이더 처리 후 텍스처 테두리가 번져 보이는 문제

간단한 가우시안 블러(Gaussian Blur) 코드를 올리고 보니 테두리의 색상이 번져있는 것을 제보를 받고 알게 됨. 원인은, 가우시안 블러 셰이더 처리 중, UV 값이 0보다 작거나 1보다 큰 영역까지 침범했기 때문. [Unity] 간단한 가우시안 블러(GaussianBlur) 셰이더 코드 텍스처에 가우시안 블러 처리를 하면 요런 결과물이 생성됨. 아래는 머티리얼 속성. Blur Radius 를 조절해서 Blur 강도를 조절할 수 있다. 간단한 가우시안 블러 셰이더 코드 Shader "Custom/GaussianBlur" { tistory.wonsorang.com 아래는 침범된 코드 스니펫. // Horizontal blur pass for (int x = -5; x

[Unity] 간단한 가우시안 블러(GaussianBlur) 셰이더 코드

텍스처에 가우시안 블러 처리를 하면 요런 결과물이 생성됨. 아래는 머티리얼 속성. Blur Radius 를 조절해서 Blur 강도를 조절할 수 있다. 간단한 가우시안 블러 셰이더 코드 Shader "Custom/GaussianBlur" { Properties { _MainTex ("Texture", 2D) = "white" {} _BlurRadius ("Blur Radius", Range(0.0, 10.0)) = 1.0 } SubShader { Tags { "RenderType"="Opaque" } Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex :..

[Unity] 유니티로 Texture 를 복사하거나 Shader로 변형하는 방법

Graphics.CopyTexture()는 텍스처 간의 간단하고 효율적인 데이터 전송 효율적인 데이터 전송 Texture.isReadable 값이 false 인 경우, CopyTexture 가 텍스처를 복사하는 가장 빠른 메소드. 아래 3가지 조건이 두 텍스처간에 동일해야 함. - 텍스처 포멧 - 크기 - RenderTexture.antiAliasing 값 https://docs.unity3d.com/ScriptReference/Graphics.CopyTexture.html Unity - Scripting API: Graphics.CopyTexture This method copies pixel data from one texture to another on the GPU. If you set Textu..

728x90
반응형