Уроки по созданию браузерной игры
| |
Assasin | Дата: Суббота, 10 Октября 2009, 13:49 | Сообщение # 1 |
web-coder
Сейчас нет на сайте
| Урок № 1 Обсуждение игры. Создание БД
Появилась такая идея как создать курс по теме: «Создание браузерной флеш игры». В этом курсе будет описываться главные аспекты игры, также, надеюсь, под конец курса многие поймут как делаються такие игры. Может возьмут этот курс за основу для своей будущей игры. Все уроки которые будут здесь написаны, будут максимально прокоментированы, если что то не понятно, то задавайте вопросы сразу в той теме в которой написан урок.
Что понадобиться: PSPad – программа для написания php скриптов ( можно и другие, но я пользуюсь этой и привык к ней ). FlashDevelop – для написания флеш модулей ( далее буду писать его сокращенно FD) xampp — сборка веб-сервера ( будем тестировать наши скрипты )
Так как я не очень хорошо рисую, все картинки буду брать из конструктора RPG Maker. Думаю с программами определились, перейдем к описанию уроков.
Уроки: 1. Урок № 1 Обсуждение игры. Создание БД (MySQL)(линк) 2. Урок № 2 Создание формы входа и I этап регистрации (php, html, MySQL,css)(линк) 3. Урок № 3 II этап регистрации (php, FD, MySQL)(линк) 4. Урок № 4 Игровое окно. Техническое описание чата (php, FD, MySQL)(линк) 5. Урок № 5 Создание чата (php, FD, MySQL)(линк) 6. Урок № 6 Создание характеристик чара (php, FD, MySQL)(линк) 7. Урок № 7 Техническое описание инвентаря(линк) 8. Урок № 8 Создание инвентаря (php, FD, MySQL)(линк) 9. Урок № 9 Игровое поле (FD)(линк) 10. Урок № 10 Создание обьектов на игровом поле (FD)(линк) 11. Урок № 11 Создание квеста (php, FD, MySQL)(линк) 12. Урок № 12 Техническое описание модуля боя(линк) 13. Урок № 13 Создание модуля боя (php, FD, MySQL) 14. Урок № 14 Подведем итоги
Вот такой перечень уроков. Уроки буду писать основываясь на собственном опыте, ни в каких книгах вы их не найдете, так что и не думайте что я с какой то книжки все это переписываю. Думаю по одному уроку в день писать, но как вы знаете теория и практика совершенно разные вещи, так что тогда извеняйте и ждите В каждом уроке буду все детально расписывать, ведь курс расчитан на новичков, людей еще не опытных в сфере создания игр.
Архив содержит: - 22 php файла - 1 log файл - 11 swf файлов - 2 файла css - 1 папка - 22 png файла - 2 jpg файла СКАЧАТЬ: depositfiles.com narod.yandex.ru Исходники флешек: depositfiles.com narod.yandex.ru Пароль на архив: gcup.ru
База данных Итак начнем с сердца игры, ее Базы Данных (далее БД). Для чего она нужна? В ней будут храниться все данные, такие как: характеристики персонажа, сообщения в чате, какие предметы находяться в инвентаре и т.д. Мы будем пользоваться БД MySQL, так как она очень хорошо подходит для наших php скриптов. БД хранит в себе таблицы, в каждой таблице находяться столбцы, например таблица «users» имеет 3 столбца: “login”, “pass”, “email”. Думаю с этим разобрались.
У нас будет 7 таблиц: users – хранит все характеристики игрока avatar – хранит вид персонажа chat – хранит сообщения чата inventar – отображает какие вещи в инвентаре quest – хранит данные о квесте battle – хранит данные о боях enemy – хранит данные о врагах
В дальнейшем БД может дополниться. Теперь рассмотрим каждую таблицу отдельно. В таблице users будем хранить такие данные: id_user – уникальный номер персонажа email — email игрока, по нему будет осуществляться вход в игру pass - пароль name — имя игрока, будет отображаться в самой игре и в чате life – жизни персонажа atk — значение атаки def - значение защиты lov – значение ловкости lvl – уровень игрока exp – опыт игрока В таблице avatar такие данные: id_ava – уникальный номер аватарки gander – какого пола персонаж vid – какой вид у персонажа path – путь к папке с картинками персонажа В таблице chat такие данные: id_msg – уникальный номер сообщения msg – сообщение time_msg – время когда было написано сообщение wrt_user – кто написал who – кому написали В таблице inventar такие данные: id_inv – уникальный номер вещи name_object – название вещи atk_up – сколько добавляет к атаке def_up - сколько добавляет к защите lov_up - сколько добавляет к ловкости life_up - сколько добавляет к жизням В таблице quest такие данные: id_quest – уникальный номер квеста cont_quest – завершен квест или нет? kill_quest – сколько убито противников В таблице battle такие данные: id_btl – уникальный номер битвы end_btl – исход битвы ( выиграли вы или проиграли ) В таблице enemy такие данные: id_enm – уникальный номер врага name_enm – имя врага life_enm – жизни врага atk_enm - атака def_enm - защита lov_enm - ловкость exp_enm – сколько опыта даст если победить его path_enm – путь к картинкам врага
Думаю все, если чего то не хватает, то по ходу написания доделаем. С установкой xampp я думаю разобрались. Теперь запустите его, в xampp Control Panel должно быть запущено Apache и MySQL, все остальное выключено. Напротив MySQL есть кнопка Admin, жмите на нее и попадете в утилиту phpMyAdmin, которая позволяет создавать БД. В открывшемся окне браузера находим вкладку SQL и жмем ее (картинка). Теперь пришло время создать нашу БД, а также ознакомиться со скриптовым языком SQL. Ниже приведен код и прокоментирован, если все таки возникнут вопросы, то задавайте. Код CREATE DATABASE testgame DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci; /* Создаем БД со стандартной кодировкой cp1251(для того что б поддерживался русский язык)*/ USE testgame; /* используем данную БД */
/* таблица персонажа */ CREATE TABLE `users` ( id_user bigint(20) unsigned NOT NULL auto_increment, /* уникальный номер, который не повторяеться и с каждым новым пользователем увеличиваеться на 1 */ email CHAR(64), /* текстовый тип (64 символа) */ pass CHAR(32), /* текстовый тип (32 символа) */ name CHAR(32), /* текстовый тип (32 символа) */ life INT DEFAULT 50, /* числовой тип, по умолчанию равен 50 */ atk INT DEFAULT 7, /* числовой тип, по умолчанию равен 7 */ def INT DEFAULT 5, /* числовой тип, по умолчанию равен 5 */ lov INT DEFAULT 7, /* числовой тип, по умолчанию равен 7 */ lvl INT DEFAULT 1, /* числовой тип, по умолчанию равен 1 */ exp INT DEFAULT 0, /* числовой тип, по умолчанию равен 0 */ PRIMARY KEY (`id_user`) /* Показываем что уникальным номером у нас являеться id_user */ ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; /* Обозначаем тип таблицы MyISAM. Таблицы типа MyISAM показывают хорошие результаты при выборках SELECT. Для .jktt подробного изучения читайте Самоучитель по MySQL 5 */
/* таблица аватара */ CREATE TABLE `avatar` ( id_ava bigint(20) unsigned NOT NULL auto_increment, /* уникальный номер, который не повторяеться и с каждым новым пользователем увеличиваеться на 1 */ gander SMALLINT(1), /* Пол игрока, цыфровой тип(1 цыфра) */ vid SMALLINT(2), /* Вид игрока, цыфровой тип(2 цыфры)*/ path CHAR(32), /* Путь к папке с рисунками персонажа, текстовый тип(32 символа) */ PRIMARY KEY (`id_ava`) /* Показываем что уникальным номером у нас являеться id_ava */ ) TYPE=MyISAM;
/* таблица чата */ CREATE TABLE `chat` ( id_msg bigint(20) unsigned NOT NULL auto_increment, /* уникальный номер, который не повторяеться и с каждым новым пользователем увеличиваеться на 1 */ msg CHAR(255), /* текстовый тип(255 символов) */ time_msg CHAR(5), /* текстовый тип(5 символов) */ wrt_user CHAR(32), /* текстовый тип(32 символов) */ who CHAR(32), /* текстовый тип(32 символов) */ PRIMARY KEY (`id_msg`) /* Показываем что уникальным номером у нас являеться id_msg */ ) TYPE=MyISAM;
/* таблица инвентаря */ CREATE TABLE `inventar` ( id_inv bigint(20) unsigned NOT NULL auto_increment, /* уникальный номер, который не повторяеться и с каждым новым пользователем увеличиваеться на 1 */ name_object CHAR(64), atk_up INT(2), def_up INT(2), lov_up INT(2), life_up INT(4), PRIMARY KEY (`id_inv`) /* Показываем что уникальным номером у нас являеться id_msg */ ) TYPE=MyISAM;
/* таблица квеста */ CREATE TABLE `quest` ( id_quest bigint(20) unsigned NOT NULL auto_increment, cont_quest CHAR(32), kill_quest INT DEFAULT 0, PRIMARY KEY (`id_quest`) ) TYPE=MyISAM;
/* таблица боя */ CREATE TABLE `battle` ( id_btl bigint(20) unsigned NOT NULL auto_increment, end_btl CHAR(32), PRIMARY KEY (`id_btl`) ) TYPE=MyISAM;
/* */ CREATE TABLE `enemy` ( id_enm bigint(20) unsigned NOT NULL auto_increment, name_enm CHAR(32), atk_enm INT, life_enm INT, def_enm INT, lov_enm INT, exp_enm INT, path_enm CH AR(32), PRIMARY KEY (`id_enm`) ) TYPE=MyISAM;
/* Добавляем в таблицу данные о враге */ INSERT INTO enemy (name_enm, atk_enm,life_enm,def_enm,lov_enm,exp_enm,path_enm) VALUES('Призраки','7','40','6','4','10','path/enemy/');
С таблицей справились, проверяем, все нормально. SQL запрос прошел удачно. На этом урок заканчиваеться, ждите продожения
Если возникли вопросы пишите в этой теме. Если есть какие то подправки в код, тоже пишите, так как я так же как и вы учусь создавать браузерную флеш игру и тоже могу ошибаться.
При копировании материала ссылка на источник обязательна!
|
|
| | |
777OLEKSEY777 | Дата: Воскресенье, 11 Октября 2009, 13:24 | Сообщение # 3 |
Руководитель и 3D дизайнер в IlluGameTea Studio
Сейчас нет на сайте
| Закрепил
|
|
| |
Wowwarcraft | Дата: Воскресенье, 11 Октября 2009, 13:54 | Сообщение # 4 |
частый гость
Сейчас нет на сайте
| Автор-супер!!! Буду ждать...
|
|
| |
kALIFE | Дата: Понедельник, 12 Октября 2009, 02:23 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| хмм чувак продолжай в том же духе +1 Добавлено (12.10.2009, 02:23) --------------------------------------------- смотри какая у меня CREATE TABLE `avatar` ( `id_ava` BIGINT( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT , `gander` SMALLINT( 1 ) NOT NULL , `vid` SMALLINT( 2 ) NOT NULL , `path` CHAR( 32 ) NOT NULL , PRIMARY KEY ( `id_ava` ) ) ENGINE = MYISAM ; твоя: * таблица аватара */ CREATE TABLE `avatar` ( id_ava bigint(20) unsigned NOT NULL auto_increment, gander SMALLINT(1), vid SMALLINT(2), path CHAR(32), PRIMARY KEY (`id_ava`) ) TYPE=MyISAM; меня интересует какая разница между engine и type и как это поменять !? и в таблице enemy не понил вот это: /* Добавляем в таблицу данные о враге */ INSERT INTO enemy (name_enm, atk_enm,life_enm,def_enm,lov_enm,exp_enm,path_enm) VALUES('Призраки','7','40','6','4','10','path/enemy/'); вставлять куда то нажимая изменить и вставить этот код или как ? спасиб.
Сообщение отредактировал kALIFE - Понедельник, 12 Октября 2009, 02:42 |
|
| |
Assasin | Дата: Понедельник, 12 Октября 2009, 14:39 | Сообщение # 6 |
web-coder
Сейчас нет на сайте
| kALIFE, Цитата из книги "Самоучитель MySQL 5": Quote Использование ключевого слова ENGINE являеться более предпочтительным, но в отличии от TYPE не может быть использовано в версиях MySQL младше, чем 4.0.18. Тоесть другими словами можно сказть что никакой разницы нету если ты используешь MySQL 5 версии. Quote (kALIFE) и в таблице enemy не понил вот это: /* Добавляем в таблицу данные о враге */ INSERT INTO enemy (name_enm, atk_enm,life_enm,def_enm,lov_enm,exp_enm,path_enm) VALUES('Призраки','7','40','6','4','10','path/enemy/'); вставлять куда то нажимая изменить и вставить этот код или как ? спасиб. Это в БД ты добавил запись которая отображает, что у нас есть враг и зовут его Призрак с параметрами атаки, защиты и т.д. Этот код вставляеться вместе с остальным в данное поле картинка
|
|
| |
Frozenboy | Дата: Пятница, 16 Октября 2009, 23:45 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| Автор молодец, однозначный респект уже проделал далеко не малую работу! Супер!!!!
|
|
| |
Weiss | Дата: Среда, 21 Октября 2009, 19:55 | Сообщение # 8 |
был не раз
Сейчас нет на сайте
| Спасибо за уроки ждем продолжения
Сообщение отредактировал Weiss - Среда, 21 Октября 2009, 20:00 |
|
| |
flexdiez | Дата: Вторник, 27 Октября 2009, 07:17 | Сообщение # 9 |
уже был
Сейчас нет на сайте
| Супер! Давно искал подобное! Автору респект!
|
|
| |
Инфро | Дата: Четверг, 05 Ноября 2009, 01:36 | Сообщение # 10 |
частый гость
Сейчас нет на сайте
| Огромное спасибо автору! Жду продолжения!
|
|
| |
Accede | Дата: Среда, 11 Ноября 2009, 08:22 | Сообщение # 11 |
был не раз
Сейчас нет на сайте
| Молодца!! Тока если запалил, то давай раздувай!! Спасибо! Добавлено (11.11.2009, 08:22) --------------------------------------------- Ошибка SQL-запрос: DROP DATABASE testgame; Ответ MySQL: #1008 - Can't drop database 'testgame'; database doesn't exist Что это? Что не так?
я только учусь....
|
|
| |
Zeleboba | Дата: Среда, 11 Ноября 2009, 11:29 | Сообщение # 12 |
постоянный участник
Сейчас нет на сайте
| Запрс на удаление БД а так как у тебя нету этой базы данных тебе и выводит ошибку, типо удалять нечего. Нужно было использовать в sql запросе if exits (или как то так.) Или вообще удалить строки с удалением и созданием БД, они нафиг не нужны, базу и ручками не сложно создать.
Сообщение отредактировал Zeleboba - Среда, 11 Ноября 2009, 11:30 |
|
| |
Assasin | Дата: Среда, 11 Ноября 2009, 18:25 | Сообщение # 13 |
web-coder
Сейчас нет на сайте
| Это я для себя удаление сделал, так как очень часто приходилось удалять. В посте исправлю, а ручками не делал, так как привык кодом.
|
|
| |
Torbin | Дата: Четверг, 19 Ноября 2009, 00:51 | Сообщение # 14 |
был не раз
Сейчас нет на сайте
| Автору огромное спасибо, начал вместе с ним делать - разбираться - понимать, основы программирования и создания браузерных игр, буду следить за каждым уроком Сам абсолютный нуб в этом деле, но обучаемый нуб В свое время методом "тыка" овладел навыками фотошопа, сейчас иногда подрабатываю в фотостудии Так что буду учиться и вникать! Единственное "НО" в коде БД это name_enm CHAR(32), atk_enm INT, life_enm INT, def_enm INT, lov_enm INT, exp_enm INT, path_enm CH AR(32), не понятные пробелы между словом CH AR(32), мускулу не понравилось, но это видимо чтобы мы не расслаблялись П.с. Еще хотел бы задать вопрос не по теме: А навыками программирования, возможно овладеть не имея начальных знаний основ программ? также как я в свое время овладел фотошопом, совершенно не зная его ?
|
|
| |
Assasin | Дата: Четверг, 19 Ноября 2009, 12:36 | Сообщение # 15 |
web-coder
Сейчас нет на сайте
| Quote (Torbin) возможно овладеть не имея начальных знаний основ программ Насчет программ - возможно, методом тыка, я тому пример FlashDevelop абсолютно не знал, стал вникать в него когда писал уроки, а потом разобрался и пошло-поехало. --------- Пост подправил, теперь CHAR нормально пишеться.
|
|
| |
Co3Da10uGpy | Дата: Суббота, 21 Ноября 2009, 15:20 | Сообщение # 16 |
уже был
Сейчас нет на сайте
| Assasin, пожалуйста, дай свои контакты (скайп, ася)
|
|
| |
ossiristravel | Дата: Воскресенье, 22 Ноября 2009, 13:00 | Сообщение # 17 |
уже был
Сейчас нет на сайте
| у меня проблема кнопка админ не нажимается(белая) кто может помогите скайп ossiristravel или суды)
|
|
| |
SizeOne | Дата: Воскресенье, 22 Ноября 2009, 18:41 | Сообщение # 18 |
участник
Сейчас нет на сайте
| У меня вот такой косяк Косяк исправил))) Вот это правильно Code CREATE DATABASE testgame DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci; /* Создаем БД со стандартной кодировкой cp1251(для того что б поддерживался русский язык)*/ USE testgame; /* используем данную БД */
/* таблица персонажа */ CREATE TABLE `users` ( id_user bigint(20) unsigned NOT NULL auto_increment, /* уникальный номер, который не повторяеться и с каждым новым пользователем увеличиваеться на 1 */ email CHAR(64), /* текстовый тип (64 символа) */ pass CHAR(32), /* текстовый тип (32 символа) */ name CHAR(32), /* текстовый тип (32 символа) */ life INT DEFAULT 50, /* числовой тип, по умолчанию равен 50 */ atk INT DEFAULT 7, /* числовой тип, по умолчанию равен 7 */ def INT DEFAULT 5, /* числовой тип, по умолчанию равен 5 */ lov INT DEFAULT 7, /* числовой тип, по умолчанию равен 7 */ lvl INT DEFAULT 1, /* числовой тип, по умолчанию равен 1 */ exp INT DEFAULT 0, /* числовой тип, по умолчанию равен 0 */ PRIMARY KEY (`id_user`) /* Показываем что уникальным номером у нас являеться id_user */ ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; /* Обозначаем тип таблицы MyISAM. Таблицы типа MyISAM показывают хорошие результаты при выборках SELECT. Для .jktt подробного изучения читайте Самоучитель по MySQL 5 */
/* таблица аватара */ CREATE TABLE `avatar` ( id_ava bigint(20) unsigned NOT NULL auto_increment, /* уникальный номер, который не повторяеться и с каждым новым пользователем увеличиваеться на 1 */ gander SMALLINT(1), /* Пол игрока, цыфровой тип(1 цыфра) */ vid SMALLINT(2), /* Вид игрока, цыфровой тип(2 цыфры)*/ path CHAR(32), /* Путь к папке с рисунками персонажа, текстовый тип(32 символа) */ PRIMARY KEY (`id_ava`) /* Показываем что уникальным номером у нас являеться id_ava */ ) TYPE=MyISAM;
/* таблица чата */ CREATE TABLE `chat` ( id_msg bigint(20) unsigned NOT NULL auto_increment, /* уникальный номер, который не повторяеться и с каждым новым пользователем увеличиваеться на 1 */ msg CHAR(255), /* текстовый тип(255 символов) */ time_msg CHAR(5), /* текстовый тип(5 символов) */ wrt_user CHAR(32), /* текстовый тип(32 символов) */ who CHAR(32), /* текстовый тип(32 символов) */ PRIMARY KEY (`id_msg`) /* Показываем что уникальным номером у нас являеться id_msg */ ) TYPE=MyISAM;
/* таблица инвентаря */ CREATE TABLE `inventar` ( id_inv bigint(20) unsigned NOT NULL auto_increment, /* уникальный номер, который не повторяеться и с каждым новым пользователем увеличиваеться на 1 */ name_object CHAR(64), atk_up INT(2), def_up INT(2), lov_up INT(2), life_up INT(4), PRIMARY KEY (`id_inv`) /* Показываем что уникальным номером у нас являеться id_msg */ ) TYPE=MyISAM;
/* таблица квеста */ CREATE TABLE `quest` ( id_quest bigint(20) unsigned NOT NULL auto_increment, cont_quest CHAR(32), kill_quest INT DEFAULT 0, PRIMARY KEY (`id_quest`) ) TYPE=MyISAM;
/* таблица боя */ CREATE TABLE `battle` ( id_btl bigint(20) unsigned NOT NULL auto_increment, end_btl CHAR(32), PRIMARY KEY (`id_btl`) ) TYPE=MyISAM;
/* */ CREATE TABLE `enemy` ( id_enm bigint(20) unsigned NOT NULL auto_increment, name_enm CHAR(32), atk_enm INT, life_enm INT, def_enm INT, lov_enm INT, exp_enm INT, path_enm CHAR(32), PRIMARY KEY (`id_enm`) ) TYPE=MyISAM;
/* Добавляем в таблицу данные о враге */ INSERT INTO enemy (name_enm, atk_enm,life_enm,def_enm,lov_enm,exp_enm,path_enm) VALUES('Призраки','7','40','6','4','10','path/enemy/');
Ваш уровень IQ = 78 Из 40 вопросов Вы правильно ответили на 3. Я тупее Буша :D
Сообщение отредактировал SizeOne - Воскресенье, 22 Ноября 2009, 18:48 |
|
| |
ramon | Дата: Пятница, 27 Ноября 2009, 15:56 | Сообщение # 19 |
уже был
Сейчас нет на сайте
| ВОТ ТАКАЯ ПРОБЛЕМА КАК ЄТО ИСПРАВИТЬ Добро пожаловать в phpMyAdmin Ошибка Ответ MySQL: #1045 - Access denied for user 'root'@'localhost' (using password: YES) Не удалось установить подключение для пользователя указанного в директиве controluser, с помощью параметров определенных в конфигурационном файле config.inc.php. phpMyAdmin не смог установить соединение с сервером MySQL. Проверьте хост, имя пользователя и пароль установленные в конфигурационном файле config.inc.php и удостоверьтесь, что они соответствуют данным полученным от администратора сервера MySQL. Добавлено (27.11.2009, 15:56) --------------------------------------------- Assasin, Доброго дня когда вхожу в админ панеть в браузере выскакивает ошибка подскажите что делать вот с этим: Добро пожаловать в phpMyAdmin Ошибка Ответ MySQL: #1045 - Access denied for user 'root'@'localhost' (using password: YES) Не удалось установить подключение для пользователя указанного в директиве controluser, с помощью параметров определенных в конфигурационном файле config.inc.php. phpMyAdmin не смог установить соединение с сервером MySQL. Проверьте хост, имя пользователя и пароль установленные в конфигурационном файле config.inc.php и удостоверьтесь, что они соответствуют данным полученным от администратора сервера MySQL. заренее благодарен.
|
|
| |
Assasin | Дата: Суббота, 28 Ноября 2009, 20:40 | Сообщение # 20 |
web-coder
Сейчас нет на сайте
| Попробуйте почистить куки браузера и как вариант, попробуйте альтернативный браузер.
|
|
| |
|