Здравствуйте, я знаю, что новичку такое дело одному не потянуть, поэтому пока что моя цель - довести проект до стадии привлечения энтузиастов (т.е. нужна хотя бы альфа-версия), ну и заодно выучить PHP. Первоначальные вопросы: 1. Что лучше использовать для хранения информации - файлы или базы данных? И если базы, то лучше Oracle, MySQL или что-то другое? 2. Какие символы являются опасными в случае, когда пользователь что-то вводит в форму, а мы потом пользуемся этой переменной? Ясно, что это ", ', < и >. А ещё? Или лучше вообще предоставить пользователю возможность вводить только буквы, цифры и пробел? (Речь о логине, нике и пароле). 3. Если хранить данные в файлах, подойдёт ли формат CSV? И как считать в массив сразу все записи из файла, если каждая запись начинается с новой строки? Например, я пишу Код (Text): $my_data_values_array = fgetcsv($fh, $stat_arr[7]*4, ";"); , а потом оказывается, что в $my_data_values_array информация только о первом игроке. 4. Что лучше почитать по теме?
Это безнадежно чувак, это безнадежно Иначе бы тут у каждого второго было по 10 игр. Ну а вообще, в сети доступен исходный код игр - правда, безнадежно устаревший и дырявый, и вообще никому не нужный.
Итак, на данный момент готовы: регистрация; запоминание пользователя в печеньках; админ-панель с просмотром всех юзеров, возможностью повышать-понижать их привилегии (то бишь делать модераторами/банить) и просмотром всех локаций с возможностью редактирования их названий; сами локации (пока только домашняя, но теоретически можно наклепать их сколько угодно - был бы художник). В скором времени будет чат на AJAX. А, забыл сказать - игра будет убийцей "Дозоров". Но как такую игру сделать я не знаю, поэтому появилась куча вопросов. 1. Как в "Дозорах" сделана вёрстка? Например, как они размещают изображение юзера поверх картинки локации? Возможно, изображение локации просто бекграунд, но как они размещают таблицу с параметрами поверх картинки юзера? 2. Можно ли делать локации, амуницию, чат и всё такое прочее изначально не задумываясь о боёвке, а её прикрутить потом? Не возникнет ли с этим как-нибудь трудностей? 3. Т.к. в моей игре довольно большое внимание уделяется квестам, я заранее задумался об их реализации. Допустим, игрок получил задание встретится с кем-то в локации №1. Он приходит в эту локацию и видит, что теперь при наведении мышкой на один из домов на изображении локации он подсвечивается. Это можно сделать с помощью JS и графической карты ссылок, генерируемой динамически. Вопрос в том, как хранить эту карту ссылок? Моя идея - заводить отдельную таблицу maps_of_links, в которой будут лежать строки html-кода, создающие ссылки и id локаций, к которым они относятся. При переходе на локацию сервер будет искать все графические ссылки, относящиеся к данной локации, проверять, должны ли они отображаться у этого игрока и отправлять ему индивидуальную локацию. В "Дозорах" это реализовано проще: вводишь номер квартиры - и ты в квестовой квартире. Но, по-моему, это сильно ограничивает квесты.
DenisS1 думаю будет интересно http://www.php.ru/forum/viewtopic.php?t=26922 1. думаешь тут все видели дозоры? я думаю там флэш 2.системные сообщения, об окончании\начале боя, полученном опыта выводятся в чат, не?
Если ты намерен написать игру полностью на пхп, то здесь возьни намного меньше) Данные храни, конечно же в mysql. Я бы на твоем месте сперва составил бы четкий план игры на бумаге, а потом перешел бы к реализации. И еще самая тема - дизайнер. Ибо браузерные игры не на флеше рулят только благодаря дизайну)
Решил добавить в игру систему событий, возникли вопросы. Для наглядности нарисовал, как я это себе представляю. Есть у кого-нибудь опыт в создании чего-то подобного? Если да, прокомментируйте, пожалуйста.
Итак, модель сообщений разработана, для передачи использую IFrame, добился кроссбраузерности... теперь последняя проблема. Как из одного потока сообщить что-нибудь всем клиентам (или какой-либо группе)? Т.е. вот получил я сообщение о том, что юзер1 переместился из локации1 в локацию2 - как дать понять об этом другим? Если это невозможно из-за конструктивных особенностей PHP, придётся переходить на что-то типа Erlang.
Жжошь слои, абсолютное позиционирование, прозрачности - вариантов несколько. Нет, надо проектировать все вместе. Тебе нужен какой-то универсальный способ хранения данных. А хранить - например в формате JSON. Нет, сервер должен искать только то, что должно отображаться. o_0 O_O Бинго!! Да, это невозможно сделать средствами PHP.
в игре есть чат, который проще сделать в отдельном фрейме, он (чат) обновляецца раз в 15-30-45-60 секунд. в нем грузица некий конфиг (который везде кстати грузица) и в этом конфиге можно понапихать проверок всяких разных.
morg4n, да, решил пока делать так. [vs]: спасибо Вы не поняли. Играли когда-нибудь в HoMM? Там в замке можно навести курсор на здание, и оно подсвечивается, а нажатием мы переходим "в другую локацию". Довольно грубая аналогия, но, надеюсь, понятно. Но эта проблема уже решена. 0_О А на другом форуме мне посоветовали phpDaemon и dklab_realplexor. Ещё одна проблема: не знаю, как принять XML-файл на сервере. Отправить отправил с помощью XMLHttpRequest(), а что писать в $_POST[] в качестве идентификатора?
DenisS1 нужно кое-что осмыслить. Пхп - это язык программирования. Со всеми вытекающими: абсолютная власть, мировое господство, красные глаза... Но. Пхп создавался для работы со строками по-большей части. Раз. Двас. Пхп скриптовый. Трис. Срать на пхп. Пхп - это язык программирования. Это инструмент для решения задач. Средство достижения цели. А вот с постановкой цели и надо работать. Надо брать бумагу, ручку, все расписывать. В играх ( как впрочем в любом формализованном мире) существует три вида существ. Только три. Всегда три: объекты, события, которые происходят с объектами, и состояния в которых объекты пребывают. =) ЗЫ: я даже не программист. если не нравится то, что я говорю - просто забей =) Объект, например игрок, может быть жив, может быть мертв, может сидеть, может стоять. Это статус. Может встать, может умереть - это событие. Собственно, единственное, что от вас требуется кроме сеттинга-сценария-художеств, это расписать свою уникальную (или нет, но точно) интересную систему взаимодействия объектов.
igordata, у меня есть задумки 2-х различных боевых систем (для разных сеттингов). Если интересно - могу выложить подобие диздока. Но пока меня больше волнует реализация.