Web3 First Person Shooter - Helping Each Other

Lets use this thread to support each other with questions regarding the Web3 FPS Project :star_struck:

Read instructions: https://moralis.io/moralis-projects-learn-to-build-a-web3-space-fps-game/

Feel free to ask for help here - but also ensure YOU HELP people that are asking questions you know the answers to

The Moralis staff and community managers will be keeping an eye on this too :star_struck:

5 Likes

Unity seems like it came with version 3.33 LTS and when I tried to open up the project file, it threw unity-web3-spaceFPS was created with 2020.3.26f1.

I didnā€™t see 3.26 in the download options, so I tried to rebuild it with 3.33 and got 999 compilations error when trying to open it.

Hereā€™s a link to download the editor:

In the process of confirming that works:

It keeps failing when Iā€™m trying to install 2020.3.26f1.

1 Like

Hey @mattjaf,

Are you having problems installing Unity 2020.3.26f1 or opening the project with 2020.3.26f1?

1 Like

For everyone trying to run the project on higher versions than 2020.3.26f1 and finding the ā€œNewtonsoftā€ error, do the following:

  1. Open the manifest.json located in "unity-web3-spaceFPS\Packages"

  2. Add newtonsoft dependency: ā€œcom.unity.nuget.newtonsoft-jsonā€: ā€œ2.0.0ā€,
    So the manifest.json will look like this:

  3. Save the file and let Unity recompile. That should fix it :slight_smile:

2 Likes

Hey, there! Great tutorial!
I got it working by following the Youtube Video, but now Iā€™m trying changing everything to Mumbai Test. However Iā€™m getting this NullReferenceException: Object reference not set to an instance of an object error.

Does anyone know how to fix it?

Iā€™ve setup a Moralis Testnet Server with Polygon Mumbai EVM.

And Iā€™ve changed the ChainID on WalletConnect component.

I tried restarting the project to use the original setup with Ethereum Mainnet and the same error is hapenning.

Iā€™ve found out that task.Result is coming as Null in this line.

Are you on the same chain when scanning the qr code ?
and did you set the chain in wallet connect ?

Sup, 0xprof!

Yeah, Iā€™ve set up a Moralis Server with Ethereum Mainet and used its Server URL and App Id on MoralisSetup component.
Then Iā€™ve opened my Metamask app with an account on Ethereum Mainnet and scanned the QR Code.
The WalletConnect has the default ChainID as 1.
I tried using Trust Wallet as well, but the same error happen.

The strangest thing is that it worked the first time Iā€™ve downloaded and configured the project. Then I tried using a Moralist Server with Mumbai Testnet and changed the URL and App Id accordingly. I also changed the WalletConnect ChainID.

The error happened so I tried reverting all changes to the first and initial config, but it stopped working throwing the same error.

Iā€™ve just tried deleting the projectā€™s folder and unzipping it all again, but Iā€™m stuck with the NullReferenceException error.

This is the Dashboard logs:

did you clear the session on the wallet connect gameobject (scroll to the bottom)
and also you can clear it too from MM mobile (metamask) -> check in settings -> experimental

Yeah, Iā€™ve been clearing sessions every time I tried something new.
I tried clearing Metameask cache and Iā€™ve installed Trust Wallet too, which resulted in the same error.
I also noticed the following error in my logs:
Failed to retrieve server time from Moralis Server!
Because serverTimeResponse comes as Null at the following code

Dictionary<string, object> serverTimeResponse = await MoralisInterface.GetClient().Cloud.RunAsync<Dictionary<string, object>>("getServerTime", new Dictionary<string, object>());

The time on my computer and smartphone is correct.
I tried deleting, creating and restarting Moralis Servers, but it didnā€™t work.

Unity Version: 2020.3.33f1
Moralis Server Version: 0.0.367

@dpradell
I successfully installed the unity editor version 2020.3.33f1

it fails at like 25ish% every time i try to install 2020.3.26f1

I tried to manually add, ā€œcom.unity.nuget.newtonsoft-jsonā€: ā€œ2.0.0ā€, to the dependencies and it has an red line error saying ā€œunexpected end of stringā€.

was I suppose to open the work space in an IDE and run npm install --save [email protected] or something like that.

Hey, guys. I managed to fix my problem!

After a lot of code reading, Iā€™ve found out that pressing ā€œLā€ in the connect screen will trigger a ā€œLogoutā€ function that do three things

// Disconnect wallet subscription.
await walletConnect.Session.Disconnect();
// CLear out the session so it is re-establish on sign-in.
walletConnect.CLearSession();
// Logout the Moralis User.
await MoralisInterface.LogOutAsync();

The Clear Session on WalletConnect game object just triggers walletConnect.CLearSession();, so it seems that it was not enough to solve my problem.

1 Like

HI, thanks for the tutorial! It seems to me(sorry if Iā€™m wrong, happy to be corrected) that anyone can claim the NFT from outside the game with a simple smart contract interaction. How could we solve this problem and make the claim function available only to the accounts that finished the game?

Hi @andreitoma8, youā€™re absolutely correct. As I say in the video, this smart contract was already deployed and used just for this sample project. Adding security to it was not the topic of this tutorial but Iā€™ll do a video about that quite soon :slight_smile:

@mattjaf and everyone here. I updated the sample project to 2020.3.33f1 to avoid any more confusion.

If you have that Editor version, please pull from the repo:

Or just download the updated ZIP file:

Thanks for the response @dpradell ! That sounds great, I canā€™t wait to see the video youā€™ll make. Happy hacking!

1 Like

Thank you, ill definitely check it out.

1 Like

Hi,

I try to make a nft on opensea and replace the nft in the sample with that so far no luckā€¦
simply changeing the nft data under claim nft controller on the mug wont to the job.

Hi can you look at the repo code linked above to see if youā€™ve missed anything. What have you done in code when you say replace the nft?

Well the sample is working perfect. When I made a nft that is mintable on opensea and I replaced the 1 in turtorial with the 1 I made it wont work.


Also what adress needs to be in this field i dont get it? I tried the same adress in the laucher and the adress that deployed the contract. Still no luck