Artwork

Content provided by Phantom. All podcast content including episodes, graphics, and podcast descriptions are uploaded and provided directly by Phantom or their podcast platform partner. If you believe someone is using your copyrighted work without your permission, you can follow the process outlined here https://player.fm/legal.
Player FM - Podcast App
Go offline with the Player FM app!

sol_idity - Solana Plays Pokemon Creator, EP 18

22:47
 
Share
 

Manage episode 353609355 series 3394203
Content provided by Phantom. All podcast content including episodes, graphics, and podcast descriptions are uploaded and provided directly by Phantom or their podcast platform partner. If you believe someone is using your copyrighted work without your permission, you can follow the process outlined here https://player.fm/legal.

@sol_idity, developer and creator of Solana Plays Pokemon joins Brian Friel to talk about how he created a community-controlled game of Pokemon where users can vote to press buttons in a turn-by-turn game via transactions on Solana.

Show Notes:

00:44 - What is Solana Plays Pokemon?

02:23 - Who he is / Why build on Solana?

05:55 - Surprises or challenges while building on Solana?

08:12 - Strategy for building new features

12:41 - How to improve games on Solana? What’s missing
15:47 - What environments for crypto games?
17:06 - Future goals for the game
19:08 - Expanding the team?

20:02 - Advice for people starting to work in Solana

20:55 - A builder he admires in the Web3 space

22:00 - Contact info

Full Transcript:

Brian (00:05):

Hey everyone and welcome to the Zeitgeist, the show where we highlight the founders, developers, and designers who are pushing the Web3 space forward. I'm Brian Friel, developer relations at Phantom, and I'm super excited to introduce our guest today, Solidity, the creator of a new on-chain game called Solana Plays Pokemon. sol_idity. Welcome to the show.

Solidity (00:26):

Hi, GM. GM, everybody.

Brian (00:28):

GM, it's great to have you here. Solidity, Solana Plays Pokemon. Those are some words that people have probably heard in their life, but maybe not in the same sentence. Can you describe for our listeners who haven't played this game before, what is “Solana Plays Pokemon”?

Solidity (00:44):

Solana Plays Pokemon generally is an on-chain game where players will vote on the blockchain to play the game together. So every button press is collaborative and everyone on Solana is playing a single game of Pokemon collaboratively together on the blockchain.

Brian (00:59):

In real time. Yeah. So this is a new game. How long ago did this launch?

Solidity (01:03):

January. I think about a week-plus ago. Yes.

Brian (01:05):

Wow. So 10 days ago, you launched this game on Solana and essentially it's a website where there's a Pokemon emulator in there and then there's ability to connect your wallet and anyone else who's on the site at the same time can all vote for what button you press to continue playing the game and then every 10 seconds, Solana is just tallying these up and putting these inputs into the game. And in 10 days, this thing, in my world and Twitter world, has taken Solana Twitter by storm. I believe at the time of this recording, which is January 17th, we've officially beaten the game. Is that correct? Solana has beaten Pokemon?

Solidity (01:38):

Yeah, but I think we've beaten it for quite a few days really. I mean, for three or four days. Yeah, we've been around for I think 15 days, so I think it took about a week or 10 days to complete the game. So the game is kind of a bit done. Yes.

Brian (01:50):

Yeah. This is super cool. So basically you put this thing out there, Twitter catches it, all of a sudden, you have all these people who are connecting their wallets, playing this game collectively. It's chaos. Then there's trying to have organization, you've made some changes to the game. I want to get into all the kind of details and how you've built it and what the game is and all that. I would categorize this as potentially a new genre of game. Before we dive into everything that you've built, can you tell us a little bit about who you are? You go by the name Solidity, how did you decide to build this and why did you decide to build this on Solana?

Solidity (02:24):

Personally, I've been in Solana since, I think, September of 2021. In the beginning, I was just doing NFTs, minting stuff in general, just doing the usual Degen stuff. I was a web2 developer already, so I got more curious about developing on Solana. In a sense, I started with Solana because it was one of the blockchains that had the best experience in a sense in that the transactions were very fast, gas fees were low. It's like, why do people not start doing NFTs on other chains? Why is Solana a lot of people's first chain? It is because the gas fees are very low, so even minting an NFT back then, even at all-time highs, it cost like what? Two USD to mint an NFT, which was unheard of in the whole space back then, and that's why in a sense, I kind of stuck to Solana and continue doing Solana even after I stopped being a Degen, I continue developing for the chain.

(03:11):

I was trying to learn smart contract development for the longest time. In a sense, it's kind of hard to learn something new when, in a sense, you have other stuff in your life like working a full-time job. So over the Christmas holidays, that was when I was like, "Okay, this is when I'm going to really do something to learn how to develop smart contracts." And I feel like the best way to learn how to develop something new, you have to write a program and deploy to the main net to successfully learn how to write these kind of smart contracts properly.

(03:42):

So why do I want to make a Pokemon game that is playable on-chain? So the reason is kinda interesting because I was very interested in the concept of the blockchain oracle, how do we get external sources of data onto the blockchain? Some important sources of information would be maybe a set price of a coin. So, DeFi exchanges all need information off chain, and I was very curious about how the blockchain gets this data? That's why I was like, if I'm going to write a smart contract program, it has to have something to do with oracles, I want to in a sense make my own oracle and implement it. And that in a sense, the Solana Plays Pokemon idea was kind of born because one of the first few ideas of an oracle I thought of would be maybe a game control. So what if I could have an oracle that gives me output from a, let's say, a Game Boy emulator?

(04:31):

And that was something that I was like, "Hey, I could actually work with that." So I would say that it is kind of inaccurate to say that the game runs on the blockchain. It starts all the states on the blockchain, but it does not really run on the blockchain. The game runs off-chain and then data is transmitted onto the chain, so it is sort of an oracle, just that it's not decentralized. That was kind of my inspiration for making the game and now I felt that it was a pretty interesting idea and I worked on it over the Christmas holidays. Then everything subsequently happened, I guess. Yes.

Brian (05:03):

Yeah, no, that's awesome and there's a lot to unpack there, but just to tease that out a little more, so you were a Web2 dev before all this. You said you had a full-time job and essentially just over the Christmas break, you decided, "Hey, I'm going to finally learn how to do Solana program development." And I assume, did you build this in Anchor or did you build this in native Rust Solana programs?

Solidity (05:25):

I used Anchor, yeah. Native Rust is a bit too much, I guess.

Brian (05:29):

Yeah, but that's still pretty incredible that in a couple weeks, you build this thing from zero to one. You deploy in the wild and it's battle tested. Like you said, you learn best by deploying the main net. You have all these people actually using this program. I want to ask, before we get into talking about the game, just a little bit more on the development journey. Were there any big surprises or challenges that you faced as you built this and as you learned the ins and outs of Solana?

Solidity (05:54):

I'm actually a software engineer working in the Solana space. My full-time job, I'm working for more on the DeFi protocols on Solana.

Brian (06:01):

Okay.

Solidity (06:02):

But I'm more of a front-end developer, so that's why I was very curious to learn more about the back-end aspects. I would say that for the learning journey of bridging from the front-end to the back-end, smart contracts in a sense, what was very interesting about Solana compared to other blockchain languages, maybe Solidity on the EVM chains is the concept of PDAs. I feel that PDA is a very elegant concept and if you use them right, they're actually very powerful and that was the most interesting thing that I, in a sense, learned about Solana as I was doing this.

Brian (06:35):

No, I couldn't agree more. That was one of my first entry points as well, was writing an early PDA guide. Definitely something elegant, Solana's architecture there. So that's a story I've heard a lot though too, is people work full-time in the Solana space and it's essentially Web2 development skills translated over to a Web3 world. You're probably building something in React, definitely something in TypeScript, but from the front-end you're using Web3 JS and there's some intricacies to awaiting certain actions on a blockchain, but you don't really get into the program side of things. It's super cool that you're able to pick this up and deploy basically a full app in just a couple weeks.

(07:10):

I want to talk a little bit more about the game holistically, what this means, because a lot of people see, "Okay, yeah, you're playing Pokemon, that's cool. People do that all the time." But there's something unique here and you did say, the game's not being run on the blockchain, this is a Pokemon emulator that's being run like any other emulator. But the unique thing is there's this social coordination aspect of it that the blockchain is coordinating, where anyone can kind of show up on this site.

(07:38):

It's not like you're making a team match where some server is organizing players together. There doesn't necessarily have to be a concept of a chat. You could just have random actors doing their own thing. You did decide to build a chat as you went. Talk a little bit about the genre of this game. This seems to be something new where it's kind of multiplayer in real time, but you don't know who's on your team, who isn't. You decide to build features also as you go. How did you decide to build these features? Were some of these planned? Were some of these reacting to what you saw in the wild and how did you experience this as you built it?

Solidity (08:12):

I would say that it's an interesting genre because I expected there to be a lot more chaos. I didn't expect everyone to complete the game so early on, so that was surprising. I expected more bad actors in a sense. There was a bad actor, he or she released our starter Pokemon.

Brian (08:27):

Yeah, I want to go in on that. So you get a starter Pokemon when you start any version of the gen one. I played yellow growing up and I think it was red or blue that you guys were playing and a lot of people get emotionally attached to this thing. You get a little Squirtle or a Charmander, you're supposed to grow it into this great thing and classic internet, it's like you guys kick this off and you beat the first gym leader and someone just goes and releases the Pokemon in the wild and you can never get it back. Was that surprising to you? Did you expect to see more of that troll behavior?

Solidity (08:55):

Yeah, it wasn't that surprising. I expected to see a lot more of those troll behaviors. Even some of my friends in real life who are in the Solana space, they're like, "Oh, you have this thing. People are going to come in to release Pokemon and stuff." And I'm like, "That's the fun part. That's why it's decentralized. Anyone can do anything they want to. Just connect their wallet." I mean, the wallet address will be on-chain, but that's all there is to it. And I'm kind of disappointed there was not much more drama, but that was attributed to the strong community who were defending the game. So it's like when they see anyone taking steps to go and release or do anything funny, then they'll outvote the bad actor.

Brian (09:30):

Yeah, it's like you had a time delay because you can only make one move every, what was it, 10 seconds, is that right?

Solidity (09:36):

Yeah, 10 seconds.

Brian (09:37):

So yeah, you could see somebody walking to the computer in the game to release the Pokemon. That's how you did it. And Twitter, it was kicking a beehive. People could just rally and log in and overvote this person. I think that's also kind of a wild component where the players of the game maybe aren't always playing the game, they're reacting to the state of things. Like, it's a game that could potentially run 24/7 and things are updating and more players pile in to add cooks to the kitchen at the last minute. I've never seen something like that before in a game. I think that's pretty wild.

Solidity (10:06):

Yeah, it was kind of what I was expecting in a sense, the changes that I subsequently made to the game, there were actually quite a few changes. Most of the changes, I actually did not really plan for them. I was like, "Okay, this thing is kind of done. I'm not going to touch it anymore. I'm just going to watch people play." That was my initial point of view. But then once enter main net and people started playing, then some of the flaws were kind of clear. It's like, maybe sometimes the game runs a bit too slowly and, in a sense, it's gaming, so you want the immediate feedback to what you press.

(10:34):

So there's a lot of work on optimizing, how am I going to make the game faster? So for example, Solana is very fast already. So in a sense, there was really nothing much I had to do on the underlying technology. But for some of the other small things, maybe let's say, for example, on the game state, I actually started on IPFS. They're not started directly on the blockchain. They're started on IPFS and the IPFS ID is referenced on the blockchain. So what I did is that I ran my own IPFS node, so that uploads for the safety and the image is faster and that probably cut down about three seconds per execution. And some other things, like maybe a turbo mode to allow people to vote for multiple buttons at once.

(11:15):

So in a sense, a lot of my iterations were really geared on, how do I make this game, in a sense, more responsive and faster? Because that's what keeps people's attention. The problem might have been I made the game a bit too fast because I expected a lot more chaos. So the problem with some of those, in a sense, enhancements with that, it made it easier to complete the game. It made it harder for bad actors to come in, in a sense, I guess at the end, if I make a V2, then I'll be looking at some of the other decisions to make.

Brian (11:48):

V2, I love it. That's a hint at what's to come, but yeah. You mentioned that your kind of North Star I guess is making the game more engaging, basically cutting out these downtimes between feedback. Is there anything that you think in particular is needed in either the development ecosystem or maybe something that wallets can implement or some feature in the gaming, tooling world that would help make games on Solana this more and more frictionless, kind of like you were just using a normal website? Because right now there is a lot of friction. You connect the wallet, every action, you get a simulation, you send that and you have to wait and coordinate and all this, but you can kind of get glimpses of a world where you're like, "Wow, this could work just a normal game I'm playing on a web browser one day." What do you think are some of the biggest pieces that are missing, having developed a game now on your own?

Solidity (12:42):

For me, for this game, people have feedback when we do that, the wallet approvers are kind of cumbersome, but the fact is that I feel that for security, it is very important for people to understand every transaction they are submitting to the blockchain. Because real money is involved. There was this guy who asked me to provide a box to put in his private key so that he can play the game without approval and I would kind of put it out there. Right now that is not a very good security practice, so that is something we shouldn't do.

(13:08):

I would say that since Solana is a very fast blockchain, so there is really not much to complain about, in the sense, the back-end side of things, the transaction settlements and stuff like that. They're fast enough for online games in a sense. Now the question we should grapple with is more of the wallet approvers. What is a good balance between security and speed? How integrated a wallet is into an application?

(13:30):

So for me, actually Solana Plays Pokemon is supported on mobile too. That's a primary way I've personally been playing it. I'm playing it on the Phantom mobile app. And the thing about Solana is that there's this mobile wallet adapter, which is pretty cool. If you were on an Android phone and if you were to open the website, the Solana Plays Pokemon website on any web browser, you'll be able to connect your wallet on the web browser itself and then you open your native wallet app.

(14:00):

So it's these kinds of integrations that make gaming, or not even gaming, but everything you do in the Web3 space more frictionless for the user. I remember the first time I used the mobile wallet adapter, I was also shocked. I was doing a jigsaw and I was like, "I just saw money on my Chrome, on my phone." And I felt like, "Oh, that's like the future." Yeah, it was very interesting.

Brian (14:22):

Yeah, it just works. You don't have to go through the in-app browser anymore, it just works. We would love to get that on iOS too, believe me, we're proud to support that on Android. iOS is another battle, but that's a little bit out of our control right now. But I agree that's totally where this is heading. I also totally resonate with the auto approve. Sounds like you've been around Solana a long time. You probably were there for when Phantom used to have a semblance of auto-approve in the wallet, which was a pretty wild, wild West days. And I think there's something that, having had that feature once, we definitely understand how awesome it can be. It's just like you said, it's very, very important that you do that safely. So that's definitely something that we're thinking about too. I think there could be a balance there. That's something we're actively kind of researching right now.

(15:09):

One question too is, you hear a lot from games that I see are oftentimes, "Hey, we're building in Unity or we're building in Unreal. We're building these really intensive environments that give this great sense of realism in a game." But they're development cycles could be pretty long. I mean, you built this thing in a couple weeks in a browser. It seems like that might be the first frontier of this kind of crypto gaming that a lot of people talk about. Do you feel strongly about that? Do you think games in a browser is a pretty viable path for a while? Or how do you think about the different environments in which a crypto game could live?

Solidity (15:47):

In a sense, it could live off the web browser, it could be the desired state where it is like you download some game on Steam and it has all the Web3 components you need. Personally, I feel that we are still very far from it. There's a lot of ideological pressure. Traditional gaming communities, they absolutely hate NFTs and stuff like that. So I do feel that we are still quite some time away from one day where that's the norm. I do feel that in the short term, web browser games will be the entry point to gaming on Web3 because there's less friction now, just visit a website, approve a transaction, you don't need to sign in or create an account, just approve for transaction or see some actions and be like, "Oh, that's cool." But in this current time, I guess society is still not ready for that yet.

Brian (16:31):

Yeah, no, I agree. I think it's something that everyone can see coming, but it's a question of what's the path to get there, what happens in between? Things are always changing in this space and so it's good to be reactive like that. Just to circle back on the game. So despite all odds, despite the trolls, people completed the game. We might have released our starter Pokemon, but we got the Nido Chad, the Nido King and basically breeze through the game. Where do you go from here with the game? I've seen a couple things that you've kicked around on Twitter, but what's the current state of the game development? Does this project live on? How far are you trying to take this thing?

Solidity (17:06):

Currently, I'm just letting people mint NFT of whatever rounds they have voted in. So they'll be able to go to a page where they can just mint the NFT of the frames that they voted in. So it's like a small little memory of their game playing.

Brian (17:18):

Oh, that's cool. Because all the game states on-chain, each action was recorded on-chain. So you can mint an NFT based on that action?

Solidity (17:26):

Yeah. After this, I'm going to deploy the code and probably just check the security of stuff and be like, "Oh, okay, I will deploy it." Yeah, but I'm still checking the security of stuff to make sure that it's secure. For medium-term goals, I've been reaching out to a few DAOs to try to get together a competitive version of the game and we will see how that goes. I'm currently in talks with a few DAOs who try to get it set up.

Brian (17:50):

And the thinking being that each DAO has their own game. Is it just DAO members that could play or would it be like you could attack another DAO's game and try to troll them?

Solidity (18:02):

You could attack another DAO, I guess. Yeah, they'll just all have different websites to play the game on, but they'll be playing the same game and we just see who is the best DAO in a sense.

Brian (18:11):

But it's permissionless, so it's not like I need to be part of MonkeDAO to play MonkeDAO's game. I could go in and release their Charmander. Not saying I would do that, but yeah.

Solidity (18:20):

Yeah, that's the current plan, yeah.

Brian (18:22):

That's cool. So that adds another layer of, you gotta watch your back. Someone's always got to be awake. No, you can't always be sleeping when you're playing this game.

Solidity (18:31):

Yes, there’s more at stake in round two. Yep.

Brian (18:32):

Wow, okay. That's pretty wild. Yeah, I could definitely see a world too, because it's on Solana, it's on a blockchain where there's a token at stake here or something that really aligns incentives and then all of a sudden, you have a pretty wild scenario. This is kind of like taking eSports to the next level. I could see some long Twitch streams about this one day. That's super exciting. So it's just you working on this, correct? You said, you learned this over Christmas, you built it yourself. It sounds like this is something that could potentially have legs, you could continue this. Do you have plans to bring more people on or do you think it's just going to be you for the foreseeable future?

Solidity (19:08):

For the foreseeable future, I'll be supporting this on my own. In a sense, I'm just having fun along the way. It's like, "Oh, I'm learning new things." I'm writing code that I've never written before, so I haven't really thought beyond having fun. Yeah, so we'll see about that I guess. Yeah.

Brian (19:24):

Well I'd say that's a good guiding North Star just to have fun. So far it's worked out pretty well for you. As we begin to bring this to a close, one question I have, you mentioned, "Hey, I'm just having fun. I've just been learning this on my own." You've done this in a couple weeks. If there's another developer that's listening to this podcast, let's say, they're kind of like the standard Solana front-end dev. They know their way around, what 3JS, they know some Solana terms. Having gone through this, what would you recommend as their process for getting involved with building their first Solana program, deploying to main net? Are there any gotchas that got you caught up? Is there anything that you would impart on them as they begin that journey?

Solidity (20:02):

Yeah, I would say that generally, there's nothing really surprising, I guess. Anchor has been around for quite some time. What I hope is that old Anchor, there are a bit more gotchas with old Anchor. The new Anchor is pretty well documented. If there's really something they can't really understand, you can just look at the source code. So it is still kind of fine for me to get started. I use this resource code, SolDev, S-O-L-D-E-V.

Brian (20:31):

That's Italo's app. Italo Casas.

Solidity (20:32):

Yeah. So there's a course on it that was really amazing. Probably you'll be able to write your first full on-chain program after you run through the whole course. So yeah, if I had to recommend resources, that's what I would recommend. Yes.

Brian (20:44):

That's awesome. Well, Solidity, this has been a great conversation. One question that we always ask our guests in closing, want to hear from you is, who is a builder that you admire in the Web3 ecosystem?

Solidity (20:56):

Okay, so that is a very interesting question. I kind of knew that you were going to be asking that and I tried to kind of think about it. But the fact is that I haven't been on crypto Twitter for very long. Know who I kind of want to build with. I mean the people I work with, they're very talented. I work for different protocols, so I love working with them. In the larger space itself, probably maybe people from the Solana Foundation, maybe even the Metaplex team. Sometimes I do look at the source code for stuff because sometimes I want to understand how they do certain things. I want to understand the intricacies of things and in a sense, when I look at the source code, it's like it's elegant, it's very well written. And the interesting thing about this is that they're always iterating and these are the kind of values that I kind of write with and these are the kind of people that I want to work with.

Brian (21:40):

Yeah, no, I couldn't agree more. Those are two great examples and nothing's ever finished. I would say. Everyone's always iterating and looking to improve and everything can always be improved, so it's a really great value to uphold. Well, Solidity, this has been awesome. Thank you so much for coming on and telling your story. Where can people go to learn more about Solana Plays Pokemon?

Solidity (22:00):

They can go to solana.playspokemon.xyz

Brian (22:07):

Awesome. Solana.playspokemon.xyz – That's great. Well, I'm proud to say that I played for a couple turns. I one-shotted a Zubat with Thunderbolt from our Nido King. So I look forward to minting that NFT that commemorates that. And I also look forward to seeing, what I believe, is potentially a new game genre. Where this goes from here, like you said, it will keep it fun, keep developing and keep changing things and improving and I really look forward to seeing where this goes. Thank you so much for coming on the show.

Solidity (22:32):

Thank you, sir.

  continue reading

33 episodes

Artwork
iconShare
 
Manage episode 353609355 series 3394203
Content provided by Phantom. All podcast content including episodes, graphics, and podcast descriptions are uploaded and provided directly by Phantom or their podcast platform partner. If you believe someone is using your copyrighted work without your permission, you can follow the process outlined here https://player.fm/legal.

@sol_idity, developer and creator of Solana Plays Pokemon joins Brian Friel to talk about how he created a community-controlled game of Pokemon where users can vote to press buttons in a turn-by-turn game via transactions on Solana.

Show Notes:

00:44 - What is Solana Plays Pokemon?

02:23 - Who he is / Why build on Solana?

05:55 - Surprises or challenges while building on Solana?

08:12 - Strategy for building new features

12:41 - How to improve games on Solana? What’s missing
15:47 - What environments for crypto games?
17:06 - Future goals for the game
19:08 - Expanding the team?

20:02 - Advice for people starting to work in Solana

20:55 - A builder he admires in the Web3 space

22:00 - Contact info

Full Transcript:

Brian (00:05):

Hey everyone and welcome to the Zeitgeist, the show where we highlight the founders, developers, and designers who are pushing the Web3 space forward. I'm Brian Friel, developer relations at Phantom, and I'm super excited to introduce our guest today, Solidity, the creator of a new on-chain game called Solana Plays Pokemon. sol_idity. Welcome to the show.

Solidity (00:26):

Hi, GM. GM, everybody.

Brian (00:28):

GM, it's great to have you here. Solidity, Solana Plays Pokemon. Those are some words that people have probably heard in their life, but maybe not in the same sentence. Can you describe for our listeners who haven't played this game before, what is “Solana Plays Pokemon”?

Solidity (00:44):

Solana Plays Pokemon generally is an on-chain game where players will vote on the blockchain to play the game together. So every button press is collaborative and everyone on Solana is playing a single game of Pokemon collaboratively together on the blockchain.

Brian (00:59):

In real time. Yeah. So this is a new game. How long ago did this launch?

Solidity (01:03):

January. I think about a week-plus ago. Yes.

Brian (01:05):

Wow. So 10 days ago, you launched this game on Solana and essentially it's a website where there's a Pokemon emulator in there and then there's ability to connect your wallet and anyone else who's on the site at the same time can all vote for what button you press to continue playing the game and then every 10 seconds, Solana is just tallying these up and putting these inputs into the game. And in 10 days, this thing, in my world and Twitter world, has taken Solana Twitter by storm. I believe at the time of this recording, which is January 17th, we've officially beaten the game. Is that correct? Solana has beaten Pokemon?

Solidity (01:38):

Yeah, but I think we've beaten it for quite a few days really. I mean, for three or four days. Yeah, we've been around for I think 15 days, so I think it took about a week or 10 days to complete the game. So the game is kind of a bit done. Yes.

Brian (01:50):

Yeah. This is super cool. So basically you put this thing out there, Twitter catches it, all of a sudden, you have all these people who are connecting their wallets, playing this game collectively. It's chaos. Then there's trying to have organization, you've made some changes to the game. I want to get into all the kind of details and how you've built it and what the game is and all that. I would categorize this as potentially a new genre of game. Before we dive into everything that you've built, can you tell us a little bit about who you are? You go by the name Solidity, how did you decide to build this and why did you decide to build this on Solana?

Solidity (02:24):

Personally, I've been in Solana since, I think, September of 2021. In the beginning, I was just doing NFTs, minting stuff in general, just doing the usual Degen stuff. I was a web2 developer already, so I got more curious about developing on Solana. In a sense, I started with Solana because it was one of the blockchains that had the best experience in a sense in that the transactions were very fast, gas fees were low. It's like, why do people not start doing NFTs on other chains? Why is Solana a lot of people's first chain? It is because the gas fees are very low, so even minting an NFT back then, even at all-time highs, it cost like what? Two USD to mint an NFT, which was unheard of in the whole space back then, and that's why in a sense, I kind of stuck to Solana and continue doing Solana even after I stopped being a Degen, I continue developing for the chain.

(03:11):

I was trying to learn smart contract development for the longest time. In a sense, it's kind of hard to learn something new when, in a sense, you have other stuff in your life like working a full-time job. So over the Christmas holidays, that was when I was like, "Okay, this is when I'm going to really do something to learn how to develop smart contracts." And I feel like the best way to learn how to develop something new, you have to write a program and deploy to the main net to successfully learn how to write these kind of smart contracts properly.

(03:42):

So why do I want to make a Pokemon game that is playable on-chain? So the reason is kinda interesting because I was very interested in the concept of the blockchain oracle, how do we get external sources of data onto the blockchain? Some important sources of information would be maybe a set price of a coin. So, DeFi exchanges all need information off chain, and I was very curious about how the blockchain gets this data? That's why I was like, if I'm going to write a smart contract program, it has to have something to do with oracles, I want to in a sense make my own oracle and implement it. And that in a sense, the Solana Plays Pokemon idea was kind of born because one of the first few ideas of an oracle I thought of would be maybe a game control. So what if I could have an oracle that gives me output from a, let's say, a Game Boy emulator?

(04:31):

And that was something that I was like, "Hey, I could actually work with that." So I would say that it is kind of inaccurate to say that the game runs on the blockchain. It starts all the states on the blockchain, but it does not really run on the blockchain. The game runs off-chain and then data is transmitted onto the chain, so it is sort of an oracle, just that it's not decentralized. That was kind of my inspiration for making the game and now I felt that it was a pretty interesting idea and I worked on it over the Christmas holidays. Then everything subsequently happened, I guess. Yes.

Brian (05:03):

Yeah, no, that's awesome and there's a lot to unpack there, but just to tease that out a little more, so you were a Web2 dev before all this. You said you had a full-time job and essentially just over the Christmas break, you decided, "Hey, I'm going to finally learn how to do Solana program development." And I assume, did you build this in Anchor or did you build this in native Rust Solana programs?

Solidity (05:25):

I used Anchor, yeah. Native Rust is a bit too much, I guess.

Brian (05:29):

Yeah, but that's still pretty incredible that in a couple weeks, you build this thing from zero to one. You deploy in the wild and it's battle tested. Like you said, you learn best by deploying the main net. You have all these people actually using this program. I want to ask, before we get into talking about the game, just a little bit more on the development journey. Were there any big surprises or challenges that you faced as you built this and as you learned the ins and outs of Solana?

Solidity (05:54):

I'm actually a software engineer working in the Solana space. My full-time job, I'm working for more on the DeFi protocols on Solana.

Brian (06:01):

Okay.

Solidity (06:02):

But I'm more of a front-end developer, so that's why I was very curious to learn more about the back-end aspects. I would say that for the learning journey of bridging from the front-end to the back-end, smart contracts in a sense, what was very interesting about Solana compared to other blockchain languages, maybe Solidity on the EVM chains is the concept of PDAs. I feel that PDA is a very elegant concept and if you use them right, they're actually very powerful and that was the most interesting thing that I, in a sense, learned about Solana as I was doing this.

Brian (06:35):

No, I couldn't agree more. That was one of my first entry points as well, was writing an early PDA guide. Definitely something elegant, Solana's architecture there. So that's a story I've heard a lot though too, is people work full-time in the Solana space and it's essentially Web2 development skills translated over to a Web3 world. You're probably building something in React, definitely something in TypeScript, but from the front-end you're using Web3 JS and there's some intricacies to awaiting certain actions on a blockchain, but you don't really get into the program side of things. It's super cool that you're able to pick this up and deploy basically a full app in just a couple weeks.

(07:10):

I want to talk a little bit more about the game holistically, what this means, because a lot of people see, "Okay, yeah, you're playing Pokemon, that's cool. People do that all the time." But there's something unique here and you did say, the game's not being run on the blockchain, this is a Pokemon emulator that's being run like any other emulator. But the unique thing is there's this social coordination aspect of it that the blockchain is coordinating, where anyone can kind of show up on this site.

(07:38):

It's not like you're making a team match where some server is organizing players together. There doesn't necessarily have to be a concept of a chat. You could just have random actors doing their own thing. You did decide to build a chat as you went. Talk a little bit about the genre of this game. This seems to be something new where it's kind of multiplayer in real time, but you don't know who's on your team, who isn't. You decide to build features also as you go. How did you decide to build these features? Were some of these planned? Were some of these reacting to what you saw in the wild and how did you experience this as you built it?

Solidity (08:12):

I would say that it's an interesting genre because I expected there to be a lot more chaos. I didn't expect everyone to complete the game so early on, so that was surprising. I expected more bad actors in a sense. There was a bad actor, he or she released our starter Pokemon.

Brian (08:27):

Yeah, I want to go in on that. So you get a starter Pokemon when you start any version of the gen one. I played yellow growing up and I think it was red or blue that you guys were playing and a lot of people get emotionally attached to this thing. You get a little Squirtle or a Charmander, you're supposed to grow it into this great thing and classic internet, it's like you guys kick this off and you beat the first gym leader and someone just goes and releases the Pokemon in the wild and you can never get it back. Was that surprising to you? Did you expect to see more of that troll behavior?

Solidity (08:55):

Yeah, it wasn't that surprising. I expected to see a lot more of those troll behaviors. Even some of my friends in real life who are in the Solana space, they're like, "Oh, you have this thing. People are going to come in to release Pokemon and stuff." And I'm like, "That's the fun part. That's why it's decentralized. Anyone can do anything they want to. Just connect their wallet." I mean, the wallet address will be on-chain, but that's all there is to it. And I'm kind of disappointed there was not much more drama, but that was attributed to the strong community who were defending the game. So it's like when they see anyone taking steps to go and release or do anything funny, then they'll outvote the bad actor.

Brian (09:30):

Yeah, it's like you had a time delay because you can only make one move every, what was it, 10 seconds, is that right?

Solidity (09:36):

Yeah, 10 seconds.

Brian (09:37):

So yeah, you could see somebody walking to the computer in the game to release the Pokemon. That's how you did it. And Twitter, it was kicking a beehive. People could just rally and log in and overvote this person. I think that's also kind of a wild component where the players of the game maybe aren't always playing the game, they're reacting to the state of things. Like, it's a game that could potentially run 24/7 and things are updating and more players pile in to add cooks to the kitchen at the last minute. I've never seen something like that before in a game. I think that's pretty wild.

Solidity (10:06):

Yeah, it was kind of what I was expecting in a sense, the changes that I subsequently made to the game, there were actually quite a few changes. Most of the changes, I actually did not really plan for them. I was like, "Okay, this thing is kind of done. I'm not going to touch it anymore. I'm just going to watch people play." That was my initial point of view. But then once enter main net and people started playing, then some of the flaws were kind of clear. It's like, maybe sometimes the game runs a bit too slowly and, in a sense, it's gaming, so you want the immediate feedback to what you press.

(10:34):

So there's a lot of work on optimizing, how am I going to make the game faster? So for example, Solana is very fast already. So in a sense, there was really nothing much I had to do on the underlying technology. But for some of the other small things, maybe let's say, for example, on the game state, I actually started on IPFS. They're not started directly on the blockchain. They're started on IPFS and the IPFS ID is referenced on the blockchain. So what I did is that I ran my own IPFS node, so that uploads for the safety and the image is faster and that probably cut down about three seconds per execution. And some other things, like maybe a turbo mode to allow people to vote for multiple buttons at once.

(11:15):

So in a sense, a lot of my iterations were really geared on, how do I make this game, in a sense, more responsive and faster? Because that's what keeps people's attention. The problem might have been I made the game a bit too fast because I expected a lot more chaos. So the problem with some of those, in a sense, enhancements with that, it made it easier to complete the game. It made it harder for bad actors to come in, in a sense, I guess at the end, if I make a V2, then I'll be looking at some of the other decisions to make.

Brian (11:48):

V2, I love it. That's a hint at what's to come, but yeah. You mentioned that your kind of North Star I guess is making the game more engaging, basically cutting out these downtimes between feedback. Is there anything that you think in particular is needed in either the development ecosystem or maybe something that wallets can implement or some feature in the gaming, tooling world that would help make games on Solana this more and more frictionless, kind of like you were just using a normal website? Because right now there is a lot of friction. You connect the wallet, every action, you get a simulation, you send that and you have to wait and coordinate and all this, but you can kind of get glimpses of a world where you're like, "Wow, this could work just a normal game I'm playing on a web browser one day." What do you think are some of the biggest pieces that are missing, having developed a game now on your own?

Solidity (12:42):

For me, for this game, people have feedback when we do that, the wallet approvers are kind of cumbersome, but the fact is that I feel that for security, it is very important for people to understand every transaction they are submitting to the blockchain. Because real money is involved. There was this guy who asked me to provide a box to put in his private key so that he can play the game without approval and I would kind of put it out there. Right now that is not a very good security practice, so that is something we shouldn't do.

(13:08):

I would say that since Solana is a very fast blockchain, so there is really not much to complain about, in the sense, the back-end side of things, the transaction settlements and stuff like that. They're fast enough for online games in a sense. Now the question we should grapple with is more of the wallet approvers. What is a good balance between security and speed? How integrated a wallet is into an application?

(13:30):

So for me, actually Solana Plays Pokemon is supported on mobile too. That's a primary way I've personally been playing it. I'm playing it on the Phantom mobile app. And the thing about Solana is that there's this mobile wallet adapter, which is pretty cool. If you were on an Android phone and if you were to open the website, the Solana Plays Pokemon website on any web browser, you'll be able to connect your wallet on the web browser itself and then you open your native wallet app.

(14:00):

So it's these kinds of integrations that make gaming, or not even gaming, but everything you do in the Web3 space more frictionless for the user. I remember the first time I used the mobile wallet adapter, I was also shocked. I was doing a jigsaw and I was like, "I just saw money on my Chrome, on my phone." And I felt like, "Oh, that's like the future." Yeah, it was very interesting.

Brian (14:22):

Yeah, it just works. You don't have to go through the in-app browser anymore, it just works. We would love to get that on iOS too, believe me, we're proud to support that on Android. iOS is another battle, but that's a little bit out of our control right now. But I agree that's totally where this is heading. I also totally resonate with the auto approve. Sounds like you've been around Solana a long time. You probably were there for when Phantom used to have a semblance of auto-approve in the wallet, which was a pretty wild, wild West days. And I think there's something that, having had that feature once, we definitely understand how awesome it can be. It's just like you said, it's very, very important that you do that safely. So that's definitely something that we're thinking about too. I think there could be a balance there. That's something we're actively kind of researching right now.

(15:09):

One question too is, you hear a lot from games that I see are oftentimes, "Hey, we're building in Unity or we're building in Unreal. We're building these really intensive environments that give this great sense of realism in a game." But they're development cycles could be pretty long. I mean, you built this thing in a couple weeks in a browser. It seems like that might be the first frontier of this kind of crypto gaming that a lot of people talk about. Do you feel strongly about that? Do you think games in a browser is a pretty viable path for a while? Or how do you think about the different environments in which a crypto game could live?

Solidity (15:47):

In a sense, it could live off the web browser, it could be the desired state where it is like you download some game on Steam and it has all the Web3 components you need. Personally, I feel that we are still very far from it. There's a lot of ideological pressure. Traditional gaming communities, they absolutely hate NFTs and stuff like that. So I do feel that we are still quite some time away from one day where that's the norm. I do feel that in the short term, web browser games will be the entry point to gaming on Web3 because there's less friction now, just visit a website, approve a transaction, you don't need to sign in or create an account, just approve for transaction or see some actions and be like, "Oh, that's cool." But in this current time, I guess society is still not ready for that yet.

Brian (16:31):

Yeah, no, I agree. I think it's something that everyone can see coming, but it's a question of what's the path to get there, what happens in between? Things are always changing in this space and so it's good to be reactive like that. Just to circle back on the game. So despite all odds, despite the trolls, people completed the game. We might have released our starter Pokemon, but we got the Nido Chad, the Nido King and basically breeze through the game. Where do you go from here with the game? I've seen a couple things that you've kicked around on Twitter, but what's the current state of the game development? Does this project live on? How far are you trying to take this thing?

Solidity (17:06):

Currently, I'm just letting people mint NFT of whatever rounds they have voted in. So they'll be able to go to a page where they can just mint the NFT of the frames that they voted in. So it's like a small little memory of their game playing.

Brian (17:18):

Oh, that's cool. Because all the game states on-chain, each action was recorded on-chain. So you can mint an NFT based on that action?

Solidity (17:26):

Yeah. After this, I'm going to deploy the code and probably just check the security of stuff and be like, "Oh, okay, I will deploy it." Yeah, but I'm still checking the security of stuff to make sure that it's secure. For medium-term goals, I've been reaching out to a few DAOs to try to get together a competitive version of the game and we will see how that goes. I'm currently in talks with a few DAOs who try to get it set up.

Brian (17:50):

And the thinking being that each DAO has their own game. Is it just DAO members that could play or would it be like you could attack another DAO's game and try to troll them?

Solidity (18:02):

You could attack another DAO, I guess. Yeah, they'll just all have different websites to play the game on, but they'll be playing the same game and we just see who is the best DAO in a sense.

Brian (18:11):

But it's permissionless, so it's not like I need to be part of MonkeDAO to play MonkeDAO's game. I could go in and release their Charmander. Not saying I would do that, but yeah.

Solidity (18:20):

Yeah, that's the current plan, yeah.

Brian (18:22):

That's cool. So that adds another layer of, you gotta watch your back. Someone's always got to be awake. No, you can't always be sleeping when you're playing this game.

Solidity (18:31):

Yes, there’s more at stake in round two. Yep.

Brian (18:32):

Wow, okay. That's pretty wild. Yeah, I could definitely see a world too, because it's on Solana, it's on a blockchain where there's a token at stake here or something that really aligns incentives and then all of a sudden, you have a pretty wild scenario. This is kind of like taking eSports to the next level. I could see some long Twitch streams about this one day. That's super exciting. So it's just you working on this, correct? You said, you learned this over Christmas, you built it yourself. It sounds like this is something that could potentially have legs, you could continue this. Do you have plans to bring more people on or do you think it's just going to be you for the foreseeable future?

Solidity (19:08):

For the foreseeable future, I'll be supporting this on my own. In a sense, I'm just having fun along the way. It's like, "Oh, I'm learning new things." I'm writing code that I've never written before, so I haven't really thought beyond having fun. Yeah, so we'll see about that I guess. Yeah.

Brian (19:24):

Well I'd say that's a good guiding North Star just to have fun. So far it's worked out pretty well for you. As we begin to bring this to a close, one question I have, you mentioned, "Hey, I'm just having fun. I've just been learning this on my own." You've done this in a couple weeks. If there's another developer that's listening to this podcast, let's say, they're kind of like the standard Solana front-end dev. They know their way around, what 3JS, they know some Solana terms. Having gone through this, what would you recommend as their process for getting involved with building their first Solana program, deploying to main net? Are there any gotchas that got you caught up? Is there anything that you would impart on them as they begin that journey?

Solidity (20:02):

Yeah, I would say that generally, there's nothing really surprising, I guess. Anchor has been around for quite some time. What I hope is that old Anchor, there are a bit more gotchas with old Anchor. The new Anchor is pretty well documented. If there's really something they can't really understand, you can just look at the source code. So it is still kind of fine for me to get started. I use this resource code, SolDev, S-O-L-D-E-V.

Brian (20:31):

That's Italo's app. Italo Casas.

Solidity (20:32):

Yeah. So there's a course on it that was really amazing. Probably you'll be able to write your first full on-chain program after you run through the whole course. So yeah, if I had to recommend resources, that's what I would recommend. Yes.

Brian (20:44):

That's awesome. Well, Solidity, this has been a great conversation. One question that we always ask our guests in closing, want to hear from you is, who is a builder that you admire in the Web3 ecosystem?

Solidity (20:56):

Okay, so that is a very interesting question. I kind of knew that you were going to be asking that and I tried to kind of think about it. But the fact is that I haven't been on crypto Twitter for very long. Know who I kind of want to build with. I mean the people I work with, they're very talented. I work for different protocols, so I love working with them. In the larger space itself, probably maybe people from the Solana Foundation, maybe even the Metaplex team. Sometimes I do look at the source code for stuff because sometimes I want to understand how they do certain things. I want to understand the intricacies of things and in a sense, when I look at the source code, it's like it's elegant, it's very well written. And the interesting thing about this is that they're always iterating and these are the kind of values that I kind of write with and these are the kind of people that I want to work with.

Brian (21:40):

Yeah, no, I couldn't agree more. Those are two great examples and nothing's ever finished. I would say. Everyone's always iterating and looking to improve and everything can always be improved, so it's a really great value to uphold. Well, Solidity, this has been awesome. Thank you so much for coming on and telling your story. Where can people go to learn more about Solana Plays Pokemon?

Solidity (22:00):

They can go to solana.playspokemon.xyz

Brian (22:07):

Awesome. Solana.playspokemon.xyz – That's great. Well, I'm proud to say that I played for a couple turns. I one-shotted a Zubat with Thunderbolt from our Nido King. So I look forward to minting that NFT that commemorates that. And I also look forward to seeing, what I believe, is potentially a new game genre. Where this goes from here, like you said, it will keep it fun, keep developing and keep changing things and improving and I really look forward to seeing where this goes. Thank you so much for coming on the show.

Solidity (22:32):

Thank you, sir.

  continue reading

33 episodes

All episodes

×
 
Loading …

Welcome to Player FM!

Player FM is scanning the web for high-quality podcasts for you to enjoy right now. It's the best podcast app and works on Android, iPhone, and the web. Signup to sync subscriptions across devices.

 

Quick Reference Guide