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! ❤️💻 - Наука та технологія
I love each pun in this video, whether its intentional or not. "Baba is unique"... haha very funny XD
...definitely all intentional
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)
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.
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.
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
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!
Thank you so much! I definitely ignored a lot of complexity to make the remake easier though, the real baba is you is INSANE!
3:00 This is the default behavior in the original game though, if I remember correctly?
I'll be right back
OMG IT IS 🥲
@@BLANKdev yes because wall isn't push, pull, or stop
@@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!
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.
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!
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.
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
although originally, i did the solution you did
@@notwithouttext That is a beautiful way of doing it, thanks for sharing!
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
@@KinuTheDragon then it doesn't work for WALL IS YOU AND PUSH since the walls will move twice (unless you reorder like blank did)
Fascinating to think how this is coded! Great video.
Lovely video and a great description of a unique mechanic!
Couldn't ask for a better compliment than that thank you!
Knowing very little about this game, I was so confused at first, but I love this! Great experiment with awesome results
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 😁
Great video! This game always stumped me just thinking about how it was made, you did a great job at simplifying it.
I'm really glad my explanations could help, have a great day
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. 😅
I guess I have that to look forward too 😩
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.
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
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 😭🤞
Very nice recreation
Thank you :)
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
The hardest part of this remake is not sitting for hours just playing it XD
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
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!
You diserve a million subs
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.
Wow I really like this idea that's a beautiful implementation!
@@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.
@@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.
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!
@@BLANKdevI sent you an e-mail regarding my Baba is You remake. Looking forward to your response!
baba is you doesn't actually use a spritesheet, baba is you uses a bunch of loose images in a folder
3:59 except for PIXEL
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
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!
5:28 or HAS, MAKE, etc
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...
Oh more blocks like that are definitely coming, it's just much easier to start with the basics!
@@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
Oh that does actually make a lot of sense too, I like that I might change it over thank you!
@@BLANKdev if you DO include metatext though, think about what "text is text" should do
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
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!
wake up honey, new dankblev dropped
wake up honey blank is committing straight up theft 😮
@@whateep 👀💰
lil’ bro can make wild stuff like this but not correctly spell “variant” consistently smh
Amazing video!
Dude no I didn- omg I did. thanks whateeep now I have to delete the whole thing 😤
@@BLANKdev my plan has worked perfectly
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)
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
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)"
recreate battle advanced
Dog is Dog.
"baber is you"
Why are you preventing “is you” collisions? That isn’t a part of the original game
Omg was I the 300th like?!
Ignore this just wanted 2 brag XD
I've done it in c++, it wasn't easy at all :( ua-cam.com/video/uubevF1LBW4/v-deo.html
"Remaking the Hardest Game is (surprisingly) Easy"
...if you completely ignore all the design work and niche mechanics contained within said game.
Python... Why man...
What's wrong with python? :0