How Isometric Coordinates Work in 2D games

  Рет қаралды 791,990

Jordan West

Jordan West

Күн бұрын

Isometric games often use hand-drawn 2D sprites to add depth to a game without having to deal with full 3D rendering.
In this video, I cover how it works, the math you need to render isometric sprites on the screen, and how to find the isometric tile from a screen coordinate.
0:00 Intro
0:21 Orthographic projection
1:16 Tiling a sprite
1:40 Transforming tile coordinate to screen
2:55 Accounting for sprite size
3:39 Correcting offsets
4:00 Transforming screen coordinate to tile
4:46 Adding depth
4:52 Outro
Music: Snake Hips - Lucas Pittman (via epidemicsound.com)

Пікірлер: 671
@JordanWest
@JordanWest 2 жыл бұрын
A few people have been asking for code and how to invert the matrix. Here's some (untested) code I've put together in TypeScript, although it should be similar in other languages. Hopefully this gives an idea of how the math translates to code. gist.github.com/jordwest/8a12196436ebcf8df98a2745251915b5
@rafaelrosafu
@rafaelrosafu 2 жыл бұрын
Thanks, the inversion was tricky to implement from the formula. The one thing I added was rounding the results from to_grid_coordinate(), but besides that it worked like a charm. Thanks for the interesting video. EDIT: spoke too soon, for some weird reason the Y from to_grid_coordinate() is off by 1, and I don't know why. I can hard code the fix, but it's ugly. Also, the multipliers on the code are all 0.5 and in the video some were 0.25. It works but the mismatch is disconcerting. I tried to change the numbers to match the video and the results are crazy.
@metallsnubben
@metallsnubben 2 жыл бұрын
@@rafaelrosafu If something's stored as an int somewhere and it's being divided, it will be rounded which could explain the error consistently being off by 1
@rafaelrosafu
@rafaelrosafu 2 жыл бұрын
@@metallsnubben good point, I'll double check. thanks.
@huutuantran4411
@huutuantran4411 2 жыл бұрын
It now has 101K views
@JordanWest
@JordanWest 2 жыл бұрын
@@rafaelrosafu Hmm not sure about the Y being off by one, but the 0.25 is after halving the iy and jy (to account for sprite size: 0.5 * 0.5 = 0.25). In the code above I left it unsimplified for clarity, but I suppose in doing that made it more confusing haha.
@isonzo686
@isonzo686 2 жыл бұрын
This is an incredible and polished explanation, going through the steps, the problems you face, and then how to solve it. It helps the viewer to reslly understand how we got to the final solution.
@TimSzabo
@TimSzabo 2 жыл бұрын
Well said!
@AshishXMC
@AshishXMC Жыл бұрын
I agree!
@woodlandcritterpunch
@woodlandcritterpunch 2 жыл бұрын
This is the best type of tutorial. No fluff, no information that's potentially unnecessary, reference to where to find more information if it *is* necessary. I'd been trying to do this on my own with no help for two days (pride's a troublesome thing) and I'm glad to see it's not something super obvious that I was missing, but not daunting either. Thanks for the video
@JordanWest
@JordanWest 2 жыл бұрын
That's awesome, so glad it helped :)
@pucciraskolnikov7266
@pucciraskolnikov7266 2 жыл бұрын
I especially value such vibeos!
@uhitsethan
@uhitsethan 3 жыл бұрын
Wow, I already knew all this, but this video is EXTREMELY polished. I especially like how you went through some potential problems people might run into while doing this, such as the offset. Well done!
@uhitsethan
@uhitsethan 2 жыл бұрын
​@@marianmotorina chillax dude I said "i knew all this" to emphasize that I still got something from the video, even if the concepts were familiar. this is a compliment
@kingbroseph9773
@kingbroseph9773 2 жыл бұрын
@@marianmotorina ratio bozo
@uhitsethan
@uhitsethan 2 жыл бұрын
@@kingbroseph9773 lol he really did go for it after a literal year
@yan-amar
@yan-amar 2 жыл бұрын
This is such a great, high quality video, hitting just the right spot between learning and reference.
@foul-fortune-feline
@foul-fortune-feline 2 жыл бұрын
While remaining entergaging (/hj) as well!
@foul-fortune-feline
@foul-fortune-feline 2 жыл бұрын
(the /hj is the ironic use of the term, but the genuine meaning behind it)
@foul-fortune-feline
@foul-fortune-feline 2 жыл бұрын
(tho yk. ik that effective educational content is also entertaining haha. it's also very pretty~)
@wojtekpolska1013
@wojtekpolska1013 2 жыл бұрын
I love how game developers create amazing things, when dealing with hardware limitations. isometric view was developed out of limitation, but turned out so appealing that its still used in indie games to this day PS: great video, its very well explained, i think the possible "errors" one might encounter when creating such view did the best job at explaining things to me. Too few people show possible errors you might encounter, and just say "you type this here, or it wont work"
@MonochromeWench
@MonochromeWench 2 жыл бұрын
Helped develop an isometric engine about 20 years ago. The 3d nature of isometric games can be surprising. It gets real fun trying to sort non tile aligned Arbitrary sized objects for display. Ordering can get real complex real fast especially if you get cyclic dependencies between objects.
@JordanWest
@JordanWest 2 жыл бұрын
That sounds fascinating, I wonder at what point is it easier to just go to 3D? I guess there's always a tradeoff, especially if you want hand drawn sprites instead of rendering triangles.
@Electrk
@Electrk 2 жыл бұрын
this just makes me think of what a nightmare chris sawyer must've had with rollercoaster tycoon
@dragonfire23141
@dragonfire23141 3 жыл бұрын
I can't believe that this video only has 574 views with this amazing content.
@JordanWest
@JordanWest 3 жыл бұрын
Thanks, and here I am amazed it's even getting a hundred views :)
@recker7017
@recker7017 2 жыл бұрын
@@JordanWest you deserve much more than that
@UndeadAlv
@UndeadAlv 2 жыл бұрын
I’m still amazed I’m sure it will blow up at some point
@foul-fortune-feline
@foul-fortune-feline 2 жыл бұрын
@@UndeadAlv f-four hours ago??? Is that a /j as in u came across it and it had 37k views as it did for me (and abt 1/10th as many likes)? Or did it seriously explode in _four hours??_
@michaelthornes
@michaelthornes 2 жыл бұрын
@@foul-fortune-feline well, we are all here right now
@fabricionascimento2056
@fabricionascimento2056 3 жыл бұрын
That’s the most concise and easy to understand video that I found on KZbin about isometric grids!
@djmouton251
@djmouton251 2 жыл бұрын
You just decided to drop an amazing tutorial out of nowhere ? I love how there's no code involved so it's applicable in any environnement we want, isometry rocks !
@Jomity
@Jomity 2 жыл бұрын
I'm glad to see my linear algebra class is paying off now... haha But, this is an amazing video!! (almost even a tutorial it's so thorough)
@CoolExcite
@CoolExcite 2 жыл бұрын
3:35 how are the occlusions being handled here? Like when 2 sprites partially overlap how do you determine which one is drawn in front when they don't have z coordinates?
@JordanWest
@JordanWest 2 жыл бұрын
In this animation the sprites are simply rendered from back to front, left to right. Often you can get away with sorting by the screen y coordinate
@Allen-R
@Allen-R Жыл бұрын
@@JordanWest oh *nice*
@nanopi
@nanopi 2 жыл бұрын
I saw it done a different way before. Take a 2D grid, but every odd number of Y is shifted to the left half a space. When you want to move a particular direction, you'd want to check if the current Y position is odd or even and then decide whether or not to change the X value as well as decide whether to increment or decrement the Y value.
@dablackg
@dablackg 3 жыл бұрын
that wavy isometric had me hypnotised, great vid!
@seiuwatches
@seiuwatches 2 жыл бұрын
This is an amazing video, great job! Love the visualization and maths explained.
@mrxpcookie
@mrxpcookie 3 жыл бұрын
This is wonderful, thank you for the clean explanation and resources.
@antonionotbanderas9775
@antonionotbanderas9775 2 ай бұрын
I only understood about half of this video but it's already answered a lot of questions I had about 2.5D games.
@prathamjohari8301
@prathamjohari8301 2 жыл бұрын
Bro i need more from you, the quality is top notch. Keep up the absolute amazing work
@LoStFoReVeRiNtImE
@LoStFoReVeRiNtImE Ай бұрын
this one of my favorite videos of all time. It combines everything I love into one video. Applauds to you jordan! 👏 👏
@noahthompson95
@noahthompson95 2 жыл бұрын
I loved this video! It's a simple and quick explanation on how it works and leaves me satisfied. Great work!
@aijc
@aijc 2 жыл бұрын
This is such a great video, your channel deserves a lot more attention!
@Niker107
@Niker107 2 жыл бұрын
This channel looks like it's gonna blow up soon, and I'm all here for it :) Awesome tutorial, and I love the presentation style.
@lukass7156
@lukass7156 2 жыл бұрын
what an elegant explanation and visuals. great job Jordan!
@balorprice
@balorprice 3 жыл бұрын
That was a gorgeous piece of education you just put together. Bravo!
@miniasriel9951
@miniasriel9951 2 жыл бұрын
I've been out of typical schooling for a while, and honestly this made me remember how much I enjoyed math and liked being able to see how numbers work when previously not being able to work it out. Lovely video - very informative in more ways than its original purpose, overall edited and make concisely, along with a nice calming voice leading you through aptly. An enjoyable experience - cheers.
@franciscocardoso5819
@franciscocardoso5819 3 жыл бұрын
Awsome content!!! Keep it up! :D Really well explained, love the fact you showed how it would look like in each step! Kudos!
@SaladDongs
@SaladDongs 2 жыл бұрын
I'm going to go ahead and call this the "perfect" illustrative video. Sentences spaced out perfectly, tone of voice is clear and just right, visuals are top-notch, language is simple enough to be understood by a layman but not dumbed down. No awkward pauses, background music not intrusive, the visualization of the problems one might face is really, really smart. The video is quite short but concentrated. I can't find a single flaw. I'm definitely going to study this next time I try to explain something whether in class or otherwise. Have a great day!
@ihateevilbill
@ihateevilbill 2 жыл бұрын
Thank you! One of my favourite games when I was a kid was called Utopia (on the amiga) and as a developer I always wondered how they programmed the layout. I decided never to try it as I had no idea where to start (other than google). But this video gave me enough information that I can now imagine the solution in my head. Thats very much appreciated.
@juliangabrielalvarez7642
@juliangabrielalvarez7642 3 жыл бұрын
This is superb, I would love to know more about this! Great job man
@anirudhchandrashekhar8938
@anirudhchandrashekhar8938 2 жыл бұрын
Amazing content :) can’t wait for your channel to blow up. Thanks for the good work
@mrtaufner
@mrtaufner 2 жыл бұрын
I don't know why I was suggested this, but it is certainly a great explanation. Reminded me of why I hated matrixes so much, but still, it was pretty simple to understand
@mazio_os
@mazio_os 2 жыл бұрын
This is great timing! I was just thinking of making an isometric adventure game of my own. Praising the KZbin algorithm aside, your scripting and editing is great and I feel like you gave the perfect amount of information. Instant subscribe :)
@afs824
@afs824 2 жыл бұрын
This is a fantastic video! I am working through this to render an isometric field step by step. Incredibly lucid description. Thank you!
@boris.karavasilev
@boris.karavasilev 2 жыл бұрын
Beautiful visualization and clear explanation! I am so happy to see an application of the math that I just learned in the linear algebra course at my university. Really cool!
@1xCorr
@1xCorr 2 жыл бұрын
I love your editing style, such a great tutorial!
@nikitosha1000
@nikitosha1000 2 жыл бұрын
Oh GOD that video is so good! Thank you a lot, Jordan! Always wondered how to do this effectively
@ai_is_a_great_place
@ai_is_a_great_place 2 жыл бұрын
Sorry to mess up the 420 comments but I thought this was like a 3B1B video or something in how it was so well done. Absolutely phenomenal video and I can guarantee that this channel will grow! Wow that was phenomenal!
@retrx4236
@retrx4236 2 жыл бұрын
this is extremely high quality and straightforward. I am amazed.
@jyke321
@jyke321 Жыл бұрын
I'm currently working as a teaching at a summer camp as Teaching Assistant and love how simply you explained isometric coordinates with linear algebra. I would love to teach it to my kids, but the camp is only three weeks long, and we just introduced objects recently, but maybe if time permits, I can at least give them the formula and show them how it works in the final week.
@zmbp
@zmbp 2 жыл бұрын
Wow, I vaguely knew the translation before, but never understood why. This so perfectly illustrates the problem and solution!
@sanderbos4243
@sanderbos4243 2 жыл бұрын
Awesome explanation! This is a great introduction to matrices
@ipaqmaster
@ipaqmaster 2 жыл бұрын
This is really good edutainment. I hope your channel soars Jordan. This is the kind of content modern KZbin needs more of.
@justbodewes
@justbodewes Жыл бұрын
This video is exactly what I needed! I’m working on an isometric project and was having trouble with the tile picking formula. Can’t thank you enough!
@seenPunktSee
@seenPunktSee 2 жыл бұрын
I just love that this video perfectly matches my youtube search and with such quality content. thanks man
@JordanWest
@JordanWest 2 жыл бұрын
I love that your search perfectly matches my video :) glad it helped!
@taytheprodigy4388
@taytheprodigy4388 2 жыл бұрын
absolute godly tutorial, very detailed and dynamically useful
@NowKnownMAWO
@NowKnownMAWO 2 жыл бұрын
Very well done video! With such high quality content you deserve more subs :)
@paranoidpumpkin98
@paranoidpumpkin98 2 жыл бұрын
The cube wave looks so satisfying
@zzzergling1079
@zzzergling1079 2 жыл бұрын
Holy cow that was so cool explained. Even with such easy task, each step error explanation with showcase! Wow
@theillegaltaco6
@theillegaltaco6 2 жыл бұрын
Really underrated video, it tells you enough to understand whats going on but not so much that you feel overwhelmed.
@cadeleighty6595
@cadeleighty6595 2 жыл бұрын
This is an amazing resource for me! thank you for making such well a explained video, i'm in your debt!
@JordanWest
@JordanWest 2 жыл бұрын
Thanks for the kind words, glad you found it helpful!
@m.a8335
@m.a8335 2 жыл бұрын
KZbin needs more videos like this and you deserve way more views. Thanks!!!
@VoidFame
@VoidFame 2 жыл бұрын
This is a great video. Just showing the process of trial and error very quickly with no fluff you were able to get through the topic very quickly and instructively. The only slight error is the term: 1/(ad-bc) is not the determinant, but the reciprocal of the determinant. It might seem a bit nitpicky, but it would be like calling 1/2 the number "2"
@JordanWest
@JordanWest 2 жыл бұрын
Ah good catch, thanks
@TheBlissfulVoid
@TheBlissfulVoid 2 жыл бұрын
you're the type of guy to correct Albert Einstein, and be right
@reitokenvideogamecreation7655
@reitokenvideogamecreation7655 10 ай бұрын
really good vidéo :D fun to see each result !!!
@alessandromangiapia7082
@alessandromangiapia7082 2 жыл бұрын
Immediate like for this channel. You are explaining like a boss!
@litlclutch
@litlclutch 2 жыл бұрын
This was a great rundown on isometric games setups ...
@McStebb
@McStebb 2 жыл бұрын
This is the single most useful isometric tutorial I've ever seen. I will definitely be referencing this a lot.
@Gallowtown
@Gallowtown 2 жыл бұрын
really relaxing and informative, amazing content
@hamakawa9453
@hamakawa9453 2 жыл бұрын
It was on my suggestion list of KZbin but it turned out amazing I really love it and it got an idea to try with different things, thank you. Plus I like and subscribed.
@metgaming9545
@metgaming9545 2 жыл бұрын
I’ve tried making isometric stuff before, but this explains its EXTREMELY WELL. Thank you!
@MrOnlineCoder
@MrOnlineCoder Жыл бұрын
Amazing video. And I always being amazed how linear algebra has so many uses in video games and multimedia in general
@Johxzu
@Johxzu 3 жыл бұрын
Well-made and informative video, thanks!
@rostkgb
@rostkgb 2 жыл бұрын
pure simple. well done explaining, thanks
@MrGr33n_
@MrGr33n_ 2 жыл бұрын
Well made video, easy to understand. Please make more video like that.
@blitzkreg335
@blitzkreg335 Жыл бұрын
I've been struggling the whole week and only found this video now. Thank you !
@Mephil
@Mephil Жыл бұрын
Holy shit, I've been trying to find the name of Mystic Towers for years, knowing that I played a game like it as a child. I couldn't remember the name or even exactly what it looked like and here you are just casually showing a clip from it with its name and release year! The search is finally over, thank you!
@PedroSilva-rc6ns
@PedroSilva-rc6ns 2 жыл бұрын
This is just fantastic. Thank you Jordan.
@w00tyd00d
@w00tyd00d 2 жыл бұрын
I've always personally hated isometric games mostly just due to how the cardinal directions are locked to diagonals (I'm an up, down, left, right kinda guy what can I say) but I've still always appreciated what they set out to achieve, especially after coming to learn software and game development. This was a really nice explanation and very well put together video! :D
@furcob
@furcob Жыл бұрын
This is an incredible and polished explanation
@omaryahia
@omaryahia 2 жыл бұрын
amazing ! I really like aubjects like this, math , geometry , logic , visuals
@willft520
@willft520 2 жыл бұрын
Excellent video! I love isometric view too! it's definitely not the best choice for all genres, but some genres do benefit greatly by using this view like tactics, strategy (RTS and TBS), RPG and farming, even some racing games like Rock n' Roll Racing have done amazing things using this view.
@DCaseyTucker
@DCaseyTucker 2 жыл бұрын
This is a really good explanation. I have been building something like this for the past month or so and just came across this video.
@Akari_202
@Akari_202 2 жыл бұрын
That was a really great explanation of a problem I didnt realize existed but makes a ton of sense!
@N3V3L
@N3V3L 2 жыл бұрын
Very nice explanation , thanks a lot! :)
@mgames3209
@mgames3209 2 жыл бұрын
This is a very good video and extremely polished
@m_art_ucci
@m_art_ucci 2 жыл бұрын
Subscribed! Your content is great! Also, love when somebody brings three blue one brown!
@pilotharibo5410
@pilotharibo5410 2 жыл бұрын
great vid definately deserves way more attention
@sprinkleman8103
@sprinkleman8103 2 жыл бұрын
You deserve like 100,000 subs, even more because of this amazing content. You get right into it and don’t waste time
@CYON4D
@CYON4D 2 жыл бұрын
Definitely one of the best videos on the subject.
@ProQuigley
@ProQuigley 2 жыл бұрын
Wonderful animations and math application
@Maraus92
@Maraus92 Жыл бұрын
Exactly what I needed to build my engine, thanks!
@ITSJTG58
@ITSJTG58 2 жыл бұрын
Amazingly well done!
@Kingtut101
@Kingtut101 2 жыл бұрын
This video was great. I helped me a lot!
@mattm3601
@mattm3601 2 жыл бұрын
I would love to see this applied in a programmatical sense in developing a map in-game! Thanks so much this is really awesome.
@JordanWest
@JordanWest 2 жыл бұрын
Thank Matt, do you mean converting the math into code? Or going deeper into the process of building a map from isometric coordinates?
@charg1nmalaz0r51
@charg1nmalaz0r51 2 жыл бұрын
@@JordanWest Usually people mean turning it into code. Sometimes its easy to follow a concept but applying it can be difficult. A small tutorial example of turning this into a script and how each part works would be good
@armagedonthe1gamer
@armagedonthe1gamer 2 жыл бұрын
honestly this is really good content. even though the aim is supposed to be informative, this is really entertaining. excellent script writing and visuals! would expect this type of content from a 1million subscriber youtuber. now its time to get you there.
@ShunyValdez
@ShunyValdez 2 жыл бұрын
I'm so happy the KZbin algorithm recommended your video to me. I've liked and subscribed!
@erz3030
@erz3030 2 жыл бұрын
Cool quick little tuto, thanks for sharing m8!
@motbus3
@motbus3 2 жыл бұрын
well well well seems youtube has recommendes me a great channel this time! the explanation was great! thank you!
@dudedude5035
@dudedude5035 Жыл бұрын
I will definitely need this when I start programming soon Thank you so much
@shimapancyra
@shimapancyra 2 жыл бұрын
I hope you get more subscribers. you seem like a good indie dev
@samieb4712
@samieb4712 2 жыл бұрын
in 2 minutes, this makin me feel inspired to make a new iso-game. this is the ideal youtube video :) a quick dose of motivation
@NapkinDictator
@NapkinDictator 2 жыл бұрын
Thank you so much! I was hoping to find a good way to explain how isometric projection works for making a tactical rpg fangame
@PainEnvy
@PainEnvy 2 жыл бұрын
A sign of an intelligent person is the ability to explain something and make the person you're explaining it to feel smart.
@Zanytiger6
@Zanytiger6 2 жыл бұрын
Crazy how simple it seems!
@CaptainKraft
@CaptainKraft 2 жыл бұрын
I love the video, and I've watched it a few times already. One criticism I have is about the section where you describe how to go from screen coordinates to isometric. It took me a while to wrap my head around how it works (and I had to watch 3b1b's video as well). It would have been great to have a more detailed explanation or breakdown of how the transformation matrix works. Oh, and I love the simple art style and how you showed the waves at the end.
@cartler
@cartler 2 жыл бұрын
This is a simple, great explanation!
@pepesworld2995
@pepesworld2995 2 жыл бұрын
cool mate. thats great. i had been thinking about transforming coordinates like this. its good you used a matrix instead of using just arithmetic because using matricies expands to all sorts of other stuff. this isometric transformation is actually a pretty cool idea for an easy-on ramp for learning coordinate transformations with matricies. good job sir. i have learneded something.
@jellycore1316
@jellycore1316 Жыл бұрын
Thank you so much for this!
@LowtechLLC
@LowtechLLC 2 жыл бұрын
Thank you! This was a great explanation
@Lenny76
@Lenny76 2 жыл бұрын
Very nice explanation !
@zerareota1560
@zerareota1560 2 жыл бұрын
I got lost a bit at the selecting a cube part, but this is the first time I’ve actually understood coding!
@rup7591
@rup7591 Жыл бұрын
U mean math. Coding is writing codes and it is often used in programming which is composed of DS & Algorithm, CS constructs and coding.
@zerareota1560
@zerareota1560 Жыл бұрын
@@rup7591 No wonder I understood it! I love math, my mistake
Pixel Art Class - Isometric Tile Basics!
25:55
AdamCYounis
Рет қаралды 332 М.
Modular Isometric Pixel Art | Tutorial
6:58
Brandon James Greer
Рет қаралды 203 М.
Miracle Doctor Saves Blind Girl ❤️
00:59
Alan Chikin Chow
Рет қаралды 32 МЛН
Dynamic #gadgets for math genius! #maths
00:29
FLIP FLOP Hacks
Рет қаралды 17 МЛН
Pokey pokey 🤣🥰❤️ #demariki
00:26
Demariki
Рет қаралды 3,9 МЛН
I Wrote Minecraft for a Calculator
14:43
The Science Elf
Рет қаралды 1,3 МЛН
How Do Computers Display 3D on a 2D Screen? (Perspective Projection)
26:54
Giving Personality to Procedural Animations using Math
15:30
t3ssel8r
Рет қаралды 2,4 МЛН
Why Isometric? | Art, Code and Matrix Maths | A Devlog
13:33
Wintermute Digital
Рет қаралды 190 М.
Designing (Procedural) Monsters
4:31
RujiK the Comatose
Рет қаралды 915 М.
Light sucking flames look like magic
18:05
Steve Mould
Рет қаралды 1,3 МЛН
Procedurally Generated 3D Dungeons
9:42
Vazgriz
Рет қаралды 272 М.
Isometric Game Tutorial - Pros and Cons, Art, Movement
11:16
Tamara Makes Games
Рет қаралды 101 М.
Coding Quickie: Isometric Tiles
22:13
javidx9
Рет қаралды 113 М.
How Indie Games Texture EVERYTHING
7:44
Smeaf
Рет қаралды 281 М.
Цифровые песочные часы с AliExpress
0:45
Apple, как вас уделал Тюменский бренд CaseGuru? Конец удивил #caseguru #кейсгуру #наушники
0:54
CaseGuru / Наушники / Пылесосы / Смарт-часы /
Рет қаралды 4,4 МЛН
3D printed Nintendo Switch Game Carousel
0:14
Bambu Lab
Рет қаралды 4,6 МЛН