2009-12-20 4 views
2

나는 겨울 프로그래밍 프로젝트에 바쁘다. 온라인 게임 (최대 500 명의 사용자 동시 서버로드) 작성을 고려 중이다. 나는 그것이 플랫폼에 독립적 인 것을 선호 할 것이다. 나는 파이썬을 사용할 생각이다. 나는 약간의 경험이있다. 사용자 데이터 저장을 위해서는 이전에 MySQL을 사용해 본 경험이 있지만 플랫 데이터베이스 설계가 바람직하지만 필수적인 것은 아닙니다. 자, 이제 질문 :Python의 Word 게임 서버, 디자인 장단점

파이썬 3부터 시작하는 것이 좋을까요, 아니면 여전히 이전 버전의 모듈 포트로 너무 가난하게 지원되는 것입니까?

특정 프로젝트에 Python 3을 사용하면 큰 이점이 있습니까? 얼랭 (Erlang)과 같은 다른 언어를 사용하는 것이 좋을까요?

게임 서버 내에서 관계형 데이터베이스를 사용하면 큰 이점이 있습니까?

시작하기 전에 공부할 가치가있는 오픈 소스 게임 서버의 소스 코드가 있습니까?

답변

0

이 프로젝트는 새로운 언어를 조사하는 좋은 방법 일 수 있습니다. 나는 Erlang이 (1) 기능적으로, (2) 뛰어난 동시성/(분산 된) 병렬 패러다임을 제공하고 있으며, (2) 업계에서의 사용을보고있다. (가장 주목할만한 것은 & 전통적으로 통신), (3) 실제로 데스크탑 공간 (CouchDB)에 들어갑니다. 당신이 아직 그것을 모르는 경우에, 그것을 위해 가십시오! :-)

오픈 소스 게임 서버는 ... 음, 충분히 있습니다. 머드 엔진 등을 둘러싼 구글. 우선, 위키 피 디아 항목을 MOO에서 확인하고 LambdaMOO를 살펴 본다.

+0

LambdaMOO 앞면에 두 번째. 문법이 어떤 것인지 생각하고 싶다면 (파이썬과 whatspace가 약간 닮았습니다.) http://www.hayseed.net/MOO/manuals/ProgrammersManual.html – Brendan

0

이미 파이썬에 익숙하다면, 내가 당신이라면 Twisted 라이브러리를 조사 할 것입니다. Twisted는 원래 대규모 텍스트 기반 게임을 지원하기 위해 개발 된 비동기 통신 라이브러리입니다.

일반적으로 사용되는 라이브러리의 Python 3에 대한 현재 지원 수준이 높지 않으므로이 시점에서 Python 2.6과 같은 것을 사용하고 싶을 것입니다.

2

저는 Python + Django으로 갈 것입니다. 웹 애플리케이션 개발을 매우 쉽게 만듭니다.

+1

예, Python 2.x와 Django 이 작업을위한 훌륭한 조합이 될 것입니다. 나는 또한 데이터베이스를 추상화하기 위해 ORM을 사용하는 팬이며 장고의 ORM은이 애플리케이션에 필요한 간단한 데이터베이스 유형에 대해 잘 작동한다. 장고는 MySQL을 통해 PostgreSQL을 추천합니다. – steveha

2

파이썬 3부터 시작하는 것이 좋을까요, 아니면 여전히 이전 버전의 모듈 포트로 너무 가난하게 지원되는 것입니까?

은 사용하려는 모듈에 따라 다릅니다. 트위스트는 네트워크 프로그래밍을위한 "스위스 칼"이며 프로젝트를위한 선택 일 수 있지만 불행히도 아직 python3을 지원하지 않습니다.

특정 프로젝트에 Python 3을 사용하면 큰 이점이 있습니까? 얼랭 (Erlang)과 같은 다른 언어를 사용하는 것이 좋을까요?

오직 지식을 알고 있기 때문에 질문에 답변 할 수 있습니다. python3 대신 python3을 사용하면 python3이 가져 오는 새로운 기능의 장점과 모든 라이브러리가 현재 python3을 지원하지 않는다는 단점을 얻을 수 있습니다.

python2.6은 python3의 기능 중 대부분 (전부는 아니지만)을 구현해야하지만 python2.5와 호환되어야하지만이 방법으로는 많이 조사하지 않았습니다.

파이썬과 에를 랑 모두 귀하의 필요에 맞는 후보이며 가장 잘 아는 것을 사용하고 가장 좋아하는 것을 사용하십시오.

게임 서버 내에서 관계형 데이터베이스를 사용하면 큰 이점이 있습니까?

당신은 ACID 스토리지 시스템을 갖는 모든 장점과 단점을 갖게됩니다.

1

데이터베이스 선택과 관련하여 MySQL 대신 Postgres를 사용하는 것이 중요합니다. 두 가지 경험을 쌓은 Postgres는 대부분의 쓰기 작업이 빨라지는 반면 MySQL은 읽기 작업이 약간 빨랐습니다. 그 중 일부는

그러나, MySQL은 많은 문제가 있습니다 :

  • 라이브 백업은 가장 어렵고 악화에 불가능은 대부분 당신은 DB를 오프라인하거나 백업하는 동안 고정 수 있도록해야합니다.
  • kill -9로 강제로 서버를 강제 종료해야하는 경우 또는 정전으로 인해 일반적으로 포스트그레스는 테이블 손상에 대한 복원력이 우수합니다.
  • ACID 준수 및 imho 및 experiance를 다시 지원하는 기타 관계형 데이터베이스 기능은 MySQL에서 약하거나 부족합니다.

SQLAlchemy와 같은 라이브러리를 사용하여 db 액세스를 추상화 할 수 있습니다. 이렇게하면 둘 다 상대방을 테스트하여 어느 상대를 선호하는지 확인할 수 있습니다.

언어 선택에 관한 한.

파이썬과 함께 갈 경우 :

  • 더 librarys 오히려이 시점에서 파이썬 3.x를보다 파이썬 2.X를 지원하는, 그래서 가능성이 2.x 또는 3.0에 충실 것
  • 파이썬의 GIL로 멀티 스레딩 버그를 조심하십시오. Twisted를 활용하면이 문제를 해결할 수 있습니다.

당신이 얼랑과 함께 갈 경우 :

  • 얼랑의 문법과 숙어가 그것을 사용 결코 사람에게 매우 외국 될 수 있습니다.
  • 잘 쓰면 비늘뿐만 아니라 비늘도 있습니다.
  • Erlang은 Yaws라는 매우 동시적인 웹 서버를 가지고 있습니다.
  • Erlang은 또한 Mnesia라는 확장 성이 뛰어난 DBMS를 가지고 있습니다 (관계형이 아닙니다).

그래서이 프로젝트를 수행하는 데 얼마나 기꺼이 배울 수 있는지 선택하십시오.

+0

Postgresql/Python 2.x 권장 사항에 대해서는 +1하지만 SQLAlchemy에 대한 필요성에 완전히 동의하지는 않습니다. – ChristopheD

+0

어떤 방법 으로든 엄격한 요구 사항이 아닌 SQL에서 추상화하는 것이 유용하기 때문에 권장합니다. 그것은 우리가 MySQL을 능가하고 Postgres로 스왑해야하는 프로젝트에서 도움이되었습니다. –