Начало работы с Loom, Truffle и Unity
Моя цель на следующие несколько недель - создать игру на блокчейне с помощью Loom. На мой взгляд, лучшим стеком было бы использование Truffle для разработки контрактов и Unity для конкретизации клиента.
Я просто потратил последние 8 часов, пытаясь во всем этом разобраться. Мне очень помогли их команда и сообщество Loom, и я решил записывать здесь свой прогресс в надежде, что это будет последний раз, когда кому-то придется с этим бороться.
Шаг 1. Установите Loom
Эта часть проста. Просто следуйте инструкциям здесь для своей операционной системы. Как только он будет установлен, просто запустите его.
У них также есть несколько контейнеров Docker, которые они постоянно обновляют. Ссылки на них находятся внизу этой страницы.
Шаг 2: настройте свой проект
Мой проект выглядит так
Шаг 3. Настройте Truffle в папке dappchain
В папке dappchain я выполнил это короткое руководство, чтобы настроить проект трюфеля с минимальными затратами.
Просто войдите туда и запустите yarn deploy
, чтобы ваши контракты попали в цепочку ткацких станков.
ПРИМЕЧАНИЕ. Если развертывание не работает или выдает ошибки, есть несколько вещей, которые могут быть неправильными!
- Возможно, он не сможет подключиться к вашему узлу Loom. Если вы запускаете его на другом компьютере или на виртуальной машине, убедитесь, что IP-адрес установлен правильно в truffle.js или truffle-config.js.
- Некоторые версии 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!