Remaking the Hardest Game is (surprisingly) Easy

Поділитися
Вставка
  • Опубліковано 16 тра 2024
  • Let's remake the award winning game changing puzzle BABA IS YOU, figure out how it works, and how to make it yourself!
    This remake is made using the python module pygame, but any game development framework or engine like Unity game engine, Construct3, or Godot would work great!
    While playing this unique and mind-bending indie game, I couldn't help it but be curious to how it was made! The best way to figure it out is to reverse engineer it together in this devlog!
    🕒 Timestamps:
    00:00 - The Secrets of BABA IS YOU
    00:30 - Remaking the Game Changing World
    00:49 - How does the Unique Puzzle Mechanic work?
    01:29 - Remaking BABA IS YOU
    01:43 - Remaking WALL IS STOP
    01:51 - Remaking ROCK IS PUSH (Stupidly Hard)
    03:33 - Uncovering the Genius Custom Animation System
    04:39 - Remaking FLAG IS WIN
    04:50 - How do we push rules around to change them?
    Other awesome BABA IS YOU remakes and devlogs:
    The rules of this game change as you play it: • The rules of this game...
    This game outsmarted a professional engineer... Baba Is You!: • This game outsmarted a...
    How Baba Is You Makes Brain Busting Puzzles: • How Baba Is You Makes ...
    Good Game Design - Baba Is You: • Good Game Design - Bab...
    ❤️ Join the BLANK Realm:
    Discord: / discord
    🎁 All Resources used in this video can be found at the following GitHub repository: github.com/tobyrcod/GameDevRe...
    Happy Coding Everyone! ❤️💻
  • Наука та технологія

КОМЕНТАРІ • 76

  • @g_cabbige5
    @g_cabbige5 Рік тому +37

    I love each pun in this video, whether its intentional or not. "Baba is unique"... haha very funny XD

    • @BLANKdev
      @BLANKdev  Рік тому +7

      ...definitely all intentional

  • @yaoitiddieexpert1486
    @yaoitiddieexpert1486 Рік тому +19

    just letting you know, You objects can actually stack onto themselves. there are a couple levels where you do this with something like baba iis shift to make you move like 5 tiles at a time (since every baba is on 5 other babas, which are all shift)

    • @Splitcyclewastaken
      @Splitcyclewastaken 4 місяці тому

      you can also make one object shift multiple times, and doing that will mean one tile that's double shift will move you two tiles immediately.

  • @Patashu
    @Patashu Рік тому +17

    Baba is You is not too hard to clone (have done it myself - check out the awful-on-purpose fan game bab be u). The actual mountain that was scaled is the incredible amount of puzzles, mechanics, polish and making everything play nicely together. It's such an intriguing experience, and it's fun to try what-if questions, like 8 way movement or custom text.

    • @BLANKdev
      @BLANKdev  Рік тому

      That's a great way of putting it. I ended up quite surprised at how simple rules can get you most of the way there, but even with them it takes some genius to make the puzzles as amazing as there are which only he could have done

  • @AndrewDavidJ
    @AndrewDavidJ Рік тому +19

    Great work! Baba Is You looks like such a daunting game to create, but I guess once you already know all the rules, they’re not too difficult to breakdown. Still impressive that you put this together though!

    • @BLANKdev
      @BLANKdev  Рік тому +2

      Thank you so much! I definitely ignored a lot of complexity to make the remake easier though, the real baba is you is INSANE!

  • @MyzticF
    @MyzticF Рік тому +5

    3:00 This is the default behavior in the original game though, if I remember correctly?

    • @BLANKdev
      @BLANKdev  Рік тому +2

      I'll be right back

    • @BLANKdev
      @BLANKdev  Рік тому +2

      OMG IT IS 🥲

    • @notwithouttext
      @notwithouttext Рік тому +2

      @@BLANKdev yes because wall isn't push, pull, or stop

    • @BLANKdev
      @BLANKdev  Рік тому +2

      @@notwithouttext Absolutely it makes sence for the rules which is why it was happening in my version originally too. I don't know howI thought they changed it but I must have messed up when testing!

  • @ooooggll
    @ooooggll Рік тому +9

    A few months ago I started to make a Baba demake in Pico-8. It was going great (text working and everything, even made some levels) until it got so laggy with looping over every object so many times that it was running at like 7 fps. I haven't touched it since but I really miss working on it and I hope someday I can come back to it and improve performance.

    • @BLANKdev
      @BLANKdev  Рік тому +2

      That sounds like an amazing project! I am sorry to hear it went a bit wrong, but even having that working at all in Pico-8 is a huge acheivement! If you do go back to it I wish you the best of luck!

    • @Davi_Dash
      @Davi_Dash 10 місяців тому +1

      A good approach in my opinion is a look up table, you start the game loop the map to find all the words and objects , you add the objects and words add to a tables
      (Like diss:
      Obj={}
      Obj[x.."/"..y]="wall"
      )
      , then when you move a objects you can check the object table like diss:
      If Obj[x.."/"..y]!=nil then
      end
      Like diss if the object is not nil , which means nothing then exists.
      To check colision you just add the spd_x and spd_y.
      If obj[x+spd_x.."/"..y+spd_y] then
      end
      You a can also use diss you doing collision with the words just make a table and look up the word
      You could also check if the rule was unmade after you moved the noun, you check the non up and down or left and right to see if the rule still exist, then depending if is true or not , you add or remove a rule.
      rules can be array/table that the game execute .
      I hope helped you, i also make games in pico8 , and use lua a lot so i know some stuff.

  • @notwithouttext
    @notwithouttext Рік тому +3

    2:09 (the pushing section)
    i thought it was hard too, until i tried programming in puzzlescript, and found the solution. i used it in my gmtk game jam submission "that's how i roll".
    basically, take every player object (YOU) and put an attribute on them as "going to move in [direction]". then any pushable objects (PUSH) in front of a player object (YOU) have the same attribute. finally, remove the moving attribute from all objects going into a non-moving object (STOP, or still PUSH objects). really elegant

    • @notwithouttext
      @notwithouttext Рік тому +1

      although originally, i did the solution you did

    • @BLANKdev
      @BLANKdev  Рік тому +1

      @@notwithouttext That is a beautiful way of doing it, thanks for sharing!

    • @KinuTheDragon
      @KinuTheDragon Рік тому

      I personally haven't tried, but the way I would think to do it similar to BLANK's way of doing it:
      def push(position, direction):
      if not can_push(position):
      return False
      if is_nonexistant(position):
      return True
      output = push(position + direction, direction):
      if output:
      move(position + direction, direction)
      return output

    • @notwithouttext
      @notwithouttext Рік тому

      @@KinuTheDragon then it doesn't work for WALL IS YOU AND PUSH since the walls will move twice (unless you reorder like blank did)

  • @Skeffles
    @Skeffles Рік тому

    Fascinating to think how this is coded! Great video.

  • @RobLang
    @RobLang Рік тому +2

    Lovely video and a great description of a unique mechanic!

    • @BLANKdev
      @BLANKdev  Рік тому +1

      Couldn't ask for a better compliment than that thank you!

  • @TheShelfman
    @TheShelfman Рік тому +8

    Knowing very little about this game, I was so confused at first, but I love this! Great experiment with awesome results

    • @BLANKdev
      @BLANKdev  Рік тому +2

      I'll definitely make the next video easier for people who haven't played the game! Really glad you liked it anyway, that's awesome 😁

  • @Sevrgpro
    @Sevrgpro 9 місяців тому

    Great video! This game always stumped me just thinking about how it was made, you did a great job at simplifying it.

    • @BLANKdev
      @BLANKdev  9 місяців тому

      I'm really glad my explanations could help, have a great day

  • @HelperWesley
    @HelperWesley Рік тому +6

    I recently recreated Baba is you at work, to see how it would work in my engine.
    And I'll say... the most complicated part was when there were multiple objects tagged as "you", and they were all pushing stacks of objects of different sizes. 😅

    • @BLANKdev
      @BLANKdev  Рік тому +1

      I guess I have that to look forward too 😩

  • @arrowsdev
    @arrowsdev 4 місяці тому

    i did my best remaking it in unreal engine 4 XD , not all functionalities are there but it works with single noun and rules , started searching to see how others thought about this game mechanics and so on , this video provided much guidance too , thanks ill be able to improve upon my system and see where things go.

  • @badmanjones179
    @badmanjones179 Рік тому +2

    oh my god you should watch hempuli's videos about making this game, he gave a talk about it which you can find on youtube and apparently the nightmares only continue :P good luck

    • @BLANKdev
      @BLANKdev  Рік тому

      If you mean the gdc talk, I'm covering that in the next video or the one after! From what I can tell I think I'm doing it in a slightly different way, all I can hope for is that it's slightly easy 😭🤞

  • @sudhansubalasahoo
    @sudhansubalasahoo Рік тому +1

    Very nice recreation

  • @icoso
    @icoso Рік тому +2

    Really great video!! Haven't played this game in a while but this is definitely bringing back an itch to complete more levels :P Incredible recreation and editing

    • @BLANKdev
      @BLANKdev  Рік тому +1

      The hardest part of this remake is not sitting for hours just playing it XD

  • @GamesBySaul
    @GamesBySaul Рік тому +1

    Really interesting video, I don't know too much about the game, been meaning to check it out but the way you broke it down, and explained it all in so much detail was great, really impressive work! :D

    • @BLANKdev
      @BLANKdev  Рік тому +1

      Very glad to hear it worked for you! I was worried the explanations either went to far or not far enough in places, part 2 will hopefully be even better!

  • @Brokeittwice
    @Brokeittwice 9 місяців тому

    You diserve a million subs

  • @00001Htheprogrammer
    @00001Htheprogrammer Рік тому +1

    I am also planning to remake baba is you too, but with a different approach. When an object moves, it checks if there is an obstacle there, and if there is it QUEUES the movement of itself. if not, it moves immediately. After the immediate movements are resolved, resolve the queue in multiple passes. If the obstacle is still in the way, queue the obstacle on the end of the queue for the NEXT pass, and THEN the movement itself.(like BFS, the queue dynamically grows while being looped over) when a pass is resolved, resolve the next. If no movements are made in a pass, then all remaining movements are considered failed.

    • @BLANKdev
      @BLANKdev  Рік тому

      Wow I really like this idea that's a beautiful implementation!

    • @00001Htheprogrammer
      @00001Htheprogrammer Рік тому

      @@BLANKdev i didnt dig thru the original source code, but ive heard the original game also queues movement, with quite some quirks, like an object cannot be pushed in two different directions in a single turn. I think my version doesn’t have that problem, as IIRC baba is you only queues a single movement for each object.

    • @00001Htheprogrammer
      @00001Htheprogrammer Рік тому

      @@BLANKdev A problem with this implementation is that if stacked STOP objects move, the top one gets unstacked, and the rest stays unmoved.(Or, if they are PUSH, all of them get unstacked). To fix this, all passes(including the "immediate pass") store the previous state before executing and conditions are only checked on the previous board, so as to make movements in the same pass effectively made at the same time.

    • @BLANKdev
      @BLANKdev  Рік тому

      I don't quite understand yet without trying to implement it all myself but this does all get a lot more complicated than I could have expected, but everything always does and figuring it out is half the fun, thank you for your help!

    • @00001Htheprogrammer
      @00001Htheprogrammer 11 місяців тому

      @@BLANKdevI sent you an e-mail regarding my Baba is You remake. Looking forward to your response!

  • @elicenyne
    @elicenyne 5 місяців тому +1

    baba is you doesn't actually use a spritesheet, baba is you uses a bunch of loose images in a folder

  • @notwithouttext
    @notwithouttext Рік тому +2

    3:59 except for PIXEL

  • @Voxelstice
    @Voxelstice 10 місяців тому

    while it may not help that much, the game actually has lua files in the Data folder, so you could've looked at parts of it. lua is similar to python by the way, so you shouldn't have a hard time trying to figure it out
    i dont know if you intentionally didn't want to look at any of the game's code for this video, but it's your choice when you don't want to

    • @BLANKdev
      @BLANKdev  10 місяців тому

      I had no idea that the code was available no, thank you for telling me! I really enjoy figuring it out for myself so I probably won't take a look (...yet) but that's great!

  • @notwithouttext
    @notwithouttext Рік тому +2

    5:28 or HAS, MAKE, etc

    • @kekevids134
      @kekevids134 Рік тому +2

      hey nwt when non-babatubers make baba videos no one really knows about pixel, has, make, word, above, auto, or [secret ending related word], only baba, is, you, flag, rock, wall, push, sink, water etc...

    • @BLANKdev
      @BLANKdev  Рік тому

      Oh more blocks like that are definitely coming, it's just much easier to start with the basics!

    • @kekevids134
      @kekevids134 Рік тому

      @@BLANKdev also in the original game instead of flagword it's text_flag, making it easier to use metatext i guess like text_text_keke instread of kekewordword

    • @BLANKdev
      @BLANKdev  Рік тому

      Oh that does actually make a lot of sense too, I like that I might change it over thank you!

    • @notwithouttext
      @notwithouttext Рік тому

      @@BLANKdev if you DO include metatext though, think about what "text is text" should do

  • @williamdrum9899
    @williamdrum9899 10 місяців тому

    Here's what I don't get: how does the Undo feature work? It seems like that would take a massive amount of RAM. There must be a trick to it

    • @BLANKdev
      @BLANKdev  10 місяців тому

      My guess would be it stores the button you pressed on a stack and anything you might have deleted or removed on that turn, then does some magic to undo it that way, because that would use very little ram. This is something I'm very excited to figure out in part 2!

  • @whateep
    @whateep Рік тому +1

    wake up honey, new dankblev dropped

    • @whateep
      @whateep Рік тому +1

      wake up honey blank is committing straight up theft 😮

    • @BLANKdev
      @BLANKdev  Рік тому +1

      @@whateep 👀💰

  • @whateep
    @whateep Рік тому +2

    lil’ bro can make wild stuff like this but not correctly spell “variant” consistently smh
    Amazing video!

    • @BLANKdev
      @BLANKdev  Рік тому +2

      Dude no I didn- omg I did. thanks whateeep now I have to delete the whole thing 😤

    • @whateep
      @whateep Рік тому +1

      @@BLANKdev my plan has worked perfectly

  • @niang46
    @niang46 9 місяців тому

    Hum... I can't leave a comment, even with no link (I tried to link my itch to show my attempt with no experience (but during weeks and weeks), but even by removing it, it's still removed instantly)

    • @niang46
      @niang46 9 місяців тому

      Ok it seems to be ok for now.
      The main difficulty was the rules becoming exponentially harder to detect with AND and NO blocs. And the undo function, because it was a lot more than just store coordinates in a 3D array

    • @niang46
      @niang46 9 місяців тому

      It seems to be my name which makes the comment to be erased instantly, that's... annoying.
      I guess my game on itch can be found searching "A baba is you prototype (Re-coded)"

  • @TheAdhdGaming
    @TheAdhdGaming 8 місяців тому

    recreate battle advanced

  • @anispinner
    @anispinner 9 місяців тому +1

    Dog is Dog.

  • @chronosVR.2763
    @chronosVR.2763 Рік тому

    "baber is you"

  • @Wildspeck
    @Wildspeck 5 місяців тому

    Why are you preventing “is you” collisions? That isn’t a part of the original game

  • @sarad2487
    @sarad2487 8 місяців тому +1

    Omg was I the 300th like?!
    Ignore this just wanted 2 brag XD

  • @leonmarkovich4504
    @leonmarkovich4504 9 місяців тому

    I've done it in c++, it wasn't easy at all :( ua-cam.com/video/uubevF1LBW4/v-deo.html

  • @Watesoftheoasis
    @Watesoftheoasis 9 місяців тому

    "Remaking the Hardest Game is (surprisingly) Easy"
    ...if you completely ignore all the design work and niche mechanics contained within said game.

  • @adityajain1211
    @adityajain1211 9 місяців тому

    Python... Why man...

    • @BLANKdev
      @BLANKdev  9 місяців тому

      What's wrong with python? :0