Pygame Tutorial - Creating Space Invaders

SdĂ­let
VloĆŸit
  • čas pƙidĂĄn 5. 07. 2024
  • In this pygame tutorial we will be working through creating a full space shooter/invader game! I will be teaching the pygame module and some basic game design principles as we walk through this long python 3 pygame tutorial.
    🎙If you want to show your support please subscribe to @Time Out With Tim, where I'll be posting weekly podcasts! / @timeoutwithtim
    ⚙ How to Install Pygame (Windows): ‱ How to Install Pygame ...
    ⚙ How to Install Pygame (Mac): ‱ How to Install Pygame ...
    đŸ’Ÿ Game Assets & Code Download: dev-cms.us-east-1.linodeobjec...
    đŸ’Ÿ Game Assets Only Download: dev-cms.us-east-1.linodeobjec...
    â—Ÿâ—Ÿâ—Ÿâ—Ÿâ—Ÿ
    đŸ’» Enroll in The Fundamentals of Programming w/ Python
    tech-with-tim.teachable.com/p...
    📾 Instagram: / tech_with_tim
    🌎 Website techwithtim.net
    đŸ“± Twitter: / techwithtimm
    ⭐ Discord: / discord
    📝 LinkedIn: / tim-ruscica-82631b179
    📂 GitHub: github.com/techwithtim
    🔊 Podcast: anchor.fm/tech-with-tim
    đŸ’” One-Time Donations: www.paypal.com/donate/?token=...
    💰 Patreon: / techwithtim
    â—Ÿâ—Ÿâ—Ÿâ—Ÿâ—Ÿâ—Ÿ
    ⚡ Please leave a LIKE and SUBSCRIBE for more content! ⚡
    ⭐ Tags ⭐
    - Tech With Tim
    - Python Tutorials
    - Pygame Tutorial
    - Pyagame Space Shooter
    - Python Pygame Tutorial
    - Pyagame Tutorial Python
    ⭐ Hashtags ⭐
    #python #pygame

Komentáƙe • 952

  • @akuamtau
    @akuamtau Pƙed 4 lety +582

    Tutorial timestamps:
    0:9:00 import assets
    0:15:00 main function
    0:32:30 ship class
    0:39:00 setup player keys
    0:46:30 player class
    0:53:30 enemy class
    1:13:00 laser class
    1:37:39 enemy shooting
    1:42:00 health bar
    1:49:20 main menu

  • @lamedev1342
    @lamedev1342 Pƙed 4 lety +487

    Congrats to everyone who finished the tutorial and created the game! We made it and didn't give up!

  • @baphnie
    @baphnie Pƙed 3 lety +53

    "Forgive me; I'm drawing with my mouse."
    *draws a perfect square with the hand of god*

  • @ChromaCreates
    @ChromaCreates Pƙed 4 lety +53

    Thank you so much, Tim! I was present for all 2 hours and learned a lot. This is my first official Pygame game! Keep the good work up!

  • @trevorribbans2256
    @trevorribbans2256 Pƙed 3 lety +3

    I love how it covers many topics, classes & dictionaries especially! Super helpful for me

  • @ArpanNeupaneProductions
    @ArpanNeupaneProductions Pƙed 4 lety +4

    Thank you for being specific and explaining what you were doing thoroughly. Keep it up!

  • @Ashersminicartoons
    @Ashersminicartoons Pƙed 4 lety +6

    I've been subbed to this channel since you guys had 100K subs! Amazing tutorial Tim!!

  • @codysmith1915
    @codysmith1915 Pƙed 3 lety +6

    I super appreciate this man, I was a c++ student in college but wanted to swap over to python. Stuff likes this make awesome little projects to practice the language

  • @ggbo4936
    @ggbo4936 Pƙed 4 lety +6

    Thank you to be so great, I can go to holidays now, you save my last year project. So nice ! Keep going love on you from France !

  • @federicogemin1715
    @federicogemin1715 Pƙed 4 lety +10

    Top quality tutorial. Good job man!

  • @caijason9486
    @caijason9486 Pƙed 4 lety

    thanks for the tutorial. Tim. It saved me a lot of time to be familier with an interesting game module in Python. Great support !

  • @msa3533
    @msa3533 Pƙed 3 lety +4

    dude you are literally expanding our knowledge. thanks a lot

  • @devguyahnaf
    @devguyahnaf Pƙed 4 lety +3

    Thx Tim for this tutorial. Keep going with it because I need this one. Also stay safe

  • @eshanbahuguna8088
    @eshanbahuguna8088 Pƙed 4 lety +31

    holy shit! what a coincidence, i just finished making a space invaders game from another tutorial, and my man posts a better one

  • @bwip2033
    @bwip2033 Pƙed 3 lety +23

    A week ago I was barely scraping the surface of Python, following this tutorial made it much easier to see where syntax belongs and how everything communicates. This was a lot of fun - Thanks!

    • @ikben3983
      @ikben3983 Pƙed 3 lety +1

      lol i installed python like a couple days ago, was hard, now its ez with tim

  • @SilentEagle2029
    @SilentEagle2029 Pƙed 4 lety +31

    Really appreciate these videos! I have given programming a second go around and am really sticking with it this time. Following tutorials such as yours expand my knowledge and teach by doing at the same time. You got yourself a new sub! P.S. I'll check out that podcast too ;)

    • @CorridorJ
      @CorridorJ Pƙed rokem

      how did it go? still programing?

    • @SilentEagle2029
      @SilentEagle2029 Pƙed rokem

      @@CorridorJ Kinda sorta. I'm a statistical programmer - so somewhat related!

  • @elenkorkmaz4075
    @elenkorkmaz4075 Pƙed 3 lety +17

    Thank you so much it worked perfectly despite the loads mistakes I made... It had for me 4 days in a row, a few mental breakdowns and struggles, but I managed to solve everything and follow your path and I"m very thankful because I just finished my first python project with you :)! Btw I have an advice for people who watch this; create a checkpoint save and save it everytime when you ran the project without any error, so you wouldn`t have to restart the project everytime you have an error. Thanks again!

  • @tonyfremont
    @tonyfremont Pƙed 3 lety +4

    Been programming, for well over 40 years, in BASIC, various assembler languages, FORTRAN, COBOL, C, Perl, php, and several scripting thingys. After much resistance, I finally broke down and decided I should spend some time learning more about python. Watched the 4.5 hour tutorial from Mike, pygame demo of Connect 4 (part 1), and then watched this. Best use of a cold Saturday in a long time. In about 8 hours, I've a decent handle on the basics, along with graphics use. I can't thank this channel enough. I might actually learn some JavaScript now. ;)

  • @karelsalminen2671
    @karelsalminen2671 Pƙed 4 lety +1

    This was a really fun and educational little code-along project! Greetings from Finland!

  • @LuisPereira-bn8jq
    @LuisPereira-bn8jq Pƙed 4 lety +2

    Really neat tutorial. Had fun implementing this one.

  • @gloryness
    @gloryness Pƙed 4 lety +16

    YES TIM WAS LITERALLY WAITING FOR THIS

  • @harrisoncrettol
    @harrisoncrettol Pƙed 4 lety +11

    I appreciate the hard work that goes into these videos. I noticed a small bug in the program where everything on the screen had almost like a ghosting effect. Fixed it by adding "WIN.fill((0,0,0))" directly after the redraw_window function. Hopefully this helps

  • @uli9001
    @uli9001 Pƙed 4 lety

    Thanks Tim! Again a great tutorial with absolutely no necessity to watch it with increased speed ;-)

  • @noone-gr4is
    @noone-gr4is Pƙed 4 lety +1

    Dude this is the video I was waiting for!

  • @williamneck7897
    @williamneck7897 Pƙed 4 lety +8

    Thanks for being so specific explaining every single line of the code, learning python this way becomes much easier and dynamic than reading books full of theory (I'm not saying these are useless but for me learning hands on is proving to improve the learning curve and the interest in programming in a beginner level) Thanks again Tim keep it up!!

  • @v.smourya8005
    @v.smourya8005 Pƙed 4 lety +3

    Excellent Tutorial !! I was able to follow through the whole tutorial with so much ease ! Thank you Tim :)

  • @eddiemeekin9180
    @eddiemeekin9180 Pƙed 11 měsĂ­ci

    Just finished your beginners oygame tutorial. Was so badly hoping you would have a tutorial for this (I feel this is the next step to that video) and obviously you pulled through! Dunno how I would have felt following a tutorial from somebody else. You are an Amazing tutor

  •  Pƙed 2 měsĂ­ci

    Awesome, Tim! Kudos! Greetings from Brazil!

  • @CSonneck
    @CSonneck Pƙed 4 lety +3

    Merci Tim
    TrÚs bien présenté. (Very well presented.)
    BRAVO
    Christophe from France

    • @arnosk8703
      @arnosk8703 Pƙed 4 lety

      Moi aussi je suis francais.

  • @neelbiswas5992
    @neelbiswas5992 Pƙed 3 lety +7

    At 48:34, instead of using self.ship_img, use the variable for the yellow ship (YELLOW_SPACE_SHIP)

  • @jadenwirhol3260
    @jadenwirhol3260 Pƙed 3 lety +1

    Dude, keep this up. I love these videos

  • @paulbagnis781
    @paulbagnis781 Pƙed 4 lety +2

    Thank you for being such a great guy, love what you do, it's been two weeks working on your videos, just got me a top class last year project ! If you wan't to give courses in Paris, can get a word to my school ! Love from France !

    • @ggbo4936
      @ggbo4936 Pƙed 4 lety

      Oh you're French too, I think I know you ! XOXO

    • @paulbagnis781
      @paulbagnis781 Pƙed 4 lety +1

      @@ggbo4936 Love u brahhhh

  • @franciscomenezes2055
    @franciscomenezes2055 Pƙed 4 lety +6

    Muito bom, estou começando no pygame e seu vídeo ajudou muito a entender melhor a iteração entre objetos.

  • @aaeuj
    @aaeuj Pƙed 4 lety +5

    I was waiting for this, stay safe my friends đŸ˜·

  • @jimshapedcoding
    @jimshapedcoding Pƙed 4 lety +1

    Tim this is really amazing content.
    Thank you! :)

  • @alexmckinley79
    @alexmckinley79 Pƙed 8 měsĂ­ci

    Thank you so much for this tutorial. Your projects are really helping me practice skills and get more confident.

  • @roshanican504
    @roshanican504 Pƙed 3 lety +11

    With this tutorial it's been my second pygame but i know everything's waste if we really won't understand the code itself and and be able to built Everything from scratch and add some features so hopefully,
    I'll do it, please pray for my grandpa guys it's like he is really sick but what i am hoping is to work hard and get a job to support his treatment...
    But i really believe prayers or dua change things... So thanks to Tim again
    It's really amazing for people like me who can get this content for free literally...

  • @angel-ig
    @angel-ig Pƙed 4 lety +9

    23:01 He said he was drawing with the mouse, but that's the best square I've ever seen.

  • @neelbiswas5992
    @neelbiswas5992 Pƙed 4 lety +2

    Best of luck for your new podcast!

  • @ritikvishvakarma7152
    @ritikvishvakarma7152 Pƙed 3 lety

    You are doing a really good job. Suddenly I found your channel and I became your fan

  • @curtis9701
    @curtis9701 Pƙed 3 lety +17

    Hey man, I just want to say I appreciate the living hell out of you. How have I only just discovered you. I guess perhaps its because this is the first time I have dabbled in pygame and you came up. But good god. I have not found a better teacher for coding related topics. Seriously, you teach better than my profs do.
    If your someone who has never touched pygame, following along, you go over all the built in functions and what they actually do. I love that when you're using an unfamiliar library. I even downloaded Sublime text to try out. Was curious as to how you got the intelligence going and to get the parameters to pop up for the built in functions?

  • @hemanta212
    @hemanta212 Pƙed 4 lety +71

    pip is actually recursive acronym "Pip Install Packages"

  • @zLowe
    @zLowe Pƙed 3 lety +1

    Dude You are AWSOME! excellet tutorial I learned so much. Better then 4 weeks of school

  • @lucanotti2246
    @lucanotti2246 Pƙed 8 měsĂ­ci

    Awesome tutorial man!

  • @l4m5
    @l4m5 Pƙed 4 lety +148

    Legends code in the default IDLE DARK MODE.

    • @tnetroP
      @tnetroP Pƙed 4 lety +41

      Uber legends code in total dark, remove the lightbulb, turn off keyboard backlighting and turn the monitor off. Hardcore darkmode.

    • @Vielmont
      @Vielmont Pƙed 4 lety +2

      @@tnetroP lol

    • @gokulbeats6932
      @gokulbeats6932 Pƙed 3 lety

      @@tnetroP 😂

    • @projectvibe1226
      @projectvibe1226 Pƙed 3 lety +2

      I use IDLE because my trashy laptop can't download pycharm nor sublime

    • @nemanjastefanovic9215
      @nemanjastefanovic9215 Pƙed 3 lety +1

      @@projectvibe1226 You can use repl.it. It is a browser based IDE, there is no downloads and even my laptop can use it. (It is very old)

  • @elosopodast
    @elosopodast Pƙed 3 lety +5

    At one point, when you REPLACE, in python it also replaces the file name from ship to player and then it throw an error, so I had to go back an manually replace player back to ship so it could find the right asset.

  • @suguruchhaya3194
    @suguruchhaya3194 Pƙed 3 lety +1

    Love this tutorial!! One thing to mention is that you have to have mastered beginner python concepts and also know how to use classes to understand what the heck is going on.

  • @anurasenarathna1703
    @anurasenarathna1703 Pƙed 2 lety

    One of the best game in my first computer, ZX Spectrum few decades ago. Thank you

  • @bryanromo7138
    @bryanromo7138 Pƙed 4 lety +3

    Hey Tim, great video as always! I'm a begginer and your videos help me a lot :)
    I wanted to make a video about: "I made a videogame watching a tutorial" (this tutorial) obviusly referencing you and your channel. Can you give me permission?
    Anyways thanks as always!!

  • @probabilityfilter
    @probabilityfilter Pƙed 3 lety +3

    If anyone of you are getting the "FileNotFoundError: No such file or directory" error (at around the 10min mark) then one of the reasons could be that you are not running your Python from the folder that you are working from. Meaning, many IDEs work from the root or base folder like ".../Documents/Python Scripts" and if you created a folder for this project like ".../Documents/Python Scripts/Space Invaders" then you need to change your IDE's working folder to ".../Space Invaders". Also remember to use the correct slash \ vs / , whenever you need to use it for paths etc. Also space between words of a folder name need to be handled appropriately.

  • @kaelwang1251
    @kaelwang1251 Pƙed 4 lety

    Very good video! Thank you so much! Keep up the good work!

  • @quanganhnguyen7545
    @quanganhnguyen7545 Pƙed 4 lety

    Thanks Tim, great tutorial!

  • @vladijunior20
    @vladijunior20 Pƙed 3 lety +3

    Hey Tim. Amazing tutorial !! I managed to make the game and I really enjoyed your way of teaching. Quick question, I am trying to make my version of the game by adding "lives" which could be an enemy ship but instead of removing 10 points of life and collide, it will add 10 points to my player. I tried a few ways by myself but without luck. My way of thinking was to define that when the enemy ship from when randomly was selected, if it is green for example to add points. I guess the error was mostly that I havent defined ship."green" anywhere. Any help or comments will be highly appreciated. Thanks again for the video

  • @dejavukun
    @dejavukun Pƙed 4 lety +8

    Thanks a lot for your videos Tim. I had a question. How do you start with building such projects? Do you use references? Do you use other people's code initially? Like supposed you are starting out with PyGame module(I know that now you are pretty experienced with it and you can build up stuff on own), how would you approach building a game like let's say PONG.
    Could you explain your approach.
    Could you make a video on this topic? Like how we can approach things while making a project which can minimize copying stuff. One thing that I do is that if I learn something from a blog or a video, i try to understand it. Then, mostly I will make a variant of it. That way, I am practicing also and using the concepts I learnt without copying much.

  • @TopBagon
    @TopBagon Pƙed 4 lety +1

    I was stuck on this type of game and I'm sure this will be helpful. Thanks a lot for making this, really appreciated

  • @x-r-s
    @x-r-s Pƙed 4 lety

    Really fun tutorial, good job!

  • @hermesbonilla4775
    @hermesbonilla4775 Pƙed 3 lety +10

    One Question: how did you create the art in the tutorial? I'd like to add more features and just wanted to know :)

    • @revanthgsr
      @revanthgsr Pƙed 2 lety

      Me too. I already added healthpacks with a bitmap image from paint.
      i tried making hearts for the lives to increase but i am getting a white background

  • @sashamuller9743
    @sashamuller9743 Pƙed 3 lety

    took me days to work through this lol. Thank you Tim for all your hard work, i honestly don't know how you do it.

  • @rakeshkulkarni5552
    @rakeshkulkarni5552 Pƙed 3 lety

    I learnt lots of new ideas for python other than pygame, great tutorial .

  • @Tom-kg6qe
    @Tom-kg6qe Pƙed 4 lety +13

    Yo dawg, we heard you liked functions, so we put a function IN YO FUNCTION! So you can run a function while you run a function!

  • @jcsmith9518
    @jcsmith9518 Pƙed 3 lety +4

    Hey Tim, trying to learn Python and trying the game. Q: How to increase screen speed? Tried modification of FPS but don't work. Thanks for tutorial!

    • @jhonmekonnen6465
      @jhonmekonnen6465 Pƙed 3 lety

      i think the speed is due to your computer power, try increasing the player_velocity

  • @P.L.D.
    @P.L.D. Pƙed 4 lety

    Thanks Tim! You are the best!

  • @user-qh8xz3ed9c
    @user-qh8xz3ed9c Pƙed 2 lety

    Very good explanations! Learnt a lot from this video. Thanks so much :)

  • @mehdibekri9586
    @mehdibekri9586 Pƙed 3 lety +5

    if you guys find a problem with scaling the BG ur probably missing a coma lol i was stuck there for a whole hour

    • @brainy3429
      @brainy3429 Pƙed 3 lety

      It is a dash( or minus sign), not a underscore.Tim tricked us haha.

  • @skilz8098
    @skilz8098 Pƙed 4 lety +4

    Nice python tutorial. Just a couple of caveats...
    I made a small modification to the game logic, in the run loop where you were checking to see if lives were

    • @krishnaraj3989
      @krishnaraj3989 Pƙed 4 lety

      am not even that experienced in game programming except for working with cpp and sfml, but i do agree that game programming is one of the best ways to learn any language.

  • @robinnutbeam750
    @robinnutbeam750 Pƙed 2 lety +1

    Hi Tim. Great tutorial, it has helped me to better understand what code in Python/ Pygame can create. I managed to add background music to this game, which I learnt from one of your other Pygame videos I had an error with the def collide (obj1, obj2): section. When I ran the program it said that the argument result expected was an int value but returned a float value. I managed to get the code running by using the int function before the offset_x and offset_y. like this:
    def collide(obj1, obj2):
    offset_x = obj2.x - obj1.x
    offset_y = obj2.y - obj1.y
    return obj1.mask.overlap(obj2.mask, (int(offset_x), int(offset_y))) != None
    If anyone else had the same problem I hope this helps. All other code works great :) thanks Tim

  • @fabu324
    @fabu324 Pƙed 4 lety

    Very cool and interesting tutorial!!! Just finished it and I defenetly larnt a lot!
    Thanks a lot!!!

  • @glaceondev4149
    @glaceondev4149 Pƙed 4 lety +10

    Hey there,if you got any errors like: " int got float"
    then the error is in the instance of player and if you have tried to divide the WIDTH/HEIGHT with some values so it will spawn at the center or somewhere of your screen if so...then the problem is when you try to divide that numbers that returns a floating number so what you can do is:
    import decimal
    decimal.Decilam(Now just do your math stuffs)
    i faced this error and saw the entire video 3 times..but after all i found this problem..its hard to find this type of error...HOPE THIS HELPS

  • @GamingBrasilTuto
    @GamingBrasilTuto Pƙed 4 lety +4

    at 50:00 i'm getting this error: TypeError: argument 1 must be pygame.Surface, not None. I change in class Ship, self.ship_img = None to self.ship_img = YELLOW_SPACE_SHIP and works but just for yellow color. What i can do?

  • @arnaldogonzalez1
    @arnaldogonzalez1 Pƙed 2 lety

    Super helpful intro to pygame. Thanks a ton!

  • @ri0tmakesmusic
    @ri0tmakesmusic Pƙed 2 lety

    17:58 That awkward silence tho lol
    Great vid man! It helped me so much Thank you!!!

  • @hamod1452000
    @hamod1452000 Pƙed 3 lety +5

    His website is down, can someone upload the image assets somewhere else for us?

    • @SmellyNutz
      @SmellyNutz Pƙed 3 lety

      It isn't now, I just downloaded

  • @georgiivanov8631
    @georgiivanov8631 Pƙed 4 lety +29

    Web scraping tutorial!!!!

  • @lemastertech
    @lemastertech Pƙed 2 lety

    Awesome Video Man

  • @jibster148
    @jibster148 Pƙed 2 lety +1

    Cheers Tim mate, class at what you do sir

  • @emojiguy6374
    @emojiguy6374 Pƙed 4 lety +3

    Tim: don't name the file pygame
    Me: let me try 😈
    Later....
    Well you know what happened.

  • @acropolise2945
    @acropolise2945 Pƙed 3 lety +3

    Imagine doing this thing but using Unity instead so it'll take you 10 minutes...

    • @hbros6811
      @hbros6811 Pƙed 3 lety

      yeah, in unity this will be a lot quicker xD

  • @meitsv4733
    @meitsv4733 Pƙed 3 lety

    it's a great vid. keep uploading!

  • @mattmovesmountains1443
    @mattmovesmountains1443 Pƙed 3 lety +1

    About halfway through this code-along, my program would force-close as soon as I hit the shoot button. I couldn't for the life of me figure out what was different between my code and Tim's, so I made a file comparison program that printed each line of both of our codes, one line at a time. Got to the issue, fixed it, and it works! Noob for the win

  • @brianm2572
    @brianm2572 Pƙed 4 lety +1

    great tutorial, just finished!

  • @drax3801
    @drax3801 Pƙed 2 lety

    VRY GOOD TUTORIAL TIM...
    VERY INDPIRATIONAL AND UNDERSTANDING THANKS ALOT

  • @niteshbagla6045
    @niteshbagla6045 Pƙed 4 lety +1

    Finally completed , thanks for the game

  • @Kicsa
    @Kicsa Pƙed 2 lety

    You have real good vids Tim, I just can't focus, help me! keep up the good work.

  • @rafasantos23
    @rafasantos23 Pƙed 4 lety +1

    *The best Tutorial of 2020, thanks for this one Tim*

  • @zeinan.1655
    @zeinan.1655 Pƙed 2 lety

    and to sum this up: ... You're the best of the best ♄
    *appreciation* 👏👏

  • @cornellmihkail1238
    @cornellmihkail1238 Pƙed 4 lety

    Great job, Tim

  • @Ali-vu6eo
    @Ali-vu6eo Pƙed 3 lety

    bro u deserve more subs.. thankyou so much for the tutorial

  • @elodiahax1764
    @elodiahax1764 Pƙed 4 lety +1

    niceee
    thank you Tim

  • @jasongrace6274
    @jasongrace6274 Pƙed 2 lety

    You explain very well. Love ya man!

    • @jasongrace6274
      @jasongrace6274 Pƙed 2 lety

      OOO KAY! Well a little too much, I got impressed in the first 20 mins, but now it feels like it's never gonna end. Puff!

  • @edos3783
    @edos3783 Pƙed 2 lety

    You're such a cool guy Tim thanks so much !

  • @doughaskins160
    @doughaskins160 Pƙed 2 lety

    Thank you so much. Just started learning and this was a challenge AND it fired my imagination

  • @samirjamal9336
    @samirjamal9336 Pƙed 4 lety

    Great viedeo mate ! đŸ‘đŸœ

  • @mountainlion9002
    @mountainlion9002 Pƙed rokem

    thank you so much my brother Tech With Tim i'm using this for my final project

  • @katchem5666
    @katchem5666 Pƙed rokem

    completed my first project ever! thanks for the vid.

  • @yourprobablyboard
    @yourprobablyboard Pƙed rokem

    thanks for all you do man

  • @noxzeuz
    @noxzeuz Pƙed rokem

    this was great, i actullay understand most of this :D, maybe you go a little fast for me, but i just have to slow down the speed of the vid! Great job!

  • @angelpico3236
    @angelpico3236 Pƙed 4 lety +1

    Great video. Hey Tim you should do longer streams( 5-9 hrs) more often, some of us enjoy watching that kind of material for that long.

  • @stan55ish
    @stan55ish Pƙed rokem

    Thanks foe your tutorial. Very helpful

  • @lancewilliams3609
    @lancewilliams3609 Pƙed 3 lety

    Thank you for this. !!!! You are great as a teacher, should look into that my friend~!

  • @johannesvartdal624
    @johannesvartdal624 Pƙed 2 lety

    Time out with Tim is an awesome name!