전체 글

YMS Games 의 블로그입니다
선형성은 직선의 형태를 띠는 성질을 의미한다. 수학에서는 선형성을 다음과 같은 가법성(Additivity)과 1차 동차성(Homogeneity of degree 1) 두 가지 조건을 모두 만족하는 함수의 성질로 정의한다. 가법성 : $ f(x_1 + x_2) = f(x_1) + f(x_2) $ 1차 동차성 : $ f(k \cdot x) = k \cdot f(x) $ 선형 함수 입력에 사용할 요소 $x$와 출력이 모두 실수인 함수에서 원점을 지나는, 다음과 같은 직선의 함수가 있다고 해보자. $$ f(x) = ax $$ 출력의 원소를 $y$로 표시했을 때, 위 함수는 $ y = ax $로 표현되며, 이를 그래프로 나타내면 원점을 지나는 직선이 될 것이다. 이 함수가 선형성을 만족하는지 직접 확인해 보자. ..
· Language/C#
C#은 컴파일 타임 상수와 런타임 상수 두 유형의 상수를 가진다. 런타임 상수는 readonly 키워드를 사용하여 선언하고, 컴파일타임 상수는 const키워드를 사용한다. 이 둘은 얼핏 비슷하게 보이지만, 접근하는 방법에서 차이를 보인다. 컴파일타임 상수는 컴파일타임에 변수가 값으로 대체된다. 반면, 런타임 상수는 런타임에 값이 평가된다. readonly 키워드를 이용하여 선언된 런타임 상수는 컴파일타임 상수처럼 컴파일타임에 값으로 대체되지 않고 상수에 대한 참조로 컴파일된다. 이러한 차이로 인해 각각의 상수형은 서로 다른 한계를 가진다. 컴파일 타임상수는 내장자료형에 대해서만 사용될 수 있다. 반면 런타임상수는 어떤 타입과도 함께 사용될 수 있다. 또한 런타임 상수는 멤버 초기화 구문뿐 아니라 생성자를..
· Unity/Tip
URP환경에서 그림자 설정은 Universal Render Pipeline Asset에서 설정할 수 있다. 이 파일을 열어보면 여러개의 탭이 있는데, Lighting탭과 Shadows탭을 건들여줘야된다. Lighting Lighting탭에보면 Main Light 하위에 Shadow Resolution이라는 값이 있는데, 이는 Main Light에 대한 섀도우맵 텍스쳐의 크기를 제어한다. 이 값을 높이면 높일수록 더 매끈하고 디테일한 그림자를 얻을 수 있다. 그 다음 Additional Lights하위에 Shadow Atlas Resolution이라는 값이 있다. 마찬가지로 Additional Lights에 대한 섀도우맵 텍스쳐의 크기를 조절한다. 이 역시 값을 높이면 높일수록 더 좋은 그림자를 얻을 수 ..
public IEnumerator Shake(float duration, float magnitude) { Vector3 orignalPosition = transform.position; float elapsed = 0f; while (elapsed < duration) { float x = Random.Range(-1f, 1f) * magnitude; float y = Random.Range(-1f, 1f) * magnitude; transform.position = new Vector3(x, y, -10f); elapsed += Time.deltaTime; yield return 0; } transform.position = orignalPosition; }
핵심알고리즘 모든 스테이지에는 항상 상점방(Shop), 보상방(Reward), 보스방(Boss) 최소 3개의 특별방(Special Room)이 있다. 다른 특별방은 랜덤하게 추가된다. 그리고 비밀방(Secret Room)을 제외하면 모든 방에는 순환(Loop)가 없다. 게임은 챕터가 진행되면서 방의 갯수가 점차 많아지고, 방의 컨텐츠가 조금씩 바뀌지만, 기본적인 알고리즘은 같다. 알고리즘의 진행과정은 간단하다. 먼저 평면도(Floor Plan)을 만든다. 그리고 몇몇방은 특별방으로 지정된다. 마지막으로 방의 인테리어 및 디테일한 부분을 적절한 풀에서 선택한다. 평면도 평면도는 그리드(Grid)의 형태로 되어있고, 모든 칸에는 두자릿수 번호가 있고, 이 번호는 칸의 위치를 의미한다. 칸의 일의자리는 X좌표..
좋은 임의 숫자 생성기는 각각의 숫자끼리 관계성과 규칙성 없이 숫자를 생성해야한다. 켄 펄린(Ken Perlin)이 고안한 '펄린 노이즈'라는 알고리즘은 이러한 개념을 적용한 알고리즘이다. 펄린 노이즈를 사용하면 구름, 풍경, 대리석의 패턴과 같은 자연의 성질을 가진 다양한 효과를 연출할 수 있다. 펄린 노이즈는 자연적인 질서를 가진(부드러운) 일련의 유사 임의 값을 생성하는 알고리즘으로 굉장히 유기적으로 보인다. 아래의 왼쪽 그래프는 시간의 경과(x축)를 매개변수로 사용해 펄린 노이즈를 표시한 것으로, 굉장히 매끄러운 형태의 곡선이 나온다. 오른쪽 그래프는 시간의 경과에 따라 순수한 임의 값을 추출해 만든 진동이다. 노이즈 함수로 출력되는 범위는 0과 1사이로 정해져 있다. 1차원 펄린 노이즈는 시간에..
YMS Games
YMS Games