Просто Игра - Разработка

Статус
В этой теме нельзя размещать новые ответы.

uMagic2

Новичок
Репутация
0 / 217
Я понял, что лучший способ выучить что-то - практиковаться.
Начал писать cms Просто Игра.
На данный момент реализовано:
Система входа/регистрации,
Планируется ввести:
Система мешка/инвентаря
Система локация
Система битв.

Как доделаю может и выложу. Демо вышли точно как доделаю все что планирую...
 
Реализовал:
Распределение статов:
Защита от накрутки статов;
 
прежде чем писать составь ТЗ.
дальше набросай структуру БД.
проверь структуру БД под написанной ТЗ.
и тогда уже начинай писать.

иначе в середине проекта столкнешься с ужасно кривой БД и будешь либо переписать все под новую БД, либо писать запросы которым будет далеко до оптимизации
 
прежде чем писать составь ТЗ.
дальше набросай структуру БД.
проверь структуру БД под написанной ТЗ.
и тогда уже начинай писать.

иначе в середине проекта столкнешься с ужасно кривой БД и будешь либо переписать все под новую БД, либо писать запросы которым будет далеко до оптимизации

Ок! Спаибо - буду писать =)
 
Я понял, что лучший способ выучить что-то - практиковаться.
Начал писать cms Просто Игра.
На данный момент реализовано:
Система входа/регистрации,
Планируется ввести:
Система мешка/инвентаря
Система локация
Система битв.

Как доделаю может и выложу. Демо вышли точно как доделаю все что планирую...
Надеюсь игра будет не очередным клонм БК? :)
 
Рой) Он писал же что ЦМС с 0,:) посты набиваем?))) Шутка)
 
Я понял, что лучший способ выучить что-то - практиковаться.
Начал писать cms Просто Игра.
На данный момент реализовано:
Система входа/регистрации,
Планируется ввести:
Система мешка/инвентаря
Система локация
Система битв.

Как доделаю может и выложу. Демо вышли точно как доделаю все что планирую...
что сказать молодец, ждем демо, глянем оценим...
 
CMS Просто Игра с использованием javascript + php + mysql.

Сейчас пытаюсь реализовать систему "регенерации" хп(жизней) персонажа, однако хз что получается... КТо подскажет может где вырвать(тот же бк) файл с регенерацией - буду благодарен.
 
выучи сначало php на хорошем уровне, что бы потом начать изучать js хоть с какими то знаниями об ОПП. так же изучаю js удели особое внимание ajax'у.
 
Мэт, а нафига знание ПХП для изучения Яваскрипта, можешь обьяснить? О_о
Это как бы два совершенно разных языка же. ))
 
Мэт, а нафига знание ПХП для изучения Яваскрипта, можешь обьяснить? О_о
Это как бы два совершенно разных языка же. ))

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

Если хочется что-то поучить перед кодингом, чтобы кодить было легче - сойдут основы алгоритмов - чтобы уметь думать и изучение клавиатуры - чтобы быстро печатать :)
Алгоритмы - это самое важное. Незнание их и неумение с ними работать - это гарантия постоянного нахождения на ступени быдлокодинга.
 
ну хз хз.
со знаниями С++ я легко разобрался в php, java, js, delphi.
 
Рой) Он писал же что ЦМС с 0,:) посты набиваем?))) Шутка)
ж:)) но тут cms уже может быть любая игра практический :))

CMS Просто Игра с использованием javascript + php + mysql.

Сейчас пытаюсь реализовать систему "регенерации" хп(жизней) персонажа, однако хз что получается... КТо подскажет может где вырвать(тот же бк) файл с регенерацией - буду благодарен.
Это же можно выдрать с любого БК. (p.s чтобы угадать на верняка, скачай как нить последний слив чей ни будь БК и там будет работать, а то в старых версиях знаю не работал реген) О_о + нужен будет крон если я не ошибаюсь который отвечает за глоб отхил по секундам. :)
 
создай функцию реген.
вызывай ее когда юзер обновляет страницу, слетает баф на реген хп, вешается баф на реген хп, кушается бутылка, начинается бой, смотрят страницу и т.д.
короч где изменяется что либо отвечающее за реген и кол-во хп.
Логика:
1. узнать время последнего отхила
2. текущее-последнее*рег_в_секунду > 1 , то делаем реген, в противном случае нет.
3. если сделали реген, то обновляем время последнего отхила

дальше создаешь крон где раз в 10-15 минут делается реген у всех.
 
создай функцию реген.
вызывай ее когда юзер обновляет страницу, слетает баф на реген хп, вешается баф на реген хп, кушается бутылка, начинается бой, смотрят страницу и т.д.
короч где изменяется что либо отвечающее за реген и кол-во хп.
Логика:
1. узнать время последнего отхила
2. текущее-последнее*рег_в_секунду > 1 , то делаем реген, в противном случае нет.
3. если сделали реген, то обновляем время последнего отхила

дальше создаешь крон где раз в 10-15 минут делается реген у всех.
зачем тут крон ? Это лишняя нагрузка на сервер, персонаж сам может обновить свои хп в базе данных, просто обновив страницу, при обновлении которой, как ты и написал выше вызовется функция, которая запишет нужные данные в базу. А при просмотре информации о персонаже, нужно просто высчитывать яваскриптом, сколько сейчас должно быть у персонажа хп, на основе времени последнего отхила (значение в секундах в базе) и все. тогда не случится такого, что при каждом просмотре информации левым игроком, он будет перезаписывать значение хитпоинтов просматриваемого персонажа и время последнего отхила, т.е. перезаписать может только игрок, обновив страницу. Будут конечно исключения, когда перезапишет другой игрок, но их не так много, вот например при использовании магии нападения, нападающий должен будет перезаписать время последнего отхила и хп у атакуемого, тут уже без вариантов.

А то что ты предлагаешь через крон, это бредовая идея, представь, что у тебя игроков один миллион и ты у миллиона записей будешь постоянно каждые 10-15 минут делать реген, то есть менять значения полей, одновременно у одного миллиона записей :blink: Мне будет жаль твой сервер, в лучшем случае он будет жутко лагать, а в худшем и вовсе будет падать.

Дальше автору нужно почитать хотя бы о том, что такое "третья нормальная форма" и приводить все данные в базе данных, именно к 3NF. Лучшим примером, где отсутствует третья нормальная форма, вам может продемонстрировать база данных игры oldbk, то есть по сути, человек который проектирует базу, должен уметь правильно выделять сущности. Например игрок и пользователь, это разные сущности, у одного пользователя может быть несколько игроков, отношение один ко многим, значит должны создать две таблицы, одна таблица пользователей, другая таблица игроков, в таблице игроков, должен быть идентификатор пользователя, который однозначно определяет какому пользователю принадлежит этот игрок. Тоже самое со слотами под вещи, очевидно что это отдельная сущность, а следовательно нужно создать отдельную таблицу для слотов и т.д. Что это нам дает ? ну во первых не будет дублирования одной и той же информации, а в случае с отдельной таблицей для игроков и пользователей, то если мы например в будущем захотим сделать, чтобы один пользователь мог иметь несколько персонажей, то сделаем это очень просто, так как у нас все продумано, правильно выделены сущности и отношения между ними, а вот в случае с той базой, которая в oldbk, сделать это не представляется возможным, на проекте который уже работает и в который уже играют, без потери инофрмации.

Дальше автору для начала нужно освоить ООП и паттерны проектирования, узнать как сейчас пишутся современные приложения, понять логику работы фреймворков, попробовать написать что-нибудь на них, а уж потом браться за разработку игры, потому что в любом случае сайт или игру (не важно) нужно писать на ООП и MVC, но кроме паттерна MVC в приложении еще обязательно придется использовать паттерн синглтон и возможно паттерн абстрактная фабрика и может быть даже еще какие-то другие.

В противном случае, вы в очередной раз выпустите говнокод и ни один нормальный программист не станет с ним работать, потому что ему заведомо известно, что без хорошей продуманной архитектуры, приложение не имеет будущего. Да и пожалейте программистов, никому не охота будет копаться в дебрях вашего процедурного кода.
 
вообще то я про 2 вида отхила написал.
первый активный, т.е. при каком либо действии влияющем на хп или при просмотре профиля.
второй пассивный, т.е. по крону, но он не обязателен.

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

лучше пусть перезаписывает при просмотре профиля гостем, при фул хп не надо будет постоянно вычислять при помощи js скока же сейчас хп.
Зачем так накручивать отхил?
Вот сама функция...
Код:
function hp_ma_up($chealth,$health,$cmana,$mana,$shp,$sma,$lastom){
    global $sphp,$spmp,$chp,$cmp;
    $spmp = (9000/(1+$sma/5));
    $sphp = (1500/(1+$shp/10));
    if ($sphp<2) $sphp=2;
    if ($spmp<2) $spmp=2;
    if ($chealth<0) $chealth=0;
    if ($cmana<0) $cmana=0;
    $p=time();
    $p = $p - $lastom;
    $chp=$p*$health/$sphp+$chealth;
    if ($chp>$health) $chp=$health;
    $cmp=$p*$mana/$spmp+$cmana;
    if ($cmp>$mana) $cmp=$mana;
    return "`chp`='".$chp."',`cmp`='".$cmp."'";
}
как ее использовать...
Код:
mysql_query("UPDATE `users` SET `lastgupdate`='".time()."',".hp_ma_up($pers['chp'],$pers['hp'],$pers['cmp'],$pers['mp'],$pers['hps'],$pers['mps'],$pers['lastgupdate'])." WHERE `id`='".$pers['id']."'");
 
Вот я все больше и больше удивляюсь вашей логике ув. программисты игр =) Предсавте что у вас играет пару сотен человек и у кадого идет запрос к БД на реген ? Вы укладываете в уме что будет если увас играть будет одновременно в онлайне 1000-2000 ?? =) Я к чему веду - ведь не только функция регена лезет в БД )))

А автору я хочу пожулать удачи , ждемс демку =)
 
Статус
В этой теме нельзя размещать новые ответы.

Похожие темы

Сверху