CyberForum.ru - Форум программистов и сисадминов
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум web-программистов > Форум PHP

Ответ Создать новую тему
 
Старый 22.04.2009, 23:47   #1
zowen
Новичок
 
Регистрация: 20.04.2009
Сообщений: 74
Репутация: 4 (4)
По умолчанию Принцип создания браузерной игры

С чего начинаются писаться браузерные игры? С регистрации игрока?
zowen вне форума
Другие темы раздела
PHP регистрация на php
Я не силен в php вот такой вопрос: Создал саму форум регистрации reg.php <form action="registration.php" method="post"><br> <table border=2 width=400> <td width=150>*Имя в игре </td> <td width=250><input type="text" name="nick"></td> <tr><td width=150>*Введите пароль:</td>. регистрация на php
Подсчет записей в рубриках одним запросом PHP
Народ! Подскажите пожалуйста как правильно сделать подсчет записей в рубриках, вот пример одного сайта http://www.ukrbiznes.com/boardind.php как думаете, как они это делают?. Подсчет записей в рубриках одним запросом
Старый 23.04.2009, 07:45   #2
Patch
Форумчанин
 
Регистрация: 01.04.2009
Адрес: Кемерово
Сообщений: 2,211
Репутация: 2266 (481)
По умолчанию Ответ: Принцип создания браузерной игры

с сюжета, конечно. :-)
потом делаются наброски дизайнером,
специалист по экономике игр просчитывет варианты развития(чтобы и не очень сложно было, и не сильно легко; а то никто играть не будет),
потом по этим наброскам и с учетом экономики делается страница регистрации,
и, собственно, игра.
Patch вне форума
Старый 23.04.2009, 09:03  [ТС]   #3
zowen
Новичок
 
Регистрация: 20.04.2009
Сообщений: 74
Репутация: 4 (4)
По умолчанию Ответ: Принцип создания браузерной игры

я просто хочу выучить пхп, скачал много книг, но бестолку, там как то не понятно да и не удобно написано, ну по крайней мере для меня. Я вообще так знаю пхп но поверхностно, но в скриптовании не разбираюсь. Так вот я хочу попробувать написать свою браузерную игру, покамись какуе-то приметивную.
zowen вне форума
Старый 30.04.2009, 17:24   #4
deprime
Новичок
 
Регистрация: 30.04.2009
Сообщений: 7
Репутация: 4 (2)
Вопрос Ответ: Принцип создания браузерной игры

Привет народ. Занят аналогичной проблемой - создаю браузерную рпг. Вопрос следующего типа - как реализуются таймеры, к примеру восстановление здоровья после боя, или там 2 часа копаем руду в шахте. Через javascript?
ps: первый раз этим начал заниматься, поэтому чувствую что будет много вопросов
deprime вне форума
Старый 30.04.2009, 17:42   #5
Varlock
Форумчанин
 
Регистрация: 25.09.2008
Сообщений: 363
Репутация: 352 (55)
По умолчанию Ответ: Принцип создания браузерной игры

Цитата Сообщение от deprime Посмотреть сообщение
Привет народ. Занят аналогичной проблемой - создаю браузерную рпг. Вопрос следующего типа - как реализуются таймеры, к примеру восстановление здоровья после боя, или там 2 часа копаем руду в шахте. Через javascript?
ps: первый раз этим начал заниматься, поэтому чувствую что будет много вопросов
хех+) одно время тоже этим увлекался) правда до финальной стадии так ничего и не довёл)

Цитата Сообщение от deprime Посмотреть сообщение
Вопрос следующего типа - как реализуются таймеры, .... Через javascript?
ни в коем случае не через ява-скрипт +)) он исполняется на стороне клиента, у тебя, если через ява-скрипт через 10 минут после начала игры появится народ, который будет капать шахту не за 2 часа а за 10 секунд)
Все операции с временем только на сервере и только по серверному времени. ява-скриптом можно выводить таймер пользователю, чтобы у него он тоже тикал и он видел когда заканчивается. а так вообще я реализовывал вот как:
в момент запуска пхп получает текущее время, заносит его в БД. а при каждом обновлении уже проверяется прошло ли время и сколько осталось... при этом паралельно с этим ява-скрипт на компьютере пользователя тоже тикает, но независимо от сервера (т.е. скриптом ему рисуется, как растут хп, но если он начнёт подкручивать у себя данные, то при следующем обновлении страницы они всёранво будут получены с сервера.)

кстати есть ещё такая очень хорошая штука в линуксе - крон. очень помогает с некоторыми таймерами если будешь писать не рпг а стратегию например но тогда надо предусмотреть, чтобы потом сервер под игру на лине был +)

zowen, игра начинается писаться с того, что ты придумываешь на бумаге вю модель игры. что игрок будет уметь делать, какие кнопки у него будут и т.п., как какое действие будет реализовываться. +) потом смотришь на эту модель и думаешь, что из этого ты умеешь делать а что нет +) и либо идёшь читать книжки, либо меняешь модель
когда модель игры будет готова и ты уверен что сможешь реализовать все действия, тогда создаётся база данных для игры. (все таблицы где будут хранится параметры игроков и т.п., причём БД тоже надо отдельно продумать и разработать, так чтобы она была оптимизирована и позволяла хранитьв се необходимые значения, по возможности с запасом.) и вот когда БД создана, тогда начинают уже страниццу регистрации, поле боя и т.п. делать+)
Varlock вне форума
Старый 30.04.2009, 18:00   #6
deprime
Новичок
 
Регистрация: 30.04.2009
Сообщений: 7
Репутация: 4 (2)
По умолчанию Ответ: Принцип создания браузерной игры

Балин про ннКрон даж чет и не вспомнил =)
А вот ты говоришь - заносим в таблицу бд. Эт получается у каждого чара есть пункт в табличке например Time и отталкиваясь от него буду вычислять хп нарегененое, а потом когда хп отрегенилось, это значение затираю. Такая логика примерно?
Или нужно поле-флаг для индикации хп регеним \ хп нерегеним?
deprime вне форума
Старый 30.04.2009, 19:19   #7
Милый Враг
Телепат
 
Аватар для Милый Враг
 
Регистрация: 28.04.2009
Адрес: Азербайджан, Баку
Сообщений: 328
Репутация: 692 (86)
По умолчанию Ответ: Принцип создания браузерной игры

Таймер восстановления здоровья... Сам занимался этим делом..

Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
/////////////////////////////////////////////////////////////////////
var delay = 10;
var maxHP
var TimerOnHP = -1;
var speed = 100;
var currHP
///////////////  SET_HP
function setHP(value, max, newspeed)
{
  currHP=value;
  maxHP=max;
  if (TimerOnHP>=0)
  {
    clearTimeout(TimerOnHP);
    TimerOnHP=-1;
  }
  speed = newspeed;
  setHPlocal();
}
function setHPlocal()
{
  if (currHP>maxHP) { currHP=maxHP; }
  var imgW1 = Math.round((254/maxHP)*currHP);
  var imgW2 = 255 - imgW1;
  if (document.getElementById('HP'))
  {
    document.HP1.width=imgW1;
   // document.HP2.width=imgW2;
      if (currHP/maxHP < 0.33) { document.HP1.src='../img/hpb/hp3.gif'; } // темная полоса
    else
    {
      if (currHP/maxHP < 0.66) { document.HP1.src='../img/hpb/hp2.gif'; } // более светлая
    else { document.HP1.src='../img/hpb/hp1.gif'; } // смая светлая
    }
  }
  currHP = (currHP+(maxHP/100)*speed/1000);
  if (currHP<maxHP) { TimerOnHP=setTimeout('setHPlocal()', delay*100); }
  else { TimerOn=-1; currHP = maxHP; }
}
 
Этот скрипт я вынес в отдельный файл.
В самом хтмл нужно указать полосу и ее зармер, например над персонажем
Правда таблицу писать всю не буду, главное показать тебе фрагмент.
Код HTML
1
2
3
4
5
6
 
     <td align="left" valign="middle" colspan="3" height="10" width="260" background="../img/hpb/level.gif" nowrap nobr 
onmouseover="show_hint('Уровень жизни: '+Math.round(currHP)+'/'+maxHP)" onmouseout="hide_hint()">
      <img align="left" id="HP" name="HP1" width="1" height="8" src="../img/hpb/hp1.gif">
     </td>
 
и не забудь в теге
<body onload="onload="setHP(<?php echo "$curHP,$maxHP,$delay"; ?>);" >

Добавлено через 7 минут 55 секунд
сорри..
не <body onload="onload="setHP(<?php echo "$curHP,$maxHP,$delay"; ?>);" >
а надо <body onload="onload="setHP(300,200,100);" >

где 300 - максимальное кол-во жизни
200- текущая
100 - задержка - то есть с какой скоростью персонаж восстанавливается...
у меня это все берется из базы данных как ты видел выше и php подставляет их в html.
Так же у меня в бд указывается последнее время модификации текущей и максимальной жизни. Это нужно для того чтобы при обновлении страницы в функцию setHP(300,200,100) передавались новые значеня. Иначе хп будет постоянно одним и тем же))
совет. Вначале делай разберись с комплектами. У меня не получается... я на этом и застрял. точнее игра моя в принципе готова, осталось комплекты рисовать но я хочу переделать метод хранения комплектов.. если ты знаешь мне помоги а я тебе чем смогу..

Добавлено через 2 минуты 37 секунд
кстати show_hint и hide_hint у тебя работать не будут... у меня просто фенкция которая отображает нестандартную подсказку а выводит на экран новый слой в котором и отображается подсказка.

Добавлено через 10 минут 21 секунду
У мну так.
Если MaxHP>CurHP то ренегим (только если не в бою...)
Иначе таймер стоит..

Добавлено через 1 минуту 45 секунд
Вобщето я думаю надо для этой важной снова начать форум...
така если начнете мне напишите или скиньте ссылку на мыло))

Последний раз редактировалось Милый Враг; 30.04.2009 в 19:19. Причина: Добавлено сообщение
Милый Враг вне форума
Старый 01.05.2009, 08:33   #8
deprime
Новичок
 
Регистрация: 30.04.2009
Сообщений: 7
Репутация: 4 (2)
По умолчанию Ответ: Принцип создания браузерной игры

Ого! Пасибо! блин, я так понимаю много функций придется писать. Но ведь РНР поддерживает и объектоно ориентированную модель, то есть вопрос такой - не хлеще бы было уже тогда в классы загонять все? Или и функций хватит?

ПС: 2 Милый Враг - ты в конце написал про нью форум, я немного не понял, про что ты . Общий проект мутить или просто глобальное обсуждение браузерных игр?
deprime вне форума
Старый 01.05.2009, 15:23   #9
Милый Враг
Телепат
 
Аватар для Милый Враг
 
Регистрация: 28.04.2009
Адрес: Азербайджан, Баку
Сообщений: 328
Репутация: 692 (86)
По умолчанию Ответ: Принцип создания браузерной игры

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

Добавлено через 52 минуты 45 секунд
Можно и общий проект мутить и так для того чтобы нового и полезного узнать.
Но я считаю, если даже проект до дела не довести, в любом случае пользы много.. я начав свой проект столкнулся с многими трудностями и естественно все это на пользу пошло.. тебе тоже спасибо что открыл эту тему.. если тут будут отписываться и дальше то уверен, тут много полезного будет (пища для ума)...
*********************************************************
кстати.. чтобы начать прект, надо вначале одбумать все. я приведу примеры.
Как оказалось почти все онлайн игры этого типа идентичны.
У персонажа есть сила, ловкость, интеллект, инстинкт,жизнеспособность и может еще что то.
Надо решить какие парамерты будут по дефолту (по умолчанию) и на сколько это все будет прибавляться... Сразу замечу, что тут как ни крути но должна быть точка опоры, а именно - базовые значения. Например:
После регистрации у персонажа уже есть базовые значения, к примеру:
Сила 3
Ловкость3
инстинкт 3
жизнеспособность 3

Кроме того так же и имеются базовые модификаторы такие как:

HP (уровень жизни)
PW (уровень выносливости)
Критический удар
Антикритический удар (против критического, далее - акрит)
Уворот
Антиуворот (против уворота, далее - ауворот)

Все это должно быть взаимосвязано, иначе нарушится баланс игры и играть будет не интересно!
К примеру умножаем
HP=жизнеспособность * 6
PW=сила * 6
крит=ловкость*3
аКрит=локвость*3
уворот=инстинкт*3
аУворот=инстинкт*3
В итоге при регистрации персонажа будут парамерты...
****
HP=18
PW=18
сила=3
ловкость=3
выносливость=3
жизнеспособность=3
крит=9
аКрит=9
уворот=9
аУворот=9
*****
при расчетах урона берутся парамерты: Крит, аКрит, сила, жизнеспособность, минимальный урон, максимальный урон, причем сила должна поднимать границу не максимального урона а минимального а граница максимального урона при этом должна увеличиваться незначительно!
то есть если min/max урон составляет 10-50 то с увеличение силы нижняя планка подымается, например 30-55
Такие парамерты как ловкость, инстинкт действуют не на силу удара а на вероятность его..
Ловкость: Чем выше параметр, тем больше шансов критануть противника но меньше шансов получить крит
Инстинкт - Чем выше параметр, тем больше шансов увернуться от удара и больше шансов на то что противник не увернется.
Жизнеспособность вобщето ни как не должна прибавлять к урону. От нее лишь зависит урон. то есть если PW 100% то урон максимальный, если 50% то урон в половину меньше, причем это должно быть так. Предположим 2 персонажа у одного PW=100, у другого 500
в начале боя это не дает приимуществ, потому как у обоих оно является 100%
но с каждым ударом PW вычитывается (например
простой удар с попаданием -3 pw
простой удар и попал в блок -4 pw
простой удар и промах - 5 pw
попал с атаки -4 pw
в блок с атаки - 5 pw
промах с атаки -6 pw
)

в итоге после например 20 ударов у первого персонажа опустится PW и останется примерно 10-20% в то время как у второго персонажа еще много останется...
и к середины боя, тот у кого мало хп было, станет заметно слаб. У кого хп побольше, тот естественно в ударах меньше теряет.
Так же выносливлсть должна влиять на блок. выноса больше значит больше вероятности пробить блок, и больше вероятности того, что тебе блок не пробьют
+ ко всему комплекты шмота надо подбирать грамотно.. например имеется 5 щитов. один щит прибавляет в броне к примеру
+5 голова, +5 тело, +5пояс, +5 ноги
другой щит
+2 голова, +2 тело, +2пояс, 2 ноги +3 крит
другой щит
+2 ловкость, +4 инстинкт
другой щит
+7уворот, +8 антиуворот +10 HP
и т.д.
Это очень важный момент
Согласитесь если допустить ошибку тут и неправильно их подобрать то окажется что комбинация одного комплекта хороша и все будут его одевать а другие вещи просто не станут использовать.
Через год в вашей игре будут все в одном и том же коомплекте бегать...
Надо так сделать чтобы пользователи (игроки) думали "блин какой же одеть пояс, тот или этот.. Если тот одену, пропадет этот модификатор, если другой, тогда первый пропадет..."
И окажется так что кому то этот понравится, кому то другой. Все будут одеваться по своему и конечно же станет намного интереснее...
Благодорю за внимание...


Если расчеты будут именно такими (начальные параметры =3 а хп=сила*6) то в скрипте что я тебе дал, первая строчка должна быть
var delay = 18;

Добавлено через 1 час 19 минут 33 секунды
Кстати хочу добавить что уровень персонажа ни в коем случае не должен влиять на его боевые парамерты!!! Уровень это так сказать прожвижение персонажа - его прогресс. Уровень персонажа лишь ограничивет, чточбы персонаж 1 лвл не мог одеть комплект предназначенный для уровня выше...
*********************************************************
Так люди, теперь хочу рассмотреть ваше предложение насчет хранения комплектов в БД.
Вначале вот что. Парамерты.
1. Уровень (для какого уровня предназначен комплект)
2. Название ( Имя щита, кольца или другой вещи)
3. Сила ( требования - минимальный параметр чтобы можно было одеть эту вещь.)
4. Ловкость (требования .)
5. Инстинкт (требования .)
6. Жизнеспособность (требования .)
7. Сила (увеличение параметра - если эта вещь прибавляет к силе)
8. Ловкость (увеличение параметра )
9. Инстинкт (увеличение параметра )
10. Жизнеспособность (увеличение параметра )
11. Уровень жизни (увеличение параметра )
12. Уровень выносливости (увеличение параметра )
13. Крит (увеличение параметра )
14. аКрит (увеличение параметра )
15. уворот (увеличение параметра )
16. аУворот (увеличение параметра )
17. защита головы
18. защита тела
19. защита пояса
20. защита ног
21. Вес предмета
22. Долговечность
23. Изображение (.gif)
24. Цена

Передаются этм параметры в игре (в скрипт для отобрадения например) в виде
('уровень','название','цена','вес','сила' и т.д) то есть к примеру
('5', 'Копье безумца','35','','80','2','0','0','15','70','9','0','0','0' ......)
Так теперь предложения по хранению комплектов пожалуйста, если у кого есть я с радостью выслушаю...
Пока что я сделал себе так...
Хранить каждый комплект у самого персонажа - дело неоправданное, потому как весь этот список будет у одного перса, а персонажей будет может тысяч 5-10 кто его знает... поэтому я сделал вот что.
В БД у меня отдельная таблица в которой только комплекты. одна строчка - одна вещь - например топор.
В таблице уникальное поле id - auto increment
Всего на персонаже 14 слотов (шляпа, оружие, щит, жилет, 4 кольца, пояс, серьги,браслеты, наручи, перчатки, сапоги).

Когда персонаж покупает или одевает комплект, то в его слоты (в БД) вписываются только номер id комплекта.
Тут я столкнулся с трудность...
Надо сделать так чтобы
во первых...
можно было комплект одевать или снимать (переместить его в инвентарь)
во вторых
Долговечность комплекта должна уменьшаться с каждым пораженим.
насчет долговечности тоже туго... казалось бы надо спросто считать долговечноть во время покупки шмота и с каждым поражением уменьшать его... на самом дела как я писал выше комплектов 14 и для каждого из них на каждого персонажа новое поле "долговечность".... Хреново получится я думаю... грамоздкая таблица будет...
Идеи у кого есть, прошу в студию.. буду очень рад... Кстати хотелось бы выслушать
идеи от Humanoid. Незнаю почему он мне тут понравился, точнее его активность и его предложения и помощь людям..

Последний раз редактировалось Милый Враг; 01.05.2009 в 15:23. Причина: Добавлено сообщение
Милый Враг вне форума
После регистрации реклама в сообщениях будет скрыта
Старый 01.05.2009, 23:43   #10
Humanoid
Администратор
 
Аватар для Humanoid
 
Регистрация: 12.06.2008
Адрес: Зеленоград
Сообщений: 10,245
Репутация: 8467 (2831)
По умолчанию Ответ: Принцип создания браузерной игры

Лично на мой взгляд, самое сложное в браузерных играх - это интерфейс... там придётся размещать много javascript-скриптов. Надо вначале решить, как будет выглядеть игра... будет ли там персонаж ходить как по шахматной доске в пошаговом режиме или будет режим реального времени (в этом случае будет много проблем у пользователей с медленным инетом... да и сервер может быть иногда перегружен). А возможно, пользователю вообще будут выдаваться только сообщения о том, что происходит в игровом мире, а пользователь будет давать команды что делать. Лично я думаю, что наиболее подходящий вариант из этого - это пошаговый режим по клеткам... в этом случае и сервер не будет сильно нагружаться, и наглядность будет достаточно хорошая.
Потом надо решить, о чём вообще будет игра. Я так понимаю, что ты хочешь что-то вроде LA2 или WOW, но только в браузерном варианте.
Надо решить, как будет осуществляться передвижение... думаю, можно сделать как в игре Травиан (из браузерных только в неё играл)... т.е. указываешь пункт назначения и командуешь "идти". Твой герой идёт к этой точке, а у пользователя отображаются часы с отсчётом времени, когда герой придёт.
Одна из особенностей браузерных игр - это то, что многие действия могут происходить когда пользователя нет на месте... поэтому лучше будет указывать поведение персонажа в случае столкновения с противником. Например:
1. Если столкнулся с другим враждебным игроком, то аттаковать или постараться избежать боя.
2. Если столкнулся с другим нейтральным игроком (с которым нет никаких отношений... ни вражды, ни дружбы), то аттаковать или избегать боя.
3. Если столкнулся с каким-то компьютерным персонажем (животные, варвары, бандиты и т.п.), то тоже что делать.
Если хотя бы один из столкнувшихся персонажей хочет воевать, то будет бой... но если они оба пытаются избегать конфликта, то просто пройдут мимо.

И ещё... я смотрю, ты написал процедуру восстановления здоровья на javascript... но я думаю, что лучше, что бы эта процедура только отображала ход выздоравливания пользователю, но никак не влияла. Все изменения и расчёты должны происходить только на стороне сервера, а в браузере только отображаться. Иначе читеры могут подделывать и здоровье и что угодно.

Это просто мои мысли на эту тему... на правильность не претендую, т.к. опыта в этих делах нету
Humanoid вне форума
Ответ Создать новую тему

Похожие темы
Тема Автор
Проекты ищу людей для создания браузерной онлайн игры
аналогов наверно нет, начало есть(регистрация, авторизация, поиск, почти почта) обязательно скайп пишите mrpoops2
aristov-96
Visual Basic Нужна помощь в написании игры Манкала. Принцип игры то понятен.. а вот написать..
Здравствуйте! Нужна помощь в написании игры Манкала. Принцип игры то понятен.. а вот написать.. Лунки можно обозначить цифрами..
Сочинец
Проекты Ищу людей для создания браузерной онлайн игры
Добрый день. Есть идея создания браузерной онлайн игры, аналогов нет, существует один проект, очень отдаленно напоминающий мой замысел, но по сути это совсем другое. Единственным минусом моей идеи считаю то, что уже возможно ведутся такие разработки. Для старта, думаю, достаточно будет веб...
opportunity
Предложения работодателей Команда для создания браузерной онлайн-игры
Доброе время суток, я собираю команду PHP-программистов для создания браузерной онлайн-игры. Концепт-арт на руках, продуман весь мир и вся система. Работа будет осуществляться на бесплатной основе. Как только проект начнет действовать и, возможно, приносить доход, тогда посмотрим. Цель - не...
wulfvital
Опции темы

Текущее время: 04:33. Часовой пояс GMT +4.

Компьютерный форум программистов и сисадминов
Powered by vBulletin® Version 3.8.7 PL2
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Рейтинг@Mail.ru