# Valist 🛠 Publishing Apps & Games in Web3

- Channel: [ETHGlobal](https://streameth.org/ethglobal)
- Date: 2022-10-09
- Duration: 27:40
- Topics: Science & Technology
- Watch: https://streameth.org/watch/yt-G_U2ldVtJw4
- YouTube: https://www.youtube.com/watch?v=G_U2ldVtJw4

## Description

Welcome Alec Wantoch & Zachary Pelkey from Valist for a workshop titled "Publishing Apps & Games in Web3". 

Learn how to publish your apps & games to Polygon, IPFS, and Filecoin in a web3-native way! Also learn how to deliver your native apps/games to desktops with the Sapphire Launcher, and how you can sell your game as an NFT. 

ETHOnline is our biggest event of the year! Collaborate with thousands of developers and creatives from around the world and win over $300k+ in prizes! We're bringing in 30+ of the biggest teams in web3 to give you access like never before. Learn from ecosystem leaders and build your biggest ideas as the merge nears reality. The future of Ethereum is being written right now, and it's time to make your mark.

---------------------------------------------------
Follow us: https://twitter.com/ETHGlobal​
Check us out: https://ethglobal.co​m
Email us at: hello@ethglobal.com

#ethereum #web3 #blockchain #eth

## Transcript

[Applause] [Music] hello hello everyone welcome to eath global ethonline 2022 i'm alex from vallast i'm here with my co-founder zack and we are going to teach you a little bit about publishing your apps and games to web3 so i'm going to jump in give a quick presentation uh go through a couple things on the docs just to show you the use cases and how to how to get started and i'm going to pass it to zach for some awesome demos so let's get started ballast is a web3 native app store and software publishing protocol and right now web3 is a big problem we're putting tons of energy into decentralization just to recentralize everything at the distribution level by taking our web3 software and publishing it over web 2 platforms like github steam app stores pretty much you name it honestly this affects all of web3 from the infrastructure side all the way to the wallets that the end users are using from all of the protocols all the way to really all of the defy apps so everything is either relying on microsoft servers google servers amazon github steam app stores pretty much all web 2 gateways powering this stuff right now and there are lots of issues with this some of which we've even seen over the past few weeks pretty aggressively things like risk of compromise censorship and availability risk so if for whatever reason a an organization chooses not to or is legally forced to uh take certain software down um that is a that is definitely a problem for the protocols that we're building on right so uh we don't want those to be um censorable and then if you're using their centralized payment infrastructure they're taking at least 30 plus percent which is actually insane they're taking that from your hard earned money and how did we even get there so really honestly they own your products they own your users and your users don't even own anything at the end of the day since they control the whole distribution you don't even have a direct relationship with your customers and then the things that they're buying aren't even actually theirs they're they're not true digital ownership like we have with web3 but it's a good thing we have the tools to solve this and vallis is a set of these tools that coordinate protocols together to make publishing software in web3 super super easy things like publishing fetching secure auto updates and even really cool things like dows coordinating software releases together as well as being able to monetize apps and replacing your app purchases in-app purchases game purchases things like that with software license nfts so this is kind of a web3 native drm system that you can use now and what can we do now that we're in web three well first things look pretty familiar uh valis has a very similar look to things like versal um and very friendly uh other platforms you're already used to ported over common features things like version control publishing fetching ability to update artifacts as well as managing both team level access control and project level access control so that you can have different forms of security there and then once reported over you're no longer relying on a single entity for distribution the valus protocol runs completely independently of vals.io and then you can monetize your software directly via non-functional tokens so again being able to replace your in-app purchases your app purchases with software licenses as nfps instead of random access codes and some database and some web 2 platform somewhere that you issue via email but daos can now coordinate releases as well so you can imagine things like new versions of ethereum or polygon being upgraded by a gao community and everyone building and verifying the actual implementation together instead of just coordinating on the protocol spec and then you could also do things like secure auto update mechanisms powered by smart contracts and ipfs so you can imagine a world where all of our infrastructure is updating itself through this global fabric that we're all powering together and then we have built-in public good funding mechanisms so the built-in protocol revenue uh that powers the storage and meta transactions um there's an additional two and a half percent uh community fee that you can opt into to help build the valve's community treasury and then everyone who's publishing on valles and building this on-chain reputation can help vote for funding public goods indie game dev indie app development you name it so you can sort of imagine this as if the app store took a portion of its revenue and reallocated it to the developers that are making the app store the thing and so how does it work well like i said it ties together a bunch of web3 protocols this is a super simplified version of it but these are the essentially the base protocols that it's tying together the developer publishes a release all the software is stored on ipfs and archived for long term on filecoin and a bunch of different miners so your software is definitely not going to disappear and then all of this is then archived and the source of truth is stored on polygon smart contracts so usernames project names version names and all the security around that is powered by a smart contract and then the valve's clients are then tying all this together with meta transactions password email login passwordless email login and everything like that to make it super easy for you so you can fetch the newest releases publish new ones and so on and you can use it with several different ways we have different interfaces depending on your preferences we have a web front end app.vals.io and then we have this new sapphire launcher that we're actually unveiling here that is your desktop and android client so you can think of this as steam or the app store for your desktop and android and you could also publish with the cli and github action depending on your pipeline and if you want to get into the nitty gritty build auto update systems things like that there's the typescript and go sdks for you the web app looks again very similar to things like versal netlify shows all of your projects allows you to manage releases and zach will get into this in a bit as well as the sapphire launcher which is our cross-platform game and app launcher this is super super cool local ipfs node everything can be stored and saved onto your local uh machine and so and then you can launch and play native web3 games web built games as well as regular web apps all from a local installation so this is true decentralization here and then your cli allows you to run a super simple uh publishing command that you just say valve's published the account name the project name you give it a version and then folder that you're trying to publish and the cli also has some advanced configuration i'll get into later and then the github action is a super easy way to just insert this right into your existing github action release pipeline and all it just requires is a signing key that is has permission on that project and then you just tell it what version to build and the path to build and it will publish anything you need sdk super simple to use you can programmatically fetch and update everything about values is built from the values sdk so you're using the direct implementation by using this here and you can find it at valles.io that'll take you pretty much everywhere the docs are really excellent resource and we are super stoked to help you out in the discord so please join us there and share what you're working on we'd love to to help you out wherever we can and everything about valves from the smart contracts to the client is open source available on github and if you'd like to add support for other types of software we'd love to see contributions and thank you so much and good luck i'm going to jump into just a quick docs page and then i'm going to pass it off to zach so the docs right here docs.vals.i will tell you whatever you need to know and we'll give you a brief intro about ballast how things are stored the way it works it'll walk you through creating an account in projects on the web dashboard and then the web dashboard has a few uh primary sections to check out and then of course the sapphire launcher we're working on a signed build for the community but you can check out the features and you can even install a dev version here super simply if you want to try it out or contribute and then the cli really easy way to set this up here allows you to generate a fresh key locally or import an existing key we recommend generate a fresh one and add that to a project just so that you can have separate signer keys but publishing a release is super simple as you can see and then for cross platform builds there's some advanced configuration that you can do uh with a valis dot yml file and uh you could of course download releases from there and then lastly but not least is the github action you can publish this you know we have exam working examples for various different types of projects here's a next js one for example here that's building and publishing it live and then you could see some of the example workflows from there as well and then instructions for publishing web apps support next js any static web platform and the different ways to do that here are all shown and then things like binaries and executables uh zach will get into the uni stuff here in a second but there's different instructions for how to do that as well as how to work with software license nfps um and so this is just a quick example of what that looks like we actually have a an example projects repo that is here that has all of this ready to go from a multi-platform go binary with multi-platform releases configured next js project react project as well as how to use the sdk uh in a node.js environment so lots of different resources there for you i'm going to pass it to zac but let us know if you need anything awesome thanks so much alec let's jump into the web app here so this is the ballast dashboard you can find it by navigating to app.valis.io right now i'm not signed in so this is just the default onboarding flow and so with this there's three basic steps to get started with ballast you can connect your wallet create an account and then create a project so i am going to start by connecting my local meta mask here and then you'll see upon logging in i'm greeted by my valas dashboard hello and welcome and i actually have uh my primary account selected here web game um but we are going to go through the process of how i actually created this account so i can click new account here and i will be prompted for some basic info this is just your basic public account info so uh i can do an account image uh normally for me i like to use my crypto coven shout out to crypto coven um just as my default profile photo um and then i have my account name so the thing about phallus though everything is decentralized everything is on chain um so account name spaces are immutable which means they cannot be changed which means once i claim this account name i can't change it i would have to create another one um so here i could just say web game or you know you see that's taken so then i could say web game two and now that name space is available currently on values then for the display name uh it's just like any traditional platform i have my name space but then i have a bit more descriptive of a display name here so i could make this my real name um or if i have like a game studio or a dao or something like that i could put something like that here um i also can then enter my website for this account and then a brief account description an amazing metaverse game studio something like that and sorry about my bad spelling but so then members um alec touched on it a bit here on vales there are two different levels of access control there are the account admin level keys and then there are the project level keys which we will actually um talk about in a bit here um but on this page i can kind of just view a couple quick bullet points of everything that this key is able to do um on this account and so this is again where if i had a dow or a multi-sig wallet or some sort of governance system i could even insert the ens or the address for that here and i could even have my dow or governance contract vote on what the next thing to be published or the next transaction that the community is signing off on um and that's really it here you'll see it actually takes my default pelkey.e account from my metamask and i don't even have to really add a default account member i could add any other members i want here but i'm going to stick with that default poke.if and i would be able to create for time here i'm just going to skip this create and i'm going to go back to the home screen and so now we are greeted with our beautiful dashboard with our web game account um but now we have to create a project so i'm going to go through creating this example fps project that you see that i have here um so if i click create project kind of the same thing here now for my actual project uh i have the ability to select uh some basic info so i'm gonna go to my desktop in my demo folder with all my images here i have a a nice gamer oriented profile photo so this is the photo that in the app library or the the various parts of the marketplace uh i would see this app now appear with this profile picture um and then i can actually add a name to this as well this name space is also immutable um so once you create it you can't change it so i'm just to call this fps and that's already taken again so again i could just say fps2 um and then for display name i could say in epic fps game um or really whatever i want to describe that website just a website you can enter any website you want there um but then project type so on valus there are actually three different types of projects there's web native and cli uh right now we're creating a web project so this is any assets again kind of like alex said any static uh web content gatsby sites react sites next js sites big fan of next jazz shout out but um we also support native or cli so any cli binaries anything like npm brew any of those act is a really great cli use for github actions any of those sorts of binaries you can publish under the cli and then launch it natively through valis or if you have a native exe for any kind of game any kind of unity project we support exes dot app files or again just any random binary artifact like if you're on linux um upload it fully cross platform full support for it but so i'm going to click web here and then this is a game and my game also has nfts so i'm going to click nft and so what this will do is on the values marketplace when people are searching whether by tag or by category or browsing through the marketplace this will allow them to much more easily discover my game now whether they're searching for like a game or any nft related project along with the name of my project so if i continue along here now uh my project has a short description so again i could just put a quick short description and so this is what will show up when people actually search for your game on values the description that will be displayed just as a quick short description but i actually have a full description here and i can actually write full markdown here so if i do i can add a markdown heading um and then i could even just add some example text about my game and again just please excuse my spelling um and so then anything else you'd want to add here images videos bullet points urls full markdown copy and paste or readme please if you're submitting for the hackathon please please please add your readme so now i continue to my access control on the members page uh once again all of my different things that this uh project level member can do is add or remove other project members update project info or publish new releases so this is once again if you had ci cd or other signer keys you want to add here you can drop them in as publishers to integrate with any existing release pipeline that you might have to have it sign off on these valles transactions um and my pokey.e is in there as well listed as an existing account admin but again i could add any other keys i want here or any e s name okay so now uh we get to the really cool part media everybody loves media so especially gamers you know you need screenshots you need videos you need all this amazing stuff to kind of showcase your software to the world um you can paste in any kind of youtube link you have again please please please if you have a video link of your demo add it to your profile it'll make it look so beautiful it'll make it look so great please add your videos um header image i'm just gonna select in the same folder here i have this really cool image that i like to use um and then of course my my gallery images my screenshots for my game so i have a couple screenshots here of my game and i can add both of those and then it would be the exact same thing i would create this uh transaction everything will be pushed to ipfs and filecoin and the transaction will be on valas but for time's sake i am going to click this profile that i've already created and here is our screenshots here is our amazing markdown rendered in there and here is my project member pelge.e that is rendered in there as well so i can go back to this settings you'll see all this info here's my two tags game nft i can actually even click this i forgot to mention to add any custom tags so um if you have a trending tag or something that you would like to add you can add it in it's fully discoverable um on ballast and then here's just the rest of the pages again and if i go back you'll see there's actually this other button called pricing so every app in project on ballast is an nft and what this enables um again like alec had talked a bit about is full on chain native drm which means i can token gate my application itself from the license perspective or i can even token gate individual content inside of my application through valis for things like inventory items dlcs really whatever you would want to token gate or do um fully supported um so here by default we have a max license limit of zero so this just means the limit is limitless you can as many people as they want that want to pay for the license can pay it and min a new one um but i could even set this to 200 or something if i wanted to have like limited edition licenses or something like that and then uh we also support any erc20 token that is currently deployed on polygon um here are a bunch of the really cool default ones we have a lot of people like to use usdc and stablecoins um but you could even add multiple to accept multiple payments so if you want usdc or eth or this or that um you can add them all so then in terms of after market sales or resells on game licenses and games maybe somebody bought a game they had a lot of fun playing it there was a limited amount of licenses uh they resold it to somebody else um we have full support for the royalty standard you can set your percent you can set your address um any after market sales on your nft will go uh right to your royalty address um and then of course the withdrawal page so um directly through vales any um licenses that are purchased any um erc20 tokens that go to your account you can withdraw them directly from here um to any address or ens the withdrawler um does need to be you know someone who is on that account project but you can then withdraw it to anywhere you would like account admin to be specific yeah account admin to be extra specific um so now that you know we've kind of gone through all the settings and stuff here um let's do a quick release so um i'm just going to do 0.0.2 because i already have a 0.1 i'm just going to say an example release to describe a little bit about this release if you need an extended description you can fill out the description field um with again markdown or any info you'd kind of like you can also add a release image just so that you know when you display this metadata in a wallet or something like that it would display it but i'm gonna skip that as well um and then so for the upload it's just an easy oh sorry about that easy drag and drop upload here i'm just going to pull up my finder window here and then i'm actually going to go to my build folder here so this is my unity game that i have that i would like to publish and this unity game has a build folder with an index.html and all of the unity assets that i need so if i drag and drop that it's in the easy to view file list there i can then create this release and publish it and so what i'm actually going to do though i'm going to go back to the main screen because i already have um a release published and if we take a look at that 0.0.1 here is my full metadata with the ipfs gateway um to these unity files and i can actually hit launch um to launch this web3 unity example game so we launch in here and you know there's the portal to the metaverse and you're gonna have to play the game to see where the portal leads so check it out check this example out on there but something that i really want to demo i know i'm running a little short on time here um but if i actually launch this this is actually the native ballast um sapphire desktop app so we call it project sapphire sapphire for short um and you'll see i have my exact same flow here where i can browse all of my different projects and stuff that i've published um but now i also have some additional things like a library tab um and some stuff like that and so if i go in here and now i click launch sorry it actually launched on the other screen it'll actually launch a native full screen window where i can then take any unity game and play it in a native way and so um just to showcase this really quick from the discovery page here any dap valles has a full built-in wallet um any dap anything here i can go and launch here's papers a previous one um that we had we also have a couple games on the discovery page please please please upload your descriptions your images everything we would love to feature you on the discovery page any of your projects upcoming gaming studios please reach out upload as much as you can we would love to feature any hackathon winners um on this discovery page especially um but yeah check out all the amazing games here and i'm gonna pass it back to alec awesome stuff zach yeah that that's amazing and yeah we can't wait to see all of the amazing apps that are published and again yeah we uh we have this micro grand uh program as well um we have this uh vals partnership community um so if you are moving on past this hackathon as well to build out a uh a game into a a full you know application after this as well uh definitely reach out to us um but yeah that is about it there's one thing i wanted to show real quick just because i didn't get the chance to earlier but this is just a cli publish i just wanted to to show you how quick it is to to publish with the cli so i've got a multi-platform go project here that i configured to build multiple versions of a go binary uh and then i configured a valve.yml file with this account this project and this release version i give it a path and then i named this hello go binary hello go and i told valest to the darwin amd version is called hello darwin amd64 inside of this folder and the other version so on uh and then vallis can interpret that as such you type valis publish it asks you what account to use it uploads everything ipfs and filecoin it does a meta transaction for you uh again every transactions uh outside of the software license nfts on the platform are free of charge and powered by the protocol uh through the opengsn um relays and so you know we could view this here as well as on the actual app um and being able to and then the val sapphire application will also be able to interpret and install that build as well so that will do it for us thank you so much we're so excited to again see what amazing things you build and we hope you have a great eat online and we'll see you in the discord and in the docs good luck everyone good luck cheers
