Hello PICO-8 community,
I have begun making a Youtube channel and website dedicated to helping beginner programmers to not just get started but continue to explore and play with code in PICO-8. So I've come here to humbly ask for some feedback (criticism welcomed) on the videos and corresponding web pages I've made so far.
I have 5 tutorial series planned:
- Bite-size Games
- Game Element or Mechanic Chunks
- Drawing Pixel Art
- Functions Explained
- Game Starter Kits
This series is intended to let learners create tiny games that can stand on their own, but lacking polish so they encourage being altered and improved upon. They are "bite-sized" because they should be able to be built in a single sitting. They will have arbitrary numbers that might refer to difficulty or just release order.
Corresponding web page: Fruit Drop Game Explained
Game Element or Mechanic Chunks
This series is intended to answer common learner questions of "How do I make _____?" (animations, menus, scoring, multiplayer, movement, shooting, collision, physics, walls, maps, scenes, scene transitions, on and on) Each video will tackle each one directly, so that it is easy to understand how to implement them into the game they are trying to make.
Corresponding web page: Animated Frog Sprite Explained
Drawing Pixel Art
This series is for learners who like to focus on using Pico-8 for creating art, and for others to improve their pixel art skills. I don't plan on narrating them, because really they are just a byproduct of the other tutorials' sprite drawing parts, and not as time-lapsed.
Beagle Dog in 3 sizes
This series is basically a PICO-8 API in video. Beginners often struggle with text heavy docs, and don't often explore all the arguments a built-in function has to offer. So this introduces each function and the arguments they take with some example of them in use.
Corresponding web page: SPR( ) Function Explained
Game Starter Kits
This series is for packaging more than one of the Elements and/or Mechanics together to create a starting point of a certain type of game.
Platformer with Advanced Movement
Feedback is so important to developing and improving the content. And I'd much rather focus time and energy to creating what is actually wanted, instead of only what I THINK is wanted. So please share any thoughts, ideas, likes and dislikes, suggestions and criticisms on any little detail.
If you want to get involved in the making of these tutorials in any way, please do reach out! We all have skills to share and I certainly welcome yours! One of the easiest ways to collaborate is by offering one of your carts as a content piece that you think would be great in one of the series. I will break it down and explain it in video and a webpage, or you can help with that process too!
I'm not sure which series to focus on first after I finish 1 in each, so my question is:
Which of the 5 series do you think is most beneficial or interesting to you, or people you know?
I'm all for it. I wish I could say uniquely I was the pixel-guy, but everyone here specializes in pixels it seems. :)
It would be nice if PICO had a thin-line grid for when you're doodling. I'm working on a PAINT program to do just this, still, would be nice to have it onboard.
Watching some of your video, looks great ! I'm certain your contribution will be well received and appreciated by both beginners and veterans alike. As you are answering questions, feel free to ask any you might have additionally.
And - welcome to PICO-8 !
Thank you for your encouraging words @dw817. I've have certainly learned a lot from your active contributions in this forum!
About the pixel doodling, are you referring to this page?
I totally agree about the gridlines. I didn't think about it until I was building that page and stumbled into them, then thought, my god this is helpful!
My plans for the site include the ability to save what you draw there, and another page where others can search through them by topic and size, so we can have an easy to search PICO sprite library.
Additionally, it will be able to automatically convert the sprite image into PICO hex code, so you can copy paste it directly into carts' gfx section (if editing .p8 files externally). The opposite would then also be possible, so that you can upload the gfx code to that same page and it will be converted into the sprite image, so you don't have to redraw it to share it.
Looking real good !!
Here's a star ⭐
and favorited. ❤
Also, in your video. Noticed at 0:24 you hit the RIGHT arrow key to scroll your sketch to the right as you continued drawing. You might mention that as new coders may not be aware of that editing ability.
I like how the narration, unspoken info cards, and accompanying web article provide reinforcement and increasing levels of detail. That's a potent combination and supports students at multiple levels.
A few quick notes on this prototype video:
1) The example doesn't implement range checking for player_x. Maybe this isn't an issue in practice, but I'd be concerned that a student might lose the player character off the side of the window and not know how to get it back. A demonstration of range checking (both why and how) would be a good early lesson.
2) You mention how to find sprite numbers. When you add rectfill, you mention that colors have numbers. At this point it might be worth a few seconds to explain that you can get the color numbers from the sprite editor as well: hover the mouse pointer over a color and it appears below.
3) I can tell that you put some thought into keeping the code short and introducing concepts in a particular order. My inclinations are probably just different and not better, but I'm wondering if you can achieve the same goals without potentially causing confusion later.
For instance, this example both relies on _init() being called magically by Pico-8 to start the first level, and also calls it directly to start each subsequent level. Doing this work in a custom-named function would be more typical. Perhaps you're avoiding introducing custom functions here, but I'd argue that _init() is already both a function definition and a function call, with the addition of Pico-8 magically calling it when you first run the cart. Especially if the video is going to gloss over this part anyway, maybe it could use more robust code structure and defer the explanation.
Similarly, while there's something elegant about how gameplay restores the fruits table to an empty state by the end of a level, it's weird how _init() depends on this empty state instead of setting it itself. It works well in this example but establishes a poor pattern for other projects.
It might be cleaner, and just as easy to explain, to initialize globals in _init(), move level start logic to a function, and have both _init() and _update() call the level start function as needed. There's a lot that I like about initializing globals at the top, but as long as we're pretending that all variables are globals, it might be just as few concepts, and more generally useful, to explain that _init() sets all of these variables first, then _update() changes state for the rest of the game.
I see from the article that this example is intended to focus on the fruits table. It does that well! This other stuff doesn't have to be the focus for the lesson, but might make for a good foundation across multiple lessons.
Of course, my speculations count for nothing if they're contradicted by your experiences with your students. :) Best of luck!
P.S. See MBoffin's Game Development with Pico-8 for more prior art on educational materials and accompanying video. Dylan's video is more of a quick introduction to features than a tutorial, but it has a clean presentation and order of concepts. The zine text and examples are well written for beginners, and build on each other nicely.
These are all REALLY good points @dddaaannnn so thank you for taking the time to look into it and write this up so thoroughly.
You're right, I am trying to avoid custom functions until much later. I have found that beginners grasp the idea of using built-in functions almost intuitively if I just tell them what each does and how to use it. They don't really question how these functions and arguments work, and when I address this too early, my students lose focus and interest fast.
This type of feedback really fuels my creativity for teaching so thank you.
P.S. I have a lot of respect for Dylan's work on that 72 PAGE educational zine, it is reeeeally good. And his video is the real reason I decided to start these. You can see the comments on his intro video practically begging for more. So I've tried to incorporate the style of his video with the upbeat enthusiastic tone and speed of delivery into mine. It's a LOT more editing work but hopefully meets that demand.
I was reading your tutorial. SGN(0) does indeed give zero in other programming languages, but in PICO-8, it does NOT.
It gives 1. Unexpected and incorrect - or at least to me. Thought you might want to know since you're teaching classes.
-- Get a number's sign ( + / 0 / - )
Here is a function to help:
function truesgn(a) local r=0 if (a!=0) r=sgn(a) return r end
Hello NerdyTeachers! Thank you for creating these videos. I like how easy they are to digest, and the fact that there are accompanying articles. The visual guides that you provide while introducing new concepts are very helpful.
One thing that I find questionable is the audio. I understand that you are adding an effect or changing the pitch of your voice, but it sounds like you are speaking from inside a well or a restroom. I'm not sure how else to explain it.
Please keep making more videos. I've enjoyed watching and learning from the first two videos. I think that the community benefits from having great resources like yours, Doc_Robs, and Krystman.
Thank you so much for the feedback and I'm very glad you like them already!
I'm glad you mentioned the voice....I am increasing the pitch without increasing the speed, so I think there's some distortion that happens when it goes through that process. I am hoping it aligns well with the cartoon/retro/computer style of it all, but what you are describing is definitely not a part of that.
I do hear what you mean and I think it's worse in video #2. So in my next attempt I will definitely focus on my audio recording and editing process to find my desired effect without the reverberation or slight echo that makes you think of a well or restroom.
I'm thrilled you said so, and beat me here too lol. Thanks to your earlier feedback, I worked hard to find a much better way to process the audio, so I'm glad you can hear the improvement.
Thanks to your mention of when I use hotkeys, I've found keyboard images, so that I can display those shortcuts in the videos when I use them. Still working out the best way to create those annotations though.
I'm still laying down a foundation of the different series of tutorials I can do. I've got one more lined up before I circle back and add to each of them.
I'm definitely interested to know which of them are most in demand and useful, so I plan to edit this original post to ask for more directed feedback.
Thanks again for the feedback so far, looking forward to hearing more!
Updated original post.
I'm excited about the new "Tutorial" section of the BBS, but not quite sure yet how we want to use it.
Just thinking out loud in regards to my own tutorials, "would it make sense to put 1 video + link to detailed web page on each post? It would be tagged and named to ease search. Or should I write the text tutorial in the post too, but that would be duplicating my own web page....Hmmm."
[Please log in to post a comment]