Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Результаты опроса: Про крипто-валюту и JS интересно ?
Ага, пиши ещё 0 0%
Не, полная фигня 1 100.00%
Голосовавшие: 1. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2018, 14:08   #1
svinuga
Новичок
Джуниор
 
Регистрация: 18.04.2018
Сообщений: 1
Лампочка Игра с крипто-валютным бонусом (как сделать)

Преамбула
Наверное, нет такого программиста, который не хотел бы написать популярную игру. Извините, сразу разочарую - сегодня мы не будем писать игру, мы будем её именно делать - возьмём готовую на Javascript (благо их, красивых и бесплатных сто-пятьсот), и довернём код игры так, чтобы по результатам игрок получал бонус в несколько сатоши.

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

Насторожившихся при слове "сатоши", попрошу вернуться к корням и скрепам:
Биткоин на Википедии
https://bitcoin.org/ru/

Остальные наверняка спросят: "Ну да, несколько сатоши игроку переслать, а комиссию сети Биткоин кто платить будет?!"

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

Теория
Для решения проблем передачи небольших сумм существуют так называемые криптовалютные микроплатёжки. Появились они в первую очередь для обслуживания "bitcoin faucets", по-русски - "фосетов" или "крантиков".
Как это работает: Плательщик (владелец крантика) кладет на свой счет некоторую сумму в криптовалюте. Потом он создает кран (faucet), или приложение (app) (терминология варьируются от системы к системе), и получает секретный ключ. Потом с этим ключом через API (например, такой API) скрипт с сайта плательщика говорит микроплатёжке что-то типа: "Я - такой-то (вот мой секретный ключ), приказываю заплатить такому-то биткойн-адресу столько-то сатоши."
Конечно, никакой реальной транзакции сети Биткоин в этот момент не происходит. Сатоши не покидают микроплатёжку, они просто переходят со счёта плательщика на счёт получателя. Зато мгновенно, бесплатно (небольшая комиссия берётся с плательщика при вводе денег в систему), и наглядно - получатель всегда может убедиться что его счёт пополнился.
Настоящая же биткон-транзакция случится автоматически, когда сумма на счету получателя станет достаточно солидной, чтобы эту транзакцию пережить (примерно 20 000 сатоши).
Всё просто, правда ?

Ещё одна проблемка - для вызовов к API микроплатёжки нужны серверные скрипты, чтобы не "светить" секретный ключ. Но и это ограничение мы сейчас обойдём - сделаем игру, работающую исключительно на клиенте.
Для этого понадобится ещё один сервис : Remote Faucets ("удалённые крантики" ? - не знаю как красиво перевести) - там можно сконфигурировать этот самый удалённый крантик, передав секретный ключ микроплатёжке в "доверительное управление", а в замен получить HTML/Javascript, позволяющий осуществить платёж прямо на клиенте.

Теория кончилась, давайте делать игру.
Сразу оговорюсь: все ресурсы ниже - англоязычные, русских аналогов мне найти не удалось. Но и читать там особо нечего, если умеете программировать на Javascript, то и с конфигурацией крантиков справитесь легко.

Игра
В этом примере давайте использовать BlockRain - добротный классический Тетрис на jQuery. Подходящих игр сотни, если не тысячи, а может быть у Вас и своя есть.
В коде выбранной игры надо надо найти место, где игра заканчивается, то самое "Game Over". В BlockRain очень удобно, берётся <DIV>:
Код HTML:
<div class="game" style="width:250px; height:500px;"></div>
Запускается вот так:
Код:
$('.game').blockrain({showFieldOnStart: true});[/JS]
А по "Game Over" вызывается коллбэк:
[JS]onGameOver: function(score){
//вот тут мы спрячем игру, и покажем крантик с сатоши - бонусом 
//крантиков мы сделаем несколько, и выберем один,
// чем больше score, тем больше бонус  
}
Микроплатёжка
Микроплатёжку мы будем использовать опосредованно, через Remote Faucets, а там поддерживается три разных. Давайте выберем cryptoo.me.
Преимущество этой - не надо сразу пополнять баланс (то, из чего будут платиться бонусы игрокам) "из крамана". Можно зарегистрироваться, найти в меню сверху Deposits,скопировать оттуда Bitcoin address (это тот самый адрес, куда надо переводить средства для пополнения баланса), а потом с этим адресом прогуляться по списку крантиков cryptoo.me, и получить сатоши с них. Как раз на эксперименты хватит.
Теперь займёмся нашими крантиками. Пусть в игре у нас будет три разных бонуса, соответственно - три крантика в My Faucets.
Имена ("Faucet name") придумайте сами, хоть "Тетрис Бонус 1"..."Тетрис Бонус 3", а вот Faucet URL должна указывать на страничку с игрой. На основании этой информации и создастся список крантиков, откуда (в том числе) придут игроки - собиратели сатоши.
Секретные ключи ("API keys") нам понадобятся на следующем этапе.

Remote Faucet/Удалённый крантик
Вот на этом этапе. Опять создаём три крантика (теперь "удалённых крантиков"), используя API keys. Имена и URL можно оставить теми же. Остальные параметры конфигурации расписывать нет смысла - там всё просто.
Для каждого созданного удалённого крантика нам понадобится Faucet ID.

Код
На страничке с игрой добавьте ещё один <DIV>, в нём будет показываться крантик - бонус.
Код HTML:
<!-- 
Этот id='wmexp-faucet-TO-BE' сейчас скрыт, 
потом мы выберем крантик в соответствии с результатом игры,
и покажем его здесь
-->
<div id='wmexp-faucet-TO-BE' style='display:none; min-height:600px;background-color:blue;'></div>
<!-- 
Этот div class="game" сейчас видимый, 
когда игра закончится - мы его спрячем, и покажем бонус
-->
<div class="game" style="width:250px; height:500px;"></div>
Теперь немножко нашего любимого Javascript'а:
Код:
<script>
show_reward = function(score)
{
    var rewards = [ //вместо 123456 должны быть ВАШИ значения Faucet ID 
    {score:10000, faucet_id:123456},//крантик - бонус за 10000 очков
    {score:30000, faucet_id:123456},// . . .
    {score:50000, faucet_id:123456}, //крантик - бонус за 50000 очков
    ];
     
    var faucet_id = rewards[0].faucet_id; 
    for(var i = 0; i [ rewards.length; i++)
    {
        if(score ]= rewards[i].score)
        {
            faucet_id = rewards[i].faucet_id;
        }
    }

    //прячем игру  
    document.querySelector('.game').style.display = 'none'; 
    //готовим DIV для крантика
    var faucet_div = document.getElementById('wmexp-faucet-TO-BE');
    faucet_div.style.display = 'block';
    //выставляем настоящее значение
    faucet_div.id = 'wmexp-faucet-'+faucet_id; 
    //добавляем скрипт - он покажет крантик 
    var script = document.createElement('script'); 
    script.src = 'https://wmexp.com/faucet/'+faucet_id+'/'; 
    document.head.appendChild(script);
}
</script>
Всё. Как работает можно посмотреть вот тут.
.

В статье использованы материалы Creating Remote Faucet и Game Bonuses

Если остались вопросы - не стесняйтесь
svinuga вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужет совет по выбору крипто системы. pompiduskus Безопасность, Шифрование 3 11.11.2017 22:19
Игра для Android и заметка как сделать такую же rrrFer Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 18.09.2017 16:46
Игра Delphi "Парные картинки". Как сделать таблицу рекордов? Ucm106 Помощь студентам 4 07.12.2010 03:06
Помогите с валютным калькулятором Clubber_ Помощь студентам 4 23.05.2009 17:56
Есть игра, как сделать ее сетевой? Ellita Работа с сетью в Delphi 24 25.03.2009 21:07