Remaking the Hardest Game is (surprisingly) Easy

Поделиться
HTML-код
  • Опубликовано: 8 июн 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 Год назад +38

    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 5 месяцев назад

      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!

  • @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 11 месяцев назад +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.

  • @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 😁

  • @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!

  • @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)

  • @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 😩

  • @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

  • @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.

  • @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!

  • @Skeffles
    @Skeffles Год назад

    Fascinating to think how this is coded! Great video.

  • @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

  • @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 6 месяцев назад +1

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

  • @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

  • @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!

  • @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!

  • @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

  • @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

  • @anispinner
    @anispinner 10 месяцев назад +1

    Dog is Dog.

  • @chronosVR.2763
    @chronosVR.2763 Год назад

    "baber is you"

  • @niang46
    @niang46 10 месяцев назад

    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 10 месяцев назад

      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 10 месяцев назад

      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 9 месяцев назад

    recreate battle advanced

  • @sarad2487
    @sarad2487 9 месяцев назад +1

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

  • @Wildspeck
    @Wildspeck 6 месяцев назад

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

  • @adityajain1211
    @adityajain1211 10 месяцев назад

    Python... Why man...

    • @BLANKdev
      @BLANKdev  10 месяцев назад

      What's wrong with python? :0

  • @leonmarkovich4504
    @leonmarkovich4504 9 месяцев назад

    I've done it in c++, it wasn't easy at all :( ruclips.net/video/uubevF1LBW4/видео.html

  • @Watesoftheoasis
    @Watesoftheoasis 10 месяцев назад

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