Let's make a Breakout clone using Odinlang + Raylib! This video is quite beginner friendly.
Links to mentioned things:
- Required graphics and sound files: https://github.com/karl-zylinski/breakout/raw/main/breakout_source_assets.zip
- Odin Programming Language setup video: https://www.youtube.com/watch?v=yq5VabsGz_4
- Sublime Text + Odin setup video: https://www.youtube.com/watch?v=RF2MgVqfBV8
- "Fix your timestep" article: https://gafferongames.com/post/fix_your_timestep/
Final code at end of tutorial: https://github.com/karl-zylinski/breakout/blob/main/breakout.odin
I've written a book about Odin. Read more, read a sample or buy at https://odinbook.com/ ✨
Support me 😻
- Patreon: https://www.patreon.com/karl_zylinski
- Buy my game CAT & ONION on Steam: https://store.steampowered.com/app/2781210/CAT__ONION/ (made using Odin and Raylib!)
Ideas for improvement (post a video of how it went on my Discord server: https://discord.gg/4FsHgtBmFK):
- Add blocks that take several hits to destroy. Hint: Change the `bool` type of the blocks array to `int` and use that as a 'health' for the blocks.
- Add extra balls that you get when you hit special blocks
- Look at how the paddle behaves in Arkanoid and try to make it behave similarly. The one in the game we made behaves a bit simplistic.
Chapters:
00:00:00 Intro
00:01:24 Create window + main loop
00:06:46 Player paddle
00:22:21 Ball: Draw and move
00:35:54 Collision with paddle and walls
00:52:12 Blocks: Draw and place
01:05:42 Balls and blocks collision
01:16:11 Score counter
01:19:39 Temp allocator
01:21:20 Game over + start screen
01:26:09 Graphics
01:29:34 Sound
01:33:33 Fixed timestep physics
01:49:34 Ideas for improvements
01:49:56 Thanks to my patrons!