Programming

핵심알고리즘 모든 스테이지에는 항상 상점방(Shop), 보상방(Reward), 보스방(Boss) 최소 3개의 특별방(Special Room)이 있다. 다른 특별방은 랜덤하게 추가된다. 그리고 비밀방(Secret Room)을 제외하면 모든 방에는 순환(Loop)가 없다. 게임은 챕터가 진행되면서 방의 갯수가 점차 많아지고, 방의 컨텐츠가 조금씩 바뀌지만, 기본적인 알고리즘은 같다. 알고리즘의 진행과정은 간단하다. 먼저 평면도(Floor Plan)을 만든다. 그리고 몇몇방은 특별방으로 지정된다. 마지막으로 방의 인테리어 및 디테일한 부분을 적절한 풀에서 선택한다. 평면도 평면도는 그리드(Grid)의 형태로 되어있고, 모든 칸에는 두자릿수 번호가 있고, 이 번호는 칸의 위치를 의미한다. 칸의 일의자리는 X좌표..
좋은 임의 숫자 생성기는 각각의 숫자끼리 관계성과 규칙성 없이 숫자를 생성해야한다. 켄 펄린(Ken Perlin)이 고안한 '펄린 노이즈'라는 알고리즘은 이러한 개념을 적용한 알고리즘이다. 펄린 노이즈를 사용하면 구름, 풍경, 대리석의 패턴과 같은 자연의 성질을 가진 다양한 효과를 연출할 수 있다. 펄린 노이즈는 자연적인 질서를 가진(부드러운) 일련의 유사 임의 값을 생성하는 알고리즘으로 굉장히 유기적으로 보인다. 아래의 왼쪽 그래프는 시간의 경과(x축)를 매개변수로 사용해 펄린 노이즈를 표시한 것으로, 굉장히 매끄러운 형태의 곡선이 나온다. 오른쪽 그래프는 시간의 경과에 따라 순수한 임의 값을 추출해 만든 진동이다. 노이즈 함수로 출력되는 범위는 0과 1사이로 정해져 있다. 1차원 펄린 노이즈는 시간에..
명령-질의 분리 원칙(command-query separation principle)은 함수를 호출할 때 본의 아니게 발생한 외부 효과로 예상치 못한 결과가 나오는 일을 방지하는 데 기초가 되는 원칙이다. 함수는 그 성격에 따라 크게 두 가지로 분류할 수 있다. 하나는 어떤 동작을 수행하는 명령(command)이고, 다른 하나는 답을 구하는 질의(query)다. 이러한 두 역할은 한데 섞으면 안 된다. 예를 들어 다음 코드를 살펴보자. function getFirstName() { var firstName = document.querySelector("#firstName").value; firstName = firstName.toLowerCase(); setCookie("firstName", firstN..
매개변수(parameter)는 함수의 정의부에 있는 변수를 의미하고, 인자(argument)는 함수를 호출할때 전달되는 값입니다 private void DoSomething(int argument1, int argument2); // 매개변수 int value1; int value2; DoSomething(value1, value2); // 인자 혹은 전달인자
YMS Games
'Programming' 카테고리의 글 목록