Начиная с разработки игр на HTML5 - очень запутано - PullRequest
4 голосов
/ 30 октября 2011

Я бы хотел начать разработку "простой" игры на HTML5, и меня смущают многие ресурсы, которые я нашел в Интернете. У меня есть солидный опыт в разработке, но в совершенно разных средах (по иронии судьбы я начал программировать, потому что хотел стать разработчиком игр, и это единственное, чего я никогда не делал за 13 лет ...).

Путаница проистекает из того факта, что, хотя я очень хорошо знаю JavaScript и немного знаю HTML5, я не могу понять, как смешать то, что я знаю, со всеми этими новыми вещами. Например, вот о чем я думал:

  1. Игра будет реализацией шахмат. У меня есть простой «готовый» алгоритм ИИ, который я могу использовать для одного игрока; цель здесь - научиться разрабатывать игры на HTML5, поэтому в данный момент эта часть не очень важна.
  2. Я бы хотел создать сайт вокруг игры. Для этого я бы использовал «обычную» CMS, поскольку я знаю многие из них уже, и было бы быстрее ее поставить.
  3. Тогда у меня была бы сама игра, которая в своей «автономной» версии не имеет ничего общего с веб-сайтом, поскольку, насколько я понимаю, она будет жить на отдельной странице. Это первый вопрос : как сделать так, чтобы Игра узнала о сеансе пользователя? Вход в систему будет обрабатываться CMS (это должно быть намного проще, так как User Managememt уже реализован).
  4. В качестве дальнейшего шага я бы хотел перенести ИИ на сервер. Это второй вопрос : как заставить игру отправлять действия игрока на сервер и как получить ответ обратно?
  5. Позже я хотел бы добавить в игру элемент PVP, то есть многопользовательскую игру один на один (как в старых добрых шахматах). Это третий вопрос : как отправить информацию от одного клиента другому и продолжить разговор. Для этого люди рекомендовали мне взглянуть на Node.js, но это еще один элемент, который я не могу понять, как «склеить» остальное.

    Вот пример одного действия в сеансе PVP, от которого у меня уже болит голова: игрок 1 отправляет свой ход на сервер ( как игра взаимодействует с Node.js? ). Мне нужно будет определить идентификатор игры (, где и как его хранить? ), и убедиться, что игрок не изменил его вручную, чтобы он не мешал чужой игре ( как ).

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

Ответы [ 2 ]

2 голосов
/ 30 октября 2011

Слишком много вещей и, вероятно, в неправильном порядке.

Мне кажется, что многие проблемы не особенно связаны с HTML5 в первом случае.

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

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

Вы хотите перенести ИИ на сервер?Итак, убедитесь, что взаимодействие с интерфейсным пользователем взаимодействует с «интерфейсом» для записи движений игрока и получения движений AI.Учитывая это разделение, вы можете заменить AI на клиенте ajax-вызовом (хотя я ожидал, что x будет json!) Для вызова сервера с теми же параметрами .

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

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

1 голос
/ 30 октября 2011

О первом вопросе. Возможно, вы могли бы дать пользователю подписанный файл cookie.Например, создайте файл cookie, который содержит его идентификатор пользователя или около того, и хэш SHA2 его идентификатора пользователя плюс секретную длинную соль (например, соль размером 32 байта или около того).О втором вопросе: для обмена вещами и вызова удаленных функций я бы использовал библиотеку RPC dnode .О третьем вопросе: используйте то же самое для вызова методов между клиентами.

Код клиента (только пример):

    DNode.connect(function (remote) {
        this.newPeer = function(peer) {
            peer.sendChatMessage("Hello!");
        };
    });

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

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