Начало работы с Loom, Truffle и Unity

Моя цель на следующие несколько недель - создать игру на блокчейне с помощью Loom. На мой взгляд, лучшим стеком было бы использование Truffle для разработки контрактов и Unity для конкретизации клиента.

Я просто потратил последние 8 часов, пытаясь во всем этом разобраться. Мне очень помогли их команда и сообщество Loom, и я решил записывать здесь свой прогресс в надежде, что это будет последний раз, когда кому-то придется с этим бороться.

Шаг 1. Установите Loom

Эта часть проста. Просто следуйте инструкциям здесь для своей операционной системы. Как только он будет установлен, просто запустите его.

У них также есть несколько контейнеров Docker, которые они постоянно обновляют. Ссылки на них находятся внизу этой страницы.

Шаг 2: настройте свой проект

Мой проект выглядит так

Шаг 3. Настройте Truffle в папке dappchain

В папке dappchain я выполнил это короткое руководство, чтобы настроить проект трюфеля с минимальными затратами.

Просто войдите туда и запустите yarn deploy, чтобы ваши контракты попали в цепочку ткацких станков.

ПРИМЕЧАНИЕ. Если развертывание не работает или выдает ошибки, есть несколько вещей, которые могут быть неправильными!

  1. Возможно, он не сможет подключиться к вашему узлу Loom. Если вы запускаете его на другом компьютере или на виртуальной машине, убедитесь, что IP-адрес установлен правильно в truffle.js или truffle-config.js.
  2. Некоторые версии Truffle и Solc плохо работают с Loom. Убедитесь, что Truffle - v4.1.8, а Solc - v0.4.23.

Шаг 4. Настройте свой проект Unity в папке unityclient

В папке unityclient я взял Unity 3D SDK и просто вставил его (у них пока нет пакета Unity).

Шаг 5. Скажите Truffle экспортировать ваши ABI и адреса

Сначала войдите в свой проект Unity и создайте каталоги Assets/Resources/contracts/abi и Assets/Resources/contracts/address

В эти папки будут экспортироваться данные вашего контракта.

Теперь вернитесь в свой проект Truffle и добавьте в папку миграции файл с именем 99_export_abis.js. Теперь ваш проект должен выглядеть примерно так.

Каждый шаг в вашей папке миграции вызывается при миграции / развертывании, и 99 сделает его последним шагом. Вот как они должны выглядеть:

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

Кроме того, убедитесь, что вы запустили yarn deploy или yarn deploy:reset, чтобы эти файлы ABI и Address помещались в каталог вашего проекта Unity.

Шаг 6: Настройте вашу сцену Unity

Идите вперед и создайте новую сцену, и в этой новой сцене создайте пустой игровой объект с прикрепленным новым скриптом с именем SimpleStoreHandler. Должно получиться так:

А вот что должно быть в вашем SimpleStoreHandler скрипте

Все это довольно хорошо прокомментировано, но если у вас есть какие-либо вопросы, дайте мне знать!

Заключение: Тестирование

Попробуйте запустить проект Unity! Вы должны увидеть несколько сообщений и некоторые данные, поступающие от Loom!

Если у вас возникнут проблемы, дайте мне знать! Я буду добавлять любые другие проблемы, с которыми мне расскажут другие люди. Надеюсь, этот процесс настройки не будет таким сложным!

Изменить: устранение некоторых ошибок

Exception: JSON-RPC Error -32603 (Internal error): name is not registered

Если вы получаете эту ошибку в Unity, это означает, что вы пытаетесь получить доступ к своему контракту по имени, тогда как вы должны получить доступ к нему по его адресу. Только плагины Go-Loom могут быть доступны по именам, контракты Solidity EVM должны быть доступны по адресу. Все, что вам нужно сделать, это получить адрес вашего контракта и использовать код из шага 6, строка 58, чтобы создать экземпляр класса EvmContract с вашим адресом.

Исходный код





Баночка чаевых ETH!