-
Notifications
You must be signed in to change notification settings - Fork 95
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adding in Tutorial for [CONTENT] Using NFTs in games #26 #150
base: main
Are you sure you want to change the base?
Conversation
Part 1 with the basic start on the construction of the game contracts. Design spec started as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks so much for your contribution! I think your writing style is fun and easy to read. Here are some initial (and very broad) suggestions going forward.
- Brief titles
- Brief catchy titles can set them apart from the paragraphs. Try eliminating articles like "the", passive sentences with commas, and extra words.
- Example 1: "How we actually battle" to "How we battle" or even "Let the battle begins!"
- Example 2: "Requirements for you, the developer" to "Getting ready" or even "Gearing up"!
- Layout hierachies
- Consider wrapping sub-contents under subheadings or even create a TOC for the outline for easier read (i.e. Outline can be a parent heading with the components as children)
- Consistent pronouns
- It's helpful and easier for the readers if you could think about how to address them, i.e. "you" or "we", "I" or "we". It's up to you if you want to set a more casual 1-on-1 tone ("I" and "you") or somewhat persuasive ("we").
- Insert links
- I generally think too many links are irritating, but 1-3 a paragraph where helpful are great, like VSCode (this can be for later of course)
I think thinking about the overall theme that resonates throughout the writing can really be engaging. If this is a Battle Royale fighting theme, sprinkling it in the content ("Holster your Weapon, Dev!") can be really fun and keep readers hooked. This tutorial or this less adventurous one can give you some ideas.
Looking forward to reading this tutorial!
docs/tutorial/using-nfts-in-games.md
Outdated
I know that doesn't sound super fun, you want to be creating all sorts of ape images and making millions on OpenSea but we have to crawl before we can bound like an Ape. | ||
|
||
## Requirements for you, the developer |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"Gearin' up" or just less colorful "Requirements"
docs/tutorial/using-nfts-in-games.md
Outdated
In this tutorial we will be working creating an NFT game from the start to finish. The initial parts will focus on solidity and hardhat for developing our smart contracts and writing tests, yes, lots of tests. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe add another sentence to support why writing tests for Solidity is easy, fun, and important.
On your computer your gonna need a good shell (ZSH), node installed and hardhat etc and a copy of the repo for this project (TBA). You can use VSCode or Jetbrains IDE's with javascript support (Intellij/WebStorm) if your that way inclined. I use both, I like Intellij's debugging and TS intellisense but the testing and plugins for solidity are better in VSCode, so thems the breaks. I use a mac to develop on, you should be fine with WSL2 on windows but your own your own if you have problems, sorry. Linux will be fine too. | ||
|
||
## The outline |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider the subcomponents being h3 under The outline?
So something like this on the card side. We need to then think about how we capture this in the Store. Because really the pack doesn't care about the card types, probabilities etc, it's just the promise of some cool stuff, the actual creation of the cool stuff isn't happening in the `BattleRoyaleCardPackNFT`. Its happening in the `BattleRoyaleStore` contract. | ||
|
||
### `BattleRoyaleStore` contract |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is awesome 👍
Thank you for this advice @jochasinga! I'll make some revisions over the next few days. The start was a bit of a stream of consciousness around the initial setup, definitely see some ways to restructure and retitle things. I might give it a bit of squid game homage then in the titles. |
Squid Game homage might just be the thing! |
This component is the final component we will work on in this initial phase of the tutorial. This smart contract contains the logic for buying packs and opening them. It's got a few moving parts so we will go through this one in some detail but by the end you will have a way for people to buy your packs, be given a pack NFT or if they decide to open them it will mint you some Battle Card NFTs based on some probabilities we are going to code into the system. | ||
|
||
## The Overall Requirements/Design Specification |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would move this before the specific components! Doesn't have to be for now, but I think connecting the spec decisions to what's feasible in the NFT world would be good too. I think tons of folks will have great game ideas, but should understand how to fit those somewhat practically into an MVP using NFTs.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Might consider making the flow go: overall description of the game, mechanisms, and intro'ing the different components at a really high level, then having a section on each component: Battle Cards (intro, requirements, design, some code), then packs (intro, requirements, design, some code), etc., then having a full on code section. But think the content feels good, and we can always shift things around later (and can get a copy-editor to help out).
Thanks @michaeljohnbennett! And great thoughts @jochasinga. My feedback is mostly around flow of the content, which we can always adjust later (and get a copy-editor to help with). Looking forward to watching the tutorial's progress! And Squid Game theme sounds great :) |
This should guide the overall structure. Thoughts please!
ok I added a table of contents thinking about our conversations so far. Does this look ok? |
Sorry to have dropped the ball on this! I'm taking a look. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually if you build the branch locally you'll see that the headings already render as TOC on the sidebar. Therefore I don't think there's a need for another in-content TOC (at least that's what I did with my tutorial).
Hi @michaeljohnbennett if you have a few minutes to skim through the guideline here https://nftschool.dev/contribute/ you will find lots of useful formatting guidelines that had helped me in my writing and cut down the amount of proofreading work. |
@michaeljohnbennett wonder how things are going and if you need any help on this? |
@michaeljohnbennett bumping this for your attention. I really think your content is really slick here and would love to see it published! |
Adds to #26.
This PR contains the tutorial for the beginnings of a NFT Card Game Tutorial.
This PR is evolving and not ready to merge until commented as so.
Please give feedback just now on style and structure where appropriate and I can amend over the coming weeks.
Where is the best place to store the code/files for the project? Shall I host a public GitHub repo for this?