In isometric game development, when implementing mouse-based highlighting on a grid, the camera's position must be accounted for by offsetting the mouse coordinates relative to the camera's position. This ensures that highlighting works correctly regardless of where the camera is positioned over the map, as the mouse coordinates need to be transformed from screen space to world space using the camera's offset values.
Deep Dive
Prerequisite Knowledge
- No data available.
Where to go next
- No data available.
Deep Dive
making 2D isometric game in C
Added:Hey, Wonk. Good morning and congrats on being first. Hey Bridgewwater, good morning.
Yes. Good morning everyone.
It is Tuesday.
What was my face lately?
Hello. Is this a rerun? Uh, definitely not a rerun. Hello, Hack and Jax on YouTube.
what the game is about. Uh, well, it's basically a Final Fantasy Tactics Advance clone, I think, right now.
Although, I don't know. Maybe I might I'm going to have to like actually sit down and write like some kind of game design document probably.
Hey, Mr. Rex. Good morning.
I just have like this vague idea of like I want to make a tactical RPG.
Hey Jordan.
Although I need probably need to come up with something more concrete since typically when you just don't have much to go on, you kind of wing it and then you just kind of do all the engine stuff.
But I've been making progress on the isometric plane. So I have like pixel perfect like uh highlighting now, right? I have pixel perfect highlighting of like when the mouse over. I added a camera yesterday, but it messes up the the highlighting. So I think what I need to do is just offset the values that are projected onto this like screen onto the grid. I need to offset those with the camera's values so that highlighting still works no matter where the camera is over the map.
And what's weird is I'm not even This isn't really much of a mouse-based game.
Although I think it might have to be at some point. I don't know. Maybe it'll just turn into like an isometric, I don't know, two isometric like action RPG like Diablo or something. Diablo clone.
[snorts] Do the rest of the time just freelance.
Yeah, freelance, work on my course, etc. spend way too much time on social media.
Yes. Yes.
I'm pretty stoked about the isometric project though, which is like cool.
I think it's cool. Anyways, the tough part is going to be, I think, rendering like layers on top of it.
tried to go.
Yeah, I've tried to go. It's okay.
I had to sneeze for a second, but it went away.
Yeah, I just work from home. I'm not I don't have an office or anything.
Crashing like a king. A crash king.
Crash king. Are you just watching on YouTube now?
Hello, Xpair on YouTube. How are you?
Major I majored in? Well, I studied computer science for a long time before dropping out.
What did What do you think did really well yesterday on your project?
I don't know.
We get YouTube side. Oh, okay.
We going to start on what's the subject today?
Uh, well, I was thinking just doing that offset stuff, I guess.
I saw you and I got better. Thanks, Xair.
Yeah, guys, the channel's in English.
Hey Arley on YouTube.
Yeah, we're going to code after like a little coffee and chat.
I don't like the YouTube side. I don't have my fancy emotes.
Yes, I've heard.
[cough] [clears throat] [snorts] full of just coffee. Yeah, black black instant coffee.
First time live viewer. Hey Vitali, welcome.
Yeah, since you're new here, I usually farm clips. Uh, I'm assuming you found me through like Instagram or something, so Tik Tok. So, for the first like like 30 to 45 minutes, I usually just chat and farm clips and then we move into the coding.
[cough] [clears throat] Like kind of short on breath this morning.
How goes the egg and tin fish maxing?
Oh, pretty good. I haven't had a canned some canned fish in a little bit actually.
My girlfriend is like you should eat some of the fish that we bought in Portugal and I'm like I want to but like then it then it'll be gone. [laughter] you're going to serve completed games online just be a repo as an example but I'd like to release games online but I I can't ever seem to finish a project so yeah we'll see how many milliliters of coffee do you drink usually my max is like 500 milliliters and recommend some other programmers I enjoy watching I actually, okay, here's the crazy thing. I don't usually watch programming content.
I mean, girl, yeah, I don't really watch programming content online. [laughter] I actually watch a lot of like, how would I describe it? I guess I do watch like technical content, but like got a lot of John Blow clips, got a lot of stuff about World of Warcraft, got a lot of stuff about Toronto music and dance music.
A lot of music actually, drum and bass and stuff. Uh like there's some stuff about programming sometimes I watch Primogen, sometimes I watch Bash. Um, live streams though, most of the time the live streams I'm watching are usually like World of Warcraft streams, although maybe a little less now since me and Kai haven't been playing as much World of Warcraft.
What do you mean girlfriend? I didn't say I had a boyfriend.
Um, yeah, definitely by though. 500 [snorts] milliliters per day. Yeah, it's two cups.
Sugarfree for 38 days. I don't eat a lot of sugar to begin with.
So, I look like Ariana Grande with my sweatshirt sleeves covering my hands.
Yeah, I could start singing.
Uh, found you through YouTube recommendations. Your videos help me focus while I'm learning Rust. Okay, that's cool.
Jordan from Canada. Hey, welcome to the YouTube or the Twitch side of things.
Why did you time me out? I think a moderator timed you out, Safari.
Do you see the madman who left Halflife playable on the a website? Nope. Do I have a question? I got a buddy trying to get cyber security from step one. Know any good resource to learn from? Uh, not really unfortunately other than my f one of my favorite books, hacking the art of exploitation, but that has a pretty rigorous crash course in like C programming.
And if you're new to programming, it's going to be very difficult book to read.
World of Warcraft. Love you.
Yeah, I do like World of Warcraft. We haven't really been playing lately.
Actually, literally last night I went to Kai's. She made me dinner and we just sat on our computers and worked on our respective projects.
We used to play a lot of WoW together.
Hardcore WoW. Hardcore classic World of Warcraft. That's usually what I go in for.
It's called hacking the art of exploitation.
I really wish I could set my LinkedIn to being not connectable.
A lot of people add me on LinkedIn, which is kind of annoying. Planning on making a 2D isometric but for web. Will I make it for web? No, because I'm burned out on web stuff and then but if I and if I push to the web, it'll be trivial for those [ __ ] AI companies to train on my content. So, [ __ ] them.
They want my code. They're going to have to reverse engineer it the hard way.
Hello, the ghosty rally on YouTube.
LinkedIn is just a big circle jerk without any original thought. Oh, I know. [cough] What is that for? So, it's a book on software architecture but with functional programming languages.
What WoW YouTubers do I watch? I don't usually watch yet WoW. Well, sometimes I guess like yeah, literally sometimes I'll just watch like dumb stuff like Willie or Jedi Warlock. I mostly watch a lot of like Zaryu stuff. If Zaryu is doing some like weird challenge in World of Warcraft right now, the current meta when it comes to World of Warcraft is Classic Plus. People won't shut the hell up about Classic Plus right now. I mean, I'm hyped for Classic Plus 2, but like that's it. That's all the meta is right now. I mean, Zaryu isn't even playing WoW. He's playing Warcraft 3.
Good energy drawing with other artists.
Yeah, it's kind of weird. Like, we just kind of co-work together and get cozy on the couch, which is really nice.
Honestly, I wouldn't mind taking my like client work to like a co-working space, but co-working spaces are kind of a hassle for me to lug my huge ass MacBook to and they're like kind of expensive.
It's like Yeah, it's expensive. So, if I was there all day every day and I could and I expensed it like then I would consider working in co-working place.
but space working in a co-working space.
I have thought about trying to seek out like a small office somewhere cuz I I just like stream and work all day in my apartment, my studio apartment.
In fact, when I moved into the studio department, I figured I'd be a full-time content creator by now. And look how that's worked out. [snorts] But I thought about trying to get like rent an office somewhere before.
I actually went and looked at some places.
Be like part studio, part like office to do freelance work in, but I was like, do I really want another like bill? Do I really want another business expense every month? One that's going to cost anywhere from like on the very cheap end, like $500 a month to the more realistic end of like $1,000 a month. A private office booth at Weiwork, like a monthly private office booth. Booth costs $1,200 a month. That's crazy.
That is crazy expensive for a private booth.
I could I could go rent a private like like a vertical coffin basically at a co-working space in Toronto in the hood.
Like literally in one of the sketchiest parts of downtown.
uh Cabbage Town South [laughter] and go rent rent rent a co-working spot there, but then I have to like literally take the TTC there every day, right? If I'm going to rent something and pay all this money, I want to be able to walk there, right? I want to be able to walk home for lunch and eat. [snorts] Sorry, this is a long rant about nothing that anybody asked about, [laughter] but yeah, co-working in general is pretty nice.
Where do I live and how much is the minimum salary? I live in downtown Toronto. Uh, some developers make oodles of money.
I make decent oodles of money for how much I work. I mean, if I took on like a second client or something instead of streaming, I could probably make a lot more money. Are you hacker? Hacking the art of exploitation you mentioned earlier? Not really. I'm not really a hacker in like the security sense.
I've definitely played a few like ETFs or not ETFs. I've definitely played a few CTFs.
Yeah, I've definitely played a few CTFs in my day. Um, but mostly, yeah, not really a a hacker by any stretch of the word.
just a generalist with interests. Many interests.
I finished the simulation game I was working on last. Oh, like the stock roper simulation. So, I actually did have a clanker create a prototype for me. And what I imagined would be fun was not fun at all. In fact, it was like overwhelming amount of information. So, I had to tweak the core gameplay loop such that it would breadcrumb feed the player like information about when the next stocks would surge or to collapse or whatever. And that was fun for a while. I was playing that for a solid like 30 to 45 minutes. But then I because the core game loop changed, I didn't really know what the power progression would be. Like I couldn't really think of what the power progression would be of that stock simulator game, right? And yeah, like I just I didn't know what the challenge would be. I just couldn't figure out the challenge. So I just shelved it for now.
I'm like, "Well, whatever. I'll shove it and see later." And then uh Kai like very astutely pointed out that um this is it was basically a lot a lot like people's uh Robin apps. Is it Robin or Robin Hood the trading app? She's like this is basically like the Robin app.
And uh the dopamine from that's probably way better because you actually get paid. So [laughter] I was like yeah okay I guess that makes sense. So yeah, I just shoved the project.
I mean, it was a UI heavy game, so asking a clanker to code the react for that made probably made a lot of sense in in the moment, but it was also like after I did it, I was just like, that sucks.
Would I hire ever hire an intern? Well, I don't really have much use for an intern, but maybe I wouldn't be opposed to hiring. I mean, I hired an editor for this for my content.
So, hello IQD Chernobyl.
Definitely not a sus name.
Welcome to the stream.
This is good, guys. Keep it coming. I uh I This is good clip farming, especially for tomorrow cuz I think I don't think there's going to be a stream tomorrow. I think my client wants to have a standup tomorrow.
No, it's not. It's not an interesting name. Okay.
MNC company uses closure.
Which MNC company uses closure? I'm not sure what MNC means.
Yeah, Safari, maybe you should uh chill out on the I love you, want to marry you and stuff. I'm I'm sure one of the moderators will probably time you out again.
Are we being farmed? Yeah, a little bit.
I have to farm because I need clips to grow the channel.
Although, YouTube VODs help with growing the channel a lot, too.
Good morning, guys. Great programming chat. Janet is really chill. Thanks, Jordan.
Hello, Elp Selvi.
Glad to be a crop. You mean a prop?
I wish hacker didn't lose its meaning of peeps hacking stuff together. Peeps who break passwords and stuff. Yeah. I think like the word hacker on like an MIT campus for example has a very different meaning than most people. I posting on Tik Tok.
Yeah, I'm posting on Tik Tok. But my biggest channel so far for short form has been Instagram reels. I'm about to hit 10,000 followers on Instagram, which is crazy. We started that account like two months ago.
Two months ago already at 10,000 followers.
Your expertise, ma'am. Mhm.
We farming. I got a question. How do we get ambition to continue passion projects when you hit a slump?
Yeah, this is a tough one. I wish I could I wish I had a better answer for you, Crash King.
[clears throat] Motivation is tricky.
Usually when you have a task, and I need to take my own advice on this, but usually the it's the first five minutes.
that are the hardest to get into. So hi I now nine programming language and assembly with right operating system.
I think something got lost in translation there.
[clears throat] In another video I saw that you saying you will never be rich.
How do you think you can get $1 million someday?
Uh yeah, I think well the way you build wealth is by owning things, right?
people for some people that means owning I mean usually it's like owning assets right some people own businesses some people own stocks some people own real estate whatever usually that's how wealth is built would you ever dual broadcast to YouTube I am right now actually in just yeah I've been um multireaming for a while now to YouTube.
We got a little following of uh dedicated YouTube viewers. It's kind of cool. Kind of cool. Not going to lie.
Think your profile would be perfect for a tech podcast host? Yeah, probably. But I don't know. I wouldn't like the thing about a podcast is that it takes a lot of effort, right? I'd have to hire another editor probably unless I want to edit it myself.
And then like there's something there needs to be something in a podcast that like you just can't get out of a stream, right? Whatever it is, usually it's a conversation between multiple people that kind of drives the podcast forward.
$1 million in the game industry, maybe a horror game on Steam. Uh, honestly, like indie game development just seems like impossible actually.
It seems very hard. There's all this crap online about how to do it and stuff like that when we seeing quad stream of YouTube, Tik Tok, Twitch, and Kick. Well, I used to multiream to YouTube, Twitch, and Kick. So, I stopped streaming on kick because the the moderation is just not very good on kick. There's too many bots. There's too much spam.
Um, and too much harassment. Like just literally you just get like harassed on kick so much so much more than any other platform. So I just stopped streaming to kick and Tik Tok doesn't really work because of the vertical plat vertical like format.
Well, you see Jordan.
Yeah, sure. You can just say a million dollars is $1,000 a,000 times, but it's hard to sell anything for like $100.
Like, I've I've tried to be an indie hacker for many years in my life. Um, it's hard. Selling anything for any amount of money is really hard and it's uncomfortable and you have to learn how to do sales. Like it's it's Yeah, it's hard. It's just it's really really hard. It's hard to get anybody to pay, especially consumers. It's really hard to get anybody to pay more than like $20 for anything.
So saying you need to make $1,000 a thousand times, that's a thousand hard really hard things over and over again. I mean, yeah, it helps you break it down. I think a better thing would be to think about a business that does X amount of revenue and then usually you can sell a business for like Y times its revenue, right? So the value if you have like a business that does like $250,000 a year, you're sitting on like a million dollar asset because you can sell it for four or five times its annual revenue, right?
I will not pay $20 for anything. Okay, good to know.
[cough] >> [clears throat] >> Young fella Alex Waroszi is a whiz at sales. I love hearing him talk. Yeah, I saw Hey, Urban Geminy.
Annual revenue of 2026 so far is still zero. I see. I saw Peter Level's talking about how some guy is just using AI to build startups, get make money fast, and then exit when people when people inevitably clone his software. I'm like, that's kind of brilliant actually if you could do just like, you know, if you can do like sales really easily.
Like I kind of like doing sales. I'm not going to lie. I kind of like doing sales. I like I like the thrill of the chase.
Yeah, I kind of hate the idea of generating a generating code, but if you can generate a whole like crud SAS app just to solve a single problem and you reach out to a bunch of people and you're like, "Hey, I'm selling this thing. Are you interested?"
Oh god.
Canada computers to open so I can pick up my PC. Dude, bring on business ideas every day and I'm still at zero. Yeah, that's hard, man.
[snorts] Like nine out of 10 businesses fail.
Twitch streamer career.
[clears throat] One sec, guys.
I'm sitting here like, why is it so like hard to breathe in here? And it's because the humidity is like 60 something% right now.
You have some health issue. Uh yeah, I have health issues, but the air quality is kind of damp in here. So, I really need to empty the dehumidifier.
Where am I from? Uh, well, I live in Toronto, Canada.
[clears throat] $20 million in your bank account. That is the first three things you would do.
Oh, what is the first three things you would do?
Um, yeah, pay off my student loan, probably buy real estate, and then invest the rest in the market.
That's it.
Student loan. What's that? That's Yeah, it's basically a form of debt slavery in North America. [laughter] Mine's not that Mine's not that bad, though. Actually, I could conceivably pay it off pretty soon if I wanted to.
It would just take like a huge chunk of my savings.
Hooray! My afternoon is saved again.
Hey, Gareth, welcome. Yeah, I think I got to empty the dehumidifier, you guys, cuz it's like scary humid in here, but I'm lazy. I could just crank up the cold, make it much colder in here.
How common is it to take college loans there? It depends. I grew up in New Brunswick where, you know, people are broke. I didn't exactly come from a wealthy family.
It's almost 10 o'clock, guys. I need to make an egg.
Hi, Nora.
Believe cakes made to close to a million with this indie pixel art game, Tandy.
So, it is possible.
Yeah, but like Like it's not Yeah, I wouldn't say it's impossible. Like it's definitely possible, right? But you need to understand a lot of stuff, a lot of variables, a lot of like game marketing and stuff, right?
It's not just like, oh, you release a game and maybe there's a chance you make a million dollars. It's not like that, right? Like, the thing you don't understand probably is that Cakes has spent years building that game on Twitch, right? Which means he had built up a wish list on Steam for years. And he also like launched when he was on the front page of Twitch, right? It was smart, really smart. Um, he made YouTube, he has a lot of YouTube content about making the game and all this stuff, right? Basically, and then he got really lucky and when he saw the thing, he got like he cried, right? And then that went viral and that created all this marketing like organic marketing, right?
But like over the years he worked very hard at it building up that wish list, right? Playing playing playing the Steam wish list game and getting out there and launching and fixing bugs, right? It wasn't just, you know, launch a game, maybe make I know how much money it made. Like I'm not an idiot. I know how much money his game made. I'm not disputing that. I'm not disputing that his game made a lot of money. It's pretty well-known information that his game made a lot of money. What I'm saying is it's not just like you make a game and maybe one day a million dollars shows up. That doesn't that's not how it works, right? It's a business. It's a business and you need to think about it like a business, which means how are you going to market this? How are you going to get this to people? Right? You know, how are you going to distribute it?
Right? If you're distributing on Steam, how does Steam promote your game?
pretty important. I bet you guys didn't know because it's not very common knowledge that when you have when your game has 7,000 wish lists, right? If you have 7,000 people on your game's wish list, on launch day when you release it, it will your game will be featured in the upandcoming carousel on the stream on the Steam front page.
Right? So, one of the milestones for a lot of indie game developers is to get 7,000 Steam wish lists, right? It's not Yeah, it's like there's a whole thing. It's a whole thing. You can watch endless content about this. I know I have. But yeah, it's not just like show up and make a million dollars. And I'm not disputing that he didn't make good money from Tangy because yeah, hell yeah. I mean, those are when when you when you see him and I I like when I saw Cakes cry on his stream, right?
Or that clip or whatever. I was like I instantly knew I think I instantly knew why he was crying cuz I was like, man, like blood, sweat, and tears. They say that you put blood, sweat, and tears into your business and that is so true.
That is so true. And when it finally pays off, that's when like everything just kind of like hits, right?
You're like, "Fuck, finally." [laughter] Pretty nuts. He didn't even know how to program when he started streaming.
He I'm pretty sure he did. I think he 7,000 wish lists. Yes. and the rules of like internet conver. I need to go eat breakfast, but I'm just uh prostilizing here. But like you also need to understand like economics, right? Like you need to understand marketing funnels and economics and stuff, right? If you have 7,000 wish lists, you're probably only going to get like a handful of sales from that.
Conversion rates on the internet are like 2%.
right from any channel.
So, what's 2% of 7,000?
I think a wish list is actually probably a little has a bit more conversion rate, but like yeah, 140 copies. That's not that's not super that's not a huge amount, right?
Even a 100,000 wish lists at 2% would be what?
2,000 2,000 copies. That's actually enough to make a living, right? 2,000 times $20, that's 40 grand.
These and this is just the reality. Like this is economics. You need to think about what you're creating, right?
And then of course the obvious thing becomes that well if you know you're going to have like 2,000ish sales then how much money do you really want to make cuz you know charging 20 versus $25 is like a difference of $10,000 right? So that's literally internet marketing 101. I really need to go eat breakfast and take my medication, guys.
But you're going to have to give me a moment.
Uh, I have an idea though. Let's jump in the software and gamedev category first.
Some code on screen and then people can be like where's streamer?
Okay. Hello, arcs lighted.
All right, I need to go to the bathroom and then I need to do an egg. We are way behind. Why did you guys let me rant for so long? Okay, I will be I'll be back in a bit. Probably in a few minutes. Don't hate. Don't freak out either.
Are you guys uh behaving?
[cough] [clears throat] The humidity in here is killing me.
Okay, my egg is done and I will be right back. Be back in like two seconds.
Okay.
Hey T2.
Hello chat room. I'm still here.
Let me make sure that box doesn't have any uh identifying information.
During the during the forest fires recently, I decided one one day was so bad. I was like, I need I need a second air purifier. So, I bought one.
Why no Unity?
Oh, just because I like coding, so I don't usually like doing less of it.
That's why one is doing amazing doing well in their programming projects or work. Amazing skill in the modern world.
Yeah, it's a it's a good skill. Although I'm kind of worried it's dying. I'm pretty sure programmer culture is dead now.
Hello deforata.
Just folks who really want us to think so. Yeah, but like I haven't been to like a programming conference in like a little while. I'm pretty sure like something is up.
Maybe it's because they just keep having conferences in the United States and I won't go there.
Hey, really Ren strong part of it for sure. Yeah. Like there hasn't been any programming conferences, dev conferences at all in Canada really. Like Toronto used to have so many conferences and they just kind of vanished.
Now they have conferences about token efficiency.
May you describe the Twitter programming culture you mentioned in the past sounds cool.
I'm not sure what I was saying.
conference in Toronto this weekend to the nearest bar. I mean, that's not a bad idea.
Potential to turn into a slop fiesta like the f like a phone store.
Yeah. Actually, you know what's funny?
Uh, smartass is that did you guys see the subway builder controversy? Somebody vibecoded, basically vibe coded an Electron app and put it on Steam and it's apparently an Always Online buggy mess uh of a game and people are complaining and they're attributing it to AI and then the creator just kind of like doubled down is like, "Oh, well AI is the future, blah blah blah." and then just like not fixing the issues. Like geez, that's like the sloppiest of slop right there, right? Charge $40 for a game and then just like double down and call your customers lites and your fans [ __ ] Literally, that's literally what this guy was doing on Twitter, just calling his fans [ __ ] which is crazy.
Crazy to have such contempt for your own customers, especially when you're charging $40 for a game. That's crazy.
Yeah. All right, I'm going to take this and then we're going to get into super serious coding stuff. Super serious.
Okay. Super.
Okay, time for the super serious stuff I was talking about, bro.
Yeah, it's pretty crazy to uh serve a market segment and then just like have like utter contempt for them when they support you.
That's not how I do business. I mean, I definitely believe in firing customers, but geez, [clears throat] looking busty as hell today. Really, I'm wearing a sweater. Usually when I wear like a c like a tank top, that's when I think the bust happens, you know?
I'm just yapping. All right. Hi, B. It's cool.
It's fine. Whatever. I'm down.
It's cool. We're chilling.
I won't hold it against you.
How am I today? Oh, I'm pretty good. All right. Check this out. Check this out.
We have our 2D isometric plane and the highlighting is actually pixel perfect now. So it only highlights when the surface of the cube is messed over, right? And I can like look I can like precisely go around this corner. So yeah, this is this is pretty exciting.
I did add a camera though, but I turned off the camera because uh not fun. Okay, let's see here.
You can see I commented out the camera here. If I add the camera, oh [ __ ] maybe you can't see it there.
See graphics component zero? That is the camera.
Entity zero is the camera basically. Um, [clears throat] what the [ __ ] Mac OS.
Why is Mac OS so [ __ ] broken lately?
What the hell?
I'm literally command tabbing and it's showing up on the other screen, but my mouse is over here. What the [ __ ] Oh my god. Looks like freaking game developers aren't the only ones that are vibe coding now. Like, what the hell? That doesn't even make sense.
All right, whatever. Okay, so now that I've enabled the camera, we can move around, but then the highlighting completely breaks because now it needs to be all relative or whatever.
And I don't even know if I want to be able to like let the player move with like was I think the best approach would be to like do it like Final Fantasy Tactics Advanced did it where like it just moves to like a square on the grid for whatever whatever entities turn or whatever entity's turn and the turn rotation is.
Why am I not using Linux? Because many years ago, many years ago, it was like 2023, I bought a computer. So, okay, I've been a Linux user for like 20 years. Jesus, this this command tab thing is going to drive me insane because I'm trying to tab to like certain things and I I don't see it. It's over here and it's driving me crazy. What the [ __ ] Anyways, I've been a Linux user for like 20 years. Um, the thing is is that a few years ago I bought I wanted a new computer and I was freelancing at the time and I had a lot of income and I was like I want a computer that's going to be very reliable for client work every day with lots of RAM, lots of ded Wham. And at the time the framework was like a brand new thing. Like framework was pretty new and I was like maybe I'll get the new M2 MacBook because it just seemed like the safer less risk averse business decision. But in hindsight, I probably should have went with a framework.
[sighs] This the game you're making about.
It's u it's just a clone of another game basically.
Sounds reasonable in that case. Yeah.
But like every time I've owned a Mac in the past, after a few years, I just kind of like start to miss Linux.
The commands aren't the same. A lot of my like command line muscle memory doesn't translate. A lot of it does, but some of it doesn't, which pisses me off.
been by now hovering an M5 MacBook Air for a day or two. I am waiting for I'm waiting on a Linux computer. It's a channel joke at this point, but yeah, I've been waiting on a computer for a while now.
A Linux computer.
Mhm. Okay. So, we have an isometric grid.
Oh, the only problem with this is the way I have this structured now. Oh my god, that's so annoying.
Mac OS is good enough. I think I haven't I don't know. I'm not really enjoying it lately personally.
Um, yeah.
What was I going to say? Oh, right. So, the way that I've got this game structured, if I want I think if I want to be able to set the offset, I'm going to have to treat every tile like an entity.
That doesn't really work right now. I kind of cheated.
All the tiles are basically just graphics components with no no other entity components. They're just like dumb graphics components that render.
There's a little bit of state in there, but according to my own convention here, if I want to pass the state of the world to the tile, I need to which i.e. the camera state, I need to pass it in.
And then am I am I going to have to like pass in other other entities? That's the real question.
10:22. What time of day? Yeah, it's 10:22 in the morning here in Toronto.
You have dead maze. You had better be very careful what your next message on YouTube is.
Least you be lest you be cast into the hide from this channel for all eternity.
Yeah. So, I don't know. I could pass in the camera, but I'm guessing I'm going to need to pass in other entities.
which might not be so fun cuz at that point I basically have an entity for each tile and that's probably not very good for some reason.
Ideally, what I would have is something like like the world just renders and then four follows in a row. Yeah, I know. I think ideally what I would have is a thingy. I don't know. You have the plane and then maybe there's I don't know. Yeah, I'm not really sure how to do this actually now that I think about it.
Like for example, instead of depressing one of the cubes when I hover over it, what if I just wanted to have like a like a a cursor type thing where like if I hover over it, the top surface of the cube becomes like white. It's like a white texture so that the player knows where they're like aiming, right?
H like highlighting. Yeah, I mean it's literally called the highlighted grid in in the code.
Yeah, I've been trying to think of how I'm going to render this. Like cuz ideally what I would have is I'd be drawing isometric scenes with tiled and then I use the tiled like export data. I would read that with my game and then we would render the tiled scene right layer by layer. But then I need to create this like faux like programmatic layer on top of that.
I thought about doing a glow.
The problem with a glow is that I would still probably need to modify the underlying tile since I don't really have access to 3D stuff yet right now.
I mean, I could learn 3D, I guess, but I don't really want to.
H.
These are the inevitable shitcoin chilling from new followers.
You really think so?
I haven't heard anything from them.
Maybe they're just lurkers.
saw Tik Tok or something.
This is the tiling code as it is.
Isometric 3D is actually super easy. Oh, I know.
Like everything I have to make I have to make things unnecessarily difficult for myself.
[clears throat] Buy my lurker coin. Going to the moon.
What's up, rats servant?
QED.
Real the challenge, I guess.
Or just like nostalgia.
Uh yeah, all this stuff. All this, all this perhaps. Yeah, maybe I need to get rid of this stuff. None of this like highlight stuff should be her, but that means I need to figure out how to render things to the grid coordinates.
How do I render stuff there?
Like where is the middle of a tile in the world? Where's the middle of the tile? What layer are they on?
Example on ray, dude.
There's no example on ray on isometric projection.
offsetting the highlighted tile by moving it up a bit. Yeah.
Where in the world is Carmen San Diego?
And does she have our tile?
make it super cold in here because it's super humid and I don't want to empty the dehumidifier. there.
Yeah, I had an egg.
Chill for pizza and McDonald's chicken nuggets. That's specific.
Do not drink the forbidden dehumidifier drink.
Yeah, I won't. That's that'd be a pretty sketchy thing to drink, I think.
Yeah, we're probably going to have to create a new entity, guys.
3D so the game logic will be easier.
[clears throat and cough] Yeah, it's really easy to say represented in 3D.
It's another thing to actually create the like cognitive model for that, right?
Like yeah, it's so like I can just be like, yeah, oh yeah, do the game representation in 3D, but like what does that mean, right?
game is like projected like layers of tiles or a map is rather and then all your game objects probably want to sit on the very top layer.
I don't know. Maybe. Yeah.
Like height, I guess. Like where how does height work? I guess, you know, pixel art style game called Replaced.
Have I seen it? Uh, no, I haven't.
Negative.
Okay. I mean, yeah, we could have like God, the screen coordinates are Z for each layer.
Yeah, but it's not that simple, right?
I don't think. Oh my god, this command tab thing is driving me insane.
Why does it show up over here? This is so stupid.
Um, [clears throat] but what are the units of Z since Z doesn't actually exist, right? How does that projection translate is kind of like the thing that's like challenging.
enjoy physical art like painting, drawing or sculpting occasionally.
The painting on the wall beside me here, I painted myself, but I'd like a thingy. A paint night. My friend hacking the main frame.
Hacking Gibson, bro.
It's a firewall and is in deep. Hey, Boss City.
Uh, yeah. Okay. Like, let's start with the basics instead of getting analysis paralysis here because, you know, that sucks. So, I guess I could like render more of a highlight. I guess our cursor a highlight. We could create an entity for it.
The crazy thing about having verticality is that I would still have to like do the projection stuff. So, I don't know.
Yeah, I don't I don't really know how to do that. I mean, I do, but only for one plane. And we're going to start layering planes on top of each other.
It's going to get probably going to get messy.
Well, one thing I do think is that I need I need uh a highlight thing.
Those tiles probably shouldn't be full entities. It's kind of annoying. It's the simplest way to do it, but it's also going to be like really expensive, I think.
like kind of experience do I have? Well, I took linear algebra classes in school, but that's really not necessary. Like, look, I have the transform right here.
Like, I already figured out the transform and stuff and the opposite, the actual like I guess it's not technically it's technically not array cast, but we go from screen coordinates to grid coordinates. Like I have both transforms here. It's not that's like very well-known information on the internet. Like it's not you don't need to know like linear algebra and transformations and stuff.
All right, cool. Well, let's just try and make a a highlighting entity, I guess.
And titty Or I could just make every tile an entity.
But that means for large maps there would be like yeah a ton of entities to go through rather than like dummy things. So optimize later they say. Yeah, that's true.
But that's kind of like architecture debt though at the same time, right?
If every single one of your tiles is an entity, that's some big architecture debt to clean up and would require rewriting the highlighter thing anyways.
So, highlight highlight should be simple. should just be a single texture that goes wherever the mouse is highlight. H confirm.
I lied. Let's see.
Uh, tiling.
I'm going to steal all of the code from the tile though cuz I think we need it.
highlight and probably just replace the word tile.
Okay.
Amazing. And yeah, just copy this copy pasta.
Okay.
And then if I could spell highlight, that would be nice.
I mean, really, the highlight is probably like the player entity.
Okay, great. Amazing.
So, now we have Yeah, we have this stuff.
Door Dash stole my food, including the bag. Wait, how did they steal your food?
Don't they bring you food?
I know some math. I'm not a huge math person, but I know a thing or two, perhaps. Oh, oops. This needs to be highlight.
Highlight defctr uh highlight input component.
Okay.
And then actually a lot of the stuff in the highlight input component should really be some of the stuff that's actually in the graphics component right now like int x and y and all this stuff right this should be actually up here separation of concerns etc etc and then I don't know we need two functions avoid highlight input component No, handle events, right? Handle events, handle input, whatever it's called.
Need a reference thingy.
Does it take a lot of math to create something like this? Not really. It just kind of It's just kind of hard to h wrap your head around a little bit, that's all.
at first.
And it's funny cuz I I say that I'm like I'm barely wrapping my head around it.
So, as it is.
So, I don't know.
I'm just like doing my pattern real quick here.
Okay, good. And then copy and paste this cuz [ __ ] it. And then replace string uh camera with highlight.
This is just the uh interfaces I guess.
So copy and pasting doesn't matter too much.
Okay, great. Incredible.
>> [sighs] >> And I'm probably going to copy and paste the camera code for now till I regret it.
The same thing.
Place string.
Yep. And then we're going to get rid of Oh, actually this is good. We already have some of the stuff that I was like going to put in here. So, I'll just leave that actually for now. We might need it. I'm not sure.
The physics component though, that needs to go completely.
None of this is usable. This is all camera logic.
Oops. Went too far.
[sighs] Oh, chat room. There we go.
And create new thingy.
That's probably okay.
All right. Um, not going to use it yet, but let's just go to our main. I'm going to go to main.
Not main. Play state. I'm going to the PlayState and include the Oh, I didn't include Oh, come on. Emacs. God damn it, Emacs.
I really need to stop using a mouse with Emacs cuz it's just such dog [ __ ] Like, it's just the worst thing on the planet.
Okay.
And I go over to here and I'm like, yo, include highlight.h.
We'll see if it compiles.
Nope.
Tag to refer type. Uh, what did I do wrong?
Pretty sure I did the type defaf correctly.
Type defstruct highlight graphics component.
I like graphics component. That's the forward declaration.
Crazy.
Oh, chat room. Why does the mess cause such a problem?
Because you have to translate screen coordinates to grid coordinates.
highlight input component. Why is this complaining? This is so weird. Um, [ __ ] Okay.
Sure I named everything correctly.
Okay. Grid X. That checks out. Yep.
Probably shouldn't be in here, but whatever. That's fine.
Y Oh yeah, there is no base in here, is there?
[ __ ] What component base?
That's base like that. I think that's a base like that. Yeah.
Yes. Okay, I'm just working through the compiler errors because this is what I get for copy and pasting.
[clears throat] Use struck tag to refer to highlight graphics component.
Did I call it like something else?
I like graphics component.
Uh, somebody help me out. Why?
What's wrong with my highlight graphics component? Is it spelled wrong or something? Is there a spelling mistake somewhere?
Line 44 here.
I mean, yeah, I know that's where the struck definition is, but is there like something wrong with the name?
here. You know what? For sanity sake, we'll just literally copy and paste.
Okay.
Missing an age.
The [ __ ] Oh, are you guys lying to me?
Oh, missing an H. Yeah, I see it. Very sneaky.
Incomplete forward declaration.
Now what?
Hell, man.
I like draw.
Sure. I didn't miss an H again.
Oh, wait. What? Invalid application of size of uh Okay. What the [ __ ] >> [clears throat] >> Oh, this is what I get you guys for copy and pasting.
Highlight draw.
Seems fine.
I need to use the bathroom, too. I can't keep thinking while I need to pee. I'm gonna burst here. Okay, one sec.
Much better. Okay. Uh, compile errors.
Let's go.
Am I missing an H again? Real question.
Uh, I suppress warnings.
Starting to get sick of sifting through all the warnings.
Width equals 90. Highlight C 90.
Uh the [ __ ] Oh, [ __ ] sakes.
Well, yeah, that's probably one reason why. There we go. Now it builds.
Okay, now we can focus on highlight logic.
[cough] [clears throat] As in, how on earth are we going to convert grid coordinates for this thingy?
We'll add their name. Copy and paste.
Yeah. One problem with the camera that I hate is that it's always offset a little bit, which is really annoying.
Messes everything up.
Okay, let's just get a static hover over working and then we can do one that moves.
Nope. Wrong wrong thing. Wrong thing.
texture 2D t equals load texture frag. I really screwed up actually because I should have wrote this down but basically I opened a sprite yesterday. Okay, I have to explain a little bit about how isometric projection works.
Basically, I need to clip the sprite because the sprites typically have a bunch of white space above them. So, I need to clip the white space, right?
Because most isometric projection matrix and algorithms kind of assume that the tile takes up like the top point of the diamond was is at the like very start of the image. So kind of have to crop out a lot of stuff basically.
Isometric stuff is tough. It's very tough. And anyway, so yeah, I forgot to write down the dimensions of the cursor that I want to use.
Uh, and I don't think I have a sprite on this streaming cap because of course I don't. Actually, I think I remember. I think it was uh 4 343 actually.
Vaguely remember something like that.
Can I like edit this? No.
View contact sheet. No.
Show markup tool.
Okay, whatever. It's fine.
Uh, and the width is 128. So, yeah. Cool as me one day.
I am not that cool.
So, I actually have this going on.
So we we actually can get the Oh, the cube height is not that though.
[ __ ] Yeah, this is going to be really difficult without um without access to a sprite.
How many white space?
Much trans and space there is above the white diamond in pixels.
I'm going to figure it out real quick here. Hopefully, this is how I figured out some of this stuff the first time.
Based on the image's dimensions of 500 by,000 pixels. It is not 500 by,000 pixels. God damn it.
It's a 256 by 512 image talking to a clanker unfortunately.
Good. Ah, good catch. How is Google Gmany like so far behind?
Starts the diamond starts at 344. So I was correct. We have to clip the first 343 lines.
0 to 1 1 343. Okay. Okay. And what's the height in pixels of the diamond from point to point? See if we can answer this.
Why didn't it think it was like a thousand pixel image? What the [ __ ] Bottom point, outer edge of the borderline 138 pixels from bottom point.
Measuring the outer edge of the borderline.
Uh, sure. Let's say 152 for our height.
which is weird actually. It should be 148, I think, because should be the same as all the other ones as the orange ones. All right, screw it.
[ __ ] the clanker.
Uh, great.
Okay. So, what I think I need to do is I need to take this and feed it to this transform.
And this isn't going to make any sense because it doesn't exist.
Uh, highlight. Yeah. Yeah. Yeah.
Highlight.
Why? Part of I'm missing something actually. Oh, I need Yeah, I high I commented it out. Okay, [ __ ] me.
Cool.
Uh, let's do this then.
Okay. All right.
That's fine. I'm fine. I'm fine with this. This is This is fine.
Uh, yeah.
Grid X equals and then grid Y equals that. We have to use floor F to find the floor. Okay. Then this should draw it. Actually, this should hopefully work.
Whatever tile we're on, we're just going to render in that X and Y projection life, [snorts] which means I need to create a new entity.
Lovely.
I'm going to also have to do something about loading texture data probably be my guess. I need to I need texture information likely.
Oh, I have it in here. Okay. [ __ ] Are you LSPing your editor? Not usually.
Uh LSP LSP mode is really really annoying in EMAC.
Like not not good. It's not very good in my opinion. It's more annoying than it's worth.
Okay. So, basically we have just have dummy highlights highlight physics components and stuff for now.
Not really. Entity ID.
Uh, yeah. Call it T.
Oh, wait. Yeah, we don't even need this [ __ ] Okay, so I'm going to have to get rid of that stuff then.
Uh, lovely. Yeah. Amazing.
back to the header file because I hate myself.
We don't even need this.
We are literally just going to use whenever we render, whenever we update the graphics component, we're literally just going to be like, "All right, boy.
find the grid, transform, and do the magic.
Hopefully, hopefully we do the magic.
Would really really appreciate the magic, but uh sometimes we don't always get what we want.
Okay. Yep. Undeclared identifier mouse X.
Uh oh. Yeah, that makes sense.
My bad. Should probably go right there.
Before I redeem this, you got a headache. Uh, no. I don't have a headache. What's up?
[gasps] It worked. It literally worked like the first try. Like basically the first try.
Look at this.
This is This is This is huge, you guys.
Look at this. I mean, okay, this off in the world here doesn't really make a lot of sense, but Oh, I still have the depression thing, too. But this is kind of interesting.
The like cursor over here. But yeah, kind of works kind of. Wait, how do you do that? How do you do that? That's It's a secret secret.
Okay, I'm going to get rid of the depression on the tiles because it's not necessary anymore.
Snap to grid. Snap to grid. What the frig, bro?
Just had a breakthrough, bro. Look at this. Do you see what is on my screen right now? Okay, it's pixel perfect. Like snapping to the grid. Got that transform.
to rely on autocompletes even if you code in C.
I don't know guys. I just I just do the thing. Okay.
Yeah. I mean I'm not Sometimes like C mode will auto CC mode will automp complete. Same with like closure code sometimes will autoate.
Came for isometric goodness. Hi babe.
Yeah look look. I've got like a a highlight thing. And this is an entity that's completely separate from the grid.
So exciting. Oh my god. Oh my god. And also I can highlight outside the grid.
So basically I need to figure out is the mouse whenever the mouse collides with the plane, I guess. Oh, yeah. That's so weird. Like, I feel like I almost have to create entities for each tile.
Or maybe I don't actually. What am I doing?
Cuz this just translate to like generic grid coordinates, right? But if I just say like max grid space, I should be able to be like no, right?
I have like max max grid space or whatever. And now we're really getting into the weeds because this this stuff should all be in the physics component.
But for now, we're just we're just cowboy coding a little bit. It's fine.
Cowgirl coding, whatever you want to say. Uh, I will throw in max grid x int max grid y.
World is flat after all. Well, if I make stuff in tiles, I'm going to have to have like a level of verticality to it to figure it out. So, okay. So, I added it here.
Which means I probably want to take it in the graphics component. New graphics component int grid size X in grid.
You know, I noticed I'm mixing casing again. Feel like it shouldn't be like that.
I probably shouldn't be mixing casing again, actually. Like this this [ __ ] right here should be probably All right, whatever. I'm I'm Okay, I'm trying not to get too hung up over it because I would like to actually finish something.
Max grid Y equals grid size Y. And this should be X.
Okay.
Thanks for shrimp.
Yeah, I am definitely an AI at the moment.
Okay, now I can be like, oh yeah, I should just say called it grid width and height. Why did I call it grid size X? That's Good morning everybody.
That literally does not make sense whatsoever. Grid grid size Y, grid size X. It's grid width and height sort of grid width grid height. Okay.
And now in our render function.
If grid x is less than less than or equal to grid maybe it should just be less than less than grid max. What did I call it? [ __ ] I'm looking at the wrong thing here.
Yeah. Max grid X less than Oh boy. Okay. Uh what did I call this?
Erc max grid X and grid Y is less than C max grid Y.
Draw the texture.
Okay.
Does it work?
Yes, it totally works. Sort of. Wait, what? Oh, I see.
That's kind of funny actually.
Um, but yeah, it needs to be we need to bound it as well.
So, basically, grid X must be greater than zero and grid Y must also be greater than zero.
Oh [ __ ] Sorry I wasn't zoomed in for that. I'm sorry guys. Right here.
Okay. Oh wait, what? Oh, we need Yeah.
Okay.
Gotcha. Gotcha. Gotcha. Gotcha. It should actually be minus one. Wait. Less than zero. Wait a second. Wait a second.
That doesn't make any sense.
Oh no. Wait. What am I talking about? It needs to be greater than or equal to zero. Derp.
Greater than or equal to zero. And then we're going to show the thingy. All right. All right. All right. Check this out. We're around it. We're around it.
And now we're on it. Bam. Bam. Bam.
[laughter] Got you surrounded on the big cheese. It does kind of look like a big block of cheese, doesn't it?
Okay, perfect.
But now I need to start pulling out some of this stuff and putting it in the other components because especially the physics component. So basically the highlight entity will know the where the camera is in the world, right? Where the camera and then offset that by the camera. So the camera moves, the player can still highlight the exact square that they're highlighting. Right.
Right. Right. Right. Right.
Yes, agreed.
Mhm.
[ __ ] rolled out of bed 20 minutes ago. Defin not awake yet.
Yeah.
Yes, it's still morning and in Ontario it's very dark and gloomy today.
Okay.
Uh yeah, sick, bro.
I'm actually very pumped that the highlight just kind of worked on the first try.
My guess is the way I'm going to have to design this is that every entity, every spot on the grid can have an entity on it.
Be my guess.
Hey DZ, what's up?
Slice of cheese on cornbread.
Yo, actually me and Kai had some really good cornbread recently. It was pretty I don't usually like cornbread, but it's pretty good.
Yo, we did. Let's get more. Okay. Is this real? Yes.
Ray li isometric with isometric projection.
Pretty crazy.
Pretty crazy. Pretty crazy stuff.
I mean, these are just placeholder assets, too, right?
Nothing solidified here.
asked you why you make games without an engine.
Curious how you approach for someone trying to move into gamedev relatively quickly.
Uh I don't know. I I just like coding.
Like ultimately whatever path makes sense for you is what you should take, right?
The reason I don't use an engine is because I kind of like I'm I'm like a programming nerd, right? I kind of like being down in it and thinking about how to build an engine for my own game, right?
How much do I respect Elon Musk?
Zero.
God, I don't know why people are so obsessed with him. It's kind of weird.
It's a little weird skew the assets. Is it only or is it only to map the coordinates on an image that's drawn to look isometric?
Yeah, it doesn't skew the assets, right? But the asset like dimensions matter for the projection that you're creating.
Be so cool to build a 2D game engine.
Yeah, like most most 2D things like basically you just need sprites to move smoothly and collision detection for most 2D games.
Have I used Odin before? No. Heard of Odin is really hot right now though.
Odin Lang. Odin Lang.
Yeah, you're going to get a hide on this site. Uh, you're going to get a hide on this channel.
Xandos Zandos. Elon is developing community.
Why do you treat him so badly? Um, there's a lot of reasons. A lot of [ __ ] reasons.
God, Elon, Stan's so annoying.
Hey, Bankster. What's up?
I suppose he's done a pretty good job of branding himself as some kind of Yeah. developing humanity. That's [ __ ] insane.
That's an insane thing to say about a man that like hates people like If you like Ray, Odin comes with Ray. No setup needed.
Yeah, I've heard there are Odin bindings for Ray. Ray Lib has bindings for Odin, rather.
Jenga FX are the creators of 3D animation software which are all fully written in Odin.
That's like their one social proof is Jenga FX. And then people are like, "Yo, everybody uses this stuff made by Jenga FX.
Batteries included. You like that?
WebGPL or Web WebGL.
Hey Fern bro is a Bond villain basically.
Yeah. What's funny is that like in like a lot of the Bond movies, the the villain is like a billionaire.
[laughter] A billionaire uh with like evil ambitions.
Hey, Desiree.
Yeah, exactly. Standard error.
Just a lowly millionaire with evil ambitions. Oh, are you Mr. Bankster?
Well, I don't suppose you'd mind buying some channel subscriptions? gifting some subscriptions since editors cost money.
Ginger Bill for a second.
I mean, Odin looks okay, I guess. Apparently, uh, Jai has a similar syntax to Odin.
Oh, I hate passing around a context object. Where Yes, you will. Okay.
Where the frig?
Like why why is this context pattern so popular? I hate this context pattern so much.
I've seen systems that have like context that they pass to like every function.
Every function. Like just have a global variable at that point. Like [laughter] it's so annoying.
>> [clears throat] >> Hello there data analyst. Last year's I found more enjoyable writing code for me about switching.
Yeah.
Uh how do you think how many time I need to get first job in C++?
Um, I don't know actually. I've never done C++ before.
What is with these editors? It's all about them.
Void this return that. Void this return that. WTF.
Bro. Yeah, this is like C. We're writing C.
Maybe I'll just have to switch to Odin or something or go really esoteric like not D. I can't write D. I can't write D.
That's not good. Uh Odin is definitely one of those um fancy S SOA types. What the [ __ ] does that even mean?
Okay. Yeah, Odin is interesting. Um, where is my neck beard? It's gone. Long gone.
I mean, I really wanted to try Jai, but I don't know how to catch a Jonathan Blow stream to be like, "Let me into the demo or the beta." But apparently the Odin syntax is pretty close to dry.
Oh, that's not what I wanted.
Uh, oh, that's right. Okay. All right. All right. Whatever. It's fine.
A game oriented low-level list like Naughty Dog did for their early games.
You know what I thought about is DM Blow on Twitter? Maybe. I mean, I could I'm sure he gets DM'd like all the time. So, you need to cut through the noise, right? Figure out how to cut through the noise. Um, endless drama with Odin just recently.
Yeah, I think you're thinking of Zigg.
I think you're thinking of Zigg Slater.
You know what, Xandos? I am going to hide you on this channel cuz I am starting to get sick of your [ __ ] because You think? Yeah, I'm not.
How do you think vibe coders and other trash will get to it? Like what do you mean? Like these things can already produce C code.
They can already write like produce generate C++ code. So, I don't even know what you're I don't even know what you're talking about. You're just trying to stir a pot.
Okay. If you want to go like yap about vibe coding, go do that, right? This is this is what I This is exactly what I said last night on X that got a lot of attention. It's like you just can't be a manual programmer on the internet anymore. People literally pro pro what's the word? Prostalize.
Procalize AI. Is that the right word? I don't know if that's the right word.
Yeah. Like people basically prostalize AI and it's it's so [ __ ] annoying.
Yo, Fern, thank you for the subscription. At least somebody supports the channel. [laughter] I'm just kidding. Or not. I don't know.
JK.
Welcome to Twitch, by the way. I think it's a better experience.
Pro proletize proise.
Yeah. How do I say this?
Procalitize there. Okay. Procalitize.
Can't even speak half the time.
Thanks, Desire.
Is it the thing preachers do? Yeah.
Hype cycle is insane at the moment.
Don't ask the weed.
Uh yeah. So I guess like I really need to think about this.
because I'm going to have to have like vertical layers to this grid and then stuff then stuff happens.
musical chairs. Except the chairs are vibe coated. Mhm.
It's very Lego. Yeah, I'm like cuz Yeah, this this is going to be challenging for sure and it's probably going to be one of the most challenging project projects I've worked on.
Could have just tried learning 3D and said now I've got to do this for some reason. I don't know why my brain wants to make a a truly 2D isometric perspective game.
That's how it's got to be though.
Maybe Final Fantasy Tactics Advance is like an ass game and I just have fond memories from childhood. Maybe it's just nostalgia.
Although the remake or the re-release of the original Final Fantasy Tactics seem to do quite well on Steam, so I don't know. There's not usually a lot of appetite for tactical games.
Uh, okay.
Cool. So, we have max grid coordinates.
Oh, right. I wanted to start moving some of this stuff into the physics component so that I can actually check the world or check the camera rather.
show. Um, yes.
Wikipedia page got deleted because it was considered unimportant.
Oh, there. So, there was a drama.
There was a drama.
Oh, right. What is this?
Plus 195. Oh, I suppose this probably works because Wait, what? No, this doesn't make any sense. Why did I call it this? Oh, it's from the camera code. That's right. I was like, that doesn't make any sense.
Yeah, lovely. Okay. Um Oh, great.
No, these can be zero.
Racing manager game in UE5. Probably doomed from the get- go. Whole genre is not very popular, but I do it mostly because I personally like management games. I mean, that's fine, too, right?
make a game for yourself. I'm sure there's probably people out there that also like games like that, like business sim games. You just need to reach them somehow.
Light dance on the cheese again.
Sure. Yeah. Here, I'll show you the build. Oops.
The light dances on the cheese. Very fun.
Also, acid system. Cool name for a number of reasons.
Whoa. Whoa. Okay. It's only Okay. It's not that interesting. I just think it's cool because I did it. [laughter] That's why I think it's cool.
Jeez. Whoa. Careful, Dairy. Thanks, honey.
Thanks, babe. I appreciate it.
Uh, let's see here. We probably just need the camera, which is not This is not how you do this, but um frame camera frame frame equals world zero.
And this should be a star. Oops.
Great. Amazing. Uh, cur x equals camera frame.
It's should really be called offset.
Actually, you know, why don't I just call it offset?
graphics cuz I'm just kind of stuffing it in the X. Maybe I maybe it's okay. Maybe it's all right. Screw it. Like trying not to get too bogged down.
Camera frame X cur Y equals camera frame.
Why?
And then we should be able to do something like we have to offset our mouse X and Y.
That's X. Uh minus equals Okay. What am I doing? What am I doing here? I have all the patterns and crap laid out for me because I've done this like a hundred times. So, sx minus equals current dot x Y minus equals current.y.
Let's see if it builds and then I'll turn on the camera. Okay, for some reason it literally just stopped working, which is terrific.
Always love when things stop working.
Oh, I know why.
Uhhuh.
Yeah.
Creating the entity actually. Yeah. I don't know. That's kind of weird.
Guess I get to print it out then.
Find out.
Mhm.
Oh, maybe I don't need this origin offset anymore.
That could be it since now the camera is our origin offset.
No.
Okay.
Pretty certain it should have been minus Uh, I'm probably doing something dumb with the current X, I'm guessing.
But in that case, it still should have rendered. Maybe all I'm doing is setting the value sus.
Yeah. Okay.
What the [ __ ] Classic.
actually I would like to know what the origin offset was as Oh.
Oh, there we go.
Ah, okay.
Oh, things are starting to make more sense.
I think it needs to be plus y, not minus y.
Nope. Oh, okay.
Reason floor f instead of floor.
Um, no. I'm not really sure. I guess I don't really have a good reason for using floor F.
Probably because we don't need double precision. I don't know.
Okay. So, yeah, offset and current X same value.
Oh, you know what? Oh, no. That should be fine.
Minus equals minus equals.
This is so confusing, but so dope. Yeah, I'm a little confused, too, actually.
Unfortunately, I don't know why the the X offset is correct, but the the Y offset is not.
Oh gosh.
Isometric projection is crazy.
Okay, so why is why is the Y messed up? Why is the Y messed up?
Where do I even put the camera to begin with?
It's probably the question I should be asking now that everything is relative to the camera.
Oh, camera is off by 195. That's weird, right?
I mean, a little bit better.
The transform problem again, though.
The X is correct.
720.
Okay, that checks out. But why doesn't this do the thing? Why is this concerned?
should be minus if I think think about it.
Crazy hair.
It's almost like I just don't even want to change the mouse.
Yeah. What the [ __ ] Uh, that's weird.
But if I Wait, what? What? How does that make sense? [ __ ] Uh, okay.
Uh, something is up. Something is a foot for sure.
Something is Hawaii indeed. Yeah, this should not This should be part of the offset, but it's not for some reason.
Like if I turn on the camera and then I start moving around, we should get some not very fun stuff. Okay, so the camera is very different. Oh, interesting. Oh, the camera isn't up. I see. I see. I think I see. Maybe I don't actually definitely needs to happen, but only if the camera exists. No.
Oh, I thought I was so smart.
What?
It's like even worse.
It's literally worse. when the camera is on.
Before I was accounting for the height.
Oh, right. That's right. I was accounting for the height.
Five.
But if the camera wasn't rendered, then it doesn't really matter visually. There we go. Okay.
See, why does that work? But the offset doesn't work.
It's so strange.
implemented in the libraries. I'm not really sure what you mean by that.
Hey, Anton, what am I doing? I'm trying to create a camera where I can actually like hover over Okay, hang on. And I need to Yeah, I'm trying to create a camera where I can hover over an isometric plane. Hover my mouse over an isometric plane.
Yeah, it's also not perfect.
Oh man, that's Yeah, that's not not fun.
Oh, that is weird. Okay.
Kind of starts in the camera. Supposed to start in the middle of the screen.
just be like some offset or coordinates or something I'm not doing correctly likely.
[clears throat] Yeah, I don't know how to like think about this. I can't seem to reason about the camera for some reason.
Okay. Well, that didn't work. Yeah. I don't know. That's kind of weird. I thought this would be just simple like here's an offset. Here you go. Let's do it.
Of course, it's rarely that simple with this project.
Interesting.
10 minutes. What's happening in 10 minutes?
Yeah, sorry. I'm not I wasn't showing it because it's not very interesting.
Basically, yeah, like the projection works on mostly on the X axis but not the Y axis, which is very annoying.
Let's I got rid of the Y offset, I guess. Maybe conceptually it's because there's no Y concept.
Move the mouse into the position that it was.
This is pretty close to what it was before.
What's uh 720 plus 195?
9:15. Pretty damn close.
It's a little off.
Like look, that's odd. Oh, maybe it's because I haven't really moved.
Yeah, for some reason the like the mass coordinate just will not translate down for some reason.
It's because they're integers. I don't know.
Be a dumb thing.
It's probably like some world coordinates to game coordinate stuff I'm not thinking of. That would be my guess.
Cool. Yellow isobo block. Yeah, I built it tile by tile just so I could figure out like when I do end up reading tile information from like a tiled map export, then I can do I can figure it out.
Figure out the math, dude. That's sick af.
Thanks, Fern.
But yeah, I don't know why the the offsets think the offsets would be pretty trivial, especially since I was doing an offset.
So new to programming. Oh, this is cool to me. Oh, I miss I miss when things were cool.
I miss when things were cool like that.
Mouse coordinates.
Mouse X equ= minus equals current X.
Wonder if I actually I feel like I should have kept the origin offset.
No.
Mhm.
Oh, had to do it here. That's why I'm like, what?
Okay, let's start with the the basics again. Let's go back to, you know, making it work.
So, the point the camera point is like basically kind of in the middle.
of the screen.
Mhm.
Well, actually As you probably saw, it starts down here.
What am I using for UI? It's ray. I'm using ray to render.
Yeah. I don't know why I thought this would be uh you know offset of course rel Uh, okay. That's definitely not what I want.
Yeah, I thought this would be a simple offset, but I guess not.
When I render, when I manually render, I had this origin offset. What the [ __ ] Emacs? God damn it.
What the [ __ ] is this? You guys see this? It's [ __ ] insane [ __ ] All right, we don't need to do this origin offset anymore because we have the mouse or we have the camera.
[ __ ] Okay.
I Why?
Wait, does it have to be relative to the grid size as well? Is that what I'm missing? Feel like I'm missing like I'm missing some height value or something.
I guess we start rendering the cube like at the top and then we come down.
The Twitch raid being left behind is very traumatic.
I might have to like think about this one for a bit.
Like do I have to like what the hell am I even trying to do right now?
I don't know. I'm going to have to think about this one.
I guess the perspective of the camera was like the origin was like offset. We offset everything by X. But now we don't need to do that. We just do what the camera did.
8 / two.
Oops.
H.
I damn I don't know camera moves right.
We need to Oh, yeah. Wait, what am I doing? We need to do the same thing here, don't we?
I think anyways explain my thought process in a minute.
That doesn't work at all. Never mind.
I was like, okay, well, if the camera moves right and then everything moves left, then the mouse offset is the mouse position minus Yeah, it should be mouse position minus X. No, it should be X minus mouse position. Shouldn't it?
Yeah, this is not right. This is backwards, I think.
Oops.
Be gone.
Mouse X actually equals current.x minus mouse X.
mouse Y equals current doy minus mouse Y.
I think the camera usually moves in the opposite direction.
Nope.
Okay. Uh, no, not at all. I don't even know what I'm doing anymore.
This is [ __ ] insane.
recap.
Well, I thought an isometric game, but yeah. Okay. So, I guess not.
The only thing I can think of is that like camera units are not the same as mouse units.
that makes any sense.
Okay. Interesting.
Let's line up the grid to be like normalish, right?
the grid in a spot where kind of makes sense.
Now, if the camera moves to the right, the square moves to the left, but we want the square to move to the right. So we we need that like add to the coordinate right.
Is this it? I just need to add it and I'm a big dummy.
No, that doesn't work at all.
Probably correct me or not having them correlate with pixelation.
Well, I am translating to grid coordinates.
usually more spirited in here.
Sorry, I'm like trying to work through this, trying to figure out why this doesn't work.
Hey, kind of makes sense.
Nope. Doesn't make sense. Not a [ __ ] clue.
No, no, you do quite a good job in tracking the chat.
Thanks, Bruh. Uh, offset X offset is I don't know.
Oh, that's probably a problem.
Okay. Uh, interesting.
Wait, what?
There's going to have to be some offset though.
Kind of like I'm losing my mind here.
Yeah. Okay. So the camera the actual grid is over here.
Okay, hang on.
Let's uh get rid of that for a second.
No, Really?
Uh, okay. Well, that's kind of sucks.
I just saw it. Where is it?
Oh god, the actual like grid is like not aligned with the geometry.
Why does this do that?
Literally nothing.
Oh.
Oh, hey. Welcome Renathon or Rethanon.
Rethanon.
Okay. Um, yeah, I have no idea. I think that offset That origin offset kind of helped.
Maybe it just needs to be.
Yeah, maybe this. We don't need to do this at all.
Oh, yes, we do.
We definitely do. But we also need to not why.
Okay. Closer. Kind of.
No, not closer.
God, this is annoying.
Well, yeah. I mean, if we don't have to do the offset, then maybe if we just do it on the X offset, that doesn't really make sense.
I guess it does. Maybe it makes sense.
Oh.
Ah, okay.
Okay.
No, that's not quite correct, but it's different.
world be without trolls. I don't know.
I really want to figure this out. I feel like I'm close to figuring it out.
960 seems to be like this weird golden area.
I guess it's because that's where the when the sprite starts rendering so everything lines up nicely.
Okay.
kind of moving, but it moves. It still moves in the opposite direction.
This might work, but I guess not.
No.
Oops.
isometric projection stuff.
Good old isometric projection like I think the zero what is the zero coordinate for this? Maybe it's just zero.
I'm like 960 which doesn't make any sense here and run the game.
Nunzo just like experimenting with different values now.
like minus I don't know we're not rendering at an autoy offset right we get in the zone I don't want to stop work.
Yeah. Yes. Agree.
Is it feel like it's minus like it's screen height divided by two.
Seeing what sticks now. This is not a very good way to do this.
I feel like I'm getting closer though.
There's just the offsets are not correct relative to the camera.
Wait a second.
I'm going to print out the mouse coordinates, I think, as well, cuz I think I know I think the mass coordinates aren't relative. They're not relative to the camera, right?
I actually have to go. We're running over time here, but I do kind of want to end on a high note here. So, yeah, that's it.
M is not relative to the camera moving.
Uh, [ __ ] Okay, that's lovely. Um, oh wait, isn't that what the offset's supposed to be for?
All right.
Uh, okay. So, I think it's So the mouse coordinate doesn't ever change. So when I move things about I just hold the mouse still.
But this didn't work, of course. So, [ __ ] I think I just need a ray. I might have to do an actual like ray to figure this out.
Like a ray cast onto the textures to figure this out.
Get worlds screen to world 2D.
Uh relive get screen world 2D. That's probably what I want actually.
Massport into its corresponding coordinate near game world space. Oh, maybe that's it.
Where is the camera entity?
Uh yeah, let's try it right quick by doing something insane.
There two World cords vector to position equals per X cur Y.
[ __ ] The camera's not even in here. God damn it.
I kind of I almost want to learn like GL like OpenGL so that I can make my own like graphics library because I find that some graphics libraries kind of don't really understand how actual game engines typically work.
Yeah, get screen to world 2D would help if I could do the thing properly.
[ __ ] That might be what it is.
2D screen coordinate like your mouse cursor position and it's corresponding coordinate in your world game space. I think I'm going to have to pass the camera as like a thingy to highlight draw maybe get in the zone. Don't want to stop work. I know.
I know. I know. I know.
Monitors pixels. No wonder. Okay. Yeah, this seems like I need to exactly what I need to use. Who suggested that? Sak.
Thank you.
World to screen 2D. I might be able to go the other way, I guess.
Get world to screen 2D.
Anyways, uh we are way over time. I need to go. I got to go do stuff.
Hey, Nin.
Thanks, everybody.
I'm going to raid and run here because I want to go get some lunch before I do my client work.
All right, peace out everybody. I'll see you guys on Thursday. Tomorrow's stream is probably I think cancelled, so we'll I'll figure that out. But I will see you guys tomorrow or not tomorrow, Thursday.
All right, bye. Thanks Fern.
Related Videos

TOP 15 Data compression Interview Questions and Answers 2019 Part-2 | Data compression | Wisdom jobs
wisdomjobs
281 views•2019-06-28

CTS 158: 802.11w Management Frame Protection
ClearToSend
4K views•2019-02-04

NDSS 2019 Send Hardest Problems My Way: Probabilistic Path Prioritization for Hybrid Fuzzing
NDSSSymposium
496 views•2019-04-02

How realistic is Cities: Skylines?
CityBeautiful
159K views•2019-02-14

GUIs & TUIs: Choosing a User Interface for Your Python Project | Real Python Podcast
realpython
2K views•2025-04-04

The OSI Model - Explained by Example
hnasr
225K views•2019-05-12

Cloud Computing - Introduction
elithecomputerguy
98K views•2019-10-07

From Traveler's Dilemma to Dynamic Routing | Demystifying Networking
IITBombayJuly
5K views•2019-08-04
Trending

One Must Imagine Sisyphus Happy
vlogbrothers
61K views•2026-07-21

Future of Taylor Farms
maighstirtarot5385
11K views•2026-07-21

The Downfall of OnePlus!
techwiser
65K views•2026-07-21

My Friend Locked Up The Engine On His K-Swapped Bug...
boostedboiz
128K views•2026-07-21