http://8b.kz/5TSx делаю потихоньку браузерную стратегию, когда есть свободное время.. Сейчас простейшая текстовая версия (за 3 дня сделал), нету ничего есть только регистрация/вход, постройка зданий Теперь придумаю что-нибудь с графикой, думаю, что буду делать на WebGL Немного об архитектуре: В качестве основы используется что-то вроде самописного фреймоворка с MVC архитектурой, основные сущности игры вынесены в отдельные классы, работа с игровыми данными происходит с помощью моделей (пока не везде, но будет именно так) Хотел бы посоветоваться, может кто участвовал в разработке подобных проектов? Как в них обычно устроена архитектура?
Используй для ввода пароля поле типа password, чтобы символы скрывало, для начала... Добавлено спустя 2 минуты 33 секунды: И да, ядро программное - это kernel, а не core. /core/classes/core.php - это не солидно. Добавлено спустя 3 минуты 3 секунды: У тебя нет защиты от прямого вызова скриптов. Добавлено спустя 1 минуту 58 секунд: Во вьюшке map'а зачем-то на четвертой строке юзаешь $this, хотя это не объект. Инклюдить вовнутрь какого-то класса собираешься? Архитектура внешне выглядит логичной, внутри же пока хаос полный. Добавлено спустя 1 минуту 14 секунд: При регистрации не проводится никакой валидации введенных данных. Добавлено спустя 4 минуты 19 секунд: Привязка методов напрямую к id в URL - зря. Добавлено спустя 19 минут 31 секунду: По одному SQL-запросу на каждый чих делать тоже не круто Добавлено спустя 4 минуты 26 секунд: У тебя планеты, чтоли, жестко в коде прописаны, а не в БД хранятся? Добавлено спустя 7 минут 34 секунды: Пароли зачем в открытом виде хранишь? Добавлено спустя 42 минуты 31 секунду: Дыра на дыре дырой погоняет.. Добавлено спустя 35 секунд: Бро, забей на "постройки", у тебя то, что есть, до ума доводить и доводить. Добавлено спустя 9 минут 5 секунд: А еще вот тебе CSRF-атака : Если ты был залогинен, то, после просмотра этого поста, тебя разлогинит. И будет разлогинивать после каждого обновления поста. Добавлено спустя 5 минут 4 секунды: Fatal error: Class 'core' not found in /home/u812442636/public_html/index.php on line 23 Ну таки, коль стал переименовывать, делать это надо не на боевом сервере, а на тестовом. На боевой же надо выкладывать уже готовую сборку. Добавлено спустя 1 минуту 50 секунд: Ну или у тебя какой-то плавающий баг. Воспроизвести ошибку не удалось. Если так, то удачи, чоу. Добавлено спустя 1 минуту 11 секунд: Да, вижу, названия файлов на сервере ты не менял. Ну тогда плохие новости для тебя, у тебя какая-то плавающая бажня. Добавлено спустя 27 секунд: Все, всем пока, вернусь только через неделю.
Спасибо за замечания, буду исправлять потихоньку) первый раз делаю подобный проект, хочу опыта поднабраться. Есть где-нибудь пример подобной игры с "правильной" архитектурой? Хочу посмотреть, как там всё сделано
Правильный пример это понятие алгоритма, чтение теории и книг. Архитектура строится от задачи. Тебе нужно составить как можно подробный план всех возможных действий в твоей системе, с блок схемами. Если этого нет, то не понятно что ты делаешь.
Смысл игры примерно такой: После регистрации игроку будет предоставлена возможность управления планетой. На этой планете он может строить здания, собирать ресурсы, тренировать юнитов, изучать науки. Планет у игрока может быть несколько, на каждой своя система добычи ресурсов (зависит от различных факторов: тип планеты(земная, каменная, газовая), от добывающих построек (шахт, карьеров и т.д..)). У различных построек может быть разная логика, некоторые увеличивают добычу ресурсов, некоторые позволяют тренировать юнитов, торговать с игроками на других планетах и т.д.. Всяких возможностей в планах множество. При выборе построенного здания на планете будет открываться список возможностей, которые есть у этого здания. Насчёт изучения технологий: в планах довольно сложная система. Список технологий представлен как дерево, вот например как на этой картинке (не моя, взята из другой игры): После изучения технологии будут открываться многие новые возможности: новые доступные здания, новые юниты, новые виды ресурсов, новые технологии для изучения. К тому же определённая технология может не только что-то добавлять, но и влиять на различные игровые факторы: время постройки зданий, время тренировки юнитов, время, которое тратит юнит, чтобы перелететь на другую планету. Надеюсь, что более менее понятно описал идею Теперь же нужно всё это грамотно спроектировать, чтобы игра была максимально расширяемой, без проблем можно было бы добавить новый элемент (здание, юнит, технологию)
Ну вот когда будет готов документ на 100-200 страниц с описанием всего и вся, тогда и станет понятно какой код писать и какими инструментами пользоваться.
уже многое продумано и описано.. Сейчас например логика зданий представлена так: есть класс, который представляет эту логику, в нём есть методы, которые выполняются при наступлении какого-либо события, связанного с зданием (здание начинает строиться, постройка завершена, игрок вошёл в здание). С помощью этих методов и строится логика зданий. Так же хочу сделать и с технологиями. Пример кода логики здания я привёл в первом сообщении
Автор рисует схемы со зданиями из AoE и пишет грамотно. Грех не помочь. Тебе нужно следующее: 1) Почитать, что такое деревья в программировании; 2) Разработать для себя административную часть, которая позволила бы легко добавлять в дерево технологий/строений новые элементы и ветви; 3) Твоя проблема, точнее твоей архитектруры, сейчас в том, что на каждый объект у тебя отдельный код, отдельные классы. А так быть не должно. Должен быть один класс, например "node", которому можно дать имя, у которого есть набор свойств и тд. И каждый объект в игре будет экземпляром этого класса. В общем уходи в абстракцию. Ее легче поддерживать, с ней легче работать, ее легче развивать. 4) Подумай, как хранить уже существующие структуры - определенная схема таблиц, или как-то еще. Прикинь, чтобы по мере роста посетителей, у тебя нагрузка не пошла в рост по экспоненте. 5) Каждый узел имеет набор модификаторов для конкретной планеты. Их совокупность описывает состояние развития.