리얼타임 멀티 플레이어 게임을 만드는 프로젝트

교육적 목적과 동시에 과 친구들과 함께 즐길 수 있는 유익한 게임을 만드는 목적도 있다. 또한, 동기, 선후배들과 교육적인 프로젝트를 "즐겁게" 할 수 있는 틀을 제시한다.

관련페이지

공지

10월 11일 (토)는 마지막 모임입니다.
너무 늦게 말씀드려 죄송하지만 혹시 토요일 오후에 하는건 안 될 까요? 학교 보강수업과 시험 때문입니다~~ -지용
----

토요일(9월 27일) 오전 10시 30분에 두번째 모임을 갖습니다. 준비해 오실 것은:
  • 자기 팀에서 기획한 게임의 뼈대. 플레이 가능하고 최소한 어느 정도의 재미는 있어야 함.
두번째 세미나에서 하게 되는 것은:
  • 각 팀의 게임 발표 (소스를 설명하는 것이 아니고 게임 자체, 예컨대 플레이 방법 등을 설명)
  • 팀을 바꿔서 게임 플레이
  • 각 팀은 다른 팀의 게임에 한가지씩 기능 추가
  • 각 팀의 소스 구경 및 커멘트, 토론
  • 투표를 통해 게임을 하나 선택
시간이 되면 AspectOrientedProgramming을 현 프로젝트에 적용하는 방법을 알려드립니다.
load balacing server 같은 걸 만들수 있는 건가..? -- erunc0
혹시 축구에 관심이 있다면 CM을 참고하세요. 신문 기사(http://www.hani.co.kr/section-014010000/2002/07/014010000200207141533005.html) 기본적으로는 텍스트로만 이뤄지는 게임입니다.

개요

제가 두 번 정도 참가해서 도움을 드릴 수 있습니다. 파이썬으로 실시간 멀티 플레이어 (전략) 게임을 만들 것입니다. 가까운 목표는 컴공과학생들이 즐길 수 있는 집단 게임입니다(동시 플레이어 100명 이상) -- 제로페이지 서버에 설치해서 서비스할 것입니다.

파이썬의 기초 문법만 알면 강의에 참여할 수 있을 겁니다. 제가 말하는 기초란, if문, for문, 기초 데이타형(리스트, 터플, 사전, 문자열, 정수 등), 함수 정도에 대한 지식입니다.

제작할 게임은 컴퓨터 그래픽을 사용하지 않습니다. 게임의 목표는 화려하거나 중독성 있는 게임이 아니고, 상상력을 자극하고 즐거운 게임입니다. 복잡하지만 단순한 게임이 아니고, 단순하지만 복잡한 게임입니다.

강의 첫날 약 1-2시간만으로 당장 플레이해볼 수 있는 게임이 나오도록 할 것입니다. 개발은 팀 단위로 나눠서 할 예정이며, 두번째 날 세미나 시작 직전에 팀 별로 개발한 게임을 발표합니다. 그리고 그중에서 투표를 통해 가장 잠재력이 큰(무엇보다 재미있을 것) 게임을 고릅니다. 그리고 이제는 참가자 전원이 하나의 게임을 함께 개발합니다.

참가자

인원이 찼으므로 고정하겠습니다. 이 프로젝트에 참가하기로 하신 분들은 선착순으로 뽑힌 것이고, 그만큼 다른 분들의 기회를 박탈한 것이니, 그에 상응하는 어떤 의무와 책임을 갖고 있습니다. 그렇다고 너무 부담 느낄 필요는 없습니다. 이 의무와 책임은 프로젝트에 충실히 참여해서 나중에 주변 사람들과 함께 자신이 얻은 것을 곱하기 하면 되는 것입니다.

director: JuNe
actors/actresses: 황재선, 장창재, 나휘동, 문원명, 재동, 임민수, 박정훈, 김지용, 강희경, 곽세환, 노수민

타임라인

대충의 타임라인은 다음과 같습니다.

  1. 첫번째 세미나
    기본적인 개념과 프레임워크를 설명해 드립니다(최초 프레임워크는 director가 직접 만들어 제공합니다). 그 자리에서 간단한 실험을 몇가지 해봅니다. 팀을 나눕니다. 제가 선정한 단순한 게임을 각 팀이 병렬로 개발합니다. 그 결과물에서 일종의 프레임워크를 추출해 냅니다. 다음 시간까지 팀별로 새로운 게임을 선정해서 개발해 와야 합니다.
  2. (일주일 뒤) 두번째 세미나
    지난 일주일간 각 팀별로 개발한 게임을 발표합니다. 팀을 바꿔서 게임을 플레이해봅니다. 그리고 그 게임(다른 팀이 만든)에 딱 한가지씩 기능 추가를 해서 개선합니다. 이때 원래 게임을 만든 사람과 소통할 수는 없습니다. 각자의 작업을 서로 비교해 보고, 경험을 이야기 합니다. 마지막으로 투표를 해서 게임 하나를 고릅니다. 선택되지 못한 팀의 아이디어에서 가져올만한 것이 있다면 갖고 오는 등 아이디어 회의를 합니다. 계획을 세웁니다.
  3. (일주일 뒤) 내부 시연회
    지금까지 만든 게임으로 내부 게임 대회를 엽니다. 이전의 팀별로 길드를 만들어 팀 대항 게임을 할 수도 있습니다.
  4. (일주일 뒤) 게임 공개
    제로 페이지 서버에 게임을 올리고 일단은 컴공과 학생이라면 모두 게임을 즐길 수 있게 합니다. 간단한 게임 설명서도 있어야 할 것입니다.

위 과정을 거치면서 개발자들은 늘 직접 게임을 하게 됩니다. 심지어는 개발 첫번째 주에서도 게임을 해야 합니다. 이 경험을 반영해서 게임을 진화시켜 나갑니다.

얻을 수 있는 것

약 3주간의 경험을 통해 얻을 수 있는 것은:
  • 파이썬 언어에 대한 스킬, 지식 등
  • 특정 언어와 플랫폼을 떠나 얻을 수 있는 것:
    • 여러명과 함께 개발하는 노하우
    • 다른 사람의 코드를 읽는 방법
    • 온전히 이해하지 못하는 코드를 고치는 방법
    • 개발한 것을 조금씩 다듬고 살을 붙이고 진화시켜 나가는 방법, 그 기술
    • 상상력을 구체화, 현실화하는 능력
    • 성취감
    • 학과 전용의 멀티플레이어 게임(새로운 전통!)

등입니다. 여기에서 파이썬이라는 언어에 대해 얻는 것은 다른 것들에 비해 상대적으로 그다지 크지 않을 것입니다. 이번 경험은 어떤 언어이냐가 중요하지 않습니다. C++이나 자바를 사용할 수도 있다는 말입니다. 하지만 그렇게 하지 않은 이유는, 그런 언어들을 사용하면 "언어(혹은 라이브러리 API)"라는 문제가 더 커져서 소위 배보다 배꼽이 커지는 현상이 생기기 쉽기 때문입니다.

--JuNe
----
실시간 멀티 플레이어 게임이라니 관심이 갑니다..+_+ -Leonardong
헉.. 파이선으로 그런 네트워크 플레이가 가능하군요.~ 저두 배우고 싶어요~ - 민수
----
이 게임을 만들 때에는 (다른 게임을 만들 때와 마찬가지로) 도메인 지식이 있으면 유리합니다. 예를 들면, 생물학 모델(예컨대 진화)에 대한 이해, 금융시장(예컨대 주식)에 대한 이해, 역사(예컨대 임진왜란)에 대한 이해, 물리학(예컨대 고전역학)에 대한 이해 등. --JuNe
----
스케쥴을 잡아야 하겠습니다. 공식적인 전체 모임은 총 4번이 있습니다. 모두 일주일 간격으로 있습니다. 한번 만날 때에 대략 2시간 30분 정도 지속됩니다. 4번째 공식 모임은 간단한 파티와 프로젝트 되돌아보기를 합니다. 저는 첫번째, 두번째, 그리고 마지막에 참여할 수 있을 것 같습니다.
----
테스트 만들기
~cpp 
import unittest

class Calculator:
    def plus(self, a, b):
        return a + b
    
class CalculatorTestCase(unittest.TestCase):
    def testPlus(self):
        c = Calculator()
        self.assertEquals(5, c.plus(2,3))
        
if __name__ == '__main__':
    unittest.main()
----
프로젝트분류
Retrieved from http://wiki.zeropage.org/wiki.php/실시간멀티플레이어게임프로젝트
last modified 2021-02-07 05:30:19