Продуманная синхронизация времени в онлайн играх.

Discussion in 'PHP' started by PEPSICOLA, 29 Sep 2008.

Thread Status:
Not open for further replies.
  1. Doom123

    Doom123 Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    поэтому браузерные игры ставят на выделеный серв ...
     
  2. PEPSICOLA

    PEPSICOLA . . . . . 2L . . . . .

    Joined:
    14 Oct 2004
    Messages:
    1,025
    Likes Received:
    823
    Reputations:
    368
    Блин... что ж у меня не получается нормально выразиться то :))) Как дерьмово когда не знаешь что хочешь :)))

    Эммм.. как создать этот ориентир времени, относительно которого, будут производиться зависящие от него действия? :)

    Этот таймер, должен каждую секунду (в лучшем случае), пробежать всю таблицу "действий", найти уже просроченное действие, а именно, то что сказал постом выше etc:
    И соответственно что либо выполнить.
     
  3. n0ne

    n0ne Elder - Старейшина

    Joined:
    1 Jan 2007
    Messages:
    542
    Likes Received:
    284
    Reputations:
    -56
    Пришел в голову анальный вариант:

    При каждом обновлении страницы у юзера обновляюца, например, кукисы, а точнее timestamp в них. Сравнивать timestamp юзера со stamp'ом в момент подгрузки страницы и мат. формулой рассчитывать тот же рост хп или что там нужно :)

    И, между прочим, это можно реализовать на том же аяксе, как мне думаеца)

    upd:

    Ещё можно в кроне или любом другом менеджере задач запускать скриптец, который прогоняет бд и изменяет заданные параметры (ну т.е. восстановление хп, например)
     
    #23 n0ne, 30 Sep 2008
    Last edited: 30 Sep 2008
  4. PEPSICOLA

    PEPSICOLA . . . . . 2L . . . . .

    Joined:
    14 Oct 2004
    Messages:
    1,025
    Likes Received:
    823
    Reputations:
    368
    n0ne, так куки смогут подделывать. Это ещё хуже, что бы какие то значения переменных напрямую брались из кук :)
    имхо
     
  5. etc

    etc Elder - Старейшина

    Joined:
    16 Feb 2008
    Messages:
    113
    Likes Received:
    175
    Reputations:
    1
    PEPSICOLA, смотри, скажем, есть таблица, в которой это все содержиться. В нее пишутся, скажем, эффекты воздействия над тем или иным параметром, как я уже писал - время начала и конца действия + привязка к игроку.

    date - тек. дата
    start - начало действия
    end - конец действия
    time - число, соотв. игровому времени (соотношение игрового времени с реальным).
    eff - единица эффекта, на 1 ед. time
    :D

    1. Извелкаем данные
    2.1. Смотрим дату начала действия
    2.2. Смотрим текущую дату, если она превышает конец действия то нам нужно вычислить результат воздействия следующим образом:
    2.3. если текущая дата не превышает конец действия,то
    правда тут нужно смотреть, чтобы была кратность в вычислениях, т.е. чтобы в базе не получилось остатка, не кратному единице времени))) (этого можно достич путем доп. вычислений при записи времени end,start в таблицу, либо просто округлением, хотя оно не всегда есть гуд)
    2.3.1. обновляем timestamp с целью того, чтобы после обновления страницы эффект добавился с последнего обновления, а не с первой записи.
    2.4. добавляем полученные единицы к статам (скажем, просто обновляем таблицу)..

    ппц нах)
     
    #25 etc, 30 Sep 2008
    Last edited: 30 Sep 2008
    1 person likes this.
  6. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    пепсик, не надо каждые 4 минуы обновлять - храни последнюю дату обновления, а когда инфа потребуется - по запросу обновляй у данного как выполненное (t2-t1)/4 раз.
     
    1 person likes this.
  7. n0ne

    n0ne Elder - Старейшина

    Joined:
    1 Jan 2007
    Messages:
    542
    Likes Received:
    284
    Reputations:
    -56
    Pepsicola, а не надо в открытом виде хранить :) Это всё можно грамотно закриптовать)) И ещё есть вариант с кроном, он, имхо, лучше)
     
  8. Buffalon

    Buffalon Elder - Старейшина

    Joined:
    22 Mar 2008
    Messages:
    241
    Likes Received:
    34
    Reputations:
    8
    А во ,создай отдельную таблицу где будешь отсчитывать время , и ориентируйся на эту таблицу(допустим
    если время там по 0 то когда пользователь забросит её то выполняется какой то код
    else
    ещо непрошло определённое кол-во времени)
     
    #28 Buffalon, 30 Sep 2008
    Last edited: 30 Sep 2008
  9. PEPSICOLA

    PEPSICOLA . . . . . 2L . . . . .

    Joined:
    14 Oct 2004
    Messages:
    1,025
    Likes Received:
    823
    Reputations:
    368
    Блин! Спасибо! :) Прояснил! :)))
     
    4 people like this.
  10. Buffalon

    Buffalon Elder - Старейшина

    Joined:
    22 Mar 2008
    Messages:
    241
    Likes Received:
    34
    Reputations:
    8
    Неа ,
     
Thread Status:
Not open for further replies.