I'm starting a tutorial on how to make your a BETTER Shmup in Pico-8! It's for complete beginners. It is a series specifically designed for more experienced developers looking to enhance their skills. It is a follow up to the Basic Shmup Tutorial we did earlier last year.
![](/media/16423/93_shmup2_01lexa.png)
We will take everything we've learned in the basic tutorial and turn it up to 11. We will cover things like project planning, token optimization and tool development. The goal will be to make a PROPER Shmup with a rich scrolling background, dynamically spawning enemies and complex bullet patterns.
![](/media/16423/94_shmup_1.gif)
New episodes on Wednesdays and Saturdays. I will use this thread to keep a list of the episodes and post significant progress. Let's gooooo!
Episode 2 - Performance
Episode 3 - Scrolling
Episode 4 - Modular Scrolling
Episode 5 - Movement
Episode 6 - Smooth Movement
Episode 7 - Banking
Episode 8 - Shooting
Episode 9 - Better Shooting
Episode 10 - Explosions
Episode 11 - Dithering
Episode 12 - Blob Grapes
Episode 13 - Blob Animation
Episode 14 - Blob Color
Episode 15 - Sparks
Episode 16 - Side-Scrolling
Episode 17 - Tilemap Design
Episode 18 - First Prototype
Episode 19 - State Machine
Episode 20 - Sprite System
Episode 21 - Symmetry
Episode 22 - Split 2D
Episode 23 - Enemies
Episode 24 - Bullets
Episode 25 - Collisions
Episode 26 - Splash
Episode 27 - Custom Tools
Episode 28 - Table Export
Episode 29 - Tool UI
Episode 30 - Keyboard
Episode 31 - Adding Data
Episode 32 - Sprite Editor
Episode 33 - Sprite UI
Episode 34 - Robustness
Episode 35 - The Wall
Episode 36 - Animation System
Episode 37 - Enemy Database
Episode 38 - Collision System
Episode 39 - Hitbox Editor
Episode 40 - Death
Episode 41 - Spawn Schedule
Episode 42 - Schedule Editor
Episode 43 - Schedule Preview
Episode 44 - Timeline
Episode 45 - Mouse UI
Episode 46 - Clicking Enemies
Episode 47 - Dropdown
Episode 48 - Enemy Behavior
Episode 49 - Making Brains
Episode 50 - Brain Editor
Episode 51 - Brain Preview
Episode 52 - Brain Metadata
Episode 53 - Simple Attacks
Episode 54 - Brain Goto
Episode 55 - Enemy Turnaround
Episode 56 - Enemy Snake
Episode 57 - Enemy Follow
Episode 58 - Boss Brain
Episode 59 - Bullet Patterns
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/14590/2_2bitchuck.png)
I just caught up with this episode (and am starting episode 2), and I immediately have an important question:
How is this game not called "Cattle Battle"?!
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/42638/JL Logo.png)
Looking forward to more of these!
Also, here are some of my own cow-themed pun contributions:
BULLet Hell
DAIRYus
ShMOOp
Grazing Lasers
Steer Wars
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](https://www.lexaloffle.com/bbs/files/16423/krystman_o_50.jpg)
Checkpoint at Episode 9. We are making a bunch of prototypes to develop the tech and test the limits. We made a performance prototype. We developed tech for modular scrolling to allow for a long level. We also fine-tuned basic movement and a simple basic shot with animated bullets and muzzle flashes.
![](/media/16423/perf_0.gif)
![](/media/16423/scroll_1.gif)
![](/media/16423/move_1.gif)
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](https://www.lexaloffle.com/bbs/files/16423/krystman_o_50.jpg)
Checkpoint at Episode 17. We spent most of the month working out a system to generate procedural explosions. Then we moved on to drawing the Tilemap and planning out the level.
![](/media/16423/02 expl.gif)
![](/media/16423/03 scroll2_1.gif)
![](/media/16423/01 scroll2_0.gif)
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/65920/8_Red Mushroom Avatar.jpg)
In response to episode #22 asking if the split2d
function could be made more token-efficient, I instead made the function more versatile at the cost of more tokens. :P
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/media/77945/IMG_20230627_180515.jpg)
Could you make a tutorial on how to add controller support to the html version of your game?That would be really cool
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](https://www.lexaloffle.com/bbs/files/16423/krystman_o_50.jpg)
Checkpoint at Episode 26. We combined all of our prototypes into a singe, main game. We then addressed an important concern when developing Pico-8 games: the limited sprite space. For this reason we create a sprite system that can efficiently deal with sprites of any size, apply effects like symmetry and even combine multiple sprites into one. Finally, we added first preliminary enemies, bullets and collisions to get a feel for the overall game and plan the next steps.
![](/media/16423/demo_1.gif)
![](/media/16423/cowshmup_1.gif)
![](/media/16423/cowshmup_0.gif)
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](https://www.lexaloffle.com/bbs/files/16423/krystman_o_50.jpg)
Checkpoint at Episode 34. We did a small detour to develop a framework for our own custom tools. We've built an Excel replica template that gives us a solid UI framework. We then used that template to build an editor that allows us to quickly define sprites. Next up: The Great Wall of Shmups!
![](/media/16423/editor_0.gif)
![](/media/16423/spritedit_0.gif)
![](/media/16423/spritedit_1.gif)
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](https://www.lexaloffle.com/bbs/files/16423/krystman_o_50.jpg)
Checkpoint at Episode 43. We tackled major systems to overcome a difficult phase in Shmup development I like to call "The Great Wall of Shmups". We need to turn a prototype into something that can support more extensive amount of content and gameplay. We consolidated animation systems. We've set up a library system for different enemy types. We developed a system to manage collision data. This also allowed us to program player death. We even added a nice hitstop effect for that. Finally, we started work on the enemy schedule system but that is something I'll discuss next month.
![](/media/16423/gif1.gif)
![](/media/16423/gif2.gif)
![](/media/16423/gif3.gif)
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](https://www.lexaloffle.com/bbs/files/16423/krystman_o_50.jpg)
Checkpoint at episode 50. We started work on an Enemy Spawn Schedule editor. This will be essentially the tool we are going to use to design our levels. We can scroll trough the level and place new enemy spawns on a timeline. We also started work on a system that will allow us to program enemy behavior. Because of Pico-8 limitations we can't really afford to hard-code these. So we are basically creating a small scripting system. But more on that next month.
![](/media/16423/gif 1.gif)
![](/media/16423/gif 2.gif)
![](/media/16423/gif 3.gif)
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](/bimg/pi/pi7.png)
I finally sat down to work through your first tutorial (I kinda sorta did the rest of the owl on my own, not my first game rodeo, though my first real project on pico-8). I'm only through episode 6, and I already published my results on here.
Thanks for being an inspiration! I love your energy and even when you're just reviewing basic programming things, it's nice to just listen to you work through problems in your own way.
![](/gfx/set_like0.png)
![](/gfx/top_drop.png)
![](https://www.lexaloffle.com/bbs/files/16423/krystman_o_50.jpg)
Checkpoint at episode 59. We started work on the brain editor. The brains are simple scripts that govern the behavior of enemies. We wrote an editor that allows us to quickly write those scripts. We added some simple yet handy commands that make this system super powerful. For example, the brains can even spawn copies of enemies to generate whole formations. The system is also capable enough to manage more complex behaviors like boss fights where the boss switches between different phases.
We are going to take a break to pursue some other video projects. We will be back in a month with BULLET PATTERNS!
![](/media/16423/brainedit_0.gif)
![](/media/16423/brainedit_1.gif)
![](/media/16423/brainedit_2.gif)
[Please log in to post a comment]