Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   Топ игроков (http://www.flasher.ru/forum/showthread.php?t=181161)

vizgl 17.06.2012 15:38

Топ игроков
 
Наконец-то руки дошли до апи контакта.
Делаю простенькую игрушку и хочу организовать топ-100 игроков(как делают во многих приложениях).
Но я не пойму, обязательно для этого нужен свой сервер или все можно сделать на клиенте?

ЗлОй ПрОграММер 18.06.2012 09:08

Устаревшие методы
getHighScores – возвращает таблицу рекордов.
setUserScore – записывает результат текущего пользователя в таблицу рекордов.

либо можно выделить 100 переменных из глобальных и в них записывать
http://vk.com/developers.php?oid=-1&...BA%D1%82%D0%B5

vizgl 18.06.2012 14:42

Цитата:

Сообщение от ЗлОй ПрОграММер (Сообщение 1084933)
Устаревшие методы
getHighScores – возвращает таблицу рекордов.
setUserScore – записывает результат текущего пользователя в таблицу рекордов.

Вроде и смотрел на эти методы, но что-то упустил и думал, что они для другой цели. Сейчас посмотрел, вроде оно. Но сюда никак не прикрутить отдельный список "топ друзей"

Цитата:

Сообщение от ЗлОй ПрОграММер (Сообщение 1084933)
Устаревшие методы
либо можно выделить 100 переменных из глобальных и в них записывать

В таком случае другие пользователи без проблем могут изменять чужие результаты, можно и вообще очистить их. Еще сложность тут заключается в перестройке таблицы. Например если таблица заполнена 100 результатами, а тут приходит новый результат кандидат на первое место, то необходимо:
1) найти позицию куда записать новую запись(в данном случае 1-я позция)
2) сдвинуть все остальные записи

А это куча запросов к серверу, если растянуть во времени 3 запроса в секунду, то это очень долго. А еще, куда-то нужно запихнуть очки друзей.

В общем, уже сделал хранение очков на своем сервере. Хранятся все игроки, таким образом можно получить и топ-100 и для каждого друга его позицию в топе друзей.

ЗлОй ПрОграММер 18.06.2012 17:39

Насчёт "топ друзей" можно просто считывать значение их результатов и выводить, а те методы что я вам написал это для глобальной таблицы рекордов

Цитата:

В таком случае другие пользователи без проблем могут изменять чужие результаты, можно и вообще очистить их. Еще сложность тут заключается в перестройке таблицы. Например если таблица заполнена 100 результатами, а тут приходит новый результат кандидат на первое место, то необходимо:
1) найти позицию куда записать новую запись(в данном случае 1-я позция)
2) сдвинуть все остальные записи
1) Считать 100 записей можно попробовать одним запросом.
2) Необязательно сдвигать все записи, просто в топе найти самый худший результат и перезаписать его. А когда очередной пользователь будет считывать топ игроков просто нужно их получить, отсортировать и показать.


Часовой пояс GMT +4, время: 18:56.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.