
TDC #06: From Indie Game Dev to Top Unity MCP with Ivan Murzak
Show Notes
š¹ Description:
Ivan Murzak spent the early 2010s shipping Evil Cogs, a Limbo-style mobile platformer that hit 5 million downloads on Android by squeezing performance out of phones that had no business running it. A decade later, he's a Microsoft MVP maintaining what's become the most-downloaded open-source Unity MCP server - the one anyone trying to get Claude, Cursor, or Copilot to actually do useful work inside the Unity editor probably ends up using.
š¹ Links:
- Unity MCP: https://github.com/IvanMurzak/Unity-MCP
- Ivan's YouTube: https://www.youtube.com/@Ivan_Murzak_Dev
š¹ Chapters:
- 00:00 Intro
- 03:22 What We've Been Playing
- 13:49 Evil Cogs: 5M Downloads and Limbo by Accident
- 44:09 Why You Shouldn't Give Your Game to Your Mom
- 01:06:17 Building the Most-Downloaded Unity MCP
- 01:20:05 The MCP Zoo and Why CLI Is Winning
- 01:48:46 Reflection All the Way Down
- 02:04:11 Does the CS Degree Still Make Sense?
š¹ Guest:
Ivan Murzak - Game developer and AI developer
Yuri Sokolov (00:00)
Hey there. So in this episode of Tech Debt Club we just met with Ivan Murzak, which is software engineer turned indie game developer turned AI engineer turned Microsoft MVP and whatnot. And
Amit Netanel (00:21)
Yeah, it was really refreshing talking to another engineer on the show, ā that engineer that takes engineering seriously. Like, yeah.
Yuri Sokolov (00:29)
as a craft like with you. we, we enjoy every conversation we have here. The ones we don't enjoy, we don't upload. And, but it was really refreshing for us speaking with somebody who speaks our language, which is code. And we kind of, I think we can put a cut in this ā episode, roughly in the middle where the first have we talked a lot about indie games, about the process of developing games.
Amit Netanel (01:05)
Specifically, we dove into Evil Cogs. Ivan was a part of the development team. It was around more than 10 years ago, many of what he experienced and many of the approaches he took is still relevant today. We talked a lot about optimization, both for mobile devices and as a development pipeline, which was awesome.
Yuri Sokolov (01:28)
Yeah, I think it was a great deep dive into his way of thinking about developing game. has a unique perspective that I really enjoyed listening to and I relate to a lot of this. So we kind of talked a lot about the process of developing games. And then we kind of shifted naturally, we shifted towards the conversation about AI because Ivan is maintaining one of, if not the most popular ā Unity MCP servers out there, open source Unity MCP servers. It's something that I use in my work and ā we kind of drifted towards this and talked a lot about AI, about how to think.
Amit Netanel (02:16)
Yeah, and we actually learned stuff that's problematic nowadays with MCP servers, with how different models use the MCP protocol.
Yuri Sokolov (02:24)
Yeah, some interesting quirks that some models have. And if you're one of those people who says, why should I use some third party NCP when I can ask Claude to write me one? I think we kind of answered this question during this discussion because yes.
Amit Netanel (02:44)
at least expose the complexity of such a tool and why you probably can't vibe code it remotely.
Yuri Sokolov (02:51)
In one or two evenings, right? So we will, it was an amazing ā episode. We had a blast and I think we'll invite Ivan for more conversations because we feel like so many things were unsaid, but the episode is already huge. So have fun. I know we did. And here it goes.
Amit Netanel (03:14)
Yeah, here it goes.
Yuri Sokolov (03:22)
So I usually ask you, what have you played? I want to start today. I want to start with what I'm playing right now. So not right now, what I have played. Yeah, what I have played recently. So apart from ā Bellatro coming to my life once again, and I'm spending all my toilet moments with it, today I had the pleasure to play some games my students worked on.
Amit Netanel (03:30)
go ahead. Go ahead. What's the show off basically? Yeah.
Yuri Sokolov (03:51)
It was a blast. They worked not as part as my course, as part as another game development course, they develop some nice little games. They worked in a team with artists and developers. It's fun. It was fun. It's, I'm certainly happy to see young developers that just learning the trade and doing stuff, doing, doing fun stuff. What about you, Ivan? What are you playing right now?
Ivan Murzak (04:22)
Yeah, I play a lot of games actually and the last one which I preferred the most it is Crimson Desert. It's a very popular game right now, it's a AAA game, of like a Witcher RPG with open world but the quality of graphics is insane and the location level design is so good. So I like this game, I played a lot recently.
Amit Netanel (04:30)
Mmm.
Yuri Sokolov (04:45)
I heard a lot about it and the main criticism about Crimson Desert is the narrative. That narrative design is basically non-existent and people are saying on one hand, the developers said, we know that we did it deliberately. So you can't be great at everything. We decided to give you a sandbox where you can play.
Ivan Murzak (05:07)
Yeah.
Yuri Sokolov (05:14)
But on the other hand, I can get behind the criticism. I haven't played the game. I just read about this. I can get behind the criticism that people are saying that, listen, you're building this huge, amazing, beautiful world full of a lot of places to explore, but you're not giving us a reason to give a damn about this world. Why would I need to go to explore? Give me something. And then I read another article that says that roughly I don't remember, 17 or 27 % of players are interested in a good story. So it's only 17 or 27 % of players.
Amit Netanel (05:55)
Yeah, also you have to remember that studio has developed Black Desert before that, which is an MMO with the shallowest story ever. OK, it mainly exists as an engine to show off jiggle physics. OK, that's the main purpose of the game. And it's a narrative experience second to jiggle physics. So they know they have data that it works. Yeah. Yeah, well.
Yuri Sokolov (06:00)
Black Desert, the MMO. But it's MMO, what-
Ivan Murzak (06:12)
Hehehe.
Yuri Sokolov (06:18)
But it's any Korean MMO. It's basically any
Ivan Murzak (06:24)
Yeah,
Yuri Sokolov (06:24)
Korean anime.
Ivan Murzak (06:25)
in my feelings, it's like in this game, the graphics and level design is the number one position, what they try to pay attention to the most. Secondly, it's probably micro interactivity in the games. mean, can literally do everything. You can use hammer, can use shovel, you can do that, you can chop a tree, you can mine ore, you can like...
Yuri Sokolov (06:32)
Mm-hmm. We're still a cat.
Ivan Murzak (06:54)
Yeah, yeah, yeah, you can like interact with cats, dogs. There are a lot of animals in the world and you can interact with any of them. And you can steal a horse, you can make a pet from horse, you can steal a wagon with horses. I mean, a lot of stuff and it feels like a GTA or like Reddit redemption kind of. like level of features, level of game features is huge there. And the story probably goes to the third one.
Amit Netanel (06:59)
More than that.
Ivan Murzak (07:24)
There is a story, there is some context. ā Maybe it's not very deep. It's not like that. But it's pretty funny still. ā you're kind of like a leader of some criminal group. At least to me, it feels like they are criminal group. Maybe for someone else it's not. ā And you were beaten by another criminal group and you try to restore your group and everyone spread across the world. You try to collect them back to a camp.
Yuri Sokolov (07:30)
Mm-hmm. you
Ivan Murzak (07:54)
And at the same time, there is another parallel history line, which goes about that mystery magic technologies you somehow get access to. And you're trying to portal to another dimension, to resolve some puzzles there, to go deeper, to get some new skills, magical skills, and then to use them. So it's pretty cool. and Nelson, at the same time...
Yuri Sokolov (08:06)
Mm-hmm.
Ivan Murzak (08:21)
That world is kind of like a sandbox because there are many factions and they can fight with each other and you can help or dis-help to one of them and another one is to dominate. So it's pretty interesting. There are some politics in that world.
Yuri Sokolov (08:42)
So basically criminal organizations, politics, every...
Amit Netanel (08:45)
And you can ride a dragon, right? Yeah, that's the selling point that has been used on me. Yeah.
Ivan Murzak (08:48)
Yeah, yeah, you can.
Yuri Sokolov (08:51)
riding and dragon it's the fun part with the politics is the the less fun part no i'm joking i'm honestly joking i it's definitely on my list i kind of
Ivan Murzak (08:57)
Yeah.
Amit Netanel (09:02)
Yeah, all my colleagues either have played it obsessively during the last month or are slogging through it like the hundredth hour or something like that. it really, you know, it's on the wish list somewhere on the back list. But I don't know, I need to find 200 hours somewhere to play it. That's the amount of...
Yuri Sokolov (09:24)
Yeah, it's on my list, but it I will sooner play ā the Kingdom Cam Deliverance 2 because it's also on my list and I haven't played it. ā And I have a couple of other games that I want to play, but it's definitely on my list. I heard that there was a lot of criticism regarding the controls and the developers are constantly working on resolving the criticisms. already
Ivan Murzak (09:34)
It's a good one.
Yuri Sokolov (09:52)
increased their rating quite a bit on Metacritic because they addressed the issues that people pointed out to. And it's amazing. First of all, the stories of games that were released into bad reviews and then the reviews became better because the developers actually listened to what players have to say. This is amazing. I love those stories. So
Amit Netanel (10:17)
Mm-hmm.
Yuri Sokolov (10:20)
definitely gonna jump there and maybe when I have the time to play it they will release some kind of DLC with an interesting story for me to dive into.
Ivan Murzak (10:21)
Yeah.
Amit Netanel (10:28)
It has been data mined already by the way, that there is more DLC and stuff coming
Yuri Sokolov (10:33)
Of course, when you develop such a huge world, why would you drop it? You will have DLCs, you will have content. Amit, I know that not a lot of time passed since our last recording. For the listeners out there, it would be two weeks, I think. But for us, it's a small time. But maybe you have played something interesting recently.
Amit Netanel (10:44)
Yeah. I'm not going to talk about what I've played because I mentioned mixtape last time and we actually finished it yesterday. I'm going to talk about how lucky you guys are because I'm here talking with you guys instead of hitting the play button on Subnautica 2 which is staring at me from the ROG. ā Subnautica 2 has been released two hours ago and it's already preloaded on my handheld and PC.
Ivan Murzak (11:12)
wow.
Yuri Sokolov (11:19)
Wow.
Ivan Murzak (11:19)
Two hours ago
Amit Netanel (11:24)
and I'm going to just sink pun intended into it or dive into it more likely. It's a great game.
Yuri Sokolov (11:31)
haven't played the first one actually.
Ivan Murzak (11:32)
Wow, I played the first one, this is a great game. This is a so good game. And I also played this, I mean, this is actually a third one. They had Subnautica and then Subnautica below zero. Yeah.
Yuri Sokolov (11:39)
Speaking of...
Amit Netanel (11:47)
Yeah, below zero was not as good as the first one, but I had fun with it because I actually ran into a game breaking bug that one item has been glitched out. Maybe it was not instantiated, fell through the floor. I don't know. So I searched Reddit what to do if that quest item was missing and someone just said, hey, I reverse engineered the game. Every cell of the world. is saving the delta from its ā initial state. If you move something, it just saves the new vector location of that object. So just delete your local one from your save file, and it will be OK. The item will regenerate. So I did that. I managed to progress. But then I thought, infinite money glitch, unlocked. So that's what I did. I broke the game for me, but ā basically took the whole enjoyment out of it. But it was fun just messing around with the data of the game. And I never finished it because of it. ā The first one is a masterpiece, though. You should play it. will. Sometime. Sometime.
Ivan Murzak (12:57)
Yeah,
Yuri Sokolov (12:58)
I will.
Ivan Murzak (12:58)
I had a great experience with both and I did not bump into those kind of issues, but I had some other bad experience at the start because I played the first version when it was too early. It was too early. Like the half of the world was just empty. ā There were none of some monsters and I get to some very end game locations easily. because there no monsters there, so I just passed through and researched that stuff. But then I come back when they published the game and made the end of the game where you can talk to... Oh, probably I'm not going to spoil for some people.
Amit Netanel (13:29)
Mm. Yeah, it's kind of a spoiler. Yeah, you talk to fish, basically. Weird fish.
Ivan Murzak (13:46)
Yeah, it's not the fish. You're the fish.
Yuri Sokolov (13:49)
Okay, okay, you've intrigued me. Speaking of indie games, Ivan, you developed one yourself, right? Before you got the Microsoft MVP award, before the huge Unity MCP open source project, you were an indie game developer, right? What was...
Ivan Murzak (14:00)
Yeah. Yeah, that was the start of my game dev career. So I switched from software engineering to Unity Engine and got started to do just a home project with my friends. And we made a of different versions. We started from a Dark Horror game, which is probably a classic meme. of most of Unity beginner game developers, try to make a horror game with Unity.
Yuri Sokolov (14:44)
It's usually MMORPGs.
Ivan Murzak (14:47)
ā okay, so Trent is changing it right
Amit Netanel (14:47)
Yeah, horror MMORPGs.
Ivan Murzak (14:49)
now. Okay. Yeah, so that's what we tried to do. We did some success, but the game was boring and not very funny. And then we tried to simplify the development because we didn't have much resources. So we decided to go from 3D to 2D because it's just simpler in development. And then we experimented with physics, with bunch of different stuff. And then we also tried to optimize our resources to develop the game faster, and we decided to cancel any... Like in 2D, you can draw with shadows, with all the tiny details on the picture, or you can make just a shape. So we decided to go with shapes. So we just made the black shapes, and we constructed the world from just black shapes, and we have a colorful background at the back.
Yuri Sokolov (15:31)
Mm-hmm. Mm-hmm.
Ivan Murzak (15:44)
which ā made the game very similar to Limbo, but not because of purpose. It was just an optimization strategy to make the game faster, cheaper, and with our limited resources.
Yuri Sokolov (15:56)
Well, I love stories like this. You know the movie Clerks by Kevin Smith?
Ivan Murzak (16:04)
Yeah, I guess. not sure. yeah, I know.
Yuri Sokolov (16:05)
So the first first clerks was released in black and white and They kind of released it's a great movie. It's filmed in one location one and a half locations It's an awesome movie. Everything is black and white there and then some kevin smith actually talked about it. He said then some theory a fan theory became apparent that people were starting to say that the whole movie is shot in black and white because they had artistic vision that the movie is from the perspective of security cameras. And Kevin Smith like, ā I can roll with that. Yeah, yeah, that's exactly why we did the actual story why they filmed in black and white because they didn't have enough money for color correction and ā post-production.
Ivan Murzak (16:48)
Hmm.
Amit Netanel (16:51)
ā sure, that's because of that. Yeah.
Yuri Sokolov (17:04)
So they have limited amount of money, so they shot in black and white. That's basically it.
Ivan Murzak (17:10)
Yeah, ā I believe that that's an part of the art side of it. So I'm an engineer, I'm software engineer at the first thing. And I believe this is like an art part in game development software engineering when you try to use limited amount of resources. to make the good graphics, make a good quality, even in runtime. So we need to achieve a very high quality effects, but you should not have a supercomputer from some university. It should be a cheap device, especially if you're talking about mobile games. It's even harder because to achieve the same level of quality or similar level of quality, you need to figure out so many tricks, how to optimize graphics, rendering, physics, et cetera. So yeah, it's pretty cool and fun process I would say.
Yuri Sokolov (18:06)
We had an experience with something me and Amit are coming from mobile game development. And a lot of people we worked with are naturally coming from mobile game development. And we were at some conference and there was a talk from a friend of ours that we know and like that he's an indie developer. And I think I can...
Amit Netanel (18:19)
Naturally.
Yuri Sokolov (18:36)
say who it is it's the guys behind how the game called Grime the company called Cloverbite the game is Grime you familiar with Grime it's an interesting platformer by your friends and they developed the game and he their tech artist if you can call him a tech artist is basically jack of all trades it does everything there
Amit Netanel (18:40)
Grime. You're talking about yeah yeah Clover Bytes. Clover Bytes Studio.
Yuri Sokolov (19:05)
So he did a talk about ā the optimization work they had to do in order to run their game on Switch. he's talking, yeah, yeah, yeah. So he's talking about stuff. did that. wasn't, me and Amit ran a booth at this conference. So we weren't present at the talk, but a lot of our friends that coming from mobile game development.
Amit Netanel (19:16)
Yeah, and that's switch one, right? Really weak.
Ivan Murzak (19:18)
Hmm.
Yuri Sokolov (19:34)
came to us and said, what was he talking about? Like he described our typical Monday. We're working with mobile devices, with Android devices from 10 years ago. for him, it was this huge thing. We had to do this and that and that.
Amit Netanel (19:41)
you
Ivan Murzak (19:42)
Yeah
Amit Netanel (19:50)
Yeah, it's the first time it was exposed to such a level of ā weakness in the end device. It can't run anything. And also, I think it was a combination of both getting to know the amount of stuff you need to do that you don't have as much resources and that expectations from Nintendo to actually publish your game on their platform is really high in regards to ā frames per second. It has to be really consistent. So your game has to be really optimized. yeah, one of the paradoxes that I find is that initially many, many game developers specifically around me treat mobile games with such disdain. They say, no, that's not real games. But.
Yuri Sokolov (20:24)
Mm-hmm.
Amit Netanel (20:47)
the engineering perspective, engineering mobile games is very complex just because of that reason.
Yuri Sokolov (20:49)
Yeah. It depends. It depends. It depends because a lot we talked about on this podcast already about this, that a lot of a multi million, multi billion dollar companies, gaming companies that we work at are developing games in canvas. They're moving UI around and that's it. But with this in mind, this is not the only engineering challenge, not,
Ivan Murzak (20:56)
That's true. Yeah, it depends. Yeah, it depends on the game.
Amit Netanel (20:58)
It depends on the game, right? Sure. Just menus upon menus upon menus.
Yuri Sokolov (21:24)
to move transforms around, this is not the only engineering challenge in game development because, you know, to optimize a canvas with a thousand images, it's also an art. To make this work on an old Android device on a Google, Android one from India with minus one core CPU. ā Yeah, it's hard, but getting back to your game, what was it called? Evil Cogs, right? Yeah.
Ivan Murzak (21:36)
Yeah. Yeah, it is Evil Cox. So that's the game about... So yeah, we did this engineering approach of optimization stuff. ā then this reality dictates to us what to do in the game mechanics, what to do in the length of the level, because we actually wanted to make the level much longer, much bigger. But... That was not a solution because when you have too many colliders in the level, especially on Android device, it becomes glitchy and you lose FPS. So we also made the levels shorter, but we made more levels instead. So we kind of like have a huge world designed internally, but then we just break it by small pieces, like chunks, and we make it like different levels. And you either need to pass one, and then it goes to the next one, to the next one.
Yuri Sokolov (22:44)
Mm-hmm.
Ivan Murzak (22:52)
And this game became pretty successful at that time. It was 2015, 2016, something like that year. And we got five billion downloads on Android. Five millions. Yeah. Yeah, it was free game, free game. It was free on Android and it was paid to play on iOS, two different monetization models. On Android we had...
Yuri Sokolov (23:04)
How many?
Amit Netanel (23:06)
Nice.
Yuri Sokolov (23:07)
It was a freebie? Mm-hmm. Bye to play.
Ivan Murzak (23:20)
Yeah, sorry,
Yuri Sokolov (23:20)
Bye to-
Ivan Murzak (23:21)
yeah, buy-to-play, buy-to-play, yeah. On Android, it were ā ads. And on iOS, it were no ads. So just two different monetization models. And the score, I mean, stars, the rating of the game was high. It was 4.7, which is pretty good for 5 million downloads. And yeah, so the game were popular. And it was the start of my career. and that's why I switched fully after it into the game development. I got started to work on another project, then another project, and I had a lot, maybe like 15 projects in total. And some of them were not even apps, sorry, not even games, but apps for mobile devices, but just made with Unity, using 3D particles, even some gameplay mechanics inside internally, and bunch of different stuff. ā Yeah, and that's how I got all my knowledge about Unity, about game development and that stuff and when it was ā from... on what exactly, sorry, on game development.
Yuri Sokolov (24:30)
How long were you working on this? on the evil cogs for example.
Ivan Murzak (24:40)
Yeah, so on Evil Cocks, I get started to work in 2012, but then I stopped to work on that project because ā we raised money and we get started to work on applications for Android and iPhones. It was a startup. So I did not pay attention anymore to the game. So it was kind of like that for a year or two. But then I get back to this game and I get started to work on it like continued and spent maybe like Maybe like two more years to polish everything And to and to deploy it to iPhone and androids Sometimes like that
Amit Netanel (25:15)
Mm-hmm.
Yuri Sokolov (25:25)
Mm-hmm. Got it. It's not available today, right?
Ivan Murzak (25:32)
Yeah, it's too old. since that time, a lot of low were changed, like GDPR, et cetera. At that time, they did not even exist. And so just because of that issues, I needed to upgrade some internal stuff. But I was not able to do that because of list of dependencies.
Amit Netanel (25:42)
Mm-hmm.
Yuri Sokolov (25:46)
Mm-hmm.
Ivan Murzak (25:58)
And the most hardest one, it was to migrate from Unity 5 to Unity 20 something. And it's like just impossible. I just can't do that. I mean, the project should just...
Yuri Sokolov (25:58)
Mm-hmm. Yeah.
Amit Netanel (26:08)
Yes. Just a classic story. If I ā had a dollar for each game that I heard this exact thing about, like one core dependency or one major dependency, like the engine breaks, ā the IDFA and GDPR and stuff like that is not even the biggest concern. But that's the reason you had to upgrade the engine.
Ivan Murzak (26:37)
Yeah, and actually the biggest pain point in that project was ā absence of nested prefabs in that Unity version. and I was one of ā the people who publicly was talking with Unity on Unity forums and...
Yuri Sokolov (26:49)
ā yeah, I can tell you a story about-
Amit Netanel (26:51)
wow, yeah, it's from Unity 5, so yeah, no nested freefab.
Yuri Sokolov (27:04)
Don't we all?
Ivan Murzak (27:06)
Yeah, and I tried to get Unity's attention ā about this problem because it was many years already that that problem existed, even at that time. ā So I wish to believe ā just because of that my push that time Unity like get started to work on that harder because I bring attention of about 200 engineers on Unity Forum and they use the same hashtag on the Unity Forum there.
Amit Netanel (27:35)
Wow.
Ivan Murzak (27:36)
to bring attention and then you need to come to the threads and they also get started to talk like, right, we're working on it. We're gonna do that. And... ā
Yuri Sokolov (27:45)
And they work a couple of more years on that because they released, if I'm not mistaken, they released it in Unity 2018 during 2017. Basically in 2018, was in during, sorry, if I'm not mistaken, Unity 2017 didn't have it, but we had Unity 2018 that was released in beta during 2017.
Ivan Murzak (27:56)
Hmm.
Yuri Sokolov (28:14)
And there we had the nested prefabs. And I was working on a project at the time in a company. I was a founding engineer. I immediately, it was along with URP actually. They released it, the URP and it was called Lightweight Renderer Pipeline back there. So I worked on a production ā game on a commercial mobile game. with a beta of Unity Engine just because they had the nested prefabs. ā Everybody wanted that. I'm familiar with one big title, one big mobile title that started long before Unity created nested prefabs. And what the guys did, I think it's brilliant. They needed...
Amit Netanel (28:46)
Hmm.
Yuri Sokolov (29:12)
some level of nesting. What did they do? They started using scenes as prefabs. So this way you would have two levels. You would load the scene additively and then you'd have prefabs inside the scene. So at least two levels you can get with. It was kind of genius, I must say. When I...
Ivan Murzak (29:15)
Mm-hmm. Nice, that's a good point.
Amit Netanel (29:20)
Hmm. Yeah.
Yuri Sokolov (29:40)
When I worked on the game, was many years after the decision. So I saw how new developers, new Unity developers would come and look at that and say, why? Why would you do that? Why would you do that? And when I saw it, I immediately understood why. Because I felt this pain. I felt the pain of not having the ability to nest pre-fabs.
Ivan Murzak (30:07)
Yeah, that's smart decision to use scenes like that. I can talk a bit more about scenes because I still use it in a pretty similar approach, but that's going to be the next thing. And talking about the prefabs, unfortunately in Evil Cogs game, that was not a solution because most of those prefabs were interconnected to each other. And Unity doesn't allow to make interconnection between separated scenes when they are saved separately.
Amit Netanel (30:31)
Good.
Yuri Sokolov (30:36)
Mm-hmm.
Ivan Murzak (30:37)
That's not going to work. So that's why we used the plugin, which simulated nested of prefabs by some custom code. Yeah, it was pro-prefab or something like that. I don't remember. And it worked at the start pretty well, actually. So we kind of resolved the problem. ā But then at some point of unity or at some point of complexity of prefabs, it gets started to corrupt prefabs.
Yuri Sokolov (30:44)
I remember something like this.
Ivan Murzak (31:05)
And it was insane. It was so hard to manage. Very often, we just needed to roll back the whole progress of what you're not yet committed to get backward because everything was fully corrupted. And it was hard. And after that, when Unity released nested prefabs, there is no way to move from prefab to nested prefabs. It's like no way to migrate. And that's why the...
Yuri Sokolov (31:05)
Mm-hmm.
Amit Netanel (31:07)
Hmm. ā
Yuri Sokolov (31:19)
Mm-hmm. ā and no AI to do it for you either.
Ivan Murzak (31:37)
actually, maybe today that's doable. Yeah, that's actually a point. But the project is dead for maybe like five years, six, seven years, something like that. So it was pretty AI time. And I was very upset.
Yuri Sokolov (31:39)
Today, You can still go there.
Amit Netanel (31:52)
Hey, here's an interesting project. Yeah.
Yuri Sokolov (31:54)
You can still go there, take the Unity 5, not upgrade anything and upload it to your HIO or whatever web platform because Unity 5 could, and I'm speaking from experience, could already could do a good WebGL builds. So you could just release a WebGL build from this game to publish it unless you've read, you've used the multi-threading there. which I doubt honestly, ā and you can release it at least for web ā users out there. Because when I did the research before this podcast, ā encountered a Reddit post that asked, you know, I remember when I was a kid, I was playing, he's probably still a kid, right?
Amit Netanel (32:53)
Yeah. Yeah, yeah.
Yuri Sokolov (32:53)
If it was a kid in back in 2015, but somebody says, I remember back then when I was a kid, I've played this game. looked like this and this. somebody told him, Oh, it's that it's evil Cogs. he said, Oh, right. was evil Cogs then. Thanks for telling me. So somebody was searching actively searching for this game. Uh, it's stuck in his memory. I feel if I had. a game that I've developed and somebody was looking for it, I would feel pretty good about myself.
Amit Netanel (33:27)
Yeah, yeah, and actually the full game walkthrough playing on the background of my screen here with lots of views. Okay, it has 10K views and the trailer the trailer for evil cogs as almost 800K views. Just the trailer.
Ivan Murzak (33:28)
Yeah Yeah, yeah, just that trailer. Yeah, it was pretty popular at that time. And yeah, I was primarily talking about the engineering part, but also from game design part. ā It was a pretty good work there in that game. ā That game was touching a philosophical question about what's good, what's bad in our life. And especially, I'm pretty sure it gets very well connection with people who had hard times.
Yuri Sokolov (33:55)
Mm-hmm.
Ivan Murzak (34:16)
in their life and they get played into that game. Maybe that's why they have these strong feelings about like and memories about that game because ā I got many emails from players who tell me like it helped them to go through hard times what they had in that period of time and that game kind of like supported them or something. So it's very great to hear actually.
Yuri Sokolov (34:24)
Mm-hmm.
Ivan Murzak (34:43)
ā It's very motivational to me as a creator of this project. ā Yeah, so and the story of the game, it was actually was pretty simple pattern. We were talking about some unknown darkness, which is trying to break the world. And you are the last beam of the light in that world. And you were spawned in that world to fight with that darkness.
Yuri Sokolov (34:48)
Mm-hmm.
Ivan Murzak (35:10)
but the darkness is huge and you are a very small tiny character, but you still go through. Like you retry if you fail, you collect some small pieces of light across the world if you can. And there are a lot of creepy creatures in that world which were constructed by darkness and you need to avoid them. So yeah, and that's game about that.
Yuri Sokolov (35:23)
Mm-hmm. You just described my typical Monday when I go out and I see all of those creatures around me and they're talking and they want to communicate with me and like leave me alone.
Amit Netanel (35:37)
You
Ivan Murzak (35:41)
You
Amit Netanel (35:42)
Everyone outside my apartment.
Ivan Murzak (35:50)
Yeah, yeah, yeah, so and that was the game for iPhone and Androids. ā We also made the version for Steam, but it was primarily designed for touch screens. So on Steam, it's not very popular and has mixed reviews because it's complexity of controls on keyboards and mouse. ā But yeah, it's mobile game first of all. ā Yeah.
Amit Netanel (36:07)
Hmm.
Yuri Sokolov (36:16)
Great, so from there, you were two people, right? Two people working on the game.
Ivan Murzak (36:22)
ā No, at the start we were even four people. But we were all beginners. I was the only one guy who had a career in software engineering. Other people were just like brand new beginners. They did not have ā even a career in other directions. So we just were a group of friends. And we tried to construct the game. And it was actually very hard at that time because nobody knows how to make a game. It was the first project what we worked on together. ā And somehow I organized the team to work on it. But in the final end, ā we ā left just me and another my friend. And we worked on this game fully to the end together to make it done.
Yuri Sokolov (36:58)
Mm-hmm. ā so you worked on this full time like or after hours after a day? ā
Ivan Murzak (37:23)
After hours. ā Maybe just ā a couple of months it was full-time work. most of the time it was just in the evening after work, when you have free time, we worked on that game.
Yuri Sokolov (37:38)
Mm hmm. So passion project that you had to you had to spend your free time. So you're deciding what am I doing now? Am I going going out and treating my girl? I don't know. Going going bowling or whatever. Yeah. Turning on the PlayStation, watching the movies or I spend my time working doing roughly the same I do at work.
Amit Netanel (37:56)
turning on the PlayStation, man. That's the toughest decision.
Ivan Murzak (38:02)
Yeah.
Yuri Sokolov (38:08)
but at home, but it's my passion project. It's my baby. I'm doing it. It's kind of hard, I think, right?
Ivan Murzak (38:15)
Yeah, no, not hard at all to me because I'm that type of person who classify as fun some type of work. So after the work, I can have fun, which is for someone else gonna be classified as work too. More work, yeah.
Yuri Sokolov (38:17)
No.
Amit Netanel (38:33)
More work, yeah.
Yuri Sokolov (38:35)
Yes, I can I can definitely get behind that. Because, know, you know, you know the saying that make, make your whole being to your work and you will not going to work a day in your life. So it's almost about me. It stopped being about me once I became a father. That's that's kind of broke me because now I had to juggle a lot more and
Amit Netanel (38:48)
You want to work a day in your life.
Ivan Murzak (38:49)
ā Yeah, that's about me.
Yuri Sokolov (39:05)
But yeah, yeah, I can totally get you, but it's still hard. I would say if I'm working full day, I'm programming full day, and then I'm coming home, I can still continue programming. I can still write code and have fun with it. But in my experience, what's hard, it's coming and sitting some more time on the computer. It's... being consistent with a single project and delivering it from A to Z and finishing a project. This is because today I work on some game, some tool, tomorrow I can work on something else and then it's kind of fun. I can work on a project for a month, for two months and then it starts weighing on me because it's start...
Amit Netanel (39:42)
Yeah, the consistency part is by far the hardest.
Ivan Murzak (39:46)
Hmm.
Yuri Sokolov (40:03)
I don't know, maybe I haven't had the chance to work on a project that I can be fully committed to and say, this is something I must finish. This is something big I must finish. That's why I love to teach and I love to work on my YouTube videos because for every YouTube video I can create something small, something different every time. ā this is something that keeps me going and I can work from, know, I wake up, I work, I eat, I work and I do everything and I continue working the whole day. So don't you find it difficult to finish, to actually finish?
Ivan Murzak (40:48)
Yeah. Yeah, good question. And while you were telling your story, I guess I figured out for myself why it works for me. And the answer probably is about to release it sooner. And then you're going to get some feedback from people. Yeah, and it's very important to be consistent on the project when it's not a silent stealth project.
Yuri Sokolov (41:09)
Feedback.
Amit Netanel (41:10)
Thank
Ivan Murzak (41:18)
when it's like publicly available, people can touch it, people can interact with that. And you're gonna see like people needs it. I mean, if people needs that. If people don't, probably there are two options. The first one, it's not needed at all, probably. Or another one, it's ā you're not promoting it well enough. So like two options.
Yuri Sokolov (41:21)
Mm-hmm. Yeah. Yeah.
Amit Netanel (41:44)
Did you show the game off before release? in a local developers group? Did you show it to friends? Like what did you do to keep motivated?
Ivan Murzak (41:55)
Yeah, yeah. So first of all, it was not about to to be motivated to stay motivated. It was more about to Again, about optimization. So I believe in the pattern where there is optimized workflow, optimized paths, how to make the product efficiently in the context of not wasting time on not important things, but just focus on important things. And ā to get that information, you need to get the feedback. But to get the feedback, you need to at least have something. So it's kind of like an egg and chicken problem.
Yuri Sokolov (42:22)
Mm-hmm.
Ivan Murzak (42:35)
ā So you just need to make the product like a prototype as soon as possible and make it available for anyone else to get the feedback. It could be your friend, it could be your mother, it doesn't matter. If that's your target audience, like take that people, give them the product and review. Like it's very important right there. You need to have a cold mind and you need to analyze what the user is doing. If user get bumped into something, that's not a user's mistake, it's yours mistake. It is something wrong. User should navigate very easily in your product. It doesn't matter. Is it a game? Is it a website? Is it an application? Is it something else? It works everywhere. It should be smooth onboarding, smooth like the way what user should like just walk through easily.
Yuri Sokolov (43:12)
Mm-hmm. Mm-hmm.
Ivan Murzak (43:34)
into your project and it should be like motivated to keep going forward. ā So you need to collect and write down that places where user bump into a problem where user did not understand something. ā So then you polish it again and again and you do that many times. So and this process kind of fun because you always getting a feedback and you better to collect negative feedback by the way than positive feedback because if you collect just positive that's probably
Yuri Sokolov (43:59)
Mm-hmm.
Ivan Murzak (44:04)
your friend was just too polite. That's not a good approach.
Yuri Sokolov (44:06)
Yeah, yeah. One of the
Amit Netanel (44:07)
Hmm.
Yuri Sokolov (44:09)
rules is actually you're saying give it to friend, give it to mom. For me, one of the rules of thumb is not to give it to friends or mom, it's to put it out there for other people. And there are a couple of reasons for that. And I recently stumbled upon a subreddit that people were talking about a similar issue. And a lot of people like thinking the same way as I do. It's just when you're developing something, it's your passion project. It's your passion. You love it. You leave it. You breathe it. Your friends might support you. They might want you to succeed, but it's not their passion project. So when you're giving it to them, take it, play it, review it. You expect at least somewhere internally, you expect them to feel about this game the same as you do because it's
Ivan Murzak (44:48)
Hmm True
Amit Netanel (44:52)
Mm-hmm. Same here.
Yuri Sokolov (45:05)
You're their friend and it's their passion project. And please play it and give me feedback. And for them, it's, it's, it's a chore. They might do it because you asked, well, it would be a chore and then they don't want to offend you. And, and it's not a good feedback. If your friend is not actively coming to you and saying, wow, give me your game. Let me try it. So for example, I do this, I, I, I do a YouTube. channel and I don't ask Amit to watch my videos. I know he doesn't. I know he doesn't watch it. I don't care. I might joke about this like I do right now. I really don't care because the content I develop, I want people that do care about this content to come in and watch. And if I'll force
Amit Netanel (45:43)
I do sometimes, do sometimes, mainly because of the thumbnails.
Ivan Murzak (45:43)
You
Yuri Sokolov (46:03)
my friends and family to watch it, I won't get a good feedback on that. So this kind of my motto.
Ivan Murzak (46:10)
Good point. Yeah, this is a good point. And I also was at that mindset at that moment of time. And I figure out how to still use friends and mom, cetera, ā positively in that context. Yeah, I truly understand. Like, yes, they are your friends. They're not going to say something bad. But if you give your project first time, that friend, you can just silently view what the user is doing. And as only he's stuck at some point, that's it. You got it. You just need to notice that. If he gets started to ask you a question, that's also like the red flag. Something was not intuitive and it's not working as it should. But just because he is your friend, he's going to ask you because he has you in front of him.
Yuri Sokolov (47:00)
Mm-hmm.
Ivan Murzak (47:10)
So that's kind of like one way. But when you're going to make another test, for example, there is a technology at that time it was popular, where you can make the build of your game, you can inject SDK, and it's going to record a screen. So it's kind of like analytics, play test. So you're giving the build to random people across the internet, they play, and you watch the videos, like what was going on, like where they click.
Yuri Sokolov (47:27)
Mm-hmm. Yeah.
Ivan Murzak (47:39)
You see the clicks, you see what they're doing. It was helpful. Hitmap. Yeah, Hitmap works for websites better. In the game, everything is very interactive. Screen is always moving. Something is changing. So better to watch video per user, which is you would need to spend a lot of time. But actually, the pattern is so like...
Amit Netanel (47:42)
Yeah, you can even see a heat map of what they were looking at, what they were clicking. lots of tools to do it.
Yuri Sokolov (47:59)
Mm-hmm.
Ivan Murzak (48:06)
the same for everyone. if you just watch 10, 10 people, that's very likely going to be enough. And it's not going to take much time. But it's only a project to get growing and become better and better. You can integrate analytics services to measure funnels. So you're going to measure how many people passed the first level, how many people clicked on that button, how many people get purchased, et cetera.
Yuri Sokolov (48:29)
Mm-hmm.
Ivan Murzak (48:30)
And at that level, it becomes a commercial level of analytics and you can polish your project even better in multiple dimensions simultaneously. In the dimension of the user experience, in the dimension of the game complexity, and in the dimension of monetization to get more money. Of course, you need to get money from the project. you should be motivated to navigate the user to pay.
Yuri Sokolov (48:56)
study user behavior and to understand what he actually wants and to give him what he actually wants. So ā one of the dosage aspects, it's kind of popular in mobile game dev, right? And I'm not gonna talk about the hardcore stuff, about the science. So for example, companies like Playdica have... have behavioral analysts that with doctorates on human psychology to just sit to sit and to analyze stuff. I'm not even talking about about that, but you can do a pretty simple analysis that my players usually fail at this point. And it's I have to maintain this level of complexity. But I can, at this point, I can offer them a life for, for, I don't know, for, ā two, so they will watch a rewarded video and I'll, I'll give him a way to continue. It's also analysis. If you put it too early, you can miss the, can. Agitate the player and give him an ad when he doesn't need it. And then you don't get, ā you don't get the money from this ad. and the player doesn't get any benefits from it. Or you can actually analyze and watch videos or put analytic events to see what is the intent of player, where are they failing, and then to put this ad in a specific place where it's not annoying, but comes as a help to the player at the same time to receive your hard earned money. But this is kind of, you know, how game developers, we're gonna release a game and it's, it's a my game. And this means this game is great and you should love it. Yeah. Analytics. What you said? What word starting with a, ā yeah, it's, it's, it's another trade people. I saw people complaining about the fact that they have to market their indie game.
Amit Netanel (51:04)
Sure, I like it. Why won't other people like it? I know.
Yuri Sokolov (51:24)
Because it's hard. They already working hard on art and, and programming and all making singletons is really, really difficult. And now they have to market the game. then you're saying not only they need to market, they need to do a market research. They need to analyze player behavior. They need to.
Amit Netanel (51:30)
Mm-hmm. Yeah, but you've got to admit you don't imagine that when you think about game development. You don't even think that that's what you're going to do.
Yuri Sokolov (51:50)
Yeah, done.
Ivan Murzak (51:52)
Yeah, yeah, exactly. Yeah, and in my experience, ā it was about 10%. It was the fun, truly the fun part of game development, working on the game mechanics, some graphical stuff. But 90%, it was about everything else. It was production, publishing, and learning new stuff because I edit all that on my own, which was very hard at the time. ā
Yuri Sokolov (52:06)
You're an engineer.
Ivan Murzak (52:25)
Yeah, so and I just wanted to say about the previous topic. like doing this measurement is kind of like an art too, because you need to use proper tools for proper resources. So like in comparison, if you're talking about AAA games that's going to run on high end PC, you can like use very like expensive effects, expensive shaders, etc. tons of colliders in your scene, and it's still going to work pretty well. But if you go into a cheaper device, you cannot do that. You need to choose something cheaper. And the same approach, the same pattern works with analytics. So if you are an indie developer, you don't need to do like a huge market. I mean, probably, yeah, if that's simple, do that. But if you're talking about something complex like market research, You don't need to do that. You can use much cheaper tools to get your first feedback, least to understand what to choose right now, what to do today instead of waiting a month for a research and then just making a decision. So you just need to optimize the entire process of the game development or any other product. Because the speed matters a lot. You always have competitors.
Yuri Sokolov (53:28)
Mm-hmm.
Ivan Murzak (53:54)
the humanity keep going forward. So if you want to make something, you need to make it fast, as fast as possible because it's going to be outdated at some point. So I need to hurry up. Yeah.
Yuri Sokolov (54:06)
I think we're speaking the same language here because we're treating game dev not only as our passion relief tools, not only like art. So for me, game dev is an art, right? I love doing it. On the other hand, the business part exists. It's there. You must, I don't know. I live in... a high cost place. So for me, it's really hard to become an indie game developer because indie game devs not earning that much. Right. It's the success stories. There are success stories, but, it's really hard to, to, to break out and earn earn a living. So you must think if I want to develop an indie game, I must think about the business part. How do I optimize my process? How do I, how do I reduce the time it takes? How do I analyze and bring all of those, those things that people usually don't love talking about in when they're talking about mobile game development, the, the monetization of, of the game of how you, in-app purchases or stuff like this. So basically it's a business at the end of the day. It's a business. Every, you take any indie game ā that that's out there. Probably there at some point, the successful indie game, probably at some point thought, it would be nice to turn a million bucks or something like this. ā Because it is a business. We, want to make money from what we love. yeah, here's that. But speaking, speaking of optimizations.
Ivan Murzak (56:01)
Yeah, I agree, absolutely.
Amit Netanel (56:02)
Yep. Yeah. Yeah.
Yuri Sokolov (56:04)
Yeah, I mean...
Amit Netanel (56:07)
I just want to say something about that because usually the narrative around money and entertainment is that they are like struggling against each other. Right. ā I would argue after years in the mobile game industry that financial success often indicates enjoyment and entertainment value because some Many people are bombarded constantly with all the sorts of ways they can spend their money. People with disposable income, they can either buy micro-transactions, buy AAA games, pay for another ā Netflix subscription or something like that. AI subscription. And AI can be used for entertainment purposes.
Ivan Murzak (56:57)
A.S. subscription.
Amit Netanel (57:04)
But eventually, they choose what gives them the most pleasure. ā So trying to maximize the pleasure from your game doesn't have to be at odds with trying to make money. The money is usually indicative of people having good time in your game and wanting to support you, at least on the mobile market. Yeah, one could argue that, OK. All the people that are playing mobile games are addicted to dopamine, and that's why they're spending. I want to challenge that belief, right? TikTok is free, and that's also, know, every time you pass a video on TikTok, yeah, yeah, and every time you're going through another video in your real feed, that's essentially a roll of the dice or ā another pull.
Yuri Sokolov (57:38)
What? TikTok? When a product is free, you're the product.
Amit Netanel (58:00)
of the jackpot machine, of the lever. Yeah, it's just about the same. That invalidates that argument, right?
Yuri Sokolov (58:00)
Yeah. Liver. Yeah, it's... You're waiting for a dopamine bomb and whether it's from a microtransaction in a mobile game or it's from something else that requires your hard-earned money, regardless. But there's a gray area there because there are addicts and addiction is an actual thing that's happening. you know, it's... is a gray area everywhere. So when a company that everybody loves ā decides that they will release their AAA game for 80 bucks now and not 70 bucks, it's also something that they're thinking in terms of business. And when you're saying GTA 6 is gonna have a budget, it's gonna be the first... Quadra a how would you say? quadruple a a game that that the budget is more than 1 billion dollars Do you really?
Amit Netanel (59:07)
Yeah, even more A's game. Yeah.
Ivan Murzak (59:16)
nice,
Amit Netanel (59:17)
The amount of hype for that game. Yeah.
Ivan Murzak (59:17)
finally somebody beats Star Citizen.
Yuri Sokolov (59:20)
Yeah, finally, do you understand that the majority of this budget is marketing budget? Not the developers. Yeah, not the developers, not the artists majority of the budget like in every movie you see a movie that the budget is 500 million million dollars. It's not I don't know some the rock
Amit Netanel (59:28)
Yeah.
Ivan Murzak (59:29)
Markets in.
Yuri Sokolov (59:48)
came and took 400 million to his pocket. He earns well and the actors earns really nice. But the majority of the budget for a movie or for a game is marketing. It's putting it out there, it's making ads, it's everything in between. I can't imagine. I can't imagine a world where a billion dollar is spent on developers, on programmers and artists on a game. I just...
Amit Netanel (1:00:23)
It has to be like a Ready Player One level of a game, right? It's going to be immersive, indistinguishable from reality level of graphics.
Yuri Sokolov (1:00:32)
And even then, and even then, Ready Player One, we're closer to that more than you think with all the AI and if we'll have AGI maybe we'll be there, we'll have the Ready Player One level games. But yeah.
Amit Netanel (1:00:37)
than ever before. Yeah. Yeah. Yeah, I want to divert from this topic, though I have many more things to say about it, because the market has been interesting today regarding GTA 5. ā Ivan, ā me and Yuri usually talk to ā game developers and developers in general, by the way. And it seems we've noticed a pattern that many game developers approach the craft from the more passionate
Yuri Sokolov (1:00:54)
Ha
Amit Netanel (1:01:17)
side, level design side, they want to like, ā code is something to be fought with or jumped over or a hassle to be dealt with. Yeah, it's an afterthought and not an art, as both of you described it earlier. You're one of us. Like me and Duri have started our game dev journey after we had experience programming in other domains, fields. What do you feel like is like?
Yuri Sokolov (1:01:27)
It's an afterthought.
Amit Netanel (1:01:48)
coming from a coding background gives you when you approach game development. How did it help you in your personal journey?
Ivan Murzak (1:01:58)
Yeah, that's a good question. So my education was focused on computer science and a lot of about algorithms, optimizations and stuff. And I'm trying to use the same approach across my life, even in the business processes as well. And exactly as I mentioned before, that pattern about even gathering reviews from audience, you need to optimize this process too. So that's probably what I tried to do in the game development too. And that's also true about ā development and optimizations, FPS, the development features, game mechanics, and also user experience.
Amit Netanel (1:02:41)
Do you talk more about creating systems to make stuff more optimized or keeping it in mind in general during the development?
Ivan Murzak (1:02:47)
Both. ā Like both. So ā first of all, the workflow for humans, which today's slide is mostly become workflow for agents. ā So it should be optimized ā to do the job faster. like if human can operate faster, the job is going to be done faster and the project is going to be done faster. So that's one optimization important part. ā If... ā
Yuri Sokolov (1:03:11)
Mm-hmm.
Ivan Murzak (1:03:19)
but that's workflow for humans or agents. If to talk about the game design and the game architecture, if the architecture is simple enough and flexible enough, that's also going to optimize the process a lot. So you can achieve the same result faster or you can add another feature faster. So it's also important. ā And also, always need to measure like how much resources do you have? I mean, I'm talking about my experience. So if you're a huge studio,
Yuri Sokolov (1:03:47)
Mm-hmm.
Ivan Murzak (1:03:49)
Of course, you can do some expensive operations. For example, there are companies who gather playtests data from people and they pay about $100 an hour each player. So if you want to have thousands of players, you would need to pay plenty amount of money for just one shot playtest for some audience. And then they can select the target audience for you. yeah, it's pretty expensive process. ā So yeah, like need to choose right tools for right budgets, optimize the processes. And that's my pattern across the life, like to optimize everything. And by the way, falling back to the first question you were asking me at this video, that was about my favorite game. no, it was the game what I'm playing recently. But ā probably one of the most favorite game to me, it's Factorio, because that's the game about optimization and everything.
Amit Netanel (1:04:55)
Yeah, guessed as much. Did you happen to read the development log for Factorio? The developer put lots and lots of blog posts about the actual development of the game. And it's written like it's indistinguishable from what you do in the game. OK, you had to build lots of systems. It's custom, mostly custom. Right? So.
Yuri Sokolov (1:04:57)
Yeah.
Ivan Murzak (1:04:57)
Yeah. Mmm.
Amit Netanel (1:05:23)
First of all, I think it's write down your rally. And I totally understand why you are drawn to it because it's a problem to be optimized. And if your mind works in ways that you want to see stuff resolved, it's an itch you have to scratch. Like you have to make it better somewhere. I can say that ā for me, it's workflows.
Ivan Murzak (1:05:44)
Yeah. Yeah, and-
Amit Netanel (1:05:51)
Like if I have to do something manually in the workflow, I can just set aside all my work and work for one day, or it's getting less and less than that because AI agents are really good at this specific thing. But to automate that click, I have to do. Because it stretches an itch.
Ivan Murzak (1:06:10)
Yeah, yeah, I definitely agree. Yeah,
Yuri Sokolov (1:06:13)
And we kind of slowly drifted
Ivan Murzak (1:06:14)
I definitely agree. Sorry, go ahead.
Yuri Sokolov (1:06:17)
towards AI. And this is a good topic specifically to talk with you because you are maintaining, think, if I'm not mistaken, the biggest, the most popular open source MCP server for Unity right now. Is it the most popular?
Ivan Murzak (1:06:37)
Depends how to measure. If to measure by amounts of downloads, yes. If to measure by amount of stars on GitHub, no. It's second.
Yuri Sokolov (1:06:46)
It's second after Bezzy. Bezzy is it called Bezzy?
Ivan Murzak (1:06:49)
No, no, Bayesie is not open source. It's not on the GitHub. And we actually don't know the amount of downloads for Bayesie, so we cannot even calculate who's first. But this is in comparison to Coplay.
Yuri Sokolov (1:06:52)
Okay. Yeah, yeah.
Amit Netanel (1:07:02)
Hmm. Okay. Yeah.
Yuri Sokolov (1:07:03)
ā OK. Yeah. I saw them. By the way, how did you come to this? How did the project started?
Ivan Murzak (1:07:15)
Yeah, it started at some point ā where I just tried to use AI with Unity and I just bumped into a problem. AI ā cannot do much because Unity has custom formatted files, custom systems, and even if AI is going to modify something, it usually tries to write a C-sharp script.
Yuri Sokolov (1:07:38)
Mm-hmm.
Ivan Murzak (1:07:45)
then I need to manually open Unity, it's going to recompile it, and maybe that script is to be successfully compiled and done something. Which is not a scalable solution and still needs a human for almost each operation to be there doing clicks, which is a very bad approach. And I guess started to learn about MCP at that point. Right now it's actually less about MCP, it's more about CLI, but I can talk about that later.
Yuri Sokolov (1:07:52)
Mm-hmm. Mm-hmm.
Ivan Murzak (1:08:15)
So at that point, I figured out how to use MCP protocol to get everything connected. It was hard at the start to connect it with Unity because Unity is actually a dedicated application where we do not have the full access into. So that was a pretty interesting challenge. ā But I saw a very similar solution in Blender. So it was at that time.
Amit Netanel (1:08:32)
Mm-hmm.
Yuri Sokolov (1:08:33)
Mm-hmm.
Ivan Murzak (1:08:45)
MCP for Blender, which worked ā like internal plugin into Blender. And then that plugin exposed the data to something else. I don't know the details how exactly it was implemented. ā But I found ā from Microsoft, it was a technology. It was an SDK for MCP protocol, which supported both client and server. But I needed just a client, just a server, sorry.
Yuri Sokolov (1:08:50)
Mm-hmm.
Ivan Murzak (1:09:13)
which I did try to use and I decided also to use SignalR for pretty quick communication between Unity and Server. Server worked like a dedicated instance and it is not sensitive to Unity Domain Reload, which is, I would say, a good approach in comparison to what Unity was done with their MCP because they...
Amit Netanel (1:09:21)
Hmm.
Ivan Murzak (1:09:42)
put it MCP runtime into Unity domain, which means as only AI gonna do any modification to C sharp code, you're gonna lose connection to Unity and you would need to restart the whole session in AI agent, which doesn't have sense.
Yuri Sokolov (1:09:45)
Mm-hmm.
Amit Netanel (1:09:45)
Mm-hmm. Yeah, all the domains are going to ā basically dispose. And all the runtime state is going to reset. Quite terrible.
Ivan Murzak (1:10:01)
Yeah.
Yuri Sokolov (1:10:02)
All the statics will clean up. Yeah.
Ivan Murzak (1:10:05)
Yeah. Yeah, and because of the MCP protocol, how it works under the hood, it doesn't allow to simply restart the session. So as long as the server is dead and restarted, your connection is dead too, and it's not going to be restored. So you need to just close your AI, open it again with brand new session, and only then continue, which is not scalable too. So it's not going to work. ā but that's about Unity official MCP. In my MCP, the server is decoupled from Unity. It's pure .NET ASP.NET Core project, which works better. Yes.
Yuri Sokolov (1:10:47)
It's a separate process, it still has to communicate with Unity. Basically, I assume you have some editor scripts, some code built into Unity that knows how to do stuff, and your server that's communicating with LLM agent is kind of triggering those stuff in the Unity, right?
Ivan Murzak (1:11:14)
Yeah, exactly. So the server is actually empty. It has nothing. It works only like ā a proxy. ā
Yuri Sokolov (1:11:24)
Unity AI did the same thing, by the way. If you're taking a look at their package today, when you're opening Unity, when you're opening the editor with a project that has the Unity Assistant package, what it does, it installs a binary. There is a binary inside a project that installs the binary, and then internal scripts, editor scripts, are connecting to the binary and the
Ivan Murzak (1:11:45)
Hmm.
Yuri Sokolov (1:11:53)
this binary is the server. basically they did a similar thing, but they pulled a unity thing. They are doing it internally for their own project. So they can do what you cannot, what nobody can because you don't have an access to the source code. They're putting stuff internally. It's working like magic. So... for you in order to install your MCP or any other MCP solution, you need to go and do a lot of clicks. Because Unity has ownership of their own engine, they can do it with no clicks at all. It's working like magic. I would say that it's working like magic, but I won't. It installs like magic. By the time we're releasing this video, I think I already released a video on my take on Unity AI. So I won't spoil here if not, but let's wait and see. ā But yeah, but Unity MCP.
Amit Netanel (1:12:58)
Yeah, it's probably already known. But it will be interesting to see because you do need a subscription for Unity AI. It would be really, really you don't need to pay to use the MCP.
Yuri Sokolov (1:13:10)
Not to use the MCP. Not to use the MCP. No, no, No, you don't need to pay to use the MCP if I'm not mistaken.
Ivan Murzak (1:13:17)
Yeah, MCP is free because it doesn't make AI actions. You need to have a dedicated AI to use MCP together in pair. ā But talking about the...
Amit Netanel (1:13:29)
OK, so what I was going to say is that maybe we'll know how many of you listeners kept your AI free subscriptions for two weeks, because I'm not going to renew mine after playing around with the Unity Assistant yesterday. ā But ā different strokes for different folks. So it will be probably interesting to see it like a month ahead or two weeks. Yeah.
Yuri Sokolov (1:13:55)
But it's a separate topic. We're currently in the world of capabilities, not the assistant itself. In the world of MCPs, skills, CLIs. So basically they did a similar thing to you, which I think is only logical. And we talked about it a little bit before recording that when I said that I think one of the issues with the assistant itself that Unity developed is that it lives inside Unity's domain.
Amit Netanel (1:13:58)
Yeah, let's not go into it right now.
Yuri Sokolov (1:14:25)
And while the serp-
Ivan Murzak (1:14:26)
and mcp too or did you mean mcp they just moved it out from unity because when i checked okay that's good
Yuri Sokolov (1:14:32)
MCP they moved out. The MCP is out. They are actually installing the binary. So there is a separate binary that runs while your Unity is running and it communicates with. So they have another issues with that with, for example, from my experience of using when they released it in early beta, that when they, I tried it the moment they released. ā release the MCP. And from my experience was I had to babysit it. So I would do a prompt and it will go to the MCP and I don't know, move a game object around and then make a screenshot, move an object around once again. And then it would get stuck. It would get stuck for, I would go to it. lunch, hoping that when I'm coming back, I will see a job done. And I'm seeing that my cloud is stuck for, I don't know, 40 minutes, 50 minutes on the same invocation. Then I started digging and apparently the MCP protocol does not support timeout. There is no such thing as a timeout in the protocol itself. So
Ivan Murzak (1:15:55)
ā yeah. No, no, no, not true. It's supported and I use it for long running operation. ā Official UNAMSPE probably just don't support it, but AMSPE protocol supports it.
Yuri Sokolov (1:16:10)
No, I dug around in the protocol itself. There is a timeout for an individual operation.
Ivan Murzak (1:16:16)
No, ā it is not a timeout. It is a response that could be sent back to MCP client, which in your... Yeah, and that response is ā like a command, like, on. This process would need to take time, just hold. And the AI gonna hold.
Yuri Sokolov (1:16:25)
Exactly. No, this, this understandable, but if, if the other end crashed while the connection is maintained, the MCP protocol does not have a way of ā interrupting a request by itself. basically if Claude or cursor or whatever LLM environment you're using, if, if Claude, for example, decides that he sends a request to an MCP server, cannot by himself decide that E interrupts this request. This is what I found on the internet. So basically there is no built-in mechanism of timeout, internal timeout. So what I saw with Unity MCP is that the server is crashed somehow, maybe not crashed, crashed, maybe the connection maintained. I haven't debugged it. What?
Ivan Murzak (1:17:09)
All right. Yeah. tucked.
Amit Netanel (1:17:28)
Mm-hmm.
Ivan Murzak (1:17:29)
It's kind of like stucked, not crashed.
Yuri Sokolov (1:17:30)
Yeah, yeah, yeah, it's stuck and does not return any response. Cloud could see it 40 minutes, 50 minutes just.
Ivan Murzak (1:17:36)
Mm-hmm. Yeah, it's a mistake of the MCP server in this case. MCP server, it's the same thing like a classical server. It has the setup of like timeouts, errors, all of that stuff. it's just how the server is going to handle that. That's how it's going to work on the client side. So the server has a timeout which could be set hardly for everything, which may have a positive and negative
Yuri Sokolov (1:17:44)
Yes, of course.
Amit Netanel (1:17:45)
Mm-hmm.
Yuri Sokolov (1:17:52)
Mm-hmm. Mm-hmm.
Ivan Murzak (1:18:09)
ā result. For example, if you have in MCP server many tools that would need to have a long process time and you don't have time to implement it properly because to implement that long running tool it's not actually easy. You need to do lot of actions. So usually people just set a very huge timeout like hours or maybe more to just to fix the problem. But that's not a solution. The timeout should be short.
Yuri Sokolov (1:18:24)
Mm-hmm. Mm-hmm.
Ivan Murzak (1:18:37)
I would say like five minutes because sometimes Unity may take five minutes easily for such a heavy operation like make a build or something. ā
Amit Netanel (1:18:48)
run all the tests in the project, which is the first thing I did with your MCP, by the way. had to... It worked great, but first time I ran it, I ran into the timeout of the default timeout of 60 seconds. But then I asked for five and worked pretty well. So it wasn't an issue.
Ivan Murzak (1:18:55)
How did it work by the way? Nice. Hmm. okay, that's good. Yeah, so ā if you used skills and CLI, ā the CLI is actually a much better approach, much more solid approach. And I'm going to get back to the CLI's sooner, but let's finish the issue with timeout. So yeah, timeout is pretty complex thing with MCP protocol itself because of the protocol. So there are two ways. There's the global timeout and there is
Yuri Sokolov (1:19:20)
Mm-hmm.
Ivan Murzak (1:19:38)
a way to notify any tool from the MCP server side, like, right, AI, hold on, this is still going, just hold, don't cancel it. And AI gonna follow that. Yeah, no, it's not even ping, it's just one time command that's gonna be sent and that's it. Maybe somewhere deeply at the low level of the MCP protocol, something gonna be like ping pong time to time, I'm not sure.
Yuri Sokolov (1:19:49)
Ping.
Ivan Murzak (1:20:05)
But the MCP SDK level, there is nothing like that. You don't need to send any stuff to client. So yeah, that's probably what's the mistake. But then, ā that's we were talking about Unity official MCP. But there is also another site, which is site of clients. It could be Claude, could be Carcer, Compiler. And what a surprise, all of them implement MCP protocol differently, very differently actually. And it's a very common scenario when one MCP is to work with one AI agent, but not going to work with another one. And that's because of that. ā So Anthropic, they're of like inventors of this protocol. So they have permission to change, the authority to change it, to improve it, to make versions, et cetera. ā And right now, and implementation as well, they do it properly on their side.
Yuri Sokolov (1:20:39)
Mm-hmm. Yeah. The Authority.
Ivan Murzak (1:21:02)
For example, in comparison, the GPT models, even the model itself, has some strange firewall that goes against the MCP protocol. In the MCP protocol, there is a JSON schema that dictates to AI what the data model expected. The JSON schema has a standard which supports some symbols. But for some reason,
Yuri Sokolov (1:21:24)
Mm-hmm.
Ivan Murzak (1:21:31)
GPT model has internal firewall and it doesn't matter what agent you're gonna use but the model itself is gonna reject it. It's gonna reject the msip and the JSON.
Amit Netanel (1:21:40)
Hmm. It doesn't adhere to the data. It just... Yeah.
Yuri Sokolov (1:21:43)
Do you know what specific symbol we're talking about?
Ivan Murzak (1:21:47)
square brackets, when we're ā to implement array type, let's say like integer and square brackets, like an array, that's it. It's going to be rejected by the server, but by the model. And when the tool is rejected, the entire MCP is rejected and somehow the model rejects like the whole request.
Yuri Sokolov (1:22:12)
Mm-hmm.
Ivan Murzak (1:22:13)
So you cannot even talk to LLM anymore because the LLM rejects it at this level. And that's a pain. In the same time, it works with other models. It works with Gemini. It works with any anthropic models and other models too. Just GPT has this problem. ā Also, so it's entire zoo right now of all of this crazy stuff is going on.
Yuri Sokolov (1:22:29)
Mm-hmm. It reminds me the early days of browsers when, you, if you ever developed a front end application for a browser back in the days when the internet Explorer was a thing and you had to optimize, okay, I need to optimize for a I E six, seven, eight and Firefox and opera and Google Chrome and whatnot. And every browser would.
Ivan Murzak (1:22:45)
Yeah, exactly.
Amit Netanel (1:22:52)
Explorer. Yeah.
Yuri Sokolov (1:23:04)
would take the same ā protocol, I want to say, the same language, the CSS, and interpret it differently. You want to place a div in the center of the screen and in every browser it made differently. Somewhere it's margin zero auto, somewhere it's something else. You want to make round edges on an element. you know what? Internet Explorer does not support that, but there are specific in Internet Explorer 8, you can add those specific commands, which you like, you already know how to do that. Why not to use the general protocol? So yeah, I understand. I completely understand the zoo you're talking about. I can imagine it even though I haven't worked with this specifically, but with we're in early days.
Ivan Murzak (1:23:36)
Yeah.
Yuri Sokolov (1:24:02)
of a technology that
Ivan Murzak (1:24:03)
Yeah, exactly. I'm saying the same thing and I call it high turbulence time in AI, MCP, agents, all that stuff. every company tries to make some like to improve something. And sometimes they do very strange decisions. I'm not saying bad because who knows, maybe one of them is very right, actually, but we just not yet understood it. ā
Amit Netanel (1:24:11)
Go.
Yuri Sokolov (1:24:26)
Mm-hmm.
Ivan Murzak (1:24:30)
But we have a very high turbulence time right now, and it's very hard to support everything at once. And one more example, Copilot, not a model, I mean, just MCP client, AI agent, Copilot doesn't allow any tool that has no arguments. So let's say if you have a tool to launch Play Mode in Unity and it has no arguments, just empty function, it's just going to do one thing.
Amit Netanel (1:24:57)
Mm-hmm. Mm-hmm.
Yuri Sokolov (1:24:59)
Mm-hmm.
Ivan Murzak (1:24:59)
it's going to be blocked by compile it because it's not out. You need to pass at least something, at least integer X or string empty or something. It should be something.
Amit Netanel (1:25:02)
Yeah.
Yuri Sokolov (1:25:06)
Yeah.
Amit Netanel (1:25:08)
Amazing.
Yuri Sokolov (1:25:08)
Enter play mode parameter please. Burn those tokens, burn those tokens with please.
Amit Netanel (1:25:11)
Please.
Ivan Murzak (1:25:12)
Please. Yeah. Yeah, something like that. Yeah, and tokens are to be burned for that for nothing because you just need to put some like five tokens for nothing, at least to make it work. So yeah, it's a bit annoying. And then, yeah, and let me switch to the next evolution of all of this. It's not just about Unity MCP, my Unity MCP, mean. It's about like every AI system right now.
Yuri Sokolov (1:25:30)
Yeah, it's
Ivan Murzak (1:25:47)
And in the close feature, what the pattern works much better. But first of all, need to classify. There are two types of resources that AI would need to have access to. The first one is remote resources, which is like somewhere else, not on your computer. And another one, which is accessible locally here on your machine, even if that's a dedicated process like Unity. And sometimes even remote resources is going to be accessible through that approach. And I'm talking about CLI. So MCP, this is only like a protocol to... It works actually in a very simple form. It's a standard that tells AI, like, all right, AI, if you want to make an action, just create this text in this format with these commands, and I'm to like run this action for you. Just give me this message. And when this command is going to be executed,
Yuri Sokolov (1:26:37)
Mm-hmm. Mm-hmm.
Ivan Murzak (1:26:46)
ā it's going to be some response sent back into AI context, which is, yeah, in the specific format too. So AI just understands the format, which is just pure text, nothing else. And that's how it works. ā But there are a couple of caveats. One of them, it's like this zoo and mess and randomness of different AI agents implementation of the MCP protocol and different MCP servers, et cetera. It's very messy right now.
Yuri Sokolov (1:26:50)
in this format.
Amit Netanel (1:26:51)
in this form.
Yuri Sokolov (1:26:59)
Mm-hmm.
Ivan Murzak (1:27:15)
The second thing, that's a very important point, any response from any tool is to be injected into AI context. Very often people don't want the whole thing because it could be too heavy and you don't need all of that. ā And both of these problems...
Yuri Sokolov (1:27:26)
Mm-hmm.
Amit Netanel (1:27:27)
Mm-hmm.
Yuri Sokolov (1:27:35)
Can't you control that on the MCP server side? What you're returning so not...
Ivan Murzak (1:27:40)
ā Yeah, yeah, yeah, you can, but MCP server is a dummy subject. It's only like executor of commands. ā intelligent is an AI, not MCP server. So AI gonna decide like what I want, how I want to send the data, what I need to take. For example, ā AI would like to get resources from Google search.
Yuri Sokolov (1:27:58)
Yeah, yeah.
Ivan Murzak (1:28:11)
If that's going to do that, it's going to take the whole page, for example, if not to use some very custom tools or services, just to blindly open endpoint of Google, it's going to take the whole page, which is going to be a lot of HTML, JSON, et cetera. So all of that is not needed. Of course, we can develop a smart, very complex tools with tons of
Yuri Sokolov (1:28:25)
Mm-hmm.
Ivan Murzak (1:28:38)
parameters that's going to filter everything out. You can control that, can control this, but that's development time. AI agents already have actually very well tools for such a problem, but instead of injecting, I mean, to let them work, you just need to save that output like a file. And this is tiny, tiny difference. ā
Yuri Sokolov (1:29:02)
Mm-hmm.
Ivan Murzak (1:29:06)
But when that data is saved like a file, AI can run another command, another tool, which is called find or grab, which can find any data, like any line of the data in a huge files in the local file system. That's the only one rule. So what CLI allows to do, you can run by very small amount of tokens, you can run a single command line in CLI, the CLI,
Amit Netanel (1:29:16)
Mm-hmm.
Yuri Sokolov (1:29:16)
Mm-hmm. Mm-hmm.
Ivan Murzak (1:29:35)
going to give you back the output, which by using CLI arguments, you can redirect to a file easily. AI can do that so easily by just adding one more token with double arrows to the right. And then it's to use find or grab to find exactly what's needed. And even if that find fails, AI can try again because the file is still there. And it works much cheaper.
Yuri Sokolov (1:29:43)
Mm-hmm. Yeah, yeah.
Ivan Murzak (1:30:03)
AI context not gonna grow too much because you don't need the whole thing to be there. So it's very efficient. In the same time, the CLI itself has no connection issues. It just rocks solid, very strong.
Amit Netanel (1:30:06)
Mm-hmm.
Yuri Sokolov (1:30:08)
Yeah.
Amit Netanel (1:30:09)
Yeah.
Yuri Sokolov (1:30:18)
Yeah, because it works only when you invoke it.
Amit Netanel (1:30:22)
Yeah.
Ivan Murzak (1:30:23)
Yeah, I mean, it still has the server, it still has everything else. The only one thing that's gone is MCP protocol. It still has the MCP server, which does the connection. I'm talking about my case specifically about Unity, MCP for Unity. ā So MCP server is still running and CLI just communicates with the server by using REST API. That's it. And the server...
Yuri Sokolov (1:30:30)
Mm-hmm. So basically you created your own protocol instead of an MCP for communication to save on those tokens.
Amit Netanel (1:30:54)
Yeah. And by the way, that really reminds me of how tools like ConfiUI and end-to-end works. Because they allow you to basically make a chain of tools that return different types of outputs and put that into context after it has been extracted. ā Many people use ConfiUI to generate output with one tool. then save it locally in the context of ConfUI and then use that as input for another agent. That agent finishes the job, ConfUI saves the state and just passes it around. It will be way more comfortable if the LLM could do it itself, right? Installing ConfUI is easy enough, but it's another tool in the stack. By the way, I saw an ad on LinkedIn for a ConfUI developer.
Ivan Murzak (1:31:24)
Hmm. Hmm. Nice. Yeah, absolutely.
Amit Netanel (1:31:52)
Like not someone who will develop Conf UI, right? It's open source. For someone to implement pipelines in Conf UI. So the problem exists, right? There's demand for the product.
Ivan Murzak (1:31:57)
Yeah, like pipelines. Absolutely. Yeah, it's pretty complex. I used config UI for a couple of weeks, like full time. And yeah, like it's pretty complex. There was so much stuff to learn there to make it efficient, to make a huge optimized pipelines and to achieve a great results. I had an idea to generate all the assets for my future game, what I was trying to make this config UI with some specific style. It was actually hard. I didn't achieve that properly.
Yuri Sokolov (1:32:33)
Yeah, yeah. People study it. People currently earn money on teaching how to create nodes. And by the way, I'm speaking from a perspective of engineer and also a user, not a developer of AI tools, because I never worked in a development area of this specific area. What I'm thinking of when you're saying, I want to save on a context. I'm not, I think there are two issues, right? Correct me if I'm wrong regarding flooding the context with tokens. The first issue is that the more tokens are in the current context, the dumber your LLM is. So you need to stay in the smart zone. You don't need to fill all the million tokens. The second issue is the price. So the more tokens you use, the more costly it is. But, and here's my bad. And again, feel free to stop me and correct me wherever you feel the correction is needed. Because again, I never developed in this area. I'm just thinking, thinking out loud. So let's assume I'm using some kind of subscription like cloud code. subscription that I'm paying 20 or 100 or 200 bucks. And the price, the cost is not an issue for me per se, because I have a subscription, I'm not paying by the token. I'm left with one issue, the context itself, the flooding of the context. So many, many AI solutions out there like Cloud Code or Cursor, Windsurf. They have sub agents. So what if a theoretical, if I would every, every tool invocation, instead of using grep to, find something specific, specific, like I have to think beforehand what I will need. I would spawn an agent with the data of what I'm looking for. This agent will go. It will fill his context with the whole response, find the relevant things I need, strip everything and return to the main agent only the required data. Would this work?
Ivan Murzak (1:35:14)
It would work. It would work. And this is one of the approaches which needs to use smartly. is... ā So if to make step back to a classical computer science ā task and let's compare, you have a collection of data ā and you can store it in different ways. You can store it like an array or you can store it like queue or like linked list or like tree or like graph or et cetera.
Yuri Sokolov (1:35:27)
Mm-hmm. Mm-hmm. Mm-hmm.
Ivan Murzak (1:35:43)
This is the same thing. You have ā data and you can handle it differently. You can handle it like by using find or you can handle it by using a cheap brand new context window where you're put all the file into that context and just simply ask that context like, right, I want that. Where is it? And it's gonna give it to you. Yeah.
Yuri Sokolov (1:36:07)
analyze, analyze and give me the relevant data.
Ivan Murzak (1:36:11)
Yeah, it's very similar to REC. There are a couple of different approaches how to implement REC right now in AI systems. yeah, retrieval, augmented.
Yuri Sokolov (1:36:19)
Rec.
Ivan Murzak (1:36:28)
I forgot the last word, sorry. ā R-A-G, R-A-G, it's a rack. So it's actually a very simple ā idea. It's like to let AI access to some knowledge beyond your current context window. ā Let's say you have a documentation about your project which contains billions of words.
Amit Netanel (1:36:32)
Hmm?
Ivan Murzak (1:36:57)
you cannot just put it into your context because it just, I mean, too expensive and it's not even enough context in the window. So it's just API was gonna let AI access to that files, to the documentation in the smart way. And that smart way, it's so depends on the system, on the data, how to implement it. ā There are some linear approaches where you just find
Amit Netanel (1:37:01)
Mm-hmm.
Ivan Murzak (1:37:27)
by some, I don't know, by some indexes and using just pure code or something like that. Or there are some algorithmic approaches where you're to use BM25 algorithm to do syntax match or even to do vertex embedding databases where you're going to like index the whole file in the vertex dimensions and then save it in the heavy database that may be measured like...
Yuri Sokolov (1:37:33)
Mm-hmm. Mm-hmm.
Ivan Murzak (1:37:54)
thousand more times in memory than original files. I mean, it's pretty expensive in the context of file system. ā Or you can just put the whole thing into multiple different agents, constructing like a pyramid. So let's say you have a thousand of files. So each of those files are going to be in some folder and that folder is going to be in another folder. So you can like
Yuri Sokolov (1:38:08)
Mm-hmm. Yeah.
Ivan Murzak (1:38:22)
put each file into dedicated Heiko model. And so each of them going to know what's there. But then on top of that folder, you can make another Heiko model that's going to just know the headers of each files. kind of, yeah, so it depends how. There are so many approaches right now. none of them is yet, I would say, standardize it to something like the best one. People are still playing with that. ā
Amit Netanel (1:38:27)
Mm-hmm.
Yuri Sokolov (1:38:34)
So you're just inventing managers. Mm-hmm.
Ivan Murzak (1:38:52)
But yeah, the final goal is like to, I mean, if you're talking about REC, is to provide knowledge for AI in one way or another, but it should be cost efficient and fast. ā That's about REC. asking, I mean, your original question about that system, yeah, it's like just one of the ways how to do that. And even in runtime, I see pretty often people use this approach for some tricky tools.
Yuri Sokolov (1:39:11)
Mm-hmm.
Ivan Murzak (1:39:21)
When you don't know what to expect from that tool, you can just put everything into Haiku ā and let it handle it. And then just...
Yuri Sokolov (1:39:24)
Exactly. when you want something analyzed more intelligently than just bunch of if else, that's exactly the goal that I was aiming to when I'm saying, okay, if you have a structured output, so you gave an example with Google page, Google search page, let's assume we fetched the Google page. So the tool now, for example, the tool is dumb. bunch of if-else loops and stuff, it can get a request to fetch a specific page and then it returns an empty HTML. And with the approach you described, you just put the HTML into a file and the LLM does a grab on because it's looking for some specific pattern that it knows beforehand it should look for. But let's assume that on the Google page, what I'm looking for is to find, you know how Google sometimes puts those little games on their page, on their search page based on a ā holiday in your country or something like this on the 4th of July, something and I don't know, Halloween something. So you never know where to expect it. In this situation, it wouldn't be, ā you wouldn't expect a structured response. You want...
Amit Netanel (1:40:35)
Doodles, the Google Doodles.
Yuri Sokolov (1:40:56)
something more intelligent to go over the HTML of the file and detect this thing. So in this
Amit Netanel (1:41:01)
But this task is classifying what this is.
Yuri Sokolov (1:41:07)
Yeah, yeah, to run it through a classifier. So in this approach, I think it would be kind of natural to spawn a sub agent, give him all of this data that he will fill his contacts, he find the relevant information, return only the relevant information to you like a grab would. And so
Ivan Murzak (1:41:30)
Yeah, this is a good approach. ā But it could be overcomplication in some environments. So it very depends on the system what we have in the project. Because you can still use your current context window to do the same thing. no, sorry. If you're talking about a huge file, yeah, it's definitely not a solution. Yeah, absolutely, for sure. Yeah. ā
Yuri Sokolov (1:41:51)
Yeah. By the way, this reminds me of... Yeah, sure.
Ivan Murzak (1:41:59)
Just one thing I want to highlight for listeners. ā These days, if we're talking about web search, ā right now it's not efficient to use ā Google requests like web page because there are plenty of tools which are polished. And this is kind of like an API. What you can use is going to provide you just pure data in the JSON or Markdown. I'm not sure. I mean, in any format, let's say I understand well.
Yuri Sokolov (1:42:19)
Yeah.
Ivan Murzak (1:42:29)
So you actually should not care what's inside, JSON or markdown, it doesn't matter. And it's much cheaper. No garbage gonna be there, no ads, no banners, nothing like that.
Yuri Sokolov (1:42:41)
there will be ads, there will be garbage because at some point those companies that provide you with this data will realize they need to earn money somehow. It's money sitting on the shelf that you're not picking. So they'll start injecting ads into those responses. There are...
Amit Netanel (1:43:00)
You know, occasionally, yeah.
Ivan Murzak (1:43:02)
It depends what to use. For example, Antropic provides with their subscription which we already pay for. So they're not going to care about that much probably at least for some time.
Yuri Sokolov (1:43:14)
You think so. When Facebook started, they also didn't sell ads, right?
Ivan Murzak (1:43:21)
Yeah, but you don't need to pay to have an account at Facebook.
Amit Netanel (1:43:24)
I don't know, Anthropic
Yuri Sokolov (1:43:25)
and
Amit Netanel (1:43:26)
just stopped me from using my subscription with my OpenClaw instance because it was draining their coffers a bit too quickly.
Yuri Sokolov (1:43:34)
But they kind of in the right here, right? So the...
Amit Netanel (1:43:38)
Yeah, absolutely in the right people are taking advantage of that quite quite heavily. ā
Ivan Murzak (1:43:40)
Yeah. Yeah, and
Yuri Sokolov (1:43:45)
Thank you.
Ivan Murzak (1:43:46)
they had it even before. They just explicitly tell about OpenClob, but they have a rule. If you use Anthropic stuff for a service, not for yourself, not for personal usage, but you do a service that runs. Even if the service runs for you, that's already a service, like independent thing, like a product.
Amit Netanel (1:44:07)
Yeah, yeah, no, I'm not criticizing the intent of that. I'm just saying they explicitly said specifically OpenClaw is it creates outages, it's ā creating a heavy load on our system. Forget about it.
Ivan Murzak (1:44:16)
Yeah.
Yuri Sokolov (1:44:21)
In their blog post they mentioned ā OpenClaw as the key ā issue, but they said it's not only OpenClaw because people using it for other things as well.
Amit Netanel (1:44:33)
Yeah, people also forked OpenClaw freely, you know, there are lots of other projects.
Yuri Sokolov (1:44:37)
Yeah, they, people extracted the key long before open claw was a thing. They extracted the key and used it in their services. were developing SAS, uh, with their cloud code subscription. I can tell you what I did at one point. Uh, I just, I said, okay, I want to play fair and square. I had an NA 10 automation.
Amit Netanel (1:44:54)
Hmm. Yeah.
Yuri Sokolov (1:45:06)
And I hated integration with other, with LLMs via API because it was costly for stupid things because I didn't have anything really useful in those things. I had my toys in N8n and I connected cloud code, which was running an actual cloud code. And the, the node in N8n was communicating with cloud, not bypassing the interface of the CLI tool. was communicating with the cloud code CLI and returning the information to me. Like, yeah, yeah, just to wrap it around. So ā it didn't work well, I must say, because it took a lot of time because each request would go through all the initialization process of the
Amit Netanel (1:45:44)
Mm-hmm. Yeah, just wrapped, just a wrapper around that.
Yuri Sokolov (1:46:04)
the whole CLI system that basically not good. ā But yeah, it was before the OpenCLO.
Ivan Murzak (1:46:11)
Yeah, there is a better... Yes, sorry, I interrupted. before, I got it. Yeah.
Yuri Sokolov (1:46:18)
It was long before I'm talking when I did this in October. So a long time ago.
Amit Netanel (1:46:25)
Yeah, eternity in agentic programming terms, basically. ā Since we're on the topic of keeping in shape, because every time you blink, a new model comes up. Ivan, you're running the, you're maintaining one of the most popular tools at least in the game dev ā community. And you're one guy that we know of, maybe there are more of you.
Ivan Murzak (1:46:26)
Yeah.
Yuri Sokolov (1:46:30)
Yeah, yeah.
Amit Netanel (1:46:54)
clones or something but ā you're just one guy you need to create the tool how do you manage that how do you manage the the repo are there any like star contributors that help you maintain it ā what weird stuff did you run into like it could be interesting to hear anything about running such a a big repo
Ivan Murzak (1:47:19)
Yeah, so I'm trying to gather as much help as possible from community. So if any one of you would like to contribute into AYA game development, please go ahead. There is a GitHub repository. It is Ivan Murzak slash Unity MCP. So yeah, people, they sometimes invent some pretty cool stuff, new tools, new solutions, new optimizations, bug fixes, et cetera. especially in the context in this zoo of AI agents, et cetera. So, yeah, it's pretty helpful. ā So, yeah, I do review what people do. I have an army of AI agents locally here, which helps me to do a lot of stuff right there with review, completion, polishing, pull requests, et cetera. So, actually, I don't have anything complex in that context ā about, like, ā people help and like contributions. ā But I have more interesting stuff in the architecture of ā the system. It's on top of like multiple projects which are connected to each other like dependencies or like included in different ways. And that system...
Amit Netanel (1:48:39)
Mm-hmm.
Ivan Murzak (1:48:46)
works pretty well, I would say, and it becomes very flexible. Even it could be ported easily to other ā game engines like Unreal or Godot. That's actually the next milestone to port it there as well. For Godot, it's extremely easy to do. and by the way, here's why. The core of this project and why it's actually become so powerful and successful
Amit Netanel (1:48:59)
Cool.
Yuri Sokolov (1:49:01)
Mm-hmm.
Ivan Murzak (1:49:14)
because I do not use hard-coded tools. Most of the stuff is extremely dynamic. So I'm fully utilizing reflection of C Sharp. ā For people who don't know what's that, it's a feature of some programming languages to let a code to get access to the code. So like the code itself can change itself in runtime and it can read write, modify, add new functions, all of that in runtime. And I utilize this feature almost fully. I do everything and give the whole access to reflection of C Sharp to AI. And that's how AI in Unity can work with any entity you're ever going to have in Unity. Even if that's your custom component, even if that's a custom plugin you just installed from Asset Store. it doesn't matter, it sees everything. ā Even if Unity version gonna be upgraded, API gonna be changed, it's still gonna work very well because reflection just gonna take the fresh data models, fresh fields and properties and it's gonna work. ā So just because of this...
Yuri Sokolov (1:50:26)
Well, it kind of, it kind of, ā can break because, ā reflection fetches. No, unless you're doing a lookup, a full lookup every time. Then it's not, but it's still can fail because if they're rewriting their API, they're removing some property that you're relying on that it can, it can happen.
Ivan Murzak (1:50:42)
every day. Yes, sounds fundamental. Yeah, that's true. I usually don't hardly rely on any property. And I have the system similar to JSON serialization, but just in this context, it is reflection serialization. ā It's the system of serializers. So any custom tricky data model, like let's say, transform. Transform is a tricky data model because Unity under the hood injected many
Yuri Sokolov (1:51:07)
Mm-hmm.
Amit Netanel (1:51:18)
Mm-hmm.
Ivan Murzak (1:51:26)
native C++ method which are covered by C sharp level but you cannot easily fetch them because Unity may even crash. and by the way ā while I was working on it I probably invented the way for Unity technologies how they can test Unity editor ā so I can easily by single function run access to each property in each ā data model in Unity.
Yuri Sokolov (1:51:28)
Mm-hmm. Mm-hmm.
Ivan Murzak (1:51:56)
And very, very likely it's going to crash almost any Unity editor version, like entire editor just dies. And it's very easy to run this test. So if Unity at some point can integrate it, they can easily cover a lot of bugs in editor. ā So yeah, that's why I do this for serializers or converters ā for each specific tricky data model like transform.
Amit Netanel (1:52:01)
Mm-hmm.
Ivan Murzak (1:52:22)
In Transform, you cannot get access to some properties. I don't remember which one, because some is not going to work. Or you're to fall down in infinite recursion, which also should be covered. Infinite recursion itself also fixes at the core level. You don't need to have a custom converter to fix that. But there are some properties that should not be touched. For example, Unity doesn't respect much ā base programming principles.
Yuri Sokolov (1:52:33)
Mm-hmm.
Ivan Murzak (1:52:52)
And there are even some properties which if you're to get, they're going to set data. So you should not even touch them at all because they're going to modify the data even by getting data. And that's also covered by that. And that's actually very simple to cover because the whole Unity infrastructure has about 20 data models like that. And that's it. The rest of the system is fully covered.
Yuri Sokolov (1:52:58)
Mm-hmm. Mm-hmm. Mm-hmm.
Amit Netanel (1:52:59)
Hmm... Wow.
Ivan Murzak (1:53:20)
because ā they were extended from those data models or using them internally. But just because I already covered the base class or structure, that's it. It's become very flexible. So if Unity and Unity actually did it recently, changed the very fundamental thing, any component in Unity had any object in Unity, it had instance ID, which I rely on in... I use it like an ID of any subject in memory, but they replaced it with entity ID. It's more closely to new Unity ECS system, entity component system.
Yuri Sokolov (1:53:58)
Mm-hmm. Yeah, yeah, because they're migrating to ECS and everything.
Amit Netanel (1:54:05)
Yeah.
Ivan Murzak (1:54:07)
Yeah, they
Amit Netanel (1:54:07)
With unity 6. Yeah.
Ivan Murzak (1:54:10)
tried to make it natively in Unity. And that was the first time I got ā a real ā issue to resolve. But it was resolved pretty easily. I just wrapped the object, which is ā one data model, and there are about five more data models were also involved into this refactoring. That's it. So ā the whole system was... easily in one day. It was refactored to this thing and it works very stable right now. ā Another issue I was fighting with, was the problem that Unity doesn't support Nuget registry, ā which is very helpful actually for any .NET project because it has, it's like NPM but just for C Sharp stuff. ā So...
Amit Netanel (1:54:49)
Mm-hmm.
Yuri Sokolov (1:54:49)
Mm-hmm.
Ivan Murzak (1:55:02)
I need some DLLs from there. But at some point at Unity 6.3 I believe, Unity injected one of those DLLs into the Unity by default.
Yuri Sokolov (1:55:12)
Let me guess, Newtonsoft. Newtonsoft.json.
Ivan Murzak (1:55:16)
ā no. So something else.
Amit Netanel (1:55:17)
No, actually, Jason is presented in Unity via a package. Yeah.
Ivan Murzak (1:55:23)
System Text JSON.
Yuri Sokolov (1:55:25)
System Text Jackson.
Ivan Murzak (1:55:27)
Yeah, it's like a competitor. Newtonsoft and System Text JSON, they both do the same thing. But yeah, from Unity 6.3, I guess, they injected System Text JSON, which I rely on. And at that version, it was a conflict. I mean, you can have two DLLs of one thing in one project. So I...
Yuri Sokolov (1:55:47)
Mm-hmm.
Ivan Murzak (1:55:51)
I needed it was hard to refactor, but that's actually hard by default. mean, Unity still doesn't support Nugget as a dependency to resolve the dependencies and that's not cool in general. So I needed to develop my own custom installer and dependency resolver on top of Unity with respect to existing DLLs, with respect to any Unity version it's going to be. So right now how it works. Anytime when you install... my Unity MCP into any Unity project with any Unity version, it's going to first of all check what DLLs you already have, what the engine brings with itself. And if that's gone, it's going to be downloaded, unpacked, and installed in your project assets file locally under plugins folder. And that solution works. ā It was only one problem of migration because it was hard to develop automatic migration from previous version to this version. So people would need to restart Unity first time to resolve it and then it works well. And in the future it's gonna upgrade next time well too. But yeah, it was some complexity here.
Yuri Sokolov (1:57:05)
So I have used your MCP quite a bit. I told you already that I thought my students at the university, how to use it. If I can have one ā criticism about it, it's the dependency ā system. for example, you're bringing the R3 onboard via the Nougat. The R3, I assume, because I never used the MCP in a production work, I used it for my internal tests and cases, so I didn't bother to explore. But I assume that the R3 library is not marked with ā editor only, right? When I'm bringing, so it's gonna go unless... unless I'm building with the auto CPP and it will strip it and it's gonna go with me to my runtime. And this is the main criticism I have of your package, all the dependencies that come in with it, things that let me put it blunt, like if I'm ā a whiny customer, let's go it like that, I'd say, I didn't ask for it. I just wanted my red button that do stuff and I didn't want it. So why, why, why do you need our three for
Amit Netanel (1:58:35)
you
Ivan Murzak (1:58:40)
Yeah. Unity MCP works in runtime. And I have a video on my YouTube where I made the build of chess game and I opened CloudCode, connect to the game, which is not anymore Unity, just pure build exe file on Windows separation system. And I asked Cloud to play the chess game for me by one character and by another character. So Unity MCP works in runtime in your game.
Yuri Sokolov (1:58:51)
Mm-hmm.
Amit Netanel (1:59:03)
Nice.
Ivan Murzak (1:59:10)
You can define custom list of tools. You can use any data model you have, even your custom classes, structures, doesn't matter. Just because of reflection, it's going to be parsed, JSON schema going to be generated, and AI going to recognize it well. If only it's not GPT model because of that symbols, square brackets. So don't use arrays for GPT models and it's going to work. ā And then, so yeah. AI can get data, set data by using that tools. And by the way, because of reflection and using different attributes, you can also even enhance your data models. ā For example, if you have a chess game, you have a class for lines and rows of each cell on your board. So you can explicitly add description attribute to that array and you can explain to AI.
Yuri Sokolov (2:00:00)
Mm-hmm.
Ivan Murzak (2:00:08)
like in plain text. Yeah, like what's that? Like you can put a sentence or two or even make a reference to another variable. ā And you can do that for any variable, doesn't matter how deep you are in data model, it's still gonna be there. It's gonna be injected into the JSON schema and they are gonna respect it. So yeah.
Amit Netanel (2:00:09)
What's that?
Yuri Sokolov (2:00:28)
But not every game will need it, right? Not every game, many people would use like me, for example, I'd use it to build, to delegate some part of the work to the AI, but I don't really need the dependencies in my build. So is there a way, by the way, to disable it kind of like, I don't need this part of the tool, I need only this part of the tool.
Ivan Murzak (2:00:32)
Correct. Yeah, you're absolutely right about this issue. So at early start when I designed this project, it was the purpose to let it work in runtime. And I achieved that goal. But then I realized, actually, I had no idea, like a lot of people are to have some issues with that because of a couple of DLLs going to be injected into the build. But yeah, I feel that pain right now in community. A lot of people talk about that.
Yuri Sokolov (2:01:03)
Okay.
Ivan Murzak (2:01:23)
So I have a strategy to decouple it later. For now, it's not decoupleable. It's like one thing, one package. But I have a plan to decouple it to the second package. Kind of like it's going to be editor, Unity MCP, and runtime, Unity MCP. And you'll...
Yuri Sokolov (2:01:33)
Mm-hmm.
Amit Netanel (2:01:42)
Mm-hmm.
Yuri Sokolov (2:01:42)
It's kind of like what Unity themselves tried to do with Unity Muse and Unity whatever the hell they called it, where they separated that the Muse is to work inside the editor and then there's the second feature that lets you run it. They haven't allowed to connect external LLMs to a build. What they did, they integrated local LLM models, open weights.
Amit Netanel (2:01:48)
Yeah, yeah, yeah.
Yuri Sokolov (2:02:11)
inside your build so you can run an LLM inside a build. They would not frontier models. They basically naturally because they those models supposed to run on on on your hardware and they were not supposed to be running on mobile devices. So basically it's kind of there is a reason why it's not there anymore, right? ā But they decoupled it.
Ivan Murzak (2:02:20)
Mm.
Yuri Sokolov (2:02:40)
they had two separate solutions for that. Other than that, this is the main kind of main criticism about the package and I use it quite a lot. It helps me a lot with prototyping to assemble stuff in the scene because I like to stay where the code is. I like to write code and the more I can keep myself from moving things around in the editor, the better. If I can delegate this work to an AI assistant, it's awesome. And the tool of yours so far was the only one, ā I can't say I tried them all, right? But so far it was the only helpful. Yeah, yeah.
Amit Netanel (2:03:32)
Yeah, the most mature one, that's for sure. That's why I originally
Ivan Murzak (2:03:36)
Thank you.
Amit Netanel (2:03:36)
asked about maintaining the project, because it seems like it has every time I try to use it, it has an update, which is really cool. I like products not being abandoned. ā then you talked earlier, I like the word turbulence. Stuff happens all the time in this space. And managing it is going to be only tougher. from here. I don't see it stopping in the near future.
Yuri Sokolov (2:04:08)
Why do we
Ivan Murzak (2:04:08)
Yeah, it's still high turbulence.
Yuri Sokolov (2:04:11)
Coming to some sort of conclusion on this already long conversation, hopefully people will stay to listen because I have a blast right now. I wanted to ask you a kind of controversial question. Do you, with the age of AI upon us, with things that we, and ā specifically not talking about any controversy regarding
Amit Netanel (2:04:22)
Mm-hmm.
Ivan Murzak (2:04:29)
Sure, go ahead.
Yuri Sokolov (2:04:41)
Should I use AI or should I not? Do you still feel like a game developer when you delegate so much work to AI?
Ivan Murzak (2:04:54)
Absolutely, I do. Because the domain where you work on is still the same. no, actually not even because of that. I would like to use a comparison with a very different profession, let's say a lawyer. ā When you do some stuff like a lawyer, but you just get started to use different tools, let's say like... 30 years ago, you just used paper and pen, but then you get started to use a typing machine and then computer and maybe then an iPhone or something, laptop. ā You still do the same thing, but just the tools become easier to use. ā yeah, so tools change, but domains, but a domain is still the same.
Yuri Sokolov (2:05:29)
Mm-hmm. The means change, yeah.
Ivan Murzak (2:05:48)
So yeah, definitely feel myself as a game developer while I'm using AI for making games. Absolutely.
Yuri Sokolov (2:05:55)
Awesome. And one last thing. Do you still recommend getting a degree? I know you have master's degree, right?
Amit Netanel (2:05:56)
Great.
Ivan Murzak (2:06:04)
Yeah, I do. ā
Yuri Sokolov (2:06:05)
Do you still recommend for people going right now and getting a degree in computer science?
Amit Netanel (2:06:12)
Yeah, for some reason, it's still like a question we get a lot. Should I or should I shouldn't?
Yuri Sokolov (2:06:16)
Yeah.
Ivan Murzak (2:06:17)
Yeah, good question. even before AI, even before AI, would say no. mean, degree is barely helpful, actually, overall. Yeah. Yeah. So the problem is degree. It's like, so degree is not the solution. The solution is a person from my personal opinion. I saw people who had no degree at all.
Yuri Sokolov (2:06:27)
High five.
Amit Netanel (2:06:28)
Yeah.
Ivan Murzak (2:06:44)
and they are very successful and very smart people and they are great engineers. I saw people who had a degree and could be a bad engineer or a good engineer. So the degree is not a solution for that. If you want to be good at some profession, you just need to invest time. And university is not going to help you with that.
Yuri Sokolov (2:07:09)
I think the universities are still kind of opening a lot of doors. ā
Ivan Murzak (2:07:15)
Maybe. It can connect you to some people ā if that's going to be helpful.
Yuri Sokolov (2:07:18)
Some people and companies are still saying, okay, I'm looking on the CV level. Well, when they're filtering the CV, we wanna see people with degree. But okay, I'll try to rephrase my question. Do still, people should still learn ā computer science, not as part of degree, programming as a programming.
Ivan Murzak (2:07:47)
Hmm. That's a good question. Yeah, that's actually a very good question. And I don't have a good answer on that. I have just guesses or maybe my feelings at this moment of time. And I have an analogy with low-level programming languages like Assembler or something. At some point, ā all software engineers, they did write code only using Assembler, which is a crazy language because it's too low-level language. But that's how the world worked at that time, because the other languages did not exist. So people had to do that. But then C appeared and C++ and maybe some other languages. not familiar even with them. yeah, yeah, least. absolutely. So then people got started to use that and slowly forgot about Assembler. I believe a very similar pattern is happening right now.
Yuri Sokolov (2:08:40)
Please, please. Hahaha
Ivan Murzak (2:08:55)
So, and in the same time, I'm not saying Assembler is totally legacy knowledge. I'm sure at some companies it's very important position that somebody is still doing something. I'm not sure. I'm not at that low level engineer, but...
Yuri Sokolov (2:09:10)
Probably cobalt more than assembler, but yeah.
Ivan Murzak (2:09:14)
Yeah, maybe something like that.
Amit Netanel (2:09:15)
Some projects may be needed, but not very niche projects.
Ivan Murzak (2:09:20)
Yeah, absolutely. Because majority of tasks could be done with high-level languages, and that's completely fine. ā And the same thing is happening right now. So we just added a new layer into this pyramid of technologies. And everyone going to use the high level of layers, and most of the people are going to forget about the lower level. ā And AI, well-trained AI model, can easily
Yuri Sokolov (2:09:37)
Mm-hmm.
Ivan Murzak (2:09:48)
do majority of computer science tasks super easily, especially if we're going to ask AI to resolve some lead code tasks, it's going to nail it down in seconds, probably just because it was already pre-trained for that solution before. But it doesn't matter. The very similar tasks appears in real world time to time, so it's going to nail it too. So I would say the question, again, about optimization of your
Yuri Sokolov (2:10:02)
Mm-hmm.
Ivan Murzak (2:10:17)
your time spending on some learning and spending time on computer science learning become less profitable right now because you can do much more if you learn how to organize AI agents, how to prepare data to let ā AI ā navigate in the data easily, how to let AI the right tools. and to make the loop for AI where AI can develop, test, and deploy, and do that infinitely. If you can achieve all of that things, ā that's the best thing what you can learn right now as a software engineer.
Yuri Sokolov (2:11:01)
So I kind of tend to agree, but I have a little something that I want to expand. So me and Amit, a long time in the industry, I assume you as well, because you said in 2013, you already had a career and started working in the game, right? So you're more than a decade into this. So back then when I was a junior developer, and even a bit later, Every company had this one guy, it's only one guy that knows Linux by heart and knows Git and he can explain how Git works. Something that's today is a common knowledge, right? Back then, when people migrated from SVN and TFS into Git and suddenly branches and decentralized stuff and how do you make a specific command? They're always... Was this one guy and this was guy one guy was the highest paid engineer in the company. So I think that even with the age of AI where a good project product manager can start building things, a good engineer, somebody who understands how things stick in the background will do better. So there will be.
Ivan Murzak (2:12:06)
Hmm.
Yuri Sokolov (2:12:28)
a time maybe sooner rather than later when companies will start hire prompt engineers and not software engineers. But the better ones would be those who have the knowledge. This is what I'm thinking.
Ivan Murzak (2:12:45)
Yeah. Yeah.
Amit Netanel (2:12:45)
Yeah. And also, and also the ways of thinking of acquiring knowledge, which is practiced ā every day when you're doing a degree.
Ivan Murzak (2:12:56)
Yeah, absolutely. ā And I'm definitely on the same page with you. People who know the domain better, they're to have better expertise, of course. So if you know computer science and you work as a software engineer, yeah, you have a benefit. But I'm trying to say a different thing. ā To learn computer science, you need to spend a lot of hours of your time to make it done.
Yuri Sokolov (2:13:24)
Mm-hmm.
Ivan Murzak (2:13:26)
And the output, what you can get is actually very, very huge. I mean, you can do a of stuff, but you also need to invest a lot of time. On the other hand, you can invest much less time into learning AI concepts and you can get much higher benefits from it. So that's more about optimization. And so if you have a limited amount of time, let's say like thousand hours. and you have a fork, you have a decision where to go. Computer science and do everything manually or AI systems and let AI to handle the stuff for you. And you're going to invest this time here and there. The output going to be higher if you're going to choose AI road. That's what I believe in right now.
Yuri Sokolov (2:14:15)
Got it. Got it. Well, thanks for this conversation. I had a blast. It was a long time coming. I don't remember when was the last time, including this podcast and the previous, when we invited an engineer to talk.
Amit Netanel (2:14:16)
Agreed. I think I agree. Yeah, yeah, we were in the last podcast we had, we had technical episodes in which we break down a certain technology or pattern or stuff you need to know as an engineer.
Yuri Sokolov (2:14:45)
But it was only me and Amit, only the two of us without bringing in...
Amit Netanel (2:14:47)
Yeah. So in about 20 episodes we finished, we talked about everything we know, right? Basically. We learned a few things since then and then we stopped just, you it takes a while to learn new stuff.
Yuri Sokolov (2:15:01)
So it was a while since we've talked with an actual engineer in this setting and it was really fun meeting you and talking to you. Thanks a lot and thank you to anyone who stayed this far and listened so far. Have a good time of day wherever and whatever it is.
Ivan Murzak (2:15:13)
Yeah, thank you guys.
Amit Netanel (2:15:23)
Yeah, please check out the MCP. And if you're an engineer and you want to learn new stuff, hear it's open for contributions.
Yuri Sokolov (2:15:34)
See ya.
Ivan Murzak (2:15:34)
Awesome, and thank you for inviting me. Yeah, it was pleasure to be here. Alright guys, have a good day.
Amit Netanel (2:15:37)
It was a pleasure.
Yuri Sokolov (2:15:39)
Bye.
Amit Netanel (2:15:40)
Bye.
Comments
No comments yet. Be the first to comment on this episode!
TECH DEBT CLUB
YouTube
Spotify
Apple Podcasts
Amazon Music
Deezer