brunch

You can make anything
by writing

C.S.Lewis

by 앵버박사 Feb 12. 2016

처음 만드는 온라인 게임 02

요구사항 정의 / 설계


지난 글에선 주제, 대상 독자, 개발 원칙 등에 대해 말씀드렸습니다. 이번에는 요구사항 정의 및 설계를  진행하겠습니다.


개인 프로젝트 이므로, 문서를 작성하는데 굳이 형식화된 문서양식을 사용하지 않아도 되겠죠? 요구사항을  정의할 때도 마찬가지로 백지에  생각나는 대로  주저리주저리 쓴 후 나중에 정리하는 것(리팩토링)이 생각을  끄집어내는데 도움이 됩니다.


우선 제가 작성한 요구사항 문서를 보도록 하겠습니다.


처음 작성한 요구사항 명세



한 페이지 분량의 문서이지만 이것으로 대부분의 요구사항이 도출되었고, 무엇을 어떻게 개발해야 하는지 머릿속에 어느 정도 감이 잡히기 시작했습니다.


이 문서의 핵심적인 부분은 1차 스펙을 스토리 라인으로 정리한 부분입니다. 앞의 글에서 설명드린 대로 눈덩이 개발 방법론에 따라 최소한으로 스펙을 정의하고 있습니다. 어떤가요, 처음 보셨던 시연 영상과 비슷한가요? 사실 완성된 게임이 처음 계획보다 더 간략화되어 버렸지만.. 어쨌든 스토리 라인을 정리하니 어떤 게임을 만들지, 보다  명확해졌습니다.


그다음으로는 게임의 가장 핵심적인 로직 부분을 정리해 보았고, 마지막으로 개발해야 할 리스트를 정리했습니다.


하지만 이것만으로는 당장 개발을 하기에 막막한 감이 있습니다. 시간이 흘러 머리 속으로 떠오르는 것을 아래와 같이 메모해 두었습니다. 컴퓨터에 문서로 깔끔하게 정리하는 것도 좋지만 가끔은 직접 손으로 써내려 가는 것이 더 자유롭게 표현할 수 있습니다.



악필로 쓴 설계 문서



이번 문서에서는 조금 더 구현에 가깝게  구체화했습니다. 서버와 클라이언트의 입장에서 각각 처리해야 할 일의 핵심 부분을 정리했고, 서버와 클라이언트 간의 인터페이스인 서버 API도  정의했습니다. 초간단 UI설계서도 있고, 데이터의 흐름과 처리방법도 있고, 예상 이슈와 특정 시점(에너지가 0 일 때)의 시나리오도 정리해 보았습니다.


정말 어이가 없을 정도로 간단하죠? 하지만 이미 머릿속에 어느 정도 완성된 결과물을 상상하고 시작했으므로 이 정도면 구현하는데 큰 무리가 없습니다. 개인 프로젝트이기 때문에 가능한 것이죠. 실제로  개발할 때도 이 두 가지 문서가 전부였습니다.


현업에서는 UML과 ERD 같은 커뮤니케이션을 위한 도구들을 사용하고 있습니다. 하지만 이런 것들을 익히고 사용할 때 그저 하라는 대로 혹은 하던 대로 그 형식에만 얽매이면  안 되고, 진짜 목적인 타인과의 커뮤니케이션을 생각해서 작성해야 합니다. 파격적인 양식이라도 상대방과 이야기만 잘 통하면 그만이지요.



지금 까지 앞으로 만들어갈 게임에 대해서 요구사항 정의와 설계를 간단하게 해보았습니다. 다음 글에서는 파이썬으로 HTTP 서버를 만들면서 본격적으로 코딩을 시작하겠습니다.




Contents


01 주제 / 대상 독자 / 개발 원칙

02 요구사항 정의 / 설계

03 Python HTTP Server 개발

    03-01 멀티 쓰레드 지원 / POST 메서드 처리 / 로깅

    03-02 URL 라우팅 / 정적 리소스 처리


04 Python web socket server 개발

    04-01 웹 소켓 개요

    04-02 웹 소켓 서버 구현

05 클라이언트 개발

    05-01 캐릭터 스프라이트 개발

    05-02 클라이언트 로직

    05-03 서버 로직



keyword
매거진의 이전글 처음 만드는 온라인 게임 01
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari