2019년 2월 7일 목요일

[20190207] 잡설 - 포기

코드를 작성하기 시작한 이래 제법 긴시간을...
"제대로"
...작동하는 프로그램만 만들어왔던 것 같다.


컨텐츠가 자동생성되어야 하는 게임을 개발하고부터 제대로 작동하는 것 만으로는 많은 경우 <요구사항> 을 충분히 만족할 수 없다는 것을 알게되었는데...

"의외성" 과 "자연스러움"

...이 그것이다.


생성된 컨텐츠에 두가지 요소를 유도하기 위해 여러 수단과 방법을 찾아다녔다.


손쉽게 Random 함수를 남발하거나
속성을 Range 로 만들어 가변성을 부여하거나
엉뚱한 것들을 매칭 시키거나
그럴싸한 Algorithm을 도입해보거나.
...
..
.


이런 저런 시행착오를 반복하던 와중에 흥미롭게도 엄밀함을 포기함으로써 가지는 의외성이 제법 쓸만하다는 것을 알게 되었다.

간단히 적자면 기능의 일부를 엉뚱하게 작성하는 것이고

자세히 적자면 코드의 기능이 무너지지않는 범위 안에서 오작동을 설계의 일부로써 포함하는 것이다.


예로는 "결핍" 이 있는데...
  • 갱신해야 할 것을 갱신하지 않거나
  • 데이터를 4개 가져야 하는데 3개만 제공하거나.
  • 파이프라인의 일부를 건너뛰거나
...하는 것이다.


이것을 알게 되었다 한들 숙성시켜 게임에 녹여내는 것은 어려울테지만
뭐... 언젠가는 활용할 날도 오지 않으려나.


누군가에게 힌트가 될지도 모르니 기록으로 남겨 놓는다.
( '_')y-~

댓글 2개:

  1. 격투 게임의 캔슬 기능 같은것도 사실은 버그에서부터 시작되었다고 하죠.
    제 통제 아래 반드시 있어야 하는 몇가지를 제외하고는 그냥 놓아줘도 될까요? 너무 집착하지 않아도 되는 걸까요?

    답글삭제
    답글
    1. 음~! 어려운 문제군요.

      아마도 중요한 것은 완급이 아닐까요.

      대전액션의 캔슬은 버그로 분류되지만 허용범위 이내의 의외성을 보여줬기 때문에 살아남았다~! 라고 생각하고 있습니다.
      명백하게 버그로 취급될 정도의 부작용이 있었다면 살아 남지 못했겠죠.


      SFC 시대 까지의 클래식 게임들은 비슷비슷한 버그들을 가지고 있는 경우가 있는데
      이 버그들이 절묘해서 재현이 그리 쉽지 않지만, 발생해도 게임에 크게 치명적이지 않고, 하드코어 유저들의 speed run 에는 고급 기술로서 사용됩니다.
      이건 아마도 그 버그가 발생을 염두해서 기반 시스템을 견고하게 만들어 뒀기 때문이 아닐까 라고 생각하고 있습니다.


      만약에 통제하지 않은 요소들이 큰 문제를 일으킨다면...
      전지전능한 개발자느님께서 녀석들을 잡아다가 통제의 우리에 쳐 넣을것이기 때문에 아마도 괜찮을 것이다.
      ...라고 맘편하게 생각하고 싶네요. +_+

      삭제