Суть хорошего фреймворка не в том, чтобы тормозить, а в том, чтобы помогать программистам быстрее и качественнее делать их работу. Это касается, в том числе, и баланса функциональности, архитектуры и производительности.
Полностью согласен , я бы ещё обратил внимание на Eleanor Engine (времени уйдет месяца 2 , на понимание когда - но оно того стоит)
Самая большая проблема при создании карты "мира" это нагрузка и визуализация ... Как только решается проблема с нагрузкой (разработана система кэширования , причем она сделана "регионами" ). Настает время сделать мини управление
Вообщем на ум приходить AJAX и слои (+ кэш) именно такой способ взял на вооружение я. Так же реализована система перемещения по карте (кликами)
function move (a,b,c,d) /* при обращении к функции всегда отсылаются 4 параметра(так как указанно в onClick)! */ { alert (a+" | "+ b +" | "+ c +" | "+ d); }
Все уже давно поняли о твоих готовых решениях, но зачем ты начинал писать этот код? Полезнее было опубликовать процесс создания браузерки на каком-нибудь фреймворке, том же Yii, например.
Yii очень не удобен (видно я один такой, + его вес не самый лучший + неудобная иерархия файлов)
Кроме скорости. Почитай http://www.yiiframework.com/doc, пожалуйста.
Цитата (Woogy) но нету не маловажных генераторов
Сколько потребуется времени у учащихся мастеров PHP изучить документацию Yii? (ты как не думал головой - так и не думаешь.) Тебе уже писали выше , чем тебе мешает что будет простой аналог Yii? Не нравиться - игнорируй и проходи мимо.
+ 90% Yii это ненужные функции в браузерной игре.
Сообщение отредактировал Woogy - Понедельник, 04 Февраля 2013, 00:26
Я привел Yii в пример, как я уже и говорил - фреймворков множество. На вкус и цвет, как говорится, фломастеры разные. Вы говорите о изучении процесса разработки новичками, тогда, в этом случае ни о каком фреймворке не может быть и речи. Только с 0, только полное понимание процесса. Черезнесколько лет выше приведенный "проект" уже забудется, т.к. более удачные реализации фреймворков не выдерживали конкуренции, так что говорить о скрипте, который использует глобальные переменные и в чистом виде выполняется 20мс?
Дерзким ты стал:) зы (WebStrict666) Так по факту , Yii это даже не велосипед ... Да там есть скорость (но нету не маловажных генераторов, классов для работы с AJAX)
28ms? что-то очень много для такого маленького еще объема кода, у меня если без подключения бд, то мой фреймворк работает 3-6мс, с подключением к бд 8-12мс
Ну думаю увеличим скорость На данный момент ядро в разработке и улучшается постоянно
Без обид, но до гордого статуса «урока» этот текст не дотягивает. Урок — это не последовательность фраз "вставим код" — это объяснение того, что, почему и как мы делаем, здесь же никакого объяснения нет в принципе.
Хранить пароль пропущенный через md5 без солений — это всё равно, что хранить его в открытом виде — уже давно существуют необходимые базы для восстановления данных по md5. Логика обработки пароля вообще странная — зачем чистить его от тегов, у человека что, не может быть пароля "<javascript></javascript>"? Более того, зачем его чистить, эскейпить и только потом проверять его длину - она же будет отличаться от того, что ввёл пользователь. Ну а после всех чисток и проверок в базу заносится "сырой пароль" - т.е. не то, что проверяли.
И ещё вопрос по миру php: там до сих пор не пользуются фреймворками, или это особенность данного проекта?
Не понятно как вы читали статью , я ясно дал понять что это не объяснение элементарных вещей (если вам не понятно что я вставляю, думаю лучше вообще забыть о php)
Пароль я закинул в md5 чисто ради примера (соль зацепить не проблема).
не понял по поводу мира PHP - перефразируйте предложение чтоб его кто то понимал , кроме вас.
И так всем привет! Как и было обещенно, для ядра TigaEngine будет выпущен ряд уроков по созданию браузерной игры (экономической стратегии) Первое что вам надо понять , я показываю пример создания браузерной игры (а не учу вас основам программирования), далее необходимо запастись временем ,терпением и безмерным количеством кофе
В качестве основы будет использоваться TigaEngine (написанный на PHP и имеющий свою архитектуру), в качестве Суб БД будет использоваться MYSQL - но как же PDO ? - как я уже говорил я не учу вас основам программирования , mysql - это просто (но если есть знания используйте PDO). Дабы придать игре динамичность - используем JQuery(я также не буду вас обучасть элементарным вещам JQ,JS)
Начнем с модуля авторизации и разделения контента для гостей и игроков :) Шаг 1 (описание и создание баз) Не мало важно правельно создать базу данных , сейчас мы создадим 3 базы , не будем танцивать с бубном ...
Первая таблица : users - таблица пользователей
id - уникальный индификатор
login - логин
password - пароль
email - мыло
tribe - Расса
access - права (админ, модер, игрок)
gold - золото (доннатан валюта)
silver - серебро (валюта для доннатана (меняется на голд))
reg_ip - айпи при регистрации
Вторая база : online - таблица игроков находящихся в игре
login - Логин
time - Время авторизации
Третья таблица : active - таблица содержащая информацию по авторизации учетных записей
uid - айди учетной записи
time - время активациии (день и тд...)
CREATE TABLE IF NOT EXISTS `active` ( `uid` int(11) NOT NULL, `time` int(11) NOT NULL, `ip` varchar(15) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `online` ( `login` varchar(16) NOT NULL, `time` int(11) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `login` varchar(16) NOT NULL, `password` varchar(32) NOT NULL, `email` varchar(64) NOT NULL, `tribe` int(11) NOT NULL DEFAULT '1', `access` enum('0','1','2','3') NOT NULL DEFAULT '1', `gold` int(11) NOT NULL, `silver` int(11) NOT NULL, `reg_ip` varchar(15) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Шаг 2 ( кодинг )
Далее зайдем в engine/classes/Session.php Найдемprivate $time;после добавим
Код
var $logged_in = false; var $referrer, $url; public $userinfo = array();
Теперь когда у нас есть авторизация , нам нужна регистрация Модуль регистрации очень прост! Начнем Заходим в engine/mods/ и создаем файл register.php и всатвляем код
Код
<?php
/* +-------------------------------------------------------------------------- | TigaEngine | ======================================== | By Tiga Team | | ======================================== | register.php - модуль регистрации */
if (!defined('TIGA_RUN')) { die($lang_core['access_deniend']); }
Далее нам надо проверить передана ли нам форма , после}Добавим код
Идея хорошая Я бы не стал делать шаблонизатор именно для браузерки, все таки пусть хоть и не очень много ресурсов он ест, но чем меньше тем лучше(+память еще) В htaccess нужно добавить RewriteCond %{REQUEST_URI} !\.(css|gif|ico|jpg|js|png|txt)$, т.к. современные браузеры отдельно делают запрос на Favicon.ico, если эту строчку не написать, то у тебя всегда будет 2 запроса выполняться, а это очень плохо для нагрузки, да и проблемы могут возникнуть то, что сразу делаешь интернациональность(языковые файлы перевода) - это + Вместо mysql обычного, все таки лучше использовать PDO Использование global $tpl и др. глобальных переменных все-таки это плохо, если мы говорим об ООП, лучше сделай их static в классе и все Если знаешь некоторые паттерны(шаблоны) программирования, лучше их внедрить Пока все
Принял к сведению С потернами обдумаю, насчёт global - полностью согласен (изменим к 1-й версии ядра). Ядро обновлено до 2-й ревизии. Завтра планируется выпустить 1-й урок
Woogy, ты вообще скрины сморел?там из базы подгружается содержание через запятую.
Так в чем проблема? извликите содержание столбца(те самые данные "через запятую") воспользуйтесь функцией rtrim, далее for и проверяйте что хотите... Дело в том что вы неверно составили таблицу (не самый лучший способ)