E D R , A S I H C RSS

Data_Driven_Development (rev. 1.1)

Data_Driven_Development

이 페이지는 뭔가


  • Data Driven Development라고 게임 개발쪽에서 자주 쓰이는 개발 패러다임이 있는데 국내에 어째 자료를 못찾겠어서 나름 정리해볼려고 만든 페이지
  • Table Driven Development라고 불리기도 하는 것 같다.

주의!

  • Data Driven Programming 은 패턴 매칭 등을 통해 데이터를 처리하기 위한 프로그래밍 패러다임이다. (AWK 등, 어떤 패턴의 대용량 데이터가 있을 때 이를 효율적으로 처리하기 위한 언어)
  • Data Driven Development라는 이름만 같고, 방향이 좀 다른 개발론이 있다. 이는 데이터에 따라서 유동적으로 프로그램의 흐름을 바꿔야 된다는 방법인데, 데이터가 프로그램의 로직을 결정하는 것이 아닌 데이터를 분석해서 어떤 식으로 움직여야 하는지 결정하는, 빅 데이터 쪽의 개발론이다. (쇼핑몰 검색 결과를 데이터 분석을 통해 실시간으로 바꾼다던가,,, 그런 것)

  • 대부분 내가 기본 개념을 보고 정리하면서 쓴 것이다. 그래서 어느정도의 추측이 들어가있다,,,

  • 개요

    • 간단히 말해서, 하드코딩 하지 말고, 좀 데이터로 빼라는 말
    • 좀 풀어 말해서, 프로그램 안에다가 로직을 넣지 말고, 프로그램이 돌아가는 것을 외부 데이터를 통해서 관리하는 방식.
    • 스크립팅 언어가 이를 위한 도구임.

    장점

  • 개발자를 통하지 않고 기획자가 테스트 해 볼 수 있다..
    • 하드코딩 했을 경우, 기획자는 테스트를 하기 위해서 개발자를 거쳐야 된다. 이 비용 발생 자체가 오버헤드고, 이때문에 기획자가 테스트를 꺼릴 수도 있다. 여튼 안좋다.
    • 게임 내부의 로직을 데이터로 움직일 수 있게 하면 기획자는 프로그래머를 거치지 않고 그 데이터만을 수정함으로써 자신의 기획을 테스트해 볼 수 있다.
    • 기획자와 개발자의 영역이 분리된다는 점도 있을 듯?

  • 다양한 플랫폼 지원 가능
    • 다양한 플랫폼에 따라서 내부에서 분기를 해 줄 필요가 없다. 그저 다른 플랫폼 용 데이터만을 선택해서 작동시키면 되는 일이다.

  • 라이브 패치 등, 프로그램을 다시 빌드하지 않고 새로운 기능을 추가할 수 있다.
    • 퀘스트 로직이 잘못 되었을 때, 유저가 프로그램을 재설치하지 않고 그 로직에 관련된 파일만을 교체시키면 된다.

  • UCC 가능
    • 유저가 만드는 확장 프로그램. 어느정도 데이터 드리븐으로 구현되어있느냐에 따라 달라지긴 할듯.

  • 주의해야 할 점

  • 데이터를 통해 코딩하면 안된다.
    • LUA같은 것으로 Data를 만든다고 할 때, 프로그래머는 최소의 기능만 제공해주고 어떤 기능의 로직을 이것으로 구현하는 것은 방향이 다르다.
    • 예를 들어서, 퀘스트 구현을 한다고 할 때, 기획자는 '어떤' NPC가 '이런' 텍스트의 부탁으로 '이만큼' 시간안에 '무슨 물건'을 가지고 오는지만을 정의해서 퀘스트를 만들 수 있어야 하지, 퀘스트의 실행부터 팝업창의 실행, 타이머 조작 등의 세세한 것까지 만지게 하면 안된다는 것이다. 정도의 문제이다.
  • 아주 간단한 프로그램이면 이럴 필요가 없다. 걍 하드코딩으로 붙자
    • 하지만 이 프로그램이 추후 변동될수 있을지를 생각해보자. 또한 프알못이 이걸 건드릴 일이 있나 생각해보자.

  • 예시

  • 한 안드로이드 앱을 만드는데 레이아웃 구조와 씬 움직임을 하드코딩해둠. 모든 다른 기종마다 다른 빌드를 만들거나, 내부적으로 기종에 따른 모든 데이터를 하드코딩 해야 됨.
    • 데이터 드리븐으로 하면 각 설정별 XML파일을 만드는 것으로 새로운 레이아웃을 만들 수 있음. 심지어 XML파일만 갈아끼면 되니 서버에 XML파일을 저장해놓고 상황에 맞게 바꿀 수도 있음.
  • 비주얼 노벨 게임을 만드는데 난 프로그래머, 그리고 시나리오 라이터가 다른 사람,.
    • 데이터 드리븐이 아니면 사실상 프로그래머가 그 모든 텍스트 출력을 다 해야함,,, 보통은 데이터 포맷을 정의하고 이 방식대로 시나리오 라이터 또는 스크립터가 작성하면 프로그램 내부구조 몰라도 돌아가게 짬. 대부분의 노벨게임 엔진이 이런식.
  • 게임 퀘스트를 만듬
    • 데이터 드리븐 안하면 실제 반영되지 않을 내용도 기획자가 보려면 프로그래머가 고쳐야됨. 발 * 암



  • 다른 내용이 있다면 적어주시면 감사하겠습니다 꾸벅
    Valid XHTML 1.0! Valid CSS! powered by MoniWiki
    last modified 2021-02-07 05:23:05
    Processing time 0.0231 sec