PDA

Просмотр полной версии : AS3/PHP/MySQL = игра на сколько это рентабельно?


Lemyr
21.10.2013, 11:26
Всем привет. Я студент(по этому прошу сразу строго не судить) решил по-развиваться в области flash - казуалочки. В мыслях уже бродил идеи на тему карточной игры с элементами стратегии, но это только мысли а так я начал просто с заходи и регистрации)) и как и предполагал тут же столкнулся с кучей проблем, некоторые из них даже немного озвучены на форуме, но я все равно их задам, вдруг кто-нибудь скажет что-нибудь новое.
1 первый вопрос, собственно, адекватно ли создавать AS3/PHP/MySQL связку для игры, прочитал много статеек, предлагают воснавном именно этот вариант.
2 начал реализовывать эту связку и первое что попалось на глаза - я не могу отслеживать кто на данный момент онлайн. те я создал табличку в которой при входе выставляется 1 ка зашедшему. но как адекватно отследить выход человека я не смог придумать, а есть еще ситуация просто разрыва соединения.
3 для работы с базой использовал одного пользователя, но при первых же тестах с 2х киентов, возникли коллизии, что под каждое соединение не запускается своя сессия и вываливаются охибка о количестве возможных подключений.

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

Korchy
21.10.2013, 12:20
1. Вполне можно. Нормальный вариант для начала и обучения.
2. Гуглите "сокет-сервер". На php вполне можно написать простейший сервер. Опять же для начала и обучения. Для более развитых серверов подойдет ява или c++. Но принципы одни.
3. Опять же гугл спасет. Для соединения с базой данных вы в любом случае будет использовать одного пользователя. Если имеется ввиду именно пользователь базы данных. А уже внутри базы можно организовать список игроков с данными об их регистрациях.

caseyryan
21.10.2013, 12:30
Для игры, в которой в реальном времени должен отслеживаться статус игрока (онлайн), то эта связка не совсем адекватна. Нужно использовать сокеты, а php и сокеты - это извращение. В качестве базы данных MySQL вполне хороший вариант, но вот сервер лучше написать на Java, C++ или другом языке в котором сокеты реализованы нормально.
Есть конечно такая штука как long-polling для длительного ожидания ответа от сервера, но это тоже костыльный вариант по сравнению с сокетами.

Рекомендую сначала взять готовый сервер, типа Node.js (http://nodejs.ru/) или http://www.unionplatform.com/

Lemyr
21.10.2013, 20:32
Спасибо, в итоге решил что буду писать сокеты на Java(сегодня развлекался написал чатик с клиентом на as и сервером java). Ключевым, наверное, стало то, что php не может сам инициировать сообщение, а только отвечает. а это крайне не удобно. Теперь стоит вопрос в хостинге(локально не удобно тк пишу в разных местах) на эту тему ничего не посоветуете(понятно дело хочется бесплатно или подешевле, а так как я только буду писать а на нем тестить нагрузка будет не велика)? Ну или возможно видели где книжку или статью описывающую архитектуру данных приложений(желательно на русском)
На тему бд, как посмотреть максимальное количество подключений от одного пользователя, и как если что поменять?

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

djyamato
25.10.2013, 03:27
пхп вообще не может ни на что ответить после того как страница загружена так как "он уж отработал" до этого и страница = результат его работы (частично)

Писать сокеты на java самому это преступление, возьмите готовый сервак, а лучше откройте сразу red5 для себя (он бесплатный, может с БД напрямую коннектится и кучу-кучу всего, + Spring (http://ru.wikipedia.org/wiki/Spring_Framework)со всеми вытекающими)
PS Он кроссплатформенный, для первой игрушки - то что доктор прописал: все умеет, синтаксис почти такой же как в AS
(я про java)

C4Grey
25.10.2013, 03:38
пхп вообще не может ни на что ответить после того как страница загружена так как "он уж отработал" до этого и страница = результат его работы (частично)
Это не так. (http://habrahabr.ru/company/bitrix/blog/198540/) Но PHP, как и пишет автор статьи по ссылке, предназначен для решения других задач.
Писать сокеты на java самому это преступление, возьмите готовый сервак
IMHO, преступлением это назвать сложно, но вот научиться чему-то в процессе написания своего сокет-сервера точно можно, готовые решения этих знаний не дадут.

caseyryan
25.10.2013, 09:08
IMHO, преступлением это назвать сложно, но вот научиться чему-то в процессе написания своего сокет-сервера точно можно, готовые решения этих знаний не дадут.
Полностью поддерживаю. Я бы даже сказал советовать red5 начинающему - большее преступление. В нем целая гора всего ненужного для новичка, да и даже установить и настроить его - далеко не тривиальная задача для начинающего.

Lemyr
25.10.2013, 11:14
Честно, не люблю пользоваться чужими вещами(хотя понимаю что это не правильно и что надо учится пользоваться чужими качественно сделанными наработками), но как говорил один мой преподаватель "мне проще написать свой эксель чем научится работать в этом". К тому же мне нравится делать обработки событий и сообщений на сервере(может, конечно, потому что ничего сложней сетевых больших крестиков ноликов не делал)

В итоге я решил сделать так: Сервер на Java\сокеты(пишется но пока на уровне чатика))) - отвечает за динамические события(битва и тп) и выполняет в основном инсерты в базу, PHP - будет выдавать статические данные(типа хелпашника) и клиент на AS3.

Правда вопрос с базой остается. Как настроить MySQL так чтобы один пользователь мог конектиться несколько раз одновременно?

Psycho Tiger
25.10.2013, 11:14
Берите Node.js. Если есть желание поучиться чуть больше, но получая удовольствие в будущем – добавьте CofeeScript (http://coffeescript.org/).
Теперь стоит вопрос в хостинге(локально не удобно тк пишу в разных местах) на эту тему ничего не посоветуете(понятно дело хочется бесплатно или подешевле, а так как я только буду писать а на нем тестить нагрузка будет не велика)?
Используйте дропбокс и разрабатывайте везде локально.

Lemyr
25.10.2013, 11:49
Используйте дропбокс и разрабатывайте везде локально.

а есть портабл дропбокс? просто частично я разрабатываю на работе когда заказов нет, и ставить на раб комп ничего незя(точнее прав нет)

caseyryan
25.10.2013, 14:08
Как настроить MySQL так чтобы один пользователь мог конектиться несколько раз одновременно?
Что-то не совсем понял вопроса. Если речь идет о выборке из базы и добавлении в нее, то с этим вообще проблем быть не должно. Сколько будет запросов, столько и подключений. Главное не забывать их закрывать после выполнения необходимых действий

Psycho Tiger
25.10.2013, 15:08
а есть портабл дропбокс? просто частично я разрабатываю на работе когда заказов нет, и ставить на раб комп ничего незя(точнее прав нет)
Тогда у Вас будут сложности с развертыванием сервера или того же флеша =)

Lemyr
25.10.2013, 16:37
Тогда у Вас будут сложности с развертыванием сервера или того же флеша =)

Флеш есть портбл)) А сервер я поднимаю из среды разработки и нет бинс стоит

Psycho Tiger
25.10.2013, 17:59
Ну, я бы тогда просто архив себе на почту слал.