Тёмный

Reverse Engineering Age Of Empires 

Nathan Baggs
Подписаться 39 тыс.
Просмотров 34 тыс.
50% 1

I reverse engineered the original Age Of Empires to see how its AI works
Become a member to get early access to videos - / @nathanbaggs
Want to build cool stuff from scratch? app.codecrafters.io/join?via=...
Tools:
🐉 - Ghidra - github.com/NationalSecurityAg...
🐛 - x64dbg - github.com/x64dbg/x64dbg
💭 All views are my own 💭

Опубликовано:

 

25 июн 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 146   
@nathanbaggs
@nathanbaggs 3 дня назад
Want early access to new videos and some behind the scenes content? Consider becoming a channel member ru-vid.com/show-UCQvW_89l7f-hCMP1pzGm4xwjoin Other videos you might enjoy: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-DvJLIWAGno4.html ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-ILY7tYdIS2Y.html ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-_2GObcrrWq8.html
@Alt-gy7se
@Alt-gy7se 3 дня назад
It felt like you only just got started! As others have said it would be appreciated if you make these videos longer, and maybe even a part 2 of this video where you go further would be amazing!
@nathanbaggs
@nathanbaggs 3 дня назад
Responded in another comment but I basically don’t know how long a video will be till it’s done. Always looking to experiment with different video lengths though
@bubbleboy821
@bubbleboy821 3 дня назад
@@nathanbaggs Yes I would have liked to see a deeper dive
@elbiggus
@elbiggus 3 дня назад
@@nathanbaggs I'd vote for longer/more detail, or alternatively devote several episodes to a *much* deeper dive into a single game: off the top of my head, now you know how the AI gets its broader instructions what happens if you fiddle with them, how does it decide how to *implement* the instructions (what does it prioritise, how does it cope with resource shortages, etc.), what makes it decide when to go on the offensive, why did Geoff decide to go on an expedition, what strategy does it use to expand territory and explore the map, how does it select its targets in combat, is there a way of exploiting the AI, etc. Obviously a massive undertaking as it requires reverse engineering almost the entire game, but it would be fascinating to watch the process.
@MobCat_
@MobCat_ 3 дня назад
@@elbiggus Yeah like 30 mins. You figured out how the file works, now you need to test your hypothesis by building new ai files with strange or fun behavior.
@lewhughes3079
@lewhughes3079 3 дня назад
Yep, what this guy said. :)
@aruan7sp
@aruan7sp 3 дня назад
The AI in AOE1 is controlled by 3 files. The AI file lists the build order, PER their general behavior towards what they've built and towards other players, the PLY file defines how the AI attacks other players. The AOE Heaven website have guides for each file, but they're not all-encompassing since the AI wasn't publicly documented, it's sourced from modders and what they could find.
@nathanbaggs
@nathanbaggs 2 дня назад
Cool thanks for the insight. I try not to look too much up before I start as (for me) it ruins a lot of the fun in figuring it out
@king_james_official
@king_james_official День назад
@@nathanbaggsreal!!! but it also hurts when you re something and find out someone did the same thing 6 years ago lol
@Loki-
@Loki- 20 часов назад
​@@king_james_official The story of life is people repeat a lot of what other's have already done, but the exciting part is giving it a try on one's own. ❤
@ApocDevTeam
@ApocDevTeam 2 дня назад
Love it when people try to reverse engineer stuff in old games. There's a guy that spent years working on a 23-year-old WWII 2D real-time tactics game of which the source code was lost to time, and he managed to get modern screen resolutions working which nobody in the last two decades managed to do successfully (the game was hard coded with a crappy resolution with square aspect ratio). The difference it made was absolutely huge and it works flawlessly.
@ErtugrulK
@ErtugrulK 2 дня назад
Do you happen to remember the name?
@ApocDevTeam
@ApocDevTeam День назад
@@ErtugrulK Sudden Strike (1999-2001) and its expansion pack "Forever". The author has videos on it on RU-vid, HD mod it was called I think. Was a popular game back in the year 2000 in Europe, tons of mods and thousands of custom maps, but until 2022 nobody had ever managed to get higher resolutions working. Even the company which bought the rights to the IP years ago said they were unable to find the source code for the original games.
@Warbob11
@Warbob11 3 дня назад
I came for the Wololo, stayed for the dissection of one of the games I played as a child.
@nathanbaggs
@nathanbaggs 3 дня назад
Wololo
@BrenIrwin
@BrenIrwin 3 дня назад
This popped up in my feed and I audibly gasped. Eagerly and excitingly watching now. Keep this great content coming!
@nathanbaggs
@nathanbaggs 3 дня назад
Hope you enjoy!
@BrenIrwin
@BrenIrwin 3 дня назад
@@nathanbaggs I most certainly did. I'm needing to brush up on using Ghidra so why not also enjoy a video at the same time. Thanks!
@jamesdc1993
@jamesdc1993 2 дня назад
I really appreciated this video Nathan. When I was about 10 years old and first getting into computers and I had access to this game. Curiosity drove me to try and unpick installation files in notepad but obviously didn't get anywhere. 20 years later I'm an IT professional and write software and for a living. The desire to learn how things work has not gone away. You've made the process of reverse engineering software as accessible as I think it can be, which is an real achievement, well done!
@tommo4k
@tommo4k 2 дня назад
One interesting AI quirk is in the original Dungeon Keeper. There's a map where you're pitted against an AI keeper, rather than heroes. If you spend too long building your dungeon, the AI keeper essentially just runs their own dungeon into the ground and all their monsters leave. You spend you're time building and training the perfect army to take them down, and when you're finally ready to go steamroll in and take them on all you find is a husk of a dungeon with a load of empty rooms and maybe two or three flies.
@user85937
@user85937 10 часов назад
Wow I remember that, I always took a long time to train most things to level 10.
@WwortelHD
@WwortelHD 3 дня назад
This was a great watch, hope you can do more AOE debugging in the near future.
@nathanbaggs
@nathanbaggs 2 дня назад
It was great fun to do - I think I will probably look at something different next, but return to AoE in the future
@Ciano56
@Ciano56 3 дня назад
Yeeesss! This is the type of content I love from you Nathan. Take a game, and do a walkthrough analysis of exploiting it. Amazing, hope you can do more, and in way more detail!
@VarionJimmy
@VarionJimmy 3 дня назад
Really interesting reverse engineering! Especially the reveal of “this can’t happen before that”. It’s been 25 years since I did this kind of things and I’ve forgotten a lot of my tricks, so it’s really nice to follow along.
@markbevan5771
@markbevan5771 2 дня назад
I would love to see a in depth analysis on the grid path finding system it uses
@sasquatchbgames
@sasquatchbgames 3 дня назад
Oh man the music throughout the video takes me back.. Really enjoyed this!
@nathanbaggs
@nathanbaggs 2 дня назад
Thanks! It was a real blast from the past for me as well
@1Bouncy1
@1Bouncy1 3 дня назад
longer videos please!
@nathanbaggs
@nathanbaggs 3 дня назад
I am experimenting with video lengths. To give an insight into this particular video (and the challenges around it), I spent about two weeks doing all the reverse engineering at which point I looked at my notes and could see the story I wanted to tell. It felt like a lot of content but I don’t really know the video length till I spend another two weeks scripting, filming and editing. Basically I don’t know how long a video will be till it’s done
@SirDragonClaw
@SirDragonClaw 3 дня назад
@@nathanbaggs This would have been better if it was about 50% longer (assuming you found the content), but every viewer is different. I know this felt a little short for me.
@nathanbaggs
@nathanbaggs 2 дня назад
Will certainly be playing around with different video lengths in future videos. Like I said I looked at my pages of notes and thought I had loads of content, but it all edited down to this
@Exotic69420
@Exotic69420 2 дня назад
​@@nathanbaggsLonger videos also pay significantly more🤑
@CSDex
@CSDex День назад
This is great content. The format of walking through your thinking process and working through reverse engineering something is a great way to teach and get people excited about this subject. Thank you, keep it up!
@nikolainyegaard
@nikolainyegaard 2 дня назад
It’s fun seeing your channel grow! Keep at it :)
@zgolkar
@zgolkar 18 часов назад
12 minutes that was almost sure no less than 12 hours. No matter what, you have all my respect. That’s no easy feat.
@nathanbaggs
@nathanbaggs 11 часов назад
Yeah about two weeks of RE work (and another two to script, film and edit)
@MrTalisauros
@MrTalisauros 3 дня назад
Incredible video, as always. Keep it up!
@nathanbaggs
@nathanbaggs 2 дня назад
Thanks, will do!
@fuzzy-02
@fuzzy-02 День назад
This has the same vibe as watching National geographic on those investigation and historical shows. Had fun watching this video and hope you do a series of this. The end results does not matter, it was the vibe and the journey that was entertaining
@nathanbaggs
@nathanbaggs День назад
Thanks! That's kind of what I'm going for, just solving interesting problems using games people love
@thatLukeKneller
@thatLukeKneller День назад
mate, you're my hero. I loved doing this sort of thing as a kid but never mastered it like you. I want to get back into it. Thanks for this!
@BrunoValads
@BrunoValads 2 дня назад
Would be amazing an analysis of Worms 2/Armageddon AI
@Beansswtf
@Beansswtf 2 дня назад
You have also got to think about things like player interaction. Like if you went over and destroyed their barracks, they would need to replace it to continue making troops. That 4th column definitely looks like it's where the action needs to be done. -1 just seems to be like universal, placing buildings etc which you wouldn't need to click on something to do. Whereas Man is 109, which looks to be the TC, and archer is 87 which looks to be the range.. Pretty cool tbf! Would be very easy to tailor the instruction set to difficulty by just making the build order absolutely perfect or making it terrible haha.
@demipy
@demipy 3 дня назад
Thank you for these videos! ❤
@nixielee
@nixielee День назад
This was great and all, although very short
@petemc4190
@petemc4190 День назад
turns out I most needed to hear the AoE menu music today then learn something cool!
@ysakhno
@ysakhno День назад
It is easier to debug a game or app that uses DirectDraw to run in fullscreen mode on a 2-monitor setup. You use one monitor to run the game and the other one to debug. Alternatively, if you have 2 computers, you can use the remote debug feature (run the game on one computer, and debug on the other one).
@u9vata
@u9vata День назад
I only reverse engineered the cracked version not being properly cracked back in the day. Fun-fact was that the RZR version was like 30 megs and contained the full game, while the full with CD was much bigger (also when installed I think) so I preferred that. However they only seem to have cracked for single player and multi did not work so I did it with softice, HIEW and some other similar tools. How great days they were - good to see people still do these kind of stuff 🙂
@nathanbaggs
@nathanbaggs День назад
Thanks for the story - it's great to know I'm just a small part of large community that loves playing (and breaking) these games
@u9vata
@u9vata День назад
@@nathanbaggs I did reverse GT97 Racing though - because all version online are buggy and the time for checkpoints go too fast - but its a smaller game and dos game - likely my latests achievement in similar vein but smaller than looking around the AI of a game... Interesting finding there was that one can actually use dosbox as a debugger for smaller games and it eases a lot 🙂 I know there are people who reverse still - but always nice to see. There was this russian guy who created awful lot of DLLs for making games run over opengl instead of DX and often helped them work better on linux for example.... many great people - just never saw ai reversing before ;-)
@timsoft3
@timsoft3 День назад
the person who wrote userpatch for aoe must have done a fair bit of reverse engineering, because he managed to enable modern resolutions, increased population, update and improve ai capabilities, and fix many bugs in the map editor. interesting to see the tools used. can they generate c as well as asembler?.
@Nunya58294
@Nunya58294 3 дня назад
Saw the title about shit my pants lol
@nathanbaggs
@nathanbaggs 3 дня назад
I’m pleased it had such an impact
@Nunya58294
@Nunya58294 3 дня назад
@@nathanbaggs oh absolutely good sir
@kalleenkelmann8055
@kalleenkelmann8055 11 часов назад
Please make more of exactly this :D
@nathanbaggs
@nathanbaggs 10 часов назад
That’s my plan!
@JoshuaMHiggins
@JoshuaMHiggins 3 дня назад
Wololo. Great vid once again!
@nathanbaggs
@nathanbaggs 2 дня назад
Wololo
@saultube44
@saultube44 18 часов назад
Mr. Froddo Baggens of RE, why not you use your Ring on Starship Troopers, the 1st old RTS one, you command like 10 soldier with different abilities, in 3rd person; the thing is, the game will just bail, sometimes not even a error message; there's a specific mission I remember that will trigger this probably: is a mission where the Engineer, in a 'Mech Suit has the unique opportunity of all the missions, to deploy as many land-mines as you can set, you'd be alone, so be careful, and when deploying like 500 of them, the game crashes, other missions also have unknown limitations like that. Also DID F-22 ADF when you go at the right edge of the map, it'll exit without error, you don't actually get to the edge, but very close to trigger the exit. If you could fix these and increase the capacity of the buffers, or whatever gets overrun, and teach ud how to fix it, would be great and have our eternal gratitude
@Dragon20C
@Dragon20C 2 дня назад
Can you do a video on lego racers, love to see how everything works.
@gergelykalman9822
@gergelykalman9822 2 дня назад
Great tip about dumping the sources, thanks. Also it seems that you cut it way too short, I could watch many more of these videos.
@Vodouch1
@Vodouch1 День назад
Hi, wondrous job. Just i think you partially reinvent the wheel. Check out "How the AoE2 AI Thinks (ft. Promi)" by Spirit of the Law. It breaks down AI concepts of AoE2, sure it will be different but some parts might be similar enough so you will not start from 0.
@merseyviking
@merseyviking 2 дня назад
The Spiffing Brit has shown that people do watch long-form videos. Something like this needs a good chunk of time devoted to it.
@nathanbaggs
@nathanbaggs 2 дня назад
This is a fair comment (and one others have also said). The issue I face is that there's no clear correlation between time spent doing reverse engineering and length of video. This was about two weeks of RE effort, which I thought was enough to tell a story. But by the time I scripted, filmed and edited this was the length of video that fell out. Just a behind the scenes insight - I'm always experimenting with content length and type
@merseyviking
@merseyviking 2 дня назад
@@nathanbaggs Yeah, that's fair enough. I guess you have just hit the right formula to get our interest and we're demanding more because it's easy for a viewer to assume you should be making content every waking hour!
@randomshs
@randomshs 2 дня назад
have you ever done a video on how to use Ghidra for absolute noobs? like explaining what everything is, useful hotkeys and configs, etc. I think it would be very cool to learn from you
@bagofmanytricks
@bagofmanytricks День назад
I've been a programmer for over 30 years and I'm still not even near the debug-magician Nathan Baggs seem to be. I feel like it would really up my game, but there's so many new things to learn too. =)
@nathanbaggs
@nathanbaggs День назад
Always be learning
@FridiNaTor
@FridiNaTor 6 часов назад
I would love for you to check out the code for Full Spectrum Warrior, Idk just for fun, I like these videos so much for some reason. Oh and Ghost Recon as it's main menu resolution is "hard coded" which is so low it makes it unplayable on some monitors.
@AEGISAOE
@AEGISAOE 6 часов назад
are u familiar or heard of userpatch, capture age, openage, freeage, aegis aoe engine?
@ownhaus
@ownhaus 2 дня назад
Please do more age of empires reverse engineering
@GrandpaGameHacker
@GrandpaGameHacker День назад
Nice one, indeed RE takes a lot of time ey. AOE1 was also one of the first games I hacked/modded as a kid
@CYON4D
@CYON4D День назад
Nice work.
@jeinnerabdel
@jeinnerabdel День назад
I see "Age of empires" in the title. I upvote immediately!
@nathanbaggs
@nathanbaggs День назад
Wololo
@anon_y_mousse
@anon_y_mousse День назад
I've always wondered why Microsoft chose to name mangle basic functions by adding an underscore. I suspect it had something to do with not wanting name conflicts with kernel functions, most of which don't use an underscore, but I guess I'd have to ask someone from Microsoft that question. However, it is odd to me that Ghidra wouldn't automatically correct that name mangling.
@LukeAvedon
@LukeAvedon 3 дня назад
I want these skillz!!!
@nathanbaggs
@nathanbaggs 2 дня назад
Need to watch more videos!
@johanngambolputty5351
@johanngambolputty5351 2 дня назад
It would be awesome if someone could show how to do this sort of thing (windows exe reversing) alongside wine on linux 😉(though I really should probably just look it up myself at some point). As a bonus you wouldn't have to patch the app to stop it from forcing focus or a resolution globally for all other apps.
@JohnDoe-xv2sl
@JohnDoe-xv2sl 2 дня назад
Nice format. In a short video a lot information.
@raztaz826
@raztaz826 День назад
You make it look easy. I tried to reverse engineer a 1mb command line program using Ghidra and it was too hard (1 yr later the company open sourced it anyway).
@nathanbaggs
@nathanbaggs День назад
I cut out a lot of the misery and me banging my head against the wall
@MattRose30000
@MattRose30000 День назад
Kids, this is why you pay attention in Computer Science class
@anispinner
@anispinner 20 часов назад
i agree, we need this guy
@DouglasFish
@DouglasFish 3 дня назад
killer thumbnail dude
@nathanbaggs
@nathanbaggs 2 дня назад
Thanks! Although there's actually two using RU-vid's new A/B testing, which one did you see?
@DouglasFish
@DouglasFish 2 дня назад
@@nathanbaggsthe helmet/armor one
@amyshaw893
@amyshaw893 3 дня назад
4:58 an asterix? Like the comic character? :P
@nathanbaggs
@nathanbaggs 3 дня назад
Better than Obelix
@Lebastian
@Lebastian 2 дня назад
really Nice video
@oussama7132
@oussama7132 3 дня назад
can you check if the remake uses the same system? maybe you can't debug it because of the drm (unless you get it from a questionable source)
@praetorprime
@praetorprime 3 дня назад
I'd be hyped to see more reverse engineering of this game. The pathfinding in particular always seemed a bit broken.
@nathanbaggs
@nathanbaggs 2 дня назад
There's certainly more I can go into in the future
@monad_tcp
@monad_tcp 2 дня назад
I hate that thing with debugging a fullscreen application in the same computer because of focus. I always use remote debugging for this reason, usually I run the debugee in a virtual machine.
@nathanbaggs
@nathanbaggs 2 дня назад
I don't think x64dbg has remove debugging (maybe as a plugin?)
@etesianSealine
@etesianSealine День назад
It's "asterisk". Asterix is the comic book character. Otherwise nice video!
@rOxinhoPKK
@rOxinhoPKK 2 дня назад
I liked this and checked the worms vid out, subscribed
@nathanbaggs
@nathanbaggs 2 дня назад
Thanks!
@Rouverius
@Rouverius 21 час назад
So after decades of waiting, our suspicions are finally confirmed. How does the AI work so well? It cheats🤣
@Exotic69420
@Exotic69420 2 дня назад
You are insane man❤
@ZennExile
@ZennExile 3 дня назад
You remember Tormentium? He knew everything about this game. He tore it apart and built an online hack for it back in the 90's. Spoiler Alert!!! I beat him 1v1 while he was using hacks once. Up a hill in ArcherWar. If you know you know. Among Koren 9 year olds, my stiff old man hands are legendary. There's nobody on this planet who's played AoE online competitively that I haven't beaten in a 1v1. I was always too SLoW for em. The way the script works is there's a base behavior for the starting villagers. They always build houses, a storage pit, and then prioritize between fishing, berries, or hunting, based based on the map seed. The script changes based on local resources and map placement. THEN it goes to the Civ specific AI. The map seed determines most of the behavior prior to the development of civ specific buildings and units. Little shortcut from back when there were no clear paths to begin with. I sacrificed the print on many a keyboard and put a few thousand miles on some mice to this game. Good stuff.
@justsomeone953
@justsomeone953 День назад
nice to see
@phoqueoeuf
@phoqueoeuf День назад
Maybe you can fix the pathing for us
@JaapioNL
@JaapioNL 3 дня назад
I wonder how badly the AI ‘cheats’
@dahahaka
@dahahaka 3 дня назад
Where's the next video >:( 5 hours passed already
@verdibahnsen
@verdibahnsen 3 дня назад
When you want to patch out an instruction, what is the next step to run the patches version of the game? Does it need to be recompiled or…
@nathanbaggs
@nathanbaggs 2 дня назад
That’s a good point, sorry I glossed over it. Ghidra has an “export program” option that allows you to save a new copy of the binary with the modifications
@verdibahnsen
@verdibahnsen 2 дня назад
@@nathanbaggs ahhh awesome, thanks for clarifying. In your defense, you’re the only one who answered this question which I’ve posted on several rev eng vids
@dangson302
@dangson302 День назад
I once tried to extract the sprites of this game for fun, all these sprites are store in SLP files, these binary files are not compressed, it's not difficult to read and extract the data if you know the structure.
@nathanbaggs
@nathanbaggs День назад
Sounds like a future video...
@dangson302
@dangson302 День назад
@@nathanbaggs yes, I can help you some documents.
@gunar.kroeger
@gunar.kroeger День назад
now get KSP2 source code and let's make it open source :D
@minirop
@minirop 3 дня назад
Wololo Wololo like this video
@RennieAsh
@RennieAsh День назад
But can you find out why sometimes Computer Player tries to convert gaia elephant with their priests? lol
@fractionoflight4495
@fractionoflight4495 12 часов назад
Amazing.
@nathanbaggs
@nathanbaggs 11 часов назад
Thanks!
@julian5956
@julian5956 3 дня назад
Low level shenanigans had.
@nathanbaggs
@nathanbaggs 3 дня назад
Hope you enjoyed it
@Tferdz
@Tferdz 3 дня назад
Does chatGPT can help reverse engineering? If you paste the assembly
@rosen8757
@rosen8757 2 дня назад
Haha no
@oussama7132
@oussama7132 3 дня назад
wololo
@JP-pv2ze
@JP-pv2ze 3 дня назад
Dude I would really like to get your help or the help of someone from your community (discord maybe?). I have been trying for about a decade now (on and off) to understand the savefile format of PatricianII / PatricianIII. It's such an amazing game and there is huge potential for automation if only I could read and write savefiles (they are used for ship navigation). But they seem to use some sort of ancient archiver or something on top of some datastructure and eventhough the archiver.dll is tiny and mostly calling default windows functions I could never understand anything that is happening. I would mean the world to mean if someone could have a quick look at that.
@phitsf5475
@phitsf5475 3 дня назад
Are you aware of the custom AI diffficulties that people have made for AoE2?
@twobob
@twobob 3 дня назад
Decent. Fun poking around aint it.
@nathanbaggs
@nathanbaggs 3 дня назад
Always
@akahenke
@akahenke 5 часов назад
bigdaddy
@its_code
@its_code День назад
❤❤❤❤❤ 👌 wowowowow
@Finkelfunk
@Finkelfunk 3 дня назад
So they hard coded the AI and didn't even use a deep neural network? Weak.
@nathanbaggs
@nathanbaggs 3 дня назад
Amateur hour
@gonderage
@gonderage 2 дня назад
Is it just me, or is this video a little quiet?
@nathanbaggs
@nathanbaggs 2 дня назад
Used the same audio presets I normally do. Maybe watch some other videos to compare ;)
@Connection-Lost
@Connection-Lost 2 дня назад
Do AoE 2 or we're not watching. Thumbs down.
@TommyLikeTom
@TommyLikeTom 2 дня назад
I'm almost done making a game that is better than this
@Yous0147
@Yous0147 2 дня назад
wololo
@nathanbaggs
@nathanbaggs 2 дня назад
Wololo
Далее
How Do Hackers Actually Cheat In Games?
12:38
Просмотров 30 тыс.
skibidi toilet multiverse 039 (part 1)
05:29
Просмотров 3,1 млн
What is the Smallest Possible .EXE?
17:57
Просмотров 103 тыс.
This Developer Hacked Their Own Game 20 Years Ago
10:20
Why Don't You Make Your OWN Game Engine?
7:23
Просмотров 7 тыс.
I Made A Virus - I Instantly Regretted It
12:44
Просмотров 18 тыс.
The Robot Chess Player Scam
9:55
Просмотров 381 тыс.
EA Won't Let Me Play This Game - So I Hacked It
8:49
Просмотров 289 тыс.
Why is HD 1080p? | Nostalgia Nerd
20:59
Просмотров 150 тыс.
Terminal Servers
27:20
Просмотров 40 тыс.
Why the AUSTRIAN F1 SPRINT was DELAYED!?
9:16
Просмотров 44 тыс.
This Insane New Glitch Just BROKE Castlevania!
14:20
Просмотров 459 тыс.