За последние 24 часа нас посетили 18903 программиста и 1608 роботов. Сейчас ищут 863 программиста ...

Создание браузерной игры с нуля (вопросы внутри)

Тема в разделе "PHP для новичков", создана пользователем DenisS1, 25 июл 2010.

  1. DenisS1

    DenisS1 Активный пользователь

    С нами с:
    25 июл 2010
    Сообщения:
    8
    Симпатии:
    0
    Здравствуйте, я знаю, что новичку такое дело одному не потянуть, поэтому пока что моя цель - довести проект до стадии привлечения энтузиастов (т.е. нужна хотя бы альфа-версия), ну и заодно выучить PHP. Первоначальные вопросы:
    1. Что лучше использовать для хранения информации - файлы или базы данных? И если базы, то лучше Oracle, MySQL или что-то другое?
    2. Какие символы являются опасными в случае, когда пользователь что-то вводит в форму, а мы потом пользуемся этой переменной? Ясно, что это ", ', < и >. А ещё? Или лучше вообще предоставить пользователю возможность вводить только буквы, цифры и пробел? (Речь о логине, нике и пароле).
    3. Если хранить данные в файлах, подойдёт ли формат CSV? И как считать в массив сразу все записи из файла, если каждая запись начинается с новой строки? Например, я пишу
    Код (Text):
    1. $my_data_values_array = fgetcsv($fh, $stat_arr[7]*4, ";");
    , а потом оказывается, что в $my_data_values_array информация только о первом игроке.
    4. Что лучше почитать по теме?
     
  2. Ensiferum

    Ensiferum Активный пользователь

    С нами с:
    11 июл 2010
    Сообщения:
    1.292
    Симпатии:
    0
    Адрес:
    из секты поклонников Нео
    В инете дофига исходников онлайн игр. Ковыряй любую.
     
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Это безнадежно чувак, это безнадежно :) Иначе бы тут у каждого второго было по 10 игр.
    Ну а вообще, в сети доступен исходный код игр - правда, безнадежно устаревший и дырявый, и вообще никому не нужный.
     
  4. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
  5. DenisS1

    DenisS1 Активный пользователь

    С нами с:
    25 июл 2010
    Сообщения:
    8
    Симпатии:
    0
    Итак, на данный момент готовы: регистрация; запоминание пользователя в печеньках; админ-панель с просмотром всех юзеров, возможностью повышать-понижать их привилегии (то бишь делать модераторами/банить) и просмотром всех локаций с возможностью редактирования их названий; сами локации (пока только домашняя, но теоретически можно наклепать их сколько угодно - был бы художник). В скором времени будет чат на AJAX.
    А, забыл сказать - игра будет убийцей "Дозоров". :) Но как такую игру сделать я не знаю, поэтому появилась куча вопросов.

    1. Как в "Дозорах" сделана вёрстка? Например, как они размещают изображение юзера поверх картинки локации? Возможно, изображение локации просто бекграунд, но как они размещают таблицу с параметрами поверх картинки юзера?

    2. Можно ли делать локации, амуницию, чат и всё такое прочее изначально не задумываясь о боёвке, а её прикрутить потом? Не возникнет ли с этим как-нибудь трудностей?

    3. Т.к. в моей игре довольно большое внимание уделяется квестам, я заранее задумался об их реализации. Допустим, игрок получил задание встретится с кем-то в локации №1. Он приходит в эту локацию и видит, что теперь при наведении мышкой на один из домов на изображении локации он подсвечивается. Это можно сделать с помощью JS и графической карты ссылок, генерируемой динамически. Вопрос в том, как хранить эту карту ссылок? Моя идея - заводить отдельную таблицу maps_of_links, в которой будут лежать строки html-кода, создающие ссылки и id локаций, к которым они относятся. При переходе на локацию сервер будет искать все графические ссылки, относящиеся к данной локации, проверять, должны ли они отображаться у этого игрока и отправлять ему индивидуальную локацию.
    В "Дозорах" это реализовано проще: вводишь номер квартиры - и ты в квестовой квартире. Но, по-моему, это сильно ограничивает квесты.
     
  6. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    DenisS1
    думаю будет интересно http://www.php.ru/forum/viewtopic.php?t=26922
    1. думаешь тут все видели дозоры? я думаю там флэш
    2.системные сообщения, об окончании\начале боя, полученном опыта выводятся в чат, не?
     
  7. morg4n

    morg4n Активный пользователь

    С нами с:
    6 авг 2010
    Сообщения:
    8
    Симпатии:
    0
    Если ты намерен написать игру полностью на пхп, то здесь возьни намного меньше)
    Данные храни, конечно же в mysql.
    Я бы на твоем месте сперва составил бы четкий план игры на бумаге, а потом перешел бы к реализации.
    И еще самая тема - дизайнер. Ибо браузерные игры не на флеше рулят только благодаря дизайну)
     
  8. DenisS1

    DenisS1 Активный пользователь

    С нами с:
    25 июл 2010
    Сообщения:
    8
    Симпатии:
    0
    Решил добавить в игру систему событий, возникли вопросы. Для наглядности нарисовал, как я это себе представляю. Есть у кого-нибудь опыт в создании чего-то подобного? Если да, прокомментируйте, пожалуйста.
    [​IMG]
     
  9. DenisS1

    DenisS1 Активный пользователь

    С нами с:
    25 июл 2010
    Сообщения:
    8
    Симпатии:
    0
    Итак, модель сообщений разработана, для передачи использую IFrame, добился кроссбраузерности... теперь последняя проблема. Как из одного потока сообщить что-нибудь всем клиентам (или какой-либо группе)? Т.е. вот получил я сообщение о том, что юзер1 переместился из локации1 в локацию2 - как дать понять об этом другим? Если это невозможно из-за конструктивных особенностей PHP, придётся переходить на что-то типа Erlang.
     
  10. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Жжошь
    слои, абсолютное позиционирование, прозрачности - вариантов несколько.
    Нет, надо проектировать все вместе.
    Тебе нужен какой-то универсальный способ хранения данных. А хранить - например в формате JSON.
    Нет, сервер должен искать только то, что должно отображаться.
    o_0
    O_O
    Бинго!! Да, это невозможно сделать средствами PHP.
     
  11. morg4n

    morg4n Активный пользователь

    С нами с:
    6 авг 2010
    Сообщения:
    8
    Симпатии:
    0
    в игре есть чат, который проще сделать в отдельном фрейме, он (чат) обновляецца раз в 15-30-45-60 секунд.
    в нем грузица некий конфиг (который везде кстати грузица) и в этом конфиге можно понапихать проверок всяких разных.
     
  12. DenisS1

    DenisS1 Активный пользователь

    С нами с:
    25 июл 2010
    Сообщения:
    8
    Симпатии:
    0
    morg4n, да, решил пока делать так.
    [vs]:
    спасибо
    Вы не поняли. Играли когда-нибудь в HoMM? Там в замке можно навести курсор на здание, и оно подсвечивается, а нажатием мы переходим "в другую локацию". Довольно грубая аналогия, но, надеюсь, понятно. Но эта проблема уже решена.
    0_О А на другом форуме мне посоветовали phpDaemon и dklab_realplexor.

    Ещё одна проблема: не знаю, как принять XML-файл на сервере. Отправить отправил с помощью XMLHttpRequest(), а что писать в $_POST[] в качестве идентификатора?
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  14. DenisS1

    DenisS1 Активный пользователь

    С нами с:
    25 июл 2010
    Сообщения:
    8
    Симпатии:
    0
    igordata, приятно, что ещё кто-то здесь смотрит этот сериал :)
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    DenisS1
    нужно кое-что осмыслить.

    Пхп - это язык программирования. Со всеми вытекающими: абсолютная власть, мировое господство, красные глаза...

    Но. Пхп создавался для работы со строками по-большей части. Раз.

    Двас. Пхп скриптовый.

    Трис. Срать на пхп. Пхп - это язык программирования. Это инструмент для решения задач. Средство достижения цели. А вот с постановкой цели и надо работать. Надо брать бумагу, ручку, все расписывать.

    В играх ( как впрочем в любом формализованном мире) существует три вида существ. Только три. Всегда три: объекты, события, которые происходят с объектами, и состояния в которых объекты пребывают.

    =)
    ЗЫ: я даже не программист. если не нравится то, что я говорю - просто забей =)

    Объект, например игрок, может быть жив, может быть мертв, может сидеть, может стоять. Это статус. Может встать, может умереть - это событие.

    Собственно, единственное, что от вас требуется кроме сеттинга-сценария-художеств, это расписать свою уникальную (или нет, но точно) интересную систему взаимодействия объектов.
     
  16. DenisS1

    DenisS1 Активный пользователь

    С нами с:
    25 июл 2010
    Сообщения:
    8
    Симпатии:
    0
    igordata, у меня есть задумки 2-х различных боевых систем (для разных сеттингов). Если интересно - могу выложить подобие диздока. Но пока меня больше волнует реализация.
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    DenisS1
    реализация взамодействия между тремя переменными тебя волнует?
     
  18. DenisS1

    DenisS1 Активный пользователь

    С нами с:
    25 июл 2010
    Сообщения:
    8
    Симпатии:
    0