Ethereum Unity3D Boilerplate Questions

You mentioned this is an older project in the other post (you can just keep to this topic now), what version of the Moralis SDK are you using? It should show in the Unity package manager window. It’s best to try and get it working locally first.

How did you set up the self-hosted server exactly? By default you just install that project, set up the environment variables, start it and then you should be able to go to http://localhost:1337/server in your browser.

There is a migration video and some other info on that page.

It doesn’t show version in package manager, I’ll see if I can find it elsewhere. And anyways migration isn’t an issue, everything was working smoothly on the Moralis server. And yes, considering the webGL is on my server, and the parser is also, it does run ā€œlocallyā€.

I gave you the terminal commands that I used to install the server already, but here I’ll say it again:

yarn add parse-server --ignore-engines
yarn dev:db-start
yarn start
cd /var/www/html/DnA/parse-server-migration
yarn build
yarn start
yarn dev:db-start
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo systemctl start mongod
yarn add parse-dashboard --ignore-engines
yarn add moralis --ignore-engines

That is all I did, then change the name of the env file in the parse-server code to .env following the parse-server guide. So yes, I ran the commands to run locally, and it’s not working. I’m assuming I’m missing something to do with the older moralis sdk I’m using. Honestly I can’t seem to find the version anywhere, can you tell me? I call ā€˜using MoralisWeb3ApiSdk’ instead of the newer calls for Unity you have. PLEASE just give me a hint! Who wrote the code? Maybe THEY can take a look for me?
Dave

Okay so this happens when I try to start the parse server:

root@davecote:/var/www/html/DnA/parse-server-migration# yarn dev
yarn run v1.22.19
$ ts-node src/index.ts
bigint: Failed to load bindings, pure JS will be used (try npm run rebuild?)
warn: DeprecationWarning: The Parse Server option 'directAccess' default will change to 'true' in a future version. Additionally, the environment variable 'PARSE_SERVER_ENABLE_EXPERIMENTAL_DIRECT_ACCESS' will be deprecated and renamed to 'PARSE_SERVER_DIRECT_ACCESS' in a future version; it is currently possible to use either one.
warn: DeprecationWarning: The Parse Server option 'enforcePrivateUsers' default will change to 'true' in a future version.
warn: DeprecationWarning: The Parse Server option 'allowClientClassCreation' default will change to 'false' in a future version.
info: Parse LiveQuery Server started running
Moralis Server is running on port 1337 and stream webhook url https://1c9e-167-71-97-138.ngrok.io/streams-webhook
MongoServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017
    at Timeout._onTimeout (/var/www/html/DnA/parse-server-migration/node_modules/mongodb/src/sdam/topology.ts:577:30)
    at listOnTimeout (node:internal/timers:564:17)
    at processTimers (node:internal/timers:507:7) {
  reason: TopologyDescription {
    type: 'Unknown',
    servers: Map(1) { 'localhost:27017' => [ServerDescription] },
    stale: false,
    compatible: true,
    heartbeatFrequencyMS: 10000,
    localThresholdMS: 15,
    setName: null,
    maxElectionId: null,
    maxSetVersion: null,
    commonWireVersion: 0,
    logicalSessionTimeoutMinutes: null
  },
  code: undefined,
  [Symbol(errorLabels)]: Set(0) {}
}
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

And before that error I got the same except instead of ECONNREFUSED I got:]

MongoServerSelectionError: Invalid message size: 1347703880, max allowed: 67108864

What am I getting wrong here?

Seems to still be an issue with your MongoDB connection, check your instance and your connection string (in .env). If you keep having issues with it locally, you could just set up a hosted MongoDB (Cloud) instance for now.

I’ve always struggled with mongodb, I hate it actually. Would you happen to know how to do it by cloud?
Dave :slight_smile:

You can follow this tutorial.

Okay server is running:

root@davecote:/var/www/html/DnA/parse-server-migration# yarn dev
yarn run v1.22.19
$ ts-node src/index.ts
bigint: Failed to load bindings, pure JS will be used (try npm run rebuild?)
warn: DeprecationWarning: The Parse Server option 'directAccess' default will change to 'true' in a future version. Additionally, the environment variable 'PARSE_SERVER_ENABLE_EXPERIMENTAL_DIRECT_ACCESS' will be deprecated and renamed to 'PARSE_SERVER_DIRECT_ACCESS' in a future version; it is currently possible to use either one.
warn: DeprecationWarning: The Parse Server option 'enforcePrivateUsers' default will change to 'true' in a future version.
warn: DeprecationWarning: The Parse Server option 'allowClientClassCreation' default will change to 'false' in a future version.
info: Parse LiveQuery Server started running
Moralis Server is running on port 1337 and stream webhook url https://3494-167-71-97-138.ngrok.io/streams-webhook

But, same browser errors:

[WebSocket] Queued 0 subscriptions
build.framework.js:3454:11
[WebSocket] Flushing Queue
build.framework.js:3454:11
[WebSocket] Queue Count: 0
build.framework.js:3454:11
[WebSocket] Queue Flushed
build.framework.js:3454:11
[WebSocket] Opened wss://2.bridge.walletconnect.org
build.framework.js:3454:11
[WebSocket] Open Completed
build.framework.js:3454:11
[WebSocket] Subscribe to e48c6638-3688-476c-974d-9d6c5f939001
build.framework.js:3454:11
[WalletConnect] Session Connected
3 build.framework.js:3454:11
Wallet connection received
build.framework.js:3454:11
Adding Header: Content-Type value: application/json
build.framework.js:3454:11
Adding Header: X-Parse-Installation-Id value: dec524d9-62f3-4388-ae7a-73b04cba5c16
build.framework.js:3454:11
Adding Header: X-Parse-Application-Id value: pRLSWTZ8RUMngGVmgWmI8IzaUXFgUsX8Z1wZ6leJ
build.framework.js:3454:11
Setup default wallet MetaMask
build.framework.js:3454:11
WebGL warning: clientWaitSync: ClientWaitSync must return TIMEOUT_EXPIRED until control has returned to the user agent's main loop. (only warns once) 7
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:1337/server/functions/getServerTime. (Reason: CORS request did not succeed). Status code: (null).
2
Error: Unknown Error
build.framework.js:3447:11
Error Getting Wallet Info: Unknown Error

So this machine is ubuntu 20.04, run via terminal ssh, the webGL build is at devilsandangels.io/DnA/selfhost/ and the parse server is at devilsandangels.io:1337/server
Please ask me questions to get me to look up whatever I need to be looking at. Where are any logs that could help?
Dave :slight_smile:

And if I run the webGL in the Unity editor (not on the servers machine, on my home PC) it gives Error: Cannot connect to destination host (expected obviously) but then throws this:

[WebSocket] Exception Unexpected character encountered while parsing value: M. Path '', line 0, position 0.
UnityEngine.Debug:Log (object)
WalletConnectSharp.Unity.Network.NativeWebSocketTransport/<OnMessageReceived>d__29:MoveNext () (at Assets/MoralisWeb3ApiSdk/WalletConnectSharp.Unity/Network/NativeWebSocketTransport.cs:199)
System.Runtime.CompilerServices.AsyncVoidMethodBuilder:Start<WalletConnectSharp.Unity.Network.NativeWebSocketTransport/<OnMessageReceived>d__29> (WalletConnectSharp.Unity.Network.NativeWebSocketTransport/<OnMessageReceived>d__29&)
WalletConnectSharp.Unity.Network.NativeWebSocketTransport:OnMessageReceived (byte[])
NativeWebSocket.WebSocket:DispatchMessageQueue () (at Assets/MoralisWeb3ApiSdk/WalletConnectSharp.Unity/Network/Client/NativeWebSocket.cs:701)
WalletConnectSharp.Unity.Network.NativeWebSocketTransport:Update () (at Assets/MoralisWeb3ApiSdk/WalletConnectSharp.Unity/Network/NativeWebSocketTransport.cs:208)

Does this point to anything?
D

These links don’t work for me.

I’m not familiar with this error - this error isn’t coming from your own code? When does this happen? What is the server / dapp URL you’re using in the Unity SDK for your project?

Sorry links are:
Webgl https://devilsandangels.io/DnA/selfhost
Server http://devilsandangels.io:1337/server

And I don’t know, could it be that my older sdk is causing the problem? It happens right after scanning QR and then accepting connection in metamask on the mobile app on my phone. The browser on computer says successful connection please sign message. Then crash.

It could be - I’m not that familiar with the older SDK code. You could share a repo of the Unity project. If you double click the error in the Unity editor, it may open the file where it’s coming from.

Those links still show 404 errors for me.

Ah, typo, links fixed please try again

With your game, I get this error when authenticating:

http://localhost:1337/server/functions/getServerTime 403 (Forbidden)

Have you used the right application ID?

I used the app id that it was always using, generated by moralis dashboard. Speaking to that, maybe some keys I have wrong. Where do I find A) MORALIS_API_KEY? B) MASTER_KEY?

Okay this is horrible. Is ANYONE having luck migrating? My Unity WebGL build ran perfectly on the moralis-hosted server, so why should any difference in the sdk I’m using have any difference?
I ran a server locally on my home PC like you recommended, I get 403 unauthorized no matter what I try. So I installed a bunch of yarn and npm on my home setup and likely those software remnants will cause problems in the future.
I’ve been using different API’s since Stripe payments first came out, so I can navigate this stuff, and code decently in C#, js, python, php, C++, C … and yet this seems rediculously impossible.
Seriously nobody there at moralis, or on this forum, has migrated the original sdk in a unity build to the web?? Just on ā€œlocalā€ machines?? How on earth are we supposed to work with this??
ANNNNNND: WHAT’S MY MORALIS_API_KEY??? AND WHAT’S MY MASTER_KEY???

You need to use the application ID you define in your server’s environment variables (locally this is the .env file). This is where the master key is also set. You need to look at the self-hosted tutorial - you have missed a few other things.

Other users have already done this using the modifications I linked.

Self-hosted servers are slightly different - for example, they handle authentication differently meaning this code has to be changed in the clientside (like the Unity SDK). This is also covered in this tutorial - you need to be following this.

Alex, honestly, I’ve been following the tutorials, and a few things seem broken. I don’t know if this was all purely developed for a windows PowerShell/visual code environment, but live servers are usually primarily Ubuntu or another Linux distro, so no visual code or studio. When I run yarn install on your self-hosted migration server and react client, I get a tonne of dependency warnings, and I have to run the build I need to do so with the --ignore-engines flag, and I’m on an up to date Ubuntu 20.04 server so I’m not sure what’s going on there. Is this only for people running a server on their own PC with Windows? If so that’s pretty weak.

I’ve got walletconnect working for connection with eth wallet, so at least my Metaverse is usable now, but that runs out of the box without a self hosted server running.

I mean, even the tutorials are mixed up, sometimes the keys and server urls are in ā€˜single quotes’, and sometimes they’re not, so I find that messy to follow. I’ve got my api key and appID fine, I can get the server running, but no connection to the unity webGL build. And am I running the self-hosted server AND client server? Because the client server (react example) doesn’t seem to finish starting up when running the hosted server. I can see both servers taking up memory with the top command. Are they just using to much resources? Is it an issue of me having ssl certificates? I don’t even know where to start. And you haven’t even asked me to look at and send you any logs… Aren’t there logs to debug this shit?
Please help man…

Hi !
I am trying to integrate Web3auth to Unity using moralis.
Any suggestion on how to do would be gold ! :slight_smile:
Thanks a lot !

Yes please !
How to integrate using moralis for unity ?

Thanks a lot !