?

Log in

No account? Create an account
Игровая сеть - One day more
Another day, another destiny
jolaf
jolaf
Игровая сеть
Есть задачка, пока гипотетическая – сделать игровую компьютерную сеть. Вопрос физической сети (проводная, вай-фай, неважно) не рассматриваем, оставляем за скобками. Ключевые требования следующие:

– Игрок может залогиниться в систему, используя логин-пароль.

– Залогинившись, игрок получает доступ к некоторым документам (для простоты будем считать, что документы чисто текстовые и не изменяемые).

– Есть механизм, позволяющий мастеру задать, какому логину какие документы доступны, а какие нет. В идеале это механизм групп доступа.

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

– У игрока может быть возможность (если мастер проставил ему соответстующие права) посмотреть, кто и когда обращался к тому или иному документу.

– У игрока может быть возможность (если мастер проставил ему соответстующие права) отправить анонимное письмо.

– У системы должен быть единый красивый интерфейс в стиле, соответствующем игре.

Собственно, вопрос в том, с какой стороны вообще подходить к этой задачке.

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

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

Вопрос: есть ли что-то уже существующее, что может быть удобно допилено до указанных требований? Что? Желательно, чтобы допиливать нужно было на Питоне.

Вопрос: если ничего близко похожего готового нет, и нужно писать своё, то на какой основе это нужно делать? Я под веб писал только статичные странички, всяких динамических движков не знаю, поэтому мне сложно выбрать, прошу совета. Да, желательно чтобы это был Питон. Ну или может быть Руби освоить ради этого дела, не знаю. В общем, не PHP и не Perl, что-то нормальное.

Заранее спасибо за советы!

Tags: , , ,

48 comments --- Comment
Comments
cybercat From: cybercat Date: November 9th, 2014 01:57 am (UTC) (link)
На PHP все перечисленные задачи решают на выбор Wordpress, Joomla и Drupal. Думаю, на Питоне тоже есть той или иной степени универсальности CMSки, желательно с поддержкой плагинов.

http://stackoverflow.com/questions/184742/what-is-a-good-cms-written-in-python-and-not-plone

Edited at 2014-11-09 01:59 am (UTC)
jolaf From: jolaf Date: November 9th, 2014 12:51 pm (UTC) (link)
Ну да.

Я, признаться, больше всего мечтаю услышать ответ типа "делал нечто похожее на такой-то питоновской CMS, она это точно может, хорошо и удобно, рекомендую". :)
(Deleted comment)
jolaf From: jolaf Date: November 9th, 2014 12:52 pm (UTC) (link)
Я хорошо знаю и люблю питон, и вообще не знаю ни перла, ни пхп, и учить их ради одного этого небольшого проекта совершенно не хочется.
vitus_wagner From: vitus_wagner Date: November 9th, 2014 06:34 am (UTC) (link)
Django

Tornado

Pyramid

Несть им числа.

Но вообще интересным решением задачи было бы сделать все на client-side javascript. Чтобы инсталлировать было не надо, но после того как оно открылось у игроков в браузере, оно бы продолжало работать несмотря на пропадание связи с центральным сервером.
jolaf From: jolaf Date: November 9th, 2014 03:37 pm (UTC) (link)
> Несть им числа.

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

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

> интересным решением задачи было бы сделать все на client-side javascript

Идея крутая! Но это означает, во-первых, что вместо нормального удобного языка Питон придётся писать на архаичном и неудобном ДжаваСкрипте, а во-вторых, и в главных, что нужно будет загрузить на комп по сути всю базу данных проекта.

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

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

Прокомментируй, пожалуйста. Я плохо знаю JS и могу многого не понимать.
north_coast From: north_coast Date: November 9th, 2014 04:51 pm (UTC) (link)
Ничего не знаю, но https://www.meteor.com как раз зарелизился до 1.0. Но, думаю, такой вариант подойдет только если тебе реально интересен процесс создания будет. :-)
jolaf From: jolaf Date: November 9th, 2014 05:18 pm (UTC) (link)
Ух ты ж блин, какая штука... Всерьёз задумался. :)
m9a1_gernsback From: m9a1_gernsback Date: November 9th, 2014 06:56 am (UTC) (link)
Обратись к Медведеву. Он начинал такую задачу решать, и вроде как есть промежуточный вариант.
jolaf From: jolaf Date: November 9th, 2014 12:53 pm (UTC) (link)
Дай электронные контакты, пожалуйста. Спасибо!
m9a1_gernsback From: m9a1_gernsback Date: November 9th, 2014 01:10 pm (UTC) (link)
rn3aoh.g@gmail.com
Он же актуальный Джаббер
jolaf From: jolaf Date: November 9th, 2014 03:29 pm (UTC) (link)
Написал, спасибо!
saotome_kun From: saotome_kun Date: November 9th, 2014 07:51 am (UTC) (link)
Google API тебе в помощь

https://developers.google.com/drive/v2/reference/
https://developers.google.com/gmail/api/

Только морду свою написать.
jolaf From: jolaf Date: November 9th, 2014 12:53 pm (UTC) (link)
Нет-нет, интернета на полигоне не предполагается. Так что нужен свой сервак обязательно.
modron From: modron Date: November 9th, 2014 08:06 am (UTC) (link)
Ну твой выбор какая-то CMS портального типа. Возможно с отдельным почтовым сервером с веб-мордой. Про PHP варианты выше уже написали, я бы еще Sharepoint добавил как MS-фанат ;))
но с Sharepoint есть существенная проблема - его довольно сложно кастомизировать и дописывать под свои нужды. Те все API и возможности там есть, но это .NET и энтерпрайз со всеми вытекающими. Зато управление докуметами и даже их редакторы из коробки, управление правами как угодно и тд
но в твоем случае лучше что-то где можно дописывать куски на питоне ;)
mirdin From: mirdin Date: November 9th, 2014 08:43 am (UTC) (link)
Ну в .Net есть iron pyton.
modron From: modron Date: November 9th, 2014 02:23 pm (UTC) (link)
Я не думаю, что кто-нибудь когда-нибудь писал что-то для SP на питоне :))) Даже если технически такая возможность есть. Хотя чего в мире не бывает...
jolaf From: jolaf Date: November 9th, 2014 12:54 pm (UTC) (link)
А "портального типа" - это что значит?

Шарепойнт точно оверкилл. :)
modron From: modron Date: November 9th, 2014 02:22 pm (UTC) (link)
Ну.. тебе нужны CMS заточенные под создание "порталов" т.е. чего-то интерактивного, для работы с документами, разделами, какими-то данными, а не просто для создания типовых сайтов.

Sharepoint как раз типичный пример корпоративного портального решения. Просто сайты на нем делать можно, но это совсем оверкилл во всех смыслах.
jolaf From: jolaf Date: November 9th, 2014 03:46 pm (UTC) (link)
Вообще, то, как я это вижу, по типовому использованию больше всего похоже на википедию. Например, если игровой мир - это какой-то институт, что-то изучающий, и на сервере хранятся результаты исследований. Какие-то из них доступны любым сотрудникам института, какие-то - только сотрудникам определённых отделов... По всему этому есть какой-то поиск по ключевым словам... В общем, при типовом использовании обычным пользователем это именно что википедия (с типовыми категориями или вообще со строго-древовидной иерархией), просто видны не все статьи. Но в каких-то случаях становится нужен дополнительный функционал, который я описал.

Собственно, я не очень понимаю, ближе ли это к "интерактивному порталу" или к "типовому сайту".
modron From: modron Date: November 9th, 2014 04:19 pm (UTC) (link)
Типовой сайт это "шаблоны + контент + несколько редакторов с ролями" а все остальные массовые пользователи это читают. Цель - публикация контента для читателей.

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

(Корпоративный) портал: куча разнородной информации, могут быть формы, шаблоны, группы читателей и радакторов сложным образом перемешаны, ориентированность на хранение и работу с документа, много разного интерактива от форм и workflow для них до показа информации из разных БДшек и прочее и прочее. Цель - создание единой точки входа сотрудников компании к разнообразной информации и сервисам.

Твой случай (если нет никакого интерактива кроме текста и почты) это видимо вики с какой-нибудь системой разграничения доступа. Такие точно должны быть - либо открытые, либо платные.
jolaf From: jolaf Date: November 9th, 2014 04:23 pm (UTC) (link)
Да, такая классификация понятна. Ты прав, спасибо!
modron From: modron Date: November 9th, 2014 04:28 pm (UTC) (link)
Из твоего ТЗ я думаю, что почту надо просто выкидывать в отдельное приложение - любой почтовый сервер с Web-интерфейсом и все (и со ссылками на него из Wiki и обратно)

Анонимная почта - это просто формочка на сайте с обработкой на сервере (через все тот же отдельный почтовый сервер)

Из сложного остаются "красивые шаблоны" - вики не особо под это заточены, т.ч. возможно придется обойтись только заголовками какими-нибудь. Но возможно я ошибаюсь - надо смотреть.

Ну и не уверен, что есть вики в которых кто-то кроме админа может смотреть логи "доступа к странице", хотя опять же возможно есть со встроенным аудитом.

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

Edited at 2014-11-09 04:29 pm (UTC)
jolaf From: jolaf Date: November 9th, 2014 04:45 pm (UTC) (link)
Подумав ещё - я не уверен, что мне вообще подойдёт какой-то готовый контроль доступа. Потому что, например, мастеру явно будет нужна фича "посмотреть, как выглядит система глазами игрока такого-то", при этом он не захочет узнавать-использовать пароль юзера, и в системе не должно оставаться видимых игрокам следов таких экспериментов. Мне кажется, ни одна готовая система контроля доступа таких финтов не выдержит.
modron From: modron Date: November 9th, 2014 04:51 pm (UTC) (link)
>>Мне кажется, ни одна готовая система контроля доступа таких финтов не выдержит

Ну штатно да. Есть вариант поднимать "клон" системы с регулярным (или вообще on-line обновлением) для сугубо мастерских (отладочных) нужд.
Технически все это обычно какая реляционная СУБД + веб-морда (она же application-сервер)

В большинстве случаев у СУБД есть каки-то средства репликации (ну или просто backup-restore). Ну и дальше отдельный комплект виртуалок для отладки\настройки.
jolaf From: jolaf Date: November 9th, 2014 05:19 pm (UTC) (link)
Мм, да, как вариант...
modron From: modron Date: November 9th, 2014 05:29 pm (UTC) (link)
Это довольно типовой вариант решения для production\development сред.
Но есть нюанс - если тебе нужно, что бы у мастера была возможность что-то поменять на боевой системе "в обход" штатной подсистемы безопасности\аудита, вот тут начнутся основные сложности. Например внести изменения в страницу от имени фиг знает какого юзера, которые не будут отражены в общей истории изменений и обращений к документу.
Если надо что-то подобное то скорее всего придется систему дописывать.
muravlyansky From: muravlyansky Date: November 9th, 2014 08:36 am (UTC) (link)
Есть сайт ЛангКона/ЗС РМЛ - там в альфа-версии есть сообщения.
Разграничение доступов есть.
Про историю просмотров не уверен, но думаю можно ркализовывать.
Разработчик, который может на все вопросы подробно ответить и дать вопию на посмотреть: koctep@gmail.com
jolaf From: jolaf Date: November 9th, 2014 12:56 pm (UTC) (link)
Спасибо!
anderson_mike From: anderson_mike Date: November 9th, 2014 10:01 am (UTC) (link)
У меня есть CMS, на которой такое - день работы. Java, да. Это не считая дизайн и верстку.
jolaf From: jolaf Date: November 9th, 2014 01:02 pm (UTC) (link)
Java в целом вариант. Расскажи подробнее?
bernh From: bernh Date: November 9th, 2014 12:18 pm (UTC) (link)
Мне казалось, очень похожая вещь была на первой ЦЧ.
jolaf From: jolaf Date: November 9th, 2014 01:05 pm (UTC) (link)
Там по-моему была только "почта", нет?
hyyudu From: hyyudu Date: November 9th, 2014 05:54 pm (UTC) (link)
Там была почта и куцее "хакерство", формата "ответил на два контрольных вопроса - получил доступ к личным данным и почте на чтение". Плюс мастерский интерфейс для переписки от любого имени. Если надо, отдам за так.
jolaf From: jolaf Date: November 9th, 2014 06:24 pm (UTC) (link)
На чём написано?
hyyudu From: hyyudu Date: November 9th, 2014 10:19 pm (UTC) (link)
Как и почти все мое до этого года - PHP+MySQL
droggy From: droggy Date: November 9th, 2014 12:37 pm (UTC) (link)
Вообще к медиавики дочерта расширений, в том числе и про управление доступом.
jolaf From: jolaf Date: November 9th, 2014 04:00 pm (UTC) (link)
Я посмотрел, там с этим очень сложно. Как я понял, вики-движок сам для этого очень плохо приспособлен, есть куча мест, где документ может вылезти, и закрыть их все сложно. Те экстеншены, которые я нашёл, очень примитивные, а писать новые на пхп не хочется.
himring From: himring Date: November 9th, 2014 01:41 pm (UTC) (link)
Похоже, что может помочь Redmine + плагин для личных сообщений. Он на Ruby.
jolaf From: jolaf Date: November 9th, 2014 03:59 pm (UTC) (link)
Ой, но Redmine это же вроде вообще про другое. Я его на работе использую, там куча лишнего (для этой задачи) и нет половины нужного. Или я чего-то не понимаю?
jolaf From: jolaf Date: November 9th, 2014 03:47 pm (UTC) (link)
Случайно стёр коммент от ntsdk:

Отдельные элементы из перечисленного делали мы для третьего Батлтеха. http://ru-lrpg.livejournal.com/998223.html
Писали на джаве, дизайн сделан на бутстрапе.

Из требуемого есть:
– Игрок может залогиниться в систему, используя логин-пароль.
– Залогинившись, игрок получает доступ к некоторым документам (для простоты будем считать, что документы чисто текстовые и не изменяемые).
– Игрок может, залогинившись, "отправить письмо" другому игроку, зная его логин. Другой игрок, зайдя в систему, "получит" это письмо.

В идеале, каждое такое письмо – это такой же документ, как и любой другой, со всеми вытекающими. - этого нету

На счет следующих пунктов не помню, но по моему анонимки были:
– У игрока может быть возможность (если мастер проставил ему соответстующие права) отправить анонимное письмо.
– У системы должен быть единый красивый интерфейс в стиле, соответствующем игре. (интерфейс делали на бутстрапе, так что в рамках бутстрапа)

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

В системе ещё есть пачка функций, упомянутых в оригинальном посте.
jolaf From: jolaf Date: November 9th, 2014 03:57 pm (UTC) (link)
Спасибо, откомментил по ссылке.
hyyudu From: hyyudu Date: November 9th, 2014 05:57 pm (UTC) (link)
Что-то подобное делал, кажется, Рендам (или Ростик) к "Осеннему Дозору", прости Господи, 2006 года, и я к "Иному Дозору" 2007. Но там были разграничения не по группам доступа, а по уровню. Т.е. человек с низшим уровнем доступа в досье видит ФИО и сторону Силы, с чуть более высоким - класс и уровень, еще выше - история поощрений и взысканий и т.д.
jolaf From: jolaf Date: November 9th, 2014 06:24 pm (UTC) (link)
На чём написано? :)
hyyudu From: hyyudu Date: November 9th, 2014 10:20 pm (UTC) (link)
Как и почти все мое до этого года - PHP+MySQL
droggy From: droggy Date: November 10th, 2014 09:19 pm (UTC) (link)
Кстати сайт Ведьмака-2005 в архивах нашелся. Можно его выложить на другое доменное имя, потому что то профукали.
jolaf From: jolaf Date: November 10th, 2014 09:50 pm (UTC) (link)
Отдай архив Куковлеву, он его выложит.
leotsarev From: leotsarev Date: November 12th, 2014 02:43 pm (UTC) (link)
Выложите на vedmak.rpg.ru
48 comments --- Comment