2011-01-12 2 views
8

Travian과 비슷한 온라인 전략 게임에 대한 훌륭한 아이디어가 있습니다. 내가 아직 알지 못했던 몇 가지 내용과 아직 모르는 다른 문제가 있습니다.브라우저 기반 온라인 게임을위한 플랫폼으로 Ruby on Rails 선택

이 프로젝트는 숙련 된 웹 개발자가 아닌 한 사람에게 너무 큰 프로젝트입니다. 나는 여전히 그것을 포기하고 싶지만, 플랫폼을 고르는데 문제가있다. 세계의 "비늘"은 요즘 많이 쏟아져 나오고 있습니다. 스케일이 잘 안 나기 때문에 루비 온 레일즈 (Ruby on Rails)가 강탈당하는 것을 보았습니다.

저는 Ruby와 Rails 모두 Ruby on Rails를 좋아합니다. 나는 확실히 그것에 전문가가 아니다 그러나 나는 그것으로 일하는 것을 좋아한다. 나는 또한 파이썬 + 장고와 PHP (나는 그렇지 않다.)를 가지고 일했다.

이상적으로 게임은 서버 당 7000 플레이어, 아마도 초당 처리되는 데이터가 많을 것이다. . RoR은 여전히 ​​실행 가능한 플랫폼입니까?

이 질문이 모호하면 미안합니다. "RoR is fine, go at it!"을 찾고 있습니다. 대답의 종류. 추가하고 싶은 것이 있다면 아무 문제가 없습니다.

감사합니다.

+6

나는 당신이 7000 명의 사람들이 확장성에 대해 걱정하기 전에 게임을 먼저 시작하도록 노력해야한다고 생각합니다. – elmt

+0

물론 엘름. 나는 "이상적으로"라는 단어가 지금부터 1 년에서 5 년 동안 성공적인 게임이 될 것이라고 가정하고 있음을 의미한다고 생각했습니다. ;) –

+0

@elmt 나중에 "scalability에 대한 걱정"에 동의하지만 여전히 유효한 질문입니다. – Oddmund

답변

6

만약 내가 당신이라면 node.js와 같은 비 차단 서버를 조사 할 것입니다. 오랜 시간 동안 많은 연결을 유지하는 데 더 적합하기 때문에 게임은해야 할 일입니다. 기존의 웹 서버에 비해

당신이 웹 응용 프로그램을 확장 할 때 걱정할 3 주 가지가 있습니다

말했다되고 그; 메모리, 실행 속도 및 io (hd 및 네트워크) 순으로 표시됩니다.

메모리의 경우 상황이 훨씬 나아졌습니다. Phusion Passenger는 copy on write를 사용하여 작업자를 포크 화하기 때문에 주어진 슬라이스의 모든 작업자가 레일 환경을 공유하게되므로 상당히 중요합니다. Ruby가 "dark times"에 비해 메모리를 관리하는 방식이 크게 개선되었습니다. 1.8.7을 사용하고 있다면 Ruby Enterprise Edition을 구성하는 패치를 사용하고 싶습니다 (차이점은 밤낮과 같습니다) . 1.9.x는 런타임 전체를 완전히 다시 작성한 것이므로 이미 사용하고있는 루비 메모리 문제를 해결할 수 있습니다.

실행 속도에서 1.8.7은 일반적으로 "충분히 빠름"(가비지 수집 설정을 조정 한 후)입니다. 1.9.2는 실제로 파이썬과 거의 같은 속도입니다. 파이썬은 인터프리터 언어의 빠른쪽에 넣습니다. 이 점이 얼마나 중요한지는 응용 프로그램의 성격에 달려 있습니다.

마지막 포인트는 IO입니다. 이것은 레일의 문제가 아니지만 지속적인 전략입니다. 루비스트는 새로운 것을 좋아하는 경향이 있습니다. 그래서 당신은 redis와 mongodb와 같은 것들에 대한 일등급 지원을 찾을 것입니다. 많은 사람들이 그것들과 wins/gotchas를 사용하는 것에 대해 이야기하고 있습니다. 나는 너라면 몽고를 들여다 보며 내구성의 트레이드 오프가 받아 들여 지는지 살펴볼 것이다.

저는 /에있었습니다.닷넷에 들어가기 전에 그물을 잡아라. 그러면 하루가 끝날 때 인프라에 더 많은 돈을 지불하게 될 것이지만, 그 금액은 개발 시간에 절약 한 것에 비하면 완전히 비좁다.

+0

그것은 내가 듣고 싶었던 대답입니다. 몇 가지 일반적인 의견과 조언. 무리 감사! =) –

+0

"Phusion Passenger는 copy on write를 사용하여 작업자를 포크하므로 레일 환경이 주어진 slic의 모든 작업자에게 공유됩니다." 그러나 copy-on-write는 Ruby Enterprise Edition에서만 가능하며 1.9.2에서는 가능하지 않습니다. 그렇지 않니? –

1

당신이 말했듯이, 당신은 이미 답을 가지고 있으며 당신은 격려하는 말만 찾고 있습니다 :). 나는 RoR 전문가는 아니지만이 플랫폼에서 확장 성이 여전히 큰 문제라고 생각하지 않습니다. 나는 아키텍처 스파이크 (XP 용어)를 할 것을 조언합니다. 작성하려는 것과 유사한 작업을 수행하는 7000 개의 클라이언트 및 메소드로 테스트를 작성하십시오. 예를 들어 파일을로드하거나 뷰를 렌더링하거나 기다릴 수도 있습니다 ... 요점은 걱정되는 것만 테스트하는 것입니다. 행운을 빕니다!

6

레일에서 빌드하고 Heroku.com에서 호스팅하십시오. - 완료되었습니다. 거의 무한대의 확장 성을 통해 작동 방식에 대해 걱정할 필요가 없으며 많은 인신 매매 Facebook 응용 프로그램을 호스팅하므로 더 많은 것을 처리 할 수 ​​있습니다.

+0

니스. Heroku에 대해 몰랐습니다. –

+0

나는 Heroku에 대해 알고 있었지만 거기에 내 앱을 호스팅 할 생각조차하지 못했습니다. 팁 고마워. –

+0

확장성에 대한 많은 경험이없는 새로운 개발자로서 중복 요청, 필요하지 않을 때 모델을 메모리에로드, add_index를 잊어 버리는 등 병목 현상이 자신의 코드에서 비롯된 것임을 알 수 있습니다. 더 많은 경험을 얻을 때 리팩터링하는 법을 배웁니다. 일단 많은 사용자를 확보하게되면 데이터베이스 IO가 다음 병목 현상이되며 사용중인 프레임 워크에 관계없이 문제가됩니다. 나는 또한 Heroku를 추천한다. 개발에 시간을 할애 할 수 있도록 스케일링을 아웃소싱하십시오. 자동 크기 조정 : https://github.com/ddollar/heroku-autoscale – danneu

0

이것은 대답하기가 불가능한 질문입니다. 레일이 당신이 원하는 것에 적합한지 알기 위해서는 우리가하려는 일에 대해 더 많이 알아야하기 때문입니다. 정보가 없을 때 줄 수있는 최선의 조언은 직접 해결하기 위해 railslab scaling videos을 확인하는 것입니다.