Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2012, 21:11   #41
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Это была авторизация, а регистрация имеет следующий вид (см. рисунок). Регистрация одноступенчатая, то есть после ввода всех данных (корректных) можно сразу приступать к игре. Отмечу следующие моменты:
  • У меня пароль вводиться один раз и без звёздочек. Это не очень удачный подход, который я советую использовать с умом.
  • У меня e-mail нужен только для восстановления пароля. Его корректность не проверяется (можно даже это поле не заполнять); писем активации не высылается. Если пользователь не вводит e-mail, то рискует возможностью восстановить аккаунт.
  • Обязательно используется капча, дабы была защита от регистрации ботов. Прошу обратить внимание на капчу – это kcaptcha v.2 (открытый код в сети). Данную капчу ни один бот не распознает, гарантирую это.
Так же как и при авторизации здесь есть подсказки и информационные окна.

С функциями показа справки и истории проблем не возникло, т.к. они аналогичны игровым. И наконец в игровое меню была добавлена кнопка выхода в главное меню.
Изображения
Тип файла: jpg reg.jpg (26.1 Кб, 316 просмотров)
Виталий Желтяков вне форума Ответить с цитированием
Старый 14.09.2012, 09:50   #42
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

Цитата:
У меня e-mail нужен только для восстановления пароля. Его корректность не проверяется (можно даже это поле не заполнять); писем активации не высылается. Если пользователь не вводит e-mail, то рискует возможностью восстановить аккаунт.
Надо где-нибудь рядом с полем для заполнения сделать ссылку на разъяснение такого рода (или всплывающую подсказку какую), что бы пользователь потом через неделю игры не стал писать Вам гневные письма. То есть писать все равно будут, но по-крайней мере они будут сами виноваты в своей невнимательности.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 14.09.2012, 12:11   #43
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Цитата:
Надо где-нибудь рядом с полем для заполнения сделать ссылку на разъяснение такого рода (или всплывающую подсказку какую), что бы пользователь потом через неделю игры не стал писать Вам гневные письма. То есть писать все равно будут, но по-крайней мере они будут сами виноваты в своей невнимательности.
Подсказка будет.
Это не очень критичный момент, т.к. при интеграции с соц.сетями регистрация сама по себе отпадает.
Виталий Желтяков вне форума Ответить с цитированием
Старый 15.09.2012, 22:12   #44
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

14.09.12 – День 172
Добавил функции смены пароля и e-mail в стартовом меню. Тут достаточно всё просто, но нужно отметить важный момент – для смены пароля и e-mail пользователю требуется ввести текущий пароль. Почему это так важно? Ведь данные действия доступны только авторизированным пользователям. Дело в том, что используя смену пароля и e-mail злоумышленник может «увести» аккаунт игрока. Как я писал ранее, злоумышленник может получить доступ двумя способами: перехватом пароля и кражей кук. Таким образом, требованием ввода пароля мы исключаем кражу аккаунта с при помощи кражи кук.

Пока писал этот текст, понял, что забыл добавить пункт «Восстановить пароль». Да, бывает и такое, что планируешь, чертишь схемы, и вот уже заканчиваешь писать код, как выясняешь, что забыл важную деталь. Надо будет добавить этот пункт в меню авторизации.

При тестировании работы новых пунктов меню я обнаружил весьма показательную ошибку, о которой стоит рассказать новичкам.

Большую часть модулей для игры я беру из старых проверенных проектов. У каждого программиста со временем формируется свой собственный набор решений для тех или иных задач. У меня тоже есть такой набор. При тестировании функций смены e-mail в данном проекте я обнаружил, что любой e-mail сбрасывается на пустой. После небольшой проверки я убедился, что проблема в главном модуле фильтрации входных данных. Это меня очень удивило, так как данный модуль я использую на протяжении нескольких лет, без каких-либо нареканий.

Модуль фильтрации входных данный представляет собой три функции:
  • Удаление лишних пробелов;
  • Проверка на запрещённые слова (которые используются при инъекциях) с записью в логи.
  • Проверка по «белому списку» символов запроса.
Ошибку мог вызвать только этот «белый список» (список разрешённых символов). Из себя он представляет обычную регулярку, аналогичную той, которую я использовал на клиенте. Так же я после нескольких тестов понял, что проблема в символе @. Это поставило меня в тупик. Данный модуль фильтрации использовался мною в нескольких проектах и во всех них была работа с e-mail и соответственно символ @ там проходил эту фильтрацию без всяких проблем.

Истинную причину ошибки мне помог обнаружить xdebug. Без него я бы, наверное, застрял бы на несколько дней с этой ошибкой. Совет новичкам: используйте профилирование скриптов в xdebug, оно колоссально сокращает время отладки и поиска сложных ошибок.

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

Мораль столь длинного рассказа об ошибке такова:
  • Даже сотни раз проверенный код может стать ошибочным при изменении условий;
  • Тестировать нужно всегда, даже когда уверен на 99%;
  • Используйте xdebug.
Виталий Желтяков вне форума Ответить с цитированием
Старый 17.09.2012, 07:28   #45
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

Цитата:
Сообщение от Виталий Желтяков Посмотреть сообщение
Подсказка будет.
Это не очень критичный момент, т.к. при интеграции с соц.сетями регистрация сама по себе отпадает.
Я не зареган не в одной из соцсетей, что же мне теперь не поиграть в Вашу игру ?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 17.09.2012, 08:56   #46
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Цитата:
Я не зареган не в одной из соцсетей, что же мне теперь не поиграть в Вашу игру ?
Нет, сможете поиграть. Будет несколько серверов игры. Один отдельный с обычной регистрацией и авторизацией, другой для Вконтакте, другой для mail и четвёртый для Одноклассников. Если будет возможность, то будет также сервер для Фейсбук.
Виталий Желтяков вне форума Ответить с цитированием
Старый 22.09.2012, 23:19   #47
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

22.09.12 – День 173
Закончил добавление подсказок для стартового меню. То, что получилось, можно увидеть на рисунке (курсор находиться над полем ввода e-mail-а).

Несмотря на небольшой объём работ, я потратил очень много времени на это. Причина: баг с показом подсказок.

Для отображения подсказок я использую свой собственный jQuery-плагин, который автоматически создаёт подсказки для всех элементов с не типизированным атрибутом «hint». Так как много элементов (в том числе стартовое меню) создаются динамически, то приходиться отдельно включать отображение подсказок для новых элементов. Чтобы постоянно не перебирать новые элементы, я создал функцию SetHints(), которая включает подсказки для всех элементов с атрибутом «hint».

Баг состоял в том, что для стартового меню SetHints() не работало. Я провел 3 часа за отладкой кода и так и не понял, на каком этапе происходит ошибка. Самое удивительное, что если задать отображение подсказок напрямую к конкретному элементу, то всё работает. В итоге всё сделал этим обходным путём. Баг внёс в журнал ошибок.

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

Психологически, это очень трудный момент. Во время таких ситуаций разработчику приходит понимание всей сложности проекта и ничтожности его сил. Очень часто разработчики «застревают» в таких ситуациях и оставляют разработку проекта.

Могу дать по этому поводу несколько советов:
  • Не думайте, что с Вами этого не произойдёт или Вы легко это преодолеете. Это происходит со всеми разработчиками-одиночками и это одинаково тяжело.
  • Если возможно, используйте помощь со стороны. Например, на этом форуме.
  • Не застревайте на ошибке. Не можете решить проблему, обходите её, даже если многое придётся менять.
  • Ведите журнал ошибок. Возможно, Вы когда-нибудь поймёте, как их исправить.
Изображения
Тип файла: jpg hint.jpg (50.8 Кб, 254 просмотров)
Виталий Желтяков вне форума Ответить с цитированием
Старый 24.09.2012, 15:18   #48
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Цитата:
Сообщение от Виталий Желтяков
Могу дать по этому поводу несколько советов:
  • Не думайте, что с Вами этого не произойдёт или Вы легко это преодолеете. Это происходит со всеми разработчиками-одиночками и это одинаково тяжело.
  • Если возможно, используйте помощь со стороны. Например, на этом форуме.
  • Не застревайте на ошибке. Не можете решить проблему, обходите её, даже если многое придётся менять.
  • Ведите журнал ошибок. Возможно, Вы когда-нибудь поймёте, как их исправить.
Сюда же еще два пункта:
  • Создавайте красивый и визуально понятный код, в нем легче найти ошибки.
  • Не ленитесь сопровождать код полным описанием (комментарии), лучше над каждой строчкой кода и по блокам/процедурам/функциям, так, если бы вы создавали код для того, кто в нем ничего не понимает, а с комментариями поймет сразу, ...т.е., извините, как для барана.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 24.09.2012, 22:28   #49
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

Цитата:
лучше над каждой строчкой кода и по блокам/процедурам/функциям
Это уж слишком. Достаточно обозначить основные моменты. Бараны всё равно не будут браться за исправление кода.

Раз уж зашел разговор об оформлении, то поделюсь лайфхаком:
- Ошибки или места, требующие доработки, обозначайте специальным словом.
Например, я использую //!!!!
Если я захочу заняться исправлением ошибок или буду проводить тестирование, то достаточно осуществить поиск по этому слову, и всех недоработки будут найдены.
Виталий Желтяков вне форума Ответить с цитированием
Старый 25.09.2012, 21:31   #50
VmanMaslov
Форумчанин
 
Аватар для VmanMaslov
 
Регистрация: 12.06.2011
Сообщений: 115
По умолчанию

Очень интерестная тема, но хотелось бы уточнить какой именно функционал будет у игрока? Тоесть браузерных игр, где просто нужно ходить, убивать мобов и, в перерывах, покупать новую амуницию итак слишком много. Тут уже нужны приятные мелочи типа возможности иметь питомца или транспорт и т.д. Будет ли что-то подобное у Вас? И что, если конечно не секрет и не рано об этом говорить?)
Men do it in ASCII!
VmanMaslov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Электронный дневник на Joomla sashmedv WordPress и другие CMS 6 26.01.2012 12:53
Что нужно знать для разработчика игр. 13th Свободное общение 38 14.01.2012 17:32
Дневник изучения С++ Arcanis Общие вопросы C/C++ 2 26.05.2011 12:09
Дневник в Delphi TaYgA Помощь студентам 18 12.10.2009 17:56