Bitcoin Forum
May 27, 2024, 01:20:24 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 ... 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 [84]
  Print  
Author Topic: 🔹🅰RK🔹[ANN] ARK - Криптoвaлютнaя Экocиcтeмa🔹 ICO Зaвepшeнo  (Read 103837 times)
This is a self-moderated topic. If you do not want to be moderated by the person who started this topic, create a new topic.
FP91G
Legendary
*
Offline Offline

Activity: 1652
Merit: 1054


View Profile
July 03, 2020, 11:35:17 AM
Last edit: July 03, 2020, 03:04:33 PM by FP91G
Merited by xandry (8), Symmetrick (1)
 #1661

Перевод. Оригинальная статья: Launching HTML5 Games In The ARK Desktop Wallet — Part Five
https://blog.ark.io/launching-html5-games-in-the-ark-desktop-wallet-part-five-a2cf1d32be20

Запуск HTML5 игр в ARK Desktop Wallet - часть пятая


Теперь мы подошли к предпоследней части нашей серии, посвященной тому, как запускать HTML5-игры в ARK Desktop Wallet с помощью плагина ARK Core и Construct 3 . Если вы следовали за всеми предыдущими частями этой серии, вы успешно построили с нуля полностью рабочую блокчейн игру с помощью сообщений Smartbridge, сделав интеграцию лобби, для совершения ставок и пари на матч.

Хотя наша игра является полностью функциональной, мы еще не реализовали никакой логики призов, кроме начального соответствия ставок. То есть, победители не получают приза, и в случае ничьей ставки не возвращаются. Тем не менее, это будет предметом сегодняшнего урока.

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

Это руководство полностью основано на плагине ARK Core, поэтому мы не будем вносить какие-либо изменения в наш проект Construct 3 все это время. Чтобы начать, откройте файл manager.ts в любом текстовом редакторе!

Реализация призовой логики

Прежде чем мы начнем, мы должны импортировать транзакции из крипто библиотеки ARK. Для этого найдите:

Code:
import { Identities } from “@arkecosystem/crypto”;

Замените его на:

Code:
import { Identities, Transactions } from “@arkecosystem/crypto”;// Now, we’ll examine the relevant part of our existing generateState function to see what happens when a game is won or tied:if (outcome !== “ongoing”) {
    break;
}

Помните, что в случае ничьей значение переменной результата будет “tie”, и если кто-то выиграл, значение переменной результата будет 1 или 2, в зависимости от того, был ли победителем игрок 1 или игрок 2. В противном случае значение будет “ongoing”.

Из этого фрагмента кода мы видим на данный момент, что если значение исходной переменной не “ongoing”(т. е. игра выиграна или сыграна вничью), то наш цикл заканчивается, но больше ничего не происходит. Давайте продолжим и пересмотрим этот код сейчас для включения логики, чтобы платить нашим игрокам. Поскольку код выполняется только в том случае, если игра выиграна или сыграна вничью, мы должны это проверить Если это так, мы возвращаем ставку обоим игрокам. Если нет, это означает, что игрок выиграл игру, поэтому должен получить весь приз, который является суммой обеих ставок:

Code:
if (outcome !== "ongoing") {
    if (outcome === "tie") {
        this.pay(address, players, wager);
    } else {
        this.pay(address, players[outcome], wager * 2);
    }
    break;
}

Конечно, мы все еще должны написать нашу функцию оплаты. В случае ничьей объект игроков (который содержит адреса обоих игроков) отправляется в нашу функцию. Когда игра выиграна, просто адрес победителя отправляется в нашу функцию в виде строки. Это означает, что наша функция оплаты будет знать, какой сценарий происходит, проверяя, являются ли переданные ей данные объектом адресов (tie) или единственной адресной строкой (win).

ARK Core 2.6 представил широкий спектр полезных функций, которыми мы можем воспользоваться здесь. Первый - это nonces. Проще говоря, каждая транзакция из отправляющего кошелька должна иметь уникальное значение nonce и строго на единицу больше значения nonce самой последней транзакции, отправленной из кошелька. Мы можем использовать это, чтобы проверить значение nonce нашего игрового кошелька - если значение равно нулю, это означает, что мы еще никому не заплатили, поэтому мы должны это сделать. Если значение nonce не равно 0, мы уже заплатили за эту игру. Это предотвращает случай, когда игрокам платят несколько раз (например, когда вы перезапускаете свой плагин и состояние игры восстанавливается).

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

Сопоставив все вместе, наша логика для функции оплаты выглядит следующим образом:

1.Если nonce кошелька не равен нулю, мы уже заплатили, поэтому мы должны выйти.
2.Мы получаем пароль для кошелька игры и его открытый ключ.
3.Если данные, переданные в функцию, представляют собой одну строку, мы генерируем стандартную транзакцию перевода на указанную сумму за вычетом комиссии за транзакцию и отправляем ее по адресу в строке.
4.Если предоставленные данные являются объектом, содержащим несколько адресов, мы генерируем транзакцию с несколькими платежами для обоих игроков с указанной суммой за вычетом комиссии за транзакцию.
5.Как только наша транзакция была сгенерирована, мы подписываем ее и транслируем в сеть.

Мы можем сделать это следующим образом:

Code:
private pay(sender: string, recipient: string | object, amount: number) {
    const wallet = app.resolvePlugin("database").walletManager.findById(sender);        if (wallet.nonce.toString() !== "0") {
        return;
    }    const passphrase = this.addresses[sender];
    const publicKey = Identities.PublicKey.fromPassphrase(passphrase);
    const fee = "1000000";
    const payAmount = (amount — parseInt(fee)).toString();
    let transaction;        if (typeof recipient === "string") {
        transaction = Transactions.BuilderFactory.transfer().nonce("1").senderPublicKey(publicKey).recipientId(recipient).fee(fee).amount(payAmount).vendorField("You won the game, congratulations!");
    } else {
        transaction = Transactions.BuilderFactory.multiPayment().nonce("1").senderPublicKey(publicKey).fee(fee).vendorField("The game was tied. Here is your wager!");
        transaction.addPayment(recipient[1], payAmount);
        transaction.addPayment(recipient[2], payAmount);
    }        const signedTransaction = transaction.sign(passphrase).build();
    app.resolvePlugin("p2p").getMonitor().broadcastTransactions([signedTransaction]);
}

Следующие шаги

Поздравляем, наша игра на блокчейне теперь может рассчитывать, присуждать, выплачивать призы или возвращать вступительные взносы в случае ничьей. Наша отдельная игра завершена! В заключительной части нашей серии руководств мы настроим нашу игру как плагин внутри ARK Desktop Wallet.

Если вы застряли в какой-то момент, обязательно ознакомьтесь с нашими документами в центре обучения ARK. Кроме того, наша команда и разработчики активны в Slack , поэтому не стесняйтесь обращаться к нам!

Проверьте предыдущие статьи из этой серии здесь:

     Часть первая: Как импортировать адрес кошелька ARK в ваше приложение
     Часть вторая: Создание бэкенда для вашего плагина
     Часть третья: Как заставить вашу игру работать с системой ставок
     Часть четвертая: Внедрение игровой логики в ваш плагин
FP91G
Legendary
*
Offline Offline

Activity: 1652
Merit: 1054


View Profile
July 04, 2020, 08:22:06 PM
Last edit: July 05, 2020, 05:48:25 AM by xandry
Merited by xandry (8), Symmetrick (1)
 #1662

Перевод. Оригинальная статья: Launching HTML5 Games In The ARK Desktop Wallet — Part Six
https://blog.ark.io/launching-html5-games-in-the-ark-desktop-wallet-part-six-ad887fd2e888

Запуск HTML5 игр в ARK Desktop Wallet - часть шестая


Добро пожаловать в заключительную часть нашего учебного цикла, посвященного запуску игры HTML5 в ARK Desktop Wallet c ARK Core и Construct 3! Мы прошли долгий путь от нашего первого урока. На данный момент мы создали целую блокчейн-игру, включающую лобби, ставки, всю игровую логику, выплату призов или возврат ставок.

Осталось настроить нашу игру для запуска в качестве плагина внутри ARK Desktop Wallet. Это повлечет за собой экспорт нашей игры в формате HTML5 и создание основного плагина для загрузки нашей игры в кошелек. Этот плагин не является тем плагином Core, который мы уже сделали, поскольку он уже завершен и работает на нашем сервере. Вместо этого мы создадим плагин Desktop Wallet, который появится в менеджере плагинов в ARK Desktop Wallet. Как только мы это сделаем, наша игра будет представлена ​​совершенно новой аудитории, которая сможет скачать, установить и играть в нашу игру!

Оптимизация вашей игры для запуска в качестве плагина в ARK Desktop Wallet

Во-первых, нам нужно экспортировать законченную игру в виде страницы HTML5 и загрузить все на доступный  Интернет HTTP-сервер. Для этого мы выбираем Project> Export в меню Construct 3.


Загрузка игры

Затем нам предоставляется ряд различных платформ, на которые мы можем экспортировать нашу игру, например HTML5, для Facebook, для Android, iOS или Windows Store. Кто знает, может быть, однажды появится возможность экспортировать напрямую в Менеджер плагинов ARK, но сейчас выберите Web (HTML5) и нажмите кнопку Далее.


Мы хотим экспортировать в веб (HTML5)

Это покажет нам другое диалоговое окно, чтобы выбрать наши параметры экспорта. Мы хотим обеспечить дедупликацию изображений, повторное сжатие изображений и использование режима простой минимизации. Это экономит место и уменьшает размер данных в нашей игре. Затем нажмите Next, и процесс экспорта начнется. Это может занять несколько минут, поэтому возьмите свой любимый напиток и сделайте заслуженный перерыв!


Наши выбранные варианты экспорта

Когда это будет сделано, вам будет представлена ссылка для загрузки завершенной игры в виде ZIP-архива. Распакуйте его и загрузите его содержимое на ваш доступный в Интернете сервер. Для целей данного руководства оно было загружено по адресу https://www.arkfun.io/connect-4/.
Теперь, когда наша игра онлайн, пришло время сделать плагин Desktop Wallet. Для этого выполните действия, описанные в ARK Learning Hub, чтобы настроить подключаемый модуль Desktop Wallet. Когда вы это сделаете, мы внесем необходимые изменения, чтобы запустить нашу игру.
Прежде всего, мы собираемся отредактировать наш файл package.json, чтобы изменить некоторые разрешения. Это связано с тем, что некоторые функции настольного кошелька требуют авторизации от конечного пользователя для обеспечения безопасности.
Файл шаблона package.json из начального проекта выглядит следующим образом:

Code:
"version": "0.0.1",
    "description": "Testing my first plugin on Ark Desktop Wallet",
    "main": "src/index.js",
    "desktop-wallet": {
        "title": "My First Plugin",
        "permissions": [
            "COMPONENTS",
            "ROUTES",
            "MENU_ITEMS"
        ]
    }
}

Нам нужно добавить разрешение WEB FRAME в этот список, чтобы мы могли открывать внешние веб-страницы внутри нашего плагина. Добавьте его в новую строку сразу после пунктов меню, например:

Code:
"permissions": [
    "COMPONENTS",
    "ROUTES",
    "MENU_ITEMS",
    "WEBFRAME"
]

Мы также собираемся добавить пару новых разделов в наш файл package.json, в котором наш плагин будет отображаться в категории «Игры» ARK Desktop Wallet с некоторыми ключевыми словами, которые помогут людям найти нашу игру:

Code:
"desktop-wallet": {
    "categories": [
        "gaming"
    ]
},
"keywords": [
    "@arkecosystem",
    "desktop-wallet",
    "plugin",
    "game",
    "games",
    "gaming",
    "connect 4",
    "multiplayer",
    "pvp"
]

Обратите внимание, что первые три ключевых слова выделены жирным шрифтом. Это потому, что они необходимы для того, чтобы наш плагин появлялся в менеджере плагинов после его публикации. Любые дополнительные ключевые слова будут использоваться в поисковой системе в менеджере плагинов, чтобы помочь другим найти ваш плагин. Также не забудьте изменить имя, версию, заголовок и описание, чтобы они соответствовали деталям вашего плагина, и когда вы закончите, вы можете сохранить и закрыть файл. Теперь откройте my-first-plugin.js, который является частью плагина Desktop Wallet. Замените все содержимое на (замените <your URL>, где будет размещаться ваша игра):

Code:
module.exports = {
    template: '<div class="flex flex-1 bg-theme-feature rounded-lg overflow-y-auto"><WebFrame class="w-full rounded-lg" src="<your url>" /></div>'
}

Вы, наверное, уже хорошо представляете, что этот код делает. Он визуализирует компонент WebFrame (помните, что ранее было разрешено WEBFRAME?) Внутри элемента <div>, стилизованного с использованием внутренних классов ARK Desktop Wallet, чтобы сделать компонент полноразмерным с округленными краями, чтобы он вписывался в общий эстетический стиль ARK Desktop Wallet.
Мы также установили источник WebFrame в место, куда мы загрузили нашу игру HTML5, поскольку именно это мы будем отображать в нашем компоненте WebFrame.
Сохраните наш файл, и, барабанная дробь, пожалуйста, мы внесли все необходимые изменения! Если вы перезапустите ARK Desktop Wallet и включите наш плагин из Менеджера плагинов, как описано в статье ARK Learning Hub ранее, вы должны увидеть запуск нашей игры изнутри кошелька.


Наша игра работает в ARK Desktop Wallet

Осталось только опубликовать нашу игру, чтобы другие могли ее найти и поиграть! Для этого потребуется бесплатный аккаунт на https://www.npmjs.com. Если у вас уже есть, отлично, если нет, то   зарегистрируйтесь сейчас. Затем в командной строке внутри папки, в которой вы создали плагин Desktop Wallet, введите npm login и введите свои учетные данные для входа в свой аккаунт NPM. Запустите команду npm publish --access public, и вы увидите, как по экрану летят различные фрагменты текста. Когда он будет завершен, ваша работа будет завершена, и ваш готовый плагин теперь будет доступен по всему миру в Менеджере плагинов в ARK Desktop Wallet.


Наша  игра доступна в ARK Desktop Wallet

Следующие шаги
Поздравляем, ваша игра теперь доступна в ARK Desktop Wallet! Мы надеемся, что вы нашли эту серию полезной. Это отличный способ для разработчиков добавить функциональность блокчейна в свои игры, получить дополнительный доход и представить свою игру новой аудитории!

Если вы застряли в какой-то момент, обязательно ознакомьтесь с нашими документами в центре обучения ARK. Кроме того, наша команда и разработчики активны в Slack , поэтому не стесняйтесь обращаться к нам!

Проверьте предыдущие статьи из этой серии здесь:

     Часть первая: Как импортировать адрес кошелька ARK в ваше приложение
     Часть вторая: Создание бэкенда для вашего плагина
     Часть третья: Как заставить вашу игру работать с системой ставок
     Часть четвертая: Внедрение игровой логики в ваш плагин
     Часть пятая: Реализация призовой логики
xandry
Moderator
Legendary
*
Offline Offline

Activity: 3458
Merit: 4071


Crypto Swap Exchange


View Profile WWW
July 19, 2020, 12:05:09 PM
Merited by Symmetrick (1)
 #1663

Вышел ARK Desktop Wallet версии 2.9.3
Список изменений на английском доступен по ссылке: https://blog.ark.io/ark-desktop-wallet-v2-9-3-released-6d3c4469dfd
Ребята даже на видосик запилили (тоже на английском): https://www.youtube.com/watch?v=AslAEyPZnXQ&feature=youtu.be
Сам кошелёк загрузить можно тут: https://ark.io/wallet

Хэш-суммы файлов:
Linux (ark-desktop-wallet-linux-x64–2.9.3.tar.gz)
1f1e53a0a3700edbf77dd79408e95b86bbb213e01fb66f716b2d346ad8ee1523

MacOS (ark-desktop-wallet-mac-2.9.3.dmg)
71bbe46c7dd58d6cccc1797d27a39376dffcb73825192b14b94b6107f4e0d7b8

Ubuntu (ark-desktop-wallet-linux-amd64–2.9.3.deb)
d5f553ddfe5172fc05a8fca84f7ae98de9b2be584917b7597e62d74c8a66e352

Windows X86 & X64 (ark-desktop-wallet-win-2.9.3.exe)
2d941c505fbe4d5171b17f06cf0852b333c19b9b86eb10762ab1b1d9bcff7c04

Linux-AppImage (ark-desktop-wallet-linux-x86_64–2.9.3.AppImage)
8d9a6a51e9d62d2ac63aa3f5b1660646a5a24f4c208babe00b1164e9a411c6a2[/center]

Анонс: https://bitcointalk.org/index.php?topic=1649695.msg54763047#msg54763047

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
Pages: « 1 ... 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 [84]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!