ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 크로스플랫폼 3D 게임엔진 개발 및 게임 제작 (스크랩)
    정리필요2 2008. 3. 11. 08:58

    크로스플랫폼 3D 게임엔진 개발 및 게임 제작

    게임 수원 창의과제 엔진 XBOX 크로스플랫폼



    본 게임은 기존의 순차적 방식의 퀘스트 해결 방식에서 벗어난 다수의 플레이어와의 연계를 기반으로 한 동적 퀘스트 해결 방식의 MMORPG 게임이다.

      - 기본 컨셉은 완전히 분리된 3개의 월드에서 3명의 플레이어의 연계를 통한 퀘스트 해결방법을 통해 MMORPG의 협
        동 플레이를 강화
      - 액션성을 강조한 전투시스템을 도입
      - 누구나 참여할 수 있도록 쉬운 조작방법을 유도
      - LUA Script를 이용한 파트별 역할 분담 프로세스 정립




    김동훈  김기환  박민규 




    평소 게임에 관심이 많았던 회원들을 주축으로 기술적인 난이도을 충분히 만족시키면서 창조성있는 기획을 통해 완성도 높은 게임을 만들고자 했다. 이를 위해 우리는 기획부문과 기술부문에 대해 많이 고민했다.

    기획 부문에서 기존 MMORPG가 가진 단점은 '이야기 구조 취약', '지루한 전투 시스템'에 있다고 생각되었다. 그래서 G3팀은 이번 프로젝트를 통해 동영상과 다른 플레이어와의 연계 수행 퀘스트를 통해 이야기를 풍부하게 만듦과 동시에 액션성이 가미된 전투 시스템을 통해 창의적이면서 다소 실험적인 MMORPG 게임을 개발해보고자 했다.

    또한 기존에 다뤄 보지 못한 기술(Lua, XNA, c#)등을 다양한 플랫폼에서 개발함으로써 다양한 경험을 쌓고 툴 습득 능력을 향상시키고자 하였다. 이 중 Lua는 회원 모두가 다루어 보지 못한 스크립트 언어로 이미 많은 곳에서 게임 개발에 사용되고 있다. Lua를 통해 인터페이스와 이벤트, AI에 대한 부분을 분리하여 개발하고 이를 통해 게임 개발에 있어서 멤버들간 구조적인 작업 분담이 가능할 것이라 예상되어 이에 대한 공부를 진행 하고자 한다.

    XBox 360 게임 개발 플랫폼인 XNA와의 연계를 통해 게임 개발에 대한 추가적인 공부를 하고자 하였으며, 추후 이메진 컵 참가를 목표로 하였고, 향후 이메진컵 및 인디게임공모전에서 입상시, 임시적인 게임서버를 구축하여 실 사용자들이 플레이 할 수 있는 서비스 제공을 목표로 했다.






    기존의 정적인 온라인 게임방식을 벗어난 새로운 방식의 게임 구상과 게임을 제작하는데 필요한 엔진을 설계 및 제작하기 위해서 리니지2,라그나로크2, 레퀴엠, 이스 온라인, 월드오브워크래프트 등의 현존하는 온라인게임을 분석하였다. 해당 게임들의 분석을 통해서 대략적인 게임의 컨셉 및 방향을 잡았으며 필요한 기술적 부분을 찾아낼 수 있었다. 결과적으로 픽셀 세이더 기반의 카툰렌더링 기법과 HDR이 차세대 게임을 대표할 수 있는 기술로 인정받을 만하다고 생각했고, 그래서 그 기술이 적용된 게임을 만들기 위한 기술적 분석 및 구현을 하였다. 또한 모든 게임이 공통적으로 LUA라는 스크립트 언어를 사용한 점에 착안하여, LUA역시 사용하였다.


    전체적으로 캐릭터가 게임상에서 보여지고 에니메이션 되기 위해서는 3DSMAX나 MAYA등의 그래픽 툴의 3D정보를 자체포멧으로 출력하는 것이 필요한데, 이를 플러그인이라한다. 그 외에 맵의 높낮이를 조절 할 수 있고, 게임 상에 존재하는 나무, 건물등의 오브젝트의 배치를 위한 맵툴이 필요하며, 이 툴들을 통해 제작된 데이타는 게임과 호환되어야 했다. 저장된 데이타를 화면에 출력하게 하는 것은 그래픽엔진의 역할이지만, 실제 게임과 같은 상호작용의 지원을 위해 LUA라는 스크립트 언어를 사용하였고, 결과적으로 LUA는 게임의 흐름 및 인터페이스등을 담당하게 된다. 엔진설계를 위해서 VISIO를 이용하여 기능별 역 할분담을 하였고, 추후 통합 시 추가적인 시간없이 바로 통합에 성공하였다.  
                                                            [그림1] 시스템 아키텍쳐


     

    본 과제의 목표는 인디게임 공모전 및 이메진 컵 출품에 있으며, XBOX360과 PC환경에서 동일한 소스로 돌아가는 게임엔진을 만들어보자는데 있다.세부 적으로는 다음과 같다.  

    1.1. 과제 목표  

    1.1.1. 게임 내 여러요소들을 LUA를 이용하여 구현    

    기존의 게임들이 LUA를 인터페이스에만 사용하는 등의 소극적형태를 띄었지만, 우리 게임에서는 LUA를 적극적으로 활용해 볼 생각이며, 이를 위해 엔진 설계에 LUA가 엔진의 여러 함수를 직접 접근하여 게임을 제작할 수 있는 환경을 제공할 생각이다.

    1.1.2. XNA기반의 게임 엔진

    XNA는 마이크로소프트에서 XBOX360게임 제작을 위해 제공하는 SDK이다. C#으로 제작되어 있기 때문에, 소스 가독성이 상당히 좋은 편이고 XBOX와 PC간 소스의 수정없이 크로스플랫폼 게임 개발이 가능하도록 지원한다. 하지만 알려진 정보가 없기 때문에 이를 위한 많은 기술적 공부가 필요하며, 과제기간 동안 XNA를 이용하여 크로스플랫폼 게임 엔진을 제작할 것이다.  

    1.1.3. 게임 엔진을 지원하기 위한 툴 제작  

    단순히 게임이 엔진만 가지고 만들 수 있는 것은 아니다. 게임 제작의 편의성을 위해 맵편집 및 오브젝트 배치를 빠른 시간에 할 수 있는 툴을 제작할 것이다. 툴은 기본적으로 게임엔진에 탑재된 여러 요소를 사용할 것이기 때문에, 툴 이전에 엔진이 먼저 완성되어 있어야만 한다.  

    1.1.4. 인디게임 공모전 및 이메진 컵 입상    

    우리가 제작한 게임 엔진을 가지고 만든 게임을 인디게임 공모전과 이메진 컵 대회에 제출하고 입상하는 것이 최종 목표이다.


    1.2 실제 완성결과  

    1.2.1. 러요소들을 LUA를 이용하여 구현    

    LUA를 사용한 선택은 탁월하였지만, LUA의 버전별 특징으로 인해 상당히 고생을 많이 하였다. 결과적으로 LUA는 게임엔진에서 Glue함수를 제공받게 되 고, 게임 내 렌더링이나 입출력이 필요하다고 판단 시 엔진을 직접호출하게 처리되었다. 이를 통해 엔진개발과 LUA을이용한 게임 로직설계에 있어 독립적으로 개발할 수 있었다.    

    1.2.2. 게임 엔진

    현재 국내에서 XNA을 아용하여 게임을 제작하는 경우는 흔치 않으며, 이로 인해 기술적인 조언을 받기가 상당히 힘들었다. 하지만 기본적으로 XNA가 접 근하기 쉬운 프레임워크로 구성되어 있었기 때문에 기본적인 엔진의 형태는 구현할 수 있었으며, 추후 연계를 통해 실제 XBOX의 탑재를 구현할 계획이다.

    1.2.3. 게임 엔진을 지원하기 위한 툴 제작    

    인디게임공모전에 제출한 게임을 위한 툴을 따로 제작하였는데, 이는 XBOX게임 개발시에는 범용적으로 적용하기가 힘듬을 깨닳았다. 향후 이 부분을 수 정하여, 툴과 엔진을 독립적으로 개발하고, 엔진만 수정된다면 툴은 수정하지 않도록 개발 할 계획에 있다. 또한 디자이너의 역량을 최대화 하기 위해 툴 제 작시 디자이너의 의견을 적극 수렴할 것이고, 영화 같은 연출을 위한 카메라 툴 등도 지원할 생각이다.  

    1.2.4. 인디게임 공모전 및 이메진 컵 입상    

    현재 인디게임 공모전에 게임을 접수한 상태이며, 결과를 기다리고 있다. 이메진컵의 경우 1차접수가 내년 2월이기 때문에 시간적으로 여유가 있지만, XNA가 공개된 자료가 적은 관계로 기술적인 완성도를 높이기 위해서 꾸준한 공부가 필요할 것으로 생각된다. 아울러 이메진컵의 주제가 환경이므로, 환경에 맞는 게임 컨셉을 잡기 위한 디자인도 진행 중에 있다.


    1. 세부기술

    게임내 부족한 리소스를 최대한대로 느낄 수 없게끔, Level of detail 및 Frustum-Cull 을 이용 화면에 보이지 않는 데이터를 출력 되기 전에 제거하였 고. 더 나은 퀄리티의 게임 화면을 제공하기 위해 Glow 효과와 카툰렌더링을 적용하였다. 세부적인 기술명세는 다음과 같다.


    1.1. 동적 데이터 로딩 및 Level of Detail    

    유저와의 거리를 판단하여, 지형의 디테일 수준을 변경시킨다. 기존의 ROAM과 QUADTREE기반의 방식은 CPU중심이어서, 인공지능이나 네트워크 패킷을 받 는데 성능저하를 가져왔지만, 이번 프로젝트에서 사용한 S-LOD방식은 미리 맵의 LOD를 계산해 놓고, 해당 데이터를 Index-Buffer속에 저장하여, 계산할 필요 없이 바로 교체가 가능한 방식이다. GPU방식의 접근이므로, 상대적으로 CPU의 시간을 여러 형태로 활용이 가능하다.  


    1.2. 향상된 절두체 컬링    

    기존의 방식에 비해 약 40%의 성능향상이 있고, 해당 객체가 절두체 안에 판단하는 기준이 6번 계산을 해야 할 것을 두 번의 계산으로 처리할 수 있기 때문에 고속연산이 가능하다. 아울러 절두체를 처음 생성하는 과정 또한 기존 방식은 카메라와 뷰 행렬을 바탕으로 6개의 면을 먼저 만들어야 하지만, 이 방 식은 카메라와 뷰를 바탕으로 2개의 RAY만을 만들면 되므로 성능 향상에 좋다.  


     
    1.3. 렌더링 및 Glow 효과    기존의 정점 중심의 카툰렌더링이 아닌 픽셀세이더 방식의 카툰렌더링을 구현하였고, 화면 보정을 위해서 Glow효과를 적용하였다.  

       



    1.4 LUA 적용  

    스크립트언어로 Lua를 사용하여 엔진과 사용자 인터페이스를 비롯한 게임의 실제적인구현 부분을 완전히 분리하여 프로그래밍. 엔진에서는 입력된 정보 및 렌더링을위한 최소한의 glue함수만을 제공하고,그 외의 부분은 전부 Lua로 처리하여 엔진과 게임 제작 프로세스를분리   - LUA의 적용범위   · User Interface의 모든 사용자 입력 처리 및 process처리와 그래픽 처리를 담당 -기본 인터페이스(status, inventory, world map등의 기본 인 터페이스와 이벤트) 및 전투시 화면이나, 상점에서의 거래, 시나리오 진행시의 인터페이스를 제공하고 해당 인터페이스에서의 사용자 입력 처리와 내부 적인 process 처리를 담당한다. · 시나리오 진행을 담당 -시나리오나 퀘스트 진행 및 게임상의 전체 흐름을 Lua로 제어한다. 퀘스트 진행 시 대화의 흐름, 카메라 무빙워크 및 캐릭터 들의 이동, 시점변환, 퀘스트에 대한 정보 제공 등을 루아에서 담당한다. · 서포트 캐릭터의 AI 등을 Lua로 처리-캐릭터를 도와주는 서포트 캐릭터의 AI 및 메뉴를 루아로 처리한다. (공격/수비 지향성, 거리두기, 몸빵하기, Time Zone 설정하기 등) - LUA를 이용하여 기존게임들의 정적인 인터페이스와는 달리역동적이며, 주인공을 부각시킬 수 있는 위치로의 시점변환을 제공한다. 또한 게임컨셉에 맞게끔 시간과 관련된 테마와 애니메이션이 적용한다.  

                                         



    1.5 XNA- XNA와 PC에서 동일한 기반으로 게임 제작 가능(크로스 플랫폼) . - DirectX 기반으로 되어 있어 추상화 수준이 높음. - XNA에 익숙할 경우 빠른 시간내에 적용 가능(4주만에 레이싱게임을 만든 팀이 있음) .


    1.6. 기획 & 디자인 부분 - Imagin cup을 대비하여 "환경"이라는 주제에 맞는 컨셉으로 전환. -가능한한 재사용 가능한 그래픽 리소스들을 활용하여 제작시간 단축 및 퀄리티 향상 도모.
                   




    - Hardware

      [H/W] XBOX 360 Console


    - Software

      [OS] Window XP Professional Service Pack 2

      [S/W] C++, C#, Lua 5.1.2, DirectX 9.0c SDK, WINAPI, XNA, WinSock2, 3DS MAX 9.0 SDK

      [Tools] Visual Studio 2005, Maya 7.0, 3DS Max 9.0, Deep Exploration, Deep Paint

      [자체제작 툴] Map Tool 및 Model & Animation Exportor







    [추후 계획]

      - 향후 공모전에서 입상 시 임시적인 게임 서버를 구축하여 실 사용자들이 플레이할 수 있는 서비스 제공
     하고자 한다. 이를 위해 자동업데이트 클라이언트가 구현되어야 하며, 어느정도 선까지 업데이트를 지속
     할지 상의해야 한다.

      - 또한 08년도 Imagine Cup 참가를 할려고 하기 때문에, 그것을 위한 준비로 XNA분석 및 C# 공부를
     해야 하며, 추후 Imagine Cup에서 입상
    시 마이크로소프트사와 협의하여 수정을 거친 후 XBox 360
     멤버 존을 통해 게임이 무상으로 배포되게 된다.

      - Imagine Cup의 일정은 다음과 같다.

        February 1, 2008        Round 1 Closes
     February 22, 2008      Round 2 Begins
     May 2, 2008              Round 2 Closes  
     May 23, 2008            Worldwide Finalists and Top 20 Teams Announced  

        July 3-8, 2008           Finals in France





    1. 엔진과 LUA 소스 코드의 통합 부분
    LUA을 이용해, 게임 제작이 주를 이뤘는데 LUA를 지원해주기 위한 엔진내의 Glue 함수들이 체계적으로 정립되어 있지 못했다. 이로 인해 나중에 소스통합시 구조적인 문제로 해결하는데 상당히 오랜 시간이 걸렸다. 향후 연계시는 이를 위해서 선 디자인 후 구현 프로세스를 정립할 생각이고, 구조의 변경이 필요하다고 판단될때는 의사소통 과정을 통해서 그 때마다 구현을 하고 처리할 생각이다.

    2. 이펙트 구현
    게임 개발을 주로 하다 보니, 이펙트 처리가 상당히 중요하였는데 이를 위한 툴 제작이나 스크립트 정립이 되어 있지 않아서 초반에 많은 어려움을 겪였다. 또한 월드오브워크래프트와 같은 대작 게임들의 이펙트는 분석할 것이 상당히 많았는데, 그로 인해 적어도 이 게임정도는 구현해야 된다는 압박감에 많은 스트레스를 받았다. 하지만 이로 인해 결과적으로는 많은 기술적 성취를 이뤘다고 판단되고 이는 게임 퀄리티 상승을 도모하는 효과를 가져왔다.

    3. 서버와 클라이언트 동기화
    네트워크 게임은 항상 동기화 측면이 가장 힘든부분인데, 이를 위해서 기본적으로 패킷이 전송되고 유닛이 길찾기를 하는 시간동안에 데드레커닝이라는 추산기법을 사용하였다. 하지만 유저마다 네트워크 속도가 다르므로 이를 테스트 하는 것이 가장어려웠다. 또한 어느정도의 유저수에 따라서 서버 성능이 효율적인지에 대한 판단을 할 수 없으므로, 더미를 제작하였는데 더미를 제작하는 과정에서 서버 다운과 CPU점유율 문제로 테스트 하는데 많은 어려움이 있었다.

    4. 기획 및 그래픽 부하
    그래픽인력이 한명이다 보니, 전체적으로 그래픽이 완성될때 까지 프로그램 파트에서 리소스 없이 작업하느라 많은 어려움이 있었다. 또한 기획의 변경이 잦다보니 이미 구현해 놓은 모듈조차도 다시 짜야되는 상황이 있었고, 이는 전체개발 시간의 증가로 연결되었다. 하지만 작업 후반부에는 서로 팀워크가 잘 맞아 서로가 이끌어 주는 시너지 효과를 경험할 수 있었다.

    5. 통합 툴 제작
    게임 제작을 쉽게 하기 위한 여러가지 툴을 만들고 그것을 하나로 통합하는 것은 정말 어려운 일이었다. 하지만, 통합 된 툴을 이용하여 제작된 맵이 게임으로 바뀌는 과정을 통해 게임제작을 위한 여러 프로세스를 경험할 수 있었다.

            

                                                                      [그림] 자체제작 맵툴





     아마추어 수준을 벗어난 다양한 3D 그래픽 고급 기술들을 사용하였고, UI, 인터페이스, 디자인, 맵Tool 등 모든 요소들을 완성도 높게 구현하였다. 상용 온라인 게임과 비교하여도 완성도가 떨어지지 않을 정도로 높은 퀄리티를 보여주고 있다. 또한 각자 기존에 사용해왔던 기술, 툴 등을 답습하여 개발하는 것이 아니라 LUA 등 다루어 보지 못한 기술들을 적극 활용한 적극성에도 높은 점수를 주고 싶은 과제이다. 조금 더 보완하여 밤잠 못자고 노력한 데 대한 좋은 결실을 맺었으면 좋겠다.


Designed by Tistory.