Хороший язык для разработки игрового сервера в?

private Context context;

public Yourclassname(Context context) {
   this.context = context;
}

используйте контекст вместо «this» и используйте следующий код

if(ContextCompat.checkSelfPermission(context,android.Manifest.permission.CALL_PHONE)!=PackageManager.PERMISSION_GRANTED) { 
    ActivityCompat.requestPermissions(context, new String[]{android.Manifest.permission.CALL_PHONE}, REQUEST_CALL); 
}
11
задан tzot 25 December 2008 в 15:03
поделиться

15 ответов

Erlang является языком, который разработан на основе параллелизма и распределения по нескольким серверам, которое идеально подходит для программного обеспечения сервера. Некоторые ссылки о Erlang и игровых серверах:

http://www.devmaster.net/articles/mmo-scalable-server/

http://www.erlang-consulting.com/euc2005/mmog/mmog_in_erlang.htm

Я думаю о записи игрового сервера в Erlang сам.

16
ответ дан 3 December 2019 в 00:43
поделиться

C++ и Java являются довольно медленными по сравнению с C. Язык должен быть инструментом, но не опорой.

-1
ответ дан 3 December 2019 в 00:43
поделиться

Существует довольно прохладная платформа в разработке, которая обращается ко всем Вашим потребностям:

Darkstar проекта от Sun. Таким образом, я сказал бы, что Java, кажется, хороший язык для игровой разработки сервера :-)

0
ответ дан 3 December 2019 в 00:43
поделиться

Вы могли смотреть на Stackless Python. Это - альтернативный интерпретатор Python, который оказывает большую поддержку для параллелизма. И КАНУН сервер Online и клиентское программное обеспечение используют Stackless Python.

Отказ от ответственности: Я не использовал Stackless Python экстенсивно сам, таким образом, я не могу предоставить рассказы очевидца его эффективности.

0
ответ дан 3 December 2019 в 00:43
поделиться

Каковы Ваши цели? Не создание самой игры, но почему Вы создаете его?

При выполнении его для изучения нового языка, то выберите тот, который кажется самым интересным Вам (т.е. тот, который Вы больше всего хотите изучить).

Если это будет по какой-либо другой причине, то лучший язык будет тем, который Вы уже знаете лучше всего и любите использовать больше всего. Это позволит Вам фокусировать на разработке игровой логики и подъеме что-то и выполнении так, чтобы Вы видели прогресс и остались мотивированными, чтобы продолжиться, вместо того, чтобы увязнуть в деталях языка, Вы используете и теряете интерес.

Если Ваш любимый язык оказывается несоответствующим до некоторой степени (слишком медленный, не достаточно выразительный, безотносительно), то можно переписать проблемные разделы на более подходящем языке, когда проблемы подойдут - и Вы не будете знать, что лучший язык решает определенные проблемы, пока Вы не знаете то, чем проблемы заканчивают тем, что были. Даже если Ваш выбранный язык окажется совершенно неподходящим для заключительного производственного использования, и все это должно быть переписано, то это даст Вам рабочий прототип с протестированной игровой логикой, которая сделает контакт с новым языком намного легче.

0
ответ дан 3 December 2019 в 00:43
поделиться

Вы могли также посмотреть на jRuby. Это идет с большим количеством преимуществ Java и большим количеством преимуществ Ruby в одном аккуратном пакете. У Вас будет доступ к огромным библиотекам с обоих языков.

0
ответ дан 3 December 2019 в 00:43
поделиться

Вы могли также использовать Java и скомпилировать код с помощью GCC для собственного исполняемого файла.

Тем путем Вы не получаете хит производительности механизма байт-кода (Да, я знаю - Java из поля с такой скоростью, как C++. Это должен быть просто я, кто всегда измеряет фактор 5 различий в производительности). Недостаток состоит в том, что Java-frontend GCC не поддерживает все функции Java 1.6 функции языка.

Другой выбор состоял бы в том, чтобы использовать Ваш предпочтительный язык, получить код, работающий сначала, и затем переместить производительность критический материал в собственный код. Почти вся привязка поддержки языков к скомпилированным библиотекам.

Это не решает Ваш "Python, не мультираспараллеливает хорошо" - проблема, но это дает Вам больше вариантов.

2
ответ дан 3 December 2019 в 00:43
поделиться

Это может во многом зависеть, на какой язык Ваша "игровая логика" (можно знать этот термин в качестве "бизнес-логики") лучше всего выражается в. Например, если игровая логика лучше всего выражается в Python (или любой другой конкретный язык), могло бы быть лучше просто записать это в Python и заниматься проблемами производительности твердый путь или с многопоточностью или с кластеризацией. Даже при том, что это может стоить Вам большого количества времени для получения производительности, которую Вы хотите из Python, которым это будет меньше, что время, это возьмет Вас для выражения "плеера теперь броски Написание уровня 70 темноты в радиусе 7 единиц, производящих все единицы, которые говорили с игроком B и...." в C++.

Что-то еще для рассмотрения - то, какой протокол Вы будете использовать для общения с клиентами. Если у Вас есть сложный протокол двоичной синхронной передачи данных, C++ может быть легче (особенно, если у Вас уже был опыт при выполнении его прежде), в то время как JSON (или подобный) может быть легче проанализировать в Python. Да, я знаю, что C++ и Python не являются языками, которыми Вы ограничены (или даже рассматривающий), но я, обычно относятся к ним здесь.

Вероятно, сводится к тому, в каком языке Вы являетесь лучшими. Плохо записанная программа, которую Вы очень не хотели писать, будет хуже, который один записанный на языке Вы знаете и наслаждаетесь, даже если плохо записанная программа была на спорном более мощном языке.

1
ответ дан 3 December 2019 в 00:43
поделиться

Больше деталей об этом игровом сервере могло бы помочь людям лучше ответить на Ваш вопрос. Действительно ли это - игровой сервер в смысле чего-то как Встречный выделенный сервер Забастовки, который находится в фоновом режиме и размещает многопользовательские взаимодействия, или Вы пишете что-то, что будет размещено на веб-сервере HTTP?

Лично, если бы это был я, то я рассмотрел бы Java или C++. Мое персональное предпочтение и набор навыков, вероятно, привели бы меня к C++, потому что я нахожу Java неуклюжим для работы с на обеих платформах (moreso на Linux) и не имею уверенности, что C# готов к прайм-тайму в Linux все же.

Тем не менее у Вас также должен быть довольно значительный общественный стук на упомянутом сервере, прежде чем производительность Вашего языка будет быть настолько проблематичной. Мой советовать должен был бы записать это на любом языке, Вы можете в данный момент и если Ваша игра растет, чтобы иметь достаточный размер, вложить капитал в переписывание в то время.

3
ответ дан 3 December 2019 в 00:43
поделиться

В какой производительности Вы нуждаетесь?

скрученный является большим для серверов, которым нужен большой параллелизм, как erlang. Любой поддерживают серьезный параллелизм легко, и имеет средства для распределенных вычислений.

Если бы Вы хотите охватить больше чем одно ядро в приложении Python, сделайте то же самое, которое Вы сделали бы, если бы Вы хотели охватить больше чем одну машину — выполняет больше чем один процесс.

7
ответ дан 3 December 2019 в 00:43
поделиться

Разговор о чистой производительности, если можно выполнить Java 6, который Вы получаете о 1:1 производительность по сравнению с оптимизированным C++ (особые случаи, несмотря на это, иногда Java быстрее, иногда C++), единственная проблема, которую Вы будете иметь, является, конечно, материалом как библиотеки базы данных, взаимосвязанность, масштабируемость и такой. Я полагаю, что существует множество хороших к отличным решениям, доступным каждой из этих проблем, но Вы не найдете один язык, который решил бы все для Вас так, я должен дать Вам возраст старый совет: Выберите язык, Вы любите и используете тот.

О, Вы все еще читаете это?:) Ну, вот некоторые дополнительные указатели.

  • КАНУН Онлайн использует Python для своего кода стороны клиента и сервера, и это является и находящимся во власти ошибкой и отстающим как что-то, что я не думаю, что должен записать здесь, таким образом, это было бы примером того, как Python может быть расширен, чтобы (плохо) служить огромному количеству пользователей.
  • В то время как Java имеет некоторую пользу к отличным решениям различных связанных проблем, это - действительно не лучший язык там для огромного количества пользователей; это не масштабируется хорошо к экстремальным значениям без настройки. Однако существуют решения multi-VM этого, которые несколько устраняют проблему, например, Терракота, как говорят, делает задание хорошо.
  • В то время как C++ является довольно громоздким, он допускает такое взаимодействие низкого уровня с системой, что можно на самом деле делать вещи, Вы думали, что не могли сделать. Я думаю о чем-то как динамическая микрокластеризация на ядро блоков кода во время выполнения для "заполнения" каждого возможного такта процессора максимально эффективно для максимальной производительности и подобных вещей.
  • Моно далеко позади VM/equivalent.NET на платформах Windows, таким образом, Вы не смогли бы использовать последние и самые необычные функции C#. Однако Windows XP (x64), лицензии OEM являются так смехотворно дешевыми в данный момент, что с небольшими инвестициями Вы могли получить набор тех и Вы могли затем выполнить свой код платформы, которой это было предназначено, чтобы быть. И не попадайте в шумиху Linux, Linux является Вашим спасителем, только если Вы действительно знаете, как использовать его, и особенно XP довольно чертовски быстр и стабилен в наше время.
8
ответ дан 3 December 2019 в 00:43
поделиться

Я очень не хочу сказать это, и я знаю, что рискую вниз модификация здесь, но это не кажется, что существует язык там для Вас. Все языки программирования имеют свои причуды, и программисты просто должны адаптироваться к ним. Абсолютно возможно записать рабочий сервер в Python без классов (устраняющий "сам" переменные ссылки класса) и аналогично столь же легкий записать C++ с чистым синтаксисом.

Если бы Вы надеетесь развертывать межплатформенный и хотеть разработать межплатформенный также, Ваш лучший выбор, вероятно, был бы Java. Он более короткие циклы разработки, чем скомпилированные языки как C и C++, но более высокая производительность (спорный, но я всегда был анти-Java =P), чем интерпретируемые языки как Python и Perl и Вы не должны работать с неофициальными реализациями как Моно, который не может время от времени поддерживать все функции языка.

19
ответ дан 3 December 2019 в 00:43
поделиться

Я мог бы идти немного вне темы сюда, но тема интересует меня, как я имею (мудрый хобби), работал над довольно многими игровыми серверами (серверы MMORPG) - на коде других, а также моем. Существует литература там, которая будет представлять интерес для Вас, напишет мне, если Вы захотите некоторые ссылки.

Одной вещью, которая ударяет меня в Вашем вопросе, является хотение служить тысяче пользователей от многопоточного приложения. На основе моего скромного опыта, который не работает слишком хорошо.:-)

При обслуживании тысяч пользователей, Вы хотите конструкцию, которая является максимально модульной, потому что одна из Ваших основных целей будет состоять в том, чтобы сохранить обслуживание в целом и выполнение. Игровые серверы имеют тенденцию быть довольно сложными, таким образом, будет довольно много останавливающих шоу ошибок. Не делайте свою жизнь скудной с единой точкой отказа (одно приложение!).

Вместо этого попытайтесь создать несколько процессов, которые могут работать на множестве хостов. Мое скромное предложение следующее:

  • Сделайте их независимыми, таким образом, провальный процесс будет не важен сервису.
  • Сделайте их маленькими, так, чтобы различные части сервиса и как они взаимодействуют, было легко схватить.
  • Не позволяйте пользователям общаться с gamelogic ИЛИ DB непосредственно. Запишите прокси - сетевые стеки могут и показывать нечетное поведение на различной архитектуре, когда у Вас есть множество пользователей. Также удостоверьтесь, что можно позже "убрать" фильтр/, что передают прокси.
  • Имейте процесс, который будет только контролировать другие процессы, чтобы видеть, работают ли они все еще правильно со способностью перезапустить части.
  • Сделайте их распространяемыми. Координатные процессы через TCP от запуска или Вы столкнетесь с проблемами масштабируемости.
  • Если Вы имеете большие среды, рассматриваете средства динамично разделить загрузку путем деления серверов на географию. Не имейте каждого процесса бэкенда, содержат все данные в памяти.

Я портировал несколько таких механизмов, записанных в C++ и C# для хостов, воздействующих на Linux, FreeBSD и также Солярис (на старом UltraSparc, который IIi - да, моно все еще выполняет туда :). На основе моего опыта C# хорошо достаточно быстр, рассматривая на том, какие древние аппаратные средства он управляет на этом sparc машиной.

Промышленность (насколько я знаю) имеет тенденцию использовать много C++ для служащей работы и встраивает языки сценариев для фактической игровой логики. А-ч, записанный слишком много уже - путь, охлаждают тему.

14
ответ дан 3 December 2019 в 00:43
поделиться

Очевидными кандидатами является Java и Erlang:

Pro Java:

  • простота разработки
  • хорошие среды разработки
  • устойчивость, хорошие отслеживания стека
  • известный (легкий найти опытных программистов, много библиотек, книг...)
  • довольно быстро, сформировавшийся VM

Pro Erlang:

  • доказанный в системах, которым нужно> время работы на 99,9%
  • способность иметь обновления программного обеспечения без времени простоя
  • масштабируемый (не только многоядерный, но также и мультимашина)

Мятежник Erlang:

  • незнакомый синтаксис и парадигма программирования
  • не настолько известный; трудно получить опытных программистов для
  • VM совсем не с такой скоростью, как Java

Если Ваш игровой сервер главным образом работает диспетчером события (с чем-то вроде базы данных, подвернутой на), управляемая сообщением парадигма Erlang должна быть хорошим соответствием.

В этот день и возраст, я не рассмотрел бы использование неуправляемого языка (как C или C++); крайние выигрыши в производительности просто не стоят стычки.

2
ответ дан 3 December 2019 в 00:43
поделиться

Я знаю, что Facebook использует комбинацию Erlang и C ++ для их чата.

Все, что вы решите, если вы выбираете комбинацию языков, посмотрите MBEACE FACE FACEBORE для развертывания услуг по перекрестному языку. Они открывают это около года + назад:

http://incubator.apache.org/thrift/

0
ответ дан 3 December 2019 в 00:43
поделиться