U E D R , A S I H C RSS

이민석/게임개발

Difference between r1.11 and the current

@@ -85,6 +85,8 @@
* 플레이어와 좀비의 이동속도가 같다면 따라잡을 수 없다
* 해법: 걍 버리고 가면 됨
* 하지만 둘 다 탈출하는 방법도 만들어야 한다... 원래 설계 목적
* 레벨 초안
attachment:donotlookback_prototype.png

=== 레거시 코드 재활용 ===
* 게임 캐릭터 클래스(가칭 GameCharacter)가 flash.display.MovieClip 클래스를 상속한다
@@ -92,3 +94,10 @@
* FlashDevelop을 써야 하는데 어떻게 재활용하지??
* MovieClip를 대체할 클래스 MyMovieClip를 만든다
* GameCharacter의 코드 중 MovieClip의 속성, 메서드를 이용하는 코드를 전부 MyMovieClip으로 교체한다. 끝?
 
=== 포탈2 분석 ===
* 이제서야 플레이하는 중.. 포탈1보다 재밌는 장치가 많다. 감자도스 나오는 데까지만 깼는데, 퍼즐의 난이도는 아직까지 포탈1과 크게 다르지 않다.
* 이런 퍼즐을 만들려면 어떻게 분석해야 할까?
* 퍼즐을 '상태 그래프'로 추상화할 수 있나?
* 목적지에 도달하는 건 그래프를 전부 소거해서 목적지 노드만 남게 되는 것
* 큐브를 놓거나, 포탈을 만들거나, 어떤 발판에 올라설 때마다 상태 그래프가 변한다



게임 레벨 디자인 공부할려고 만든 페이지인데 이름을 잘못 지었어.. -.-

컴퓨터 게임을 제작하려면 무슨 소양이 필요할까? 그리고 게임을 어떻게 만들어야 할까?

게임 개발에 필요한 사람들

  • 만들 게임을 기획해야 하고..
    • 게임 장르, 세계관, 스토리 등등...
    • 레벨 디자인: 사용자의 게임 플레이를 기획한다
  • 게임에 필요한 리소스를 제작하는 디자이너가 있어야 하고
    • 캐릭터 디자이너, 맵 디자이너, 오브젝트 디자이너...
  • 게임을 실제로 만들 프로그래머가 있어야 한다
    • 네트워크
    • 그래픽스
    • 인공지능
    • 물리엔진
    • 스크립트

레벨 디자인의 관점에서 바라보자

  • 레벨 디자인은 게임플레이를 설계하는 작업이라고 하면
    • 어떤 캐릭터가 나와서 어떤 플레이를 해야 하는가?
    • 플레이 목표는 무엇인가? 폭파, 탈출, 섬멸 등
    • 게임 플레이를 재밌게 만들 장치(퍼즐, 함정, 미로 등)
  • 그래픽 디자인, 프로그래밍은 잠시 이 레벨 디자인을 실제로 구현하기 위한 단순 노동으로 제쳐두자
    • 씬 그래프, 클래스 설계, 아이템창, 효율적인 캐릭터 업데이트 루프 등은 코딩 상의 과제. 여기서 고민하려는 주제가 아니다
  • 최근에 툼레이더를 했는데 끝내주는 게임이었다. 나도 툼레이더 같은 레벨 디자인을 하고 싶다!
    • 무엇이 재미를 느끼게 하는가?
    • 광활한 환경(컴퓨터 그래픽임에도 실제 노을을 바라볼 때와 같은 감상을 한다)
    • 퍼즐을 풀 때면 알고리즘 문제를 풀 때와 같은 재미를 느낀다.
    • 플레이 동선을 그래프로 나타내보면 재미있는 디자인의 구조가 드러날까?

  • 참고할 자료들 (두서 없음)

    게임 기획: wild heart party

    • 한 줄 설명: 좀비가 나오는 포탈2 코옵
    • 개발 환경
      • 서버: 커먼 리스프 (컴파일러는 SBCL)
      • 클라이언트: 어도비 플래시
      • 소스 코드는 예전에 만든 2D 사이드뷰 플래시 게임을 재탕하자
        • 어차피 이 게임 리메이크할 생각이었는데 wild heart party 만들면서 게임 엔진 완성하고
        • 그 게임 엔진을 써서 리메이크하면 되겠지? 개이득

    • 레포데와 달리 몰려오는 좀비들을 대적할 무기가 없다
    • 플레이어들이 협동하여 좀비로부터 탈출해야 한다
    • 레벨 디자인을 해보자
      • 아이디어1
        • 던전앤파이터에는 특급열차라는 던전이 있는데 처음에 미니게임으로 시작한다.
        • 이 미니게임을 클리어하면 던전 진행에 도움이 되는 버프를 받지만 못 깨도 던전 진행에는 무리가 없다.
        • 그런데 파티원 중 한 명만 클리어해도 전원이 버프를 받는다.
        • 남들 깨라고 자기는 미니게임 시작하자마자 손을 놔버리는 사람들이 많다.
      • 아이디어2
        • 두 명이 탈출구를 지키는 좀비로부터 탈출해야 한다
        • 한 명이 좀비를 유인하고 다른 한 명이 샛길로 돌아가 좀비를 처치할 무기를 얻어야 한다
        • 좀비를 처리하고 함께 탈출하면 성공
        • 그런데 샛길에서 탈출구로 이어지는 길이 있어서 유인하던 사람은 죽게 놔두고 혼자 탈출할 수도 있다
        • ?? 애초에 둘 다 샛길로 가면 되네?
          • 한 명만 샛길로 가게 강제하는 방법이..
          • 한 명이 지나가면 통로가 무너진다 - 둘이 붙어서 통과하면.. 코딩하기 애매함..
          • 특정 아이템을 가진 사람만 들어갈 수 있고 그 아이템은 시작점에 딱 하나 떨어져 있다?
          • 샛길 문이 막혀있는데 그 문을 여는 장치가 멀찍이 있어서 한 사람은 열어주고 한 사람은 들어가야 한다!
            • 장치는 계속 작동시켜줘야 하는 거라 혼자서 문 열고 지나갈 수 없다. 앞에 가면 닫혀있다
            • 더불어 통과한 사람도 시작점으로 되돌아 올 수 없게 된다
        • 한 명이 좀비를 유인하지 않으면 탈출할 수 없게 만들어야 한다
          • 샛길을 나오면 좀비한테 공격받기 딱 좋은 위치
            • 나오자마자 바로 추격받게... 그러면 도망칠 길이 왔던 샛길 밖에 없는데 샛길이 막혀 있네?
            • 문 열어줬던 사람이 다시 열어줘도 둘 다 죽네? ^^
            • 잠깐.. 유인 안 해주고 문도 안 열어주면? 이번엔 남아있던 사람이 탈출할 수 있다!
            • 샛길 들어가면 밖에 상황이 안 보이게 하고 채팅으로만 의사소통 가능
            • "유인하고 있으니까 나오세요" -> 사실 안 했음 -> "이자식이?"
          • 샛길을 가지 않은 사람이 미끼가 되어 샛길 간 사람이 통과할 수 있게 만든다
          • 좀비를 뒤치기할 때까지 미끼가 살아남으려면?
            • 미끼-좀비가 왼쪽으로 움직이는 동안 샛길 간 사람은 오른쪽으로 갔다 왼쪽으로 다시 가야 해서 두 배 거리
            • 플레이어와 좀비의 이동속도가 같다면 따라잡을 수 없다
            • 해법: 걍 버리고 가면 됨
            • 하지만 둘 다 탈출하는 방법도 만들어야 한다... 원래 설계 목적
        • 레벨 초안
          donotlookback_prototype.png
          [PNG image (17.96 KB)]


    레거시 코드 재활용

    • 게임 캐릭터 클래스(가칭 GameCharacter)가 flash.display.MovieClip 클래스를 상속한다
    • 그런데 플래시 CS6이 없어.. 쥬륵
    • FlashDevelop을 써야 하는데 어떻게 재활용하지??
    • MovieClip를 대체할 클래스 MyMovieClip를 만든다
    • GameCharacter의 코드 중 MovieClip의 속성, 메서드를 이용하는 코드를 전부 MyMovieClip으로 교체한다. 끝?

    포탈2 분석

    • 이제서야 플레이하는 중.. 포탈1보다 재밌는 장치가 많다. 감자도스 나오는 데까지만 깼는데, 퍼즐의 난이도는 아직까지 포탈1과 크게 다르지 않다.
    • 이런 퍼즐을 만들려면 어떻게 분석해야 할까?
    • 퍼즐을 '상태 그래프'로 추상화할 수 있나?
    • 목적지에 도달하는 건 그래프를 전부 소거해서 목적지 노드만 남게 되는 것
    • 큐브를 놓거나, 포탈을 만들거나, 어떤 발판에 올라설 때마다 상태 그래프가 변한다
    Valid XHTML 1.0! Valid CSS! powered by MoniWiki
    last modified 2021-02-07 05:30:30
    Processing time 0.0496 sec