![](/knowledge/abroad/indu/__icsFiles/artimage/2011/08/05/Gamasutra_1.jpg)
세포 자동화 도입
작성자 : 존 해리스John Harris
가마수트라 등록일 : 2011년 5월4일
[이번 편에서는 게임 제작에 유용한 알고리즘 시뮬레이션인 세포 자동화에 대해 알아보고, 마인크래프트나 드워프요세, 그 밖의
다른 게임들에서 어떻게 사용이 되었는지 설명하며, 그것이 개임 개발의 맥락에서 어떻게 유용하게 사용될 수 있는지 설명 하고자
한다.]
세포 자동화란 무엇인가?
내 이름은 존 해리스(John Harris)이고, 세포 자동화를 사용하여 인 프로펀디스(In Profundis) (킥스타터[Kickstarter] 프로젝트 )라는 대형 동굴의 세계 시뮬레이션 게임을 제작하고 있다. 세포 자동화는 물을 흐르게 하고 가스를 퍼지게 하며 바위를 떨어뜨리고 다른 시스템이 자라거나 시간이 지나면서 변하게 합니다. 이러한 기능을 가능하게 하기 위해서는 그리드 기반 게임세계의 각 셀마다 결정된 복잡한 시스템을 실행 해야만 한다.
세포 자동화는 게임 디자이너가 사용하는 도구들 중 큰 관심을 끌지 못해 쉽게 지나쳐 버릴 도구이기는 하지만 이 도구가 적용되어, 몇 몇의 아주 흥미로운 게임들이 만들어 졌습니다. 게임의 리스트는 다음과 같다; Boulder Dash, SimCity, ADOM, Falling Sand, Dwarf Fortress and Minecraft.
리스트의 게임 중 특히 사랑을 받고 있는 마지막 두 인디 커뮤니티 게임은(Dwarf Fortress 와 Minecraft) 복잡한 세계의 시뮬레이션이 인기 원인의 한 부분이라 할 수 있다.
2D의 In Profundis는 조금 덜 복잡하기는 하지만 3D 의Dwarf Fortress와 비슷한 방식을 사용하고 있다. (참고: 가마수트라를 위해 저는 Dwarf Fortress의 프로그래머인 Tarn Adams 와 유체 역학을 포함한 게임 구현의 세부 사항에 대하여 인터뷰 했습니다.)
세포 자동화를 크게 정의 하자면 정의된 그리드 안의 cell에 몇 가지 작업을 반복적으로 수행하는 시뮬레이션 테크닉이며, 각 결과는 각 패스의 이전 결과를 교체 하게 된다.
이것은 여러 가지의 이유로 그 동안 간과 되어 왔으나(조금 후에 단점들에 대해 다루겠지만) 제법 오래 전부터 존재 해 왔었다. 세포 자동화의 시작은 수학자 John Horton Conway 의 Game of Life 에서 유래 되었다고 보여 집니다. 여기서 생명은 보드의 카운터 숫자와 몇 가지의 규칙으로 셀의 생사를 결정하게 된다.
플레이어는 시작 구성이 된 보드를 가지고 순서대로 턴을 실행한다. 각 턴마다 세 이웃을 가지고 있는 빈 공간은 출생이 되고 다음 턴에 새로운 카운터를 받게 된다. 카운터가 둘 이하 이거나 셋 이상인 공간은 사망하고 다음 턴에서 카운터가 사라지고 제거된다. 이웃이 되는 공간은 인접한 공간과 대각선으로 인접한 공간을 합하여 모두 여덟 개 이다. 이 여덟 개가 라이프(Life)의 전부이다.
![](/knowledge/abroad/indu/__icsFiles/artimage/2011/08/05/2.jpg)
자, 이것이 Life의 전부다 라고 할 수 없지만, 세포적 자동화는 의외의 복잡성을 표현 하기 위한 훌륭한 수단이다. 간단한 패턴과 몇 개의 카운터는 많은 계산을 통해 폭발적으로 늘어나고 수 천개의 세포을 채워 엄청난 양의 표를 만들어 낼 수 있습니다.
![](/knowledge/abroad/indu/__icsFiles/artimage/2011/08/05/3.jpg)
Life 의 규칙은 간단하지만 그 결과는 오늘날 까지도 완전히 밝혀지지 않았다.(Life에 대한 자세한 내용검색은 위키 페이지에서 시작하시는 것이 좋겠다. 또한 처음으로 대중에게 공개된 Scientific American 지의 Martin Gardner의 수학 게임 컬럼도 참고할 수 있다. 자신이 한번 직접 해보고 싶다면 오픈 소스에 여러 플렛폼을 지원하는 CA 시뮬레이터인 Golly 를 강력히 추천 한다.)
Life는 컴퓨터 없이도 플레이를 할 수 있지만 최근에 발견된 Life의 행동은 모두 컴퓨터의 Life 시뮬레이터에 의존하여 얻어진 것이다. 최초로 작성된 엔터테인먼트 소프트웨어 프로그램들 중 하나는 라이프 심(Life Sims)이다.
모든 세포 자동화가 Conway의 Life처럼 심오한 것은 아니다. 사실 풍부한 행동성 대비 계산시간을 위해 많은 노력을 하겠지만 실제로 Life 급의 우아함이나 그 정도 수준이 안 된다고 해서 세포 자동화를 잘 사용하지 못한다는 것은 아니다.
세포 자동화의 어떤 점이 게임 개발자에게 유용할까?
¡Ü그것은 동적으로 변화 하는 시스템을 만드는데 큰 도움을 줄 수 있다. 흐르는 액채는 아주 훌륭한 예 라고 할 수 있다. 한 세계에 생물체를 퍼뜨리는 것도 한 예가 될 수 있겠습니다. 연료가 깔려 있는 필드를 따라 불이 붙어 번져 나가는 것은 CA 기반의 시뮬레이션에 아주 잘 맞습니다. Dwarf Fortress 와 Minecraft 모두는 흥미롭게 (그리고 위험하게) 불이번져 나가는 행동을 구현합니다.
¡Ü잘 설계되어있는 세포 자동화는 드러내지 않게 작업을 할 수 있다. World Sim에, platformer 엔진 같은 다른 시스템을 여러분은 매우 쉽게 덮어 씌울 수 있다. 약간의 추가 작업으로 CA 프로세스를 자체의 프로세서가 구동하고 있는 스레드에 맡겨버릴 수도 있다. 타일 기반 게임은 이미 셀룰라 자동화가 사용하는 일반, 사각형 그리드에 자연스럽게 호스팅이 된다. 특히, 하드웨어 타일 구조를 사용하는 콘솔은 세포 자동화를 표시하기에 매우 적합합니다.
세포 자동화 시스템은 모든 경우에 유용한 것은 아니며, 일부의 경우에는 어느 정도 용도에 따라 작업을 해 두어야 한다. 게임 개발자가 세포 자동화를 사용할 때 반드시 주의 해야 할 사항은 무엇일까?
※ 자세한 내용은 첨부(PDF)화일을 참고하시기 바랍니다.
![인쇄](/images/common/btn/btn_print.gif)
|