Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Эффективен ли скриптовый язык для приложений


Автор: Archon7th 21.9.2008, 13:48
есть безумная идея написания сервера для реалтаймовой онлайн игрушки (с онлайном не менее 200 чел) на скриптовом языке, например на ПХП
через так называемую платформу ActivePHP под виндой
за основу думаю можно взять ПХПшный скрипт для сервера ИРЦ, т.к. собственно других методов работы с портами через ПХП я не знаю


плюсы в легком редактировании исходников прямо на сервере
отредактировал, рестартонул сервер и всё работает, или не работает =)

кто что думает по этому поводу? .... потянет?





необижусь если тема окажется в офтопе

Автор: amazing 22.9.2008, 05:58
все зависит от того как реализуешь...

Автор: ksnk 22.9.2008, 08:04
Archon7th, online - игрушка, это через броузер? Зачем тогда работа с портами? Или клиента отдельно писать и распространять?

Автор: sTa1kEr 22.9.2008, 11:57
Цитата(ksnk @  22.9.2008,  09:04 Найти цитируемый пост)
Archon7th, online - игрушка, это через броузер?

Я думаю, что Archon7th хочет написть серверную часть игры с прикладным клиентом. Иначе и спрашивать нечего было бы.

Archon7th, возможно, но мало эффективно. Есть ряд факторов ограничивающих PHP в этом направлении
  • Из за отсутствия многопоточности будет очень много накладных расходов на инициализацию скриптов для каждого запроса.
  • Взаимодействие между псеводопотоками очень затруднительно. Как правило это хаки с разделяемой памятью/мемкешем и как правило опять потеря производительности. Хотя тут многое зависит от самой игры.
  • Очень мало какаих-либо наработок/материалов в этой области на PHP, все нужно будет писать с нуля, либо выдирать из таких скриптов как сервер IRC (что по сути одно и тоже).
  • ...

Цитата(Archon7th @  21.9.2008,  14:48 Найти цитируемый пост)
плюсы в легком редактировании исходников прямо на сервере

А какие в этом плюсы? Зачем исходники редактировать на сервере? Ты программист, ты сам решаешь, что нужно вынести в конфиги, а что зашить в коде.
Доступ к компилятору и IDE из любого места? По сути тоже не проблема для большинства языков.
Секьюрити...

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

Автор: Archon7th 22.9.2008, 13:04
Цитата
 думаю, что Archon7th хочет написть серверную часть игры с прикладным клиентом.

именно )

Цитата
Из за отсутствия многопоточности будет очень много накладных расходов на инициализацию скриптов для каждого запроса.

вот это очень меня и волнует ((( ... хотя как мне удалось поиграться с ИРЦшкой, то там скорость была достаточная
ну скажем держать 200 соединений она могла

Цитата
 Зачем исходники редактировать на сервере? 

в этом есть инетерес в том моменте что отработка скажем "скилов", для баланса должна будет первое время редактироваться попросту постоянно

т.е. например есть какая-нить магия вроде "Файр бол", с специальной особанностью:
1. если заклинание читалось после другого огненного заклинания то +5% ущерба
2. если на цель налоджено заклинание "Прицеливание файр бола" то +20% ущерба
 
первые 2 условия отработать непроблема, но если мы вдруг в игру добавим заклинание "Анти файр бол", то нам нужно будет добавить новое условие в заклинание "Файр бол":
3. если цель находитмся под защитой "Анти файр бол" то -50%

а если таких добавлений и убираний особенностей будет очень много, в чем я не сомневаюсь =)
... это конечно грубый пример, но думаю по нему всё понятно


я просто хочу сделать универсальный настраиваемый сервер
вплоть до прямой обработки заклинаний через функции написанные скриптами либо в самом сервере, либо сам сервер будет весь скриптовой

вот и думаю пока

Автор: nerezus 22.9.2008, 17:22
Скриптовый язык эфективен. Факт. Тот же google apps на нем написан.
Просто PHP очень ограничен в возможностях(относительно других скриптовых языков), и поэтому не рекомендую его юзать.
Смотри в сторону python или ruby.

Цитата

плюсы в легком редактировании исходников прямо на сервере
 Это есть в ЛЮБОМ языке. Даже на сишнике - просто потребуется рестарт сервера.

Автор: sTa1kEr 22.9.2008, 18:03
Цитата(Archon7th @  22.9.2008,  14:04 Найти цитируемый пост)

вот это очень меня и волнует ((( ... хотя как мне удалось поиграться с ИРЦшкой, то там скорость была достаточная

Одно дело чат, с очень ограниченным взаимодействием с сервером и совсем другое дело MOORPG, у которой может быть десятки запросов одновременно от одного единственного игрока online. Как не крути, но без полноценной многопоточностьи с производительностью будет напряжно.

Хотя с другой стороны скорость инициализации и исполнения скриптов - это сильная сторона PHP, т.ч. если грамотно построить архитектуру, то может получится очень интересный сервер. Но что я могу гарантировать, так это то что такому серверу оперативки понадобится значительно больше, чем серверу, написанному на том же C#. Ну и плюс куча хаков для обхода тех или иных ограничений PHP тоже гарантированно.

Цитата(Archon7th @  22.9.2008,  14:04 Найти цитируемый пост)
для баланса должна будет первое время редактироваться попросту постоянно

Ну а в чем проблема отредактировать и тут же скомпилировать прямо на сервере?

Автор: ksnk 22.9.2008, 19:09
Можно посчитать потоки... Один занимается собственно содержанием PT модели игрового мира. Каждый тик моделирования у всех объектов мира фиксируется набор "текущих команд" - "юзер X бежит вправо", Юзер Y из точки Z бросил Файрбол в направлении W. Файрбол летит до столкновения с препятствием или на расстояние D. Эта модель должна уметь выдавать состояние объектов вокруг игрока. 
Еще поток - прием этих "текущих" команд. если его сделать быстрым, то можно обойтись и одним на всех. 
С выдачей информации об окружающем мире несколько сложнее, ее, потенциально, может быть много, выдаваться-расчитываться она может медленно... Возможно вот тут комплект потоков будет по числу online-игроков ...

Автор: nerezus 22.9.2008, 19:49
Без Threads нельзя параллельно отдавать контент клиентам. Т.е. пока идет какой-то длительный обсчет для одного клиента, другие будут ждать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)