
TDC #03: 40 Years of Shipping Games with Karlo Kilayko
Show Notes
š¹ Description:
Karlo Kilayko has been making games since before most of us knew what a game engine was - literally. From programming a CD-ROM murder mystery in C with one reference book and no internet, to shipping 30 mobile games a year across 382 devices at THQ, to becoming one of Unity's earliest professional users, Karlo has lived through just about every era of this industry.
We talk about what it was actually like to break into game dev in the 1980s, the brutal carrier-controlled mobile landscape before the iPhone rewrote the rules, and why the Nokia N-Gage might be worth more on eBay than you'd think. We also get into the conversation that doesn't go away: AI, what it can actually do for developers today, and the question nobody seems to have an answer for - where do juniors gain the foundational experience they need to use it effectively?
The second half turns toward shipping - or more honestly, the reasons people don't. The core philosophy, borrowed from a Trip Hawkins one-liner: you make zero billion dollars on games you don't ship.
We also cover object-oriented vs. data-oriented design, the game engine vs. game IDE distinction, clean code debates that get surprisingly personal, and how Unity's MCP limitations are affecting AI workflows right now.
š¹ Chapters:
- 00:00 - Introductions
- 00:32 - What we're playing
- 05:33 - Why people make things
- 09:35 - Breaking into game dev in the 80s
- 13:00 - Programming a CD-ROM murder mystery
- 17:15 - Data-oriented design, then and now
- 20:30 - ECS, composition, and Raylib
- 22:00 - Being an early Unity user
- 26:00 - Mobile games as business applications
- 31:00 - The Unity runtime fee debacle
- 34:00 - AI engines and the engine vs. IDE distinction
- 38:00 - Unity, MCP, and AI workflows
- 40:00 - AI amplifies what you already have
- 43:00 - Clean code debate
- 51:00 - Vim, terminals, and knowing the basics
- 55:00 - COBOL and legacy job security
- 1:03:00 - When designers use Cursor directly
- 1:05:00 - THQ Wireless: 30 games, 382 devices
- 1:09:00 - Nokia N-Gage and early mobile multiplayer
- 1:13:00 - Creative QA: elevators and microwaves
- 1:16:00 - Carriers, control, and the iPhone
- 1:19:00 - Better done than perfect
- 1:27:00 - The 90/90 rule and shipping frameworks
- 1:33:00 - Wrap-up
š¹ Guest:
Karlo Kilayko - game developer and producer.
Yuri Sokolov (00:00)
done something you can't
Amit Netanel (00:02)
You were probably fighting some space civilization.
Yuri Sokolov (00:02)
Yes, it was a reference to Anders
Karlo Kilayko (00:03)
Yes.
Yuri Sokolov (00:05)
maybe we were controlling submarines and we didn't know that.
Karlo Kilayko (00:08)
it was just so amazing to get our asses kicked by real fighter
Amit Netanel (00:12)
that didn't
Yuri Sokolov (00:13)
So
Karlo Kilayko (00:13)
How far from the screen are your Every programmer wanted to write their own
Yuri Sokolov (00:15)
Mm-hmm.
Amit Netanel (00:17)
Unity was the public enemy number one
Karlo Kilayko (00:20)
because Macs were a
Yuri Sokolov (00:21)
It's so boring, So have you played anything recently, Karlo
Karlo Kilayko (00:32)
ā yes, yes, there is, there was a game that I saw on an ad for another game I was playing and you know how the puzzle games go in trends. This is on my phone. It was just called arrow something. I don't even know the name, but you had a, ā maybe I don't know, but you have the matrix of arrows and you have to untangle them and get them out. It, I'm not a puzzle game person.
Yuri Sokolov (00:45)
Okay. Archero? Okay.
Amit Netanel (00:56)
Okay, okay.
Yuri Sokolov (00:56)
okay.
Karlo Kilayko (01:01)
because I'm very bad at puzzles, but there was something so relaxing. It reminded me of Alto's Adventure for some reason, because I think I was very stressed when I found it. And it was just so relaxing because it's a relatively easy puzzle game. And I'm almost at level 200 and now I won't stop. It's just...
Yuri Sokolov (01:11)
Mm-hmm. Yeah,
Amit Netanel (01:19)
Wow, it actually worked!
Yuri Sokolov (01:21)
that's that's we're actually coming from a mobile industry so we know how it's done. We know how to pull people into it.
Karlo Kilayko (01:25)
Okay. Yeah. Before that, before that, Tomb of the Mask, I discovered it late, but man, I love that game. That is so good. Yeah, Tomb of the Mask. Yeah.
Yuri Sokolov (01:37)
Tomb of the Mask?
Amit Netanel (01:38)
Is that the one you swipe to move the guy that's continuously running? It's a top-down endless runner puzzle thingy.
Karlo Kilayko (01:47)
Yeah, Dungeon Puzzler, very arcadey. It's, it's actually I love, you know, I'm an old school kind of guy, as we'll discover the more we talk, but they've done, I thought they did a brilliant job with the art. You know, it's mostly one bit, you one color, and only when they need it, they introduce other colors and it's brilliant. It's absolutely brilliant.
Amit Netanel (01:51)
Yeah, it's a good time waster, a very good time waster.
Yuri Sokolov (02:10)
gotta try it. By the way Amit, I was waiting couple of weeks to tell you that done something you can't ā Yes, yes, I've finished the game I've been playing.
Amit Netanel (02:19)
I can't do.
Karlo Kilayko (02:24)
Yo. Yes, I agree.
Amit Netanel (02:25)
OK. That's a mighty feat there. Yeah, congrats.
Yuri Sokolov (02:27)
Yeah, yeah.
Amit Netanel (02:28)
Congrats.
Yuri Sokolov (02:28)
So you told you you're playing, you're playing what? Gotcha games on your mobile? Those don't have... Yeah, so I've finished the Baldur's Gate 3 at last and I'm really happy. ā The closure they did, I really like the closure. And if anyone haven't...
Amit Netanel (02:34)
I currently have several, several of those.
Karlo Kilayko (02:41)
you
Yuri Sokolov (02:52)
played Baldur's Gate. I think it's an amazing game. I would recommend everyone to try it out. ā Anything, Karlo you would recommend? Something from any era.
Karlo Kilayko (03:05)
Yeah, well, Tomb of the Mask, of course. ā That's my latest favorite. ā Before that, mostly my background, I'm one of the people that likes making games more than playing games. And the games that I do play tend to be more technical. So racing simulators, flying simulators, some sports games and stuff like that. used to be pretty good at not John Madden football, but the alternatives. Like there was one licensed on the Sega Saturn that I was really good at. So things like that.
Yuri Sokolov (03:40)
Mm-hmm. it's early 90s. Mid 90s.
Amit Netanel (03:46)
Like more manager-like sports games? ā
Karlo Kilayko (03:50)
No, no, no, both. I like the manager ones too though. I do enjoy the manager ones. I did play F1 manager or whatever it's called. That's the other thing. I terrible memory. Yeah.
Amit Netanel (03:58)
Hmm, yeah, that's the good F1 game.
Yuri Sokolov (04:01)
I still want to create and that's a problem with us, with people who build games I still want to create my perfect ā MMA manager game because the ones you find online they're not it. It's not the games are not built for fun, they're built to grab money. I want a fun manager game for an MMA gym.
Karlo Kilayko (04:24)
Yeah, yeah. Yeah, that's a great opportunity.
Amit Netanel (04:29)
Hmm.
Yuri Sokolov (04:30)
I'm probably one of the only people who buys UFC games and plays the campaign and not plays online. So everybody else would buy those games, play online, but not play the campaign. I'm just there for the campaign to become a champion, to defend my belt. And if you remember ā Need for Speed series, Need for Speed games. There was one game, Need for Speed Porsche, that I really liked because the career mode would get you from the early Porsche models through... It's too bad they haven't done it with, I don't know, not other car manufacturers, but in general to take a lot of manufacturers together like they did in other games and to build a career from the old cars and get to modern cars. It could have been fun.
Karlo Kilayko (05:33)
ā I think that's the brilliance of the game industry though, is there's so many niches like that, right? ā And as people get more and more into it, more and more comfortable, you know, because there used to be such a distinction between a gamer and a normal person. And, you know, that distinction has gone away much more and people can find experiences. One of my early mentors, ā he summarized why he enjoyed being a software engineer. He said, "'Cause Karlo, look, we can set and we type just letters and numbers and we create entire experiences. It's like magic." And he was so enthralled with this ability to do that. And that's, I like making things. like, like when my daughter was very young, I always made up the bedtime stories. I read her to the books too, but I always liked to make the stories because I like to tell the stories and making games is such a great way to do that and to experience things. ā In the late 90s, so I'm a big... World War II airplane nerd, the geekiest person you will ever meet. There was a flight sim that came out called Warbirds, and it was one of the first multiplayer online World War II flight sims. The graphics were terrible, but the experience, was mind blowing. I've read all the books from the World War II pilots, the Japanese, the Germans, the British, all that. And in that game, I experienced the feelings that I had read about in those books.
Amit Netanel (06:34)
Hmm.
Karlo Kilayko (07:01)
As I was escaping or getting shot down or getting cornered by you know And then a buddy of mine we would fly together all the time in that and we had these I forget what planes we were flying something superior like one of the top planes and there were these I Know nuts, I think it was p38s. But hey, I I forget what we were flying but there were two older planes like Grumman Wildcats or something something very, you know slow and I thought oh I
Yuri Sokolov (07:15)
Speedfires.
Karlo Kilayko (07:30)
ping my bunnies, like, we can take these guys. So we dove down on them. And there was a maneuver the US Navy pilots developed in World War II called the thatch weave, because they were fighting against the Zero Fighter from Japan, which was faster, could climb better, more maneuverable. So they developed this maneuver where they crossed each other's path constantly. So if an enemy plane got on the tail, there was always, his wingman was always there to cover the tail. And as we were taking on these two pilots, they were doing the perfect thatch weave. I didn't even really know what a thatch weave was, but every time we thought we'd had one of them, we would look up and his wingman was coming at us with all his guns firing and we had to break off. And so we started chatting with him afterwards and they were Brazilian Air Force fighter pilots. And it was just so amazing to get our asses kicked by real fighter It was an experience, you the kind of thing that you can't do outside of games. Nowadays, you know, that's what that to me that's what games have always meant is I get to have this experience that I couldn't have otherwise, you know, when.
Yuri Sokolov (08:36)
It always was. always was. By the way, if we're talking about this, if we're talking about building games and me and Amid here, we've came to this industry to build games when the gaming already became a mainstream of a sort, at least of a sort.
Karlo Kilayko (08:55)
Mm-hmm. Yeah.
Amit Netanel (08:57)
And when you say mainstream, mean like everyone is a gamer now. The gamer tag means something completely different now, I think, from what you described as a basement dwelling nerd, basically. So now even ā I know some grandmas that play every day relatively complex games. It's not just Candy Crush and games like that anymore.
Karlo Kilayko (09:11)
Thank
Amit Netanel (09:27)
And that's so amazing, I think. That's the most redeeming quality of mobile gaming to me, that it gives access to everyone. Everyone has a phone. Everyone can be a gamer.
Karlo Kilayko (09:33)
Yeah, I agree.
Yuri Sokolov (09:35)
Yeah, but But we came to this industry 15 years ago where it still wasn't that but gaming already wasn't mainstream. You came to game development in the 80s and I kind of find it fascinating. How does one enter game industry that early?
Karlo Kilayko (09:53)
Yes. So. It all starts with some luck. ā When I was a kid in school, my dad bought me a computer. We had a PC in our home. At the time where I was growing up, I probably, I think I was in high school maybe, I don't remember. I only knew one other friend whose family had a computer. And not even a game thing, a computer. You know, you had two floppy disks, there were no such thing as a hard drive, there was no internet, anything. So anyway, you got this computer. There wasn't much you could do on it because it was a very basic computer. So I tried to make a game. First thing, I learned assembly from the books because there was no internet. So you had to look at the books. ā
Yuri Sokolov (10:48)
We started the same, I think. There was no internet when we started. There was an internet, but there was not. Because you couldn't find anything on the internet back then.
Karlo Kilayko (10:52)
Okay.
Amit Netanel (10:52)
Yeah, but we had the
Karlo Kilayko (10:57)
Yeah. And fine.
Amit Netanel (10:59)
I think the main differentiator is that if you wanted to find someone that knows how to program, it was relatively easy, relatively easy, because I had CS at school already. I had programming courses at school, and I had programming books at the bookstore. I didn't have to know someone that knows someone that can teach me the craft.
Karlo Kilayko (11:13)
Yeah.
Yuri Sokolov (11:24)
In schools I've been learning, they taught us how to move a mouse and how to open Microsoft Office, so I don't know.
Karlo Kilayko (11:32)
Preparing you for the future workforce.
Yuri Sokolov (11:35)
Yeah, actually, I remember back in the day when I was, I think, first grader, second grader. ā So it's somewhere mid 90s. At my school, they brought computers and we didn't have a computer class, so a regular computer class. So they would occasionally ā create a class for us and bring us to have fun. And we would come and play some silly trivia game, something like this. And the computers looked really weird. So we would have a keyboard with a card, some sort of, ā you know, like ā the NES game cartridge, some cartridge inserted into a keyboard, and then... tens of wires coming from the keyboard to ā something that resembles a laser, an early laser printer and then from this thing a lot of wires to the monitor and I don't know what it was maybe it was some kind of soviet computer I don't know but yeah, getting back to 80s and assembly
Amit Netanel (12:59)
Well, you basically...
Karlo Kilayko (12:59)
They took it from a Soviet submarine maybe.
Yuri Sokolov (13:04)
Maybe, maybe we were controlling submarines and we didn't know that.
Amit Netanel (13:07)
ā that's like in Andrew's game.
Karlo Kilayko (13:08)
Yeah.
Amit Netanel (13:10)
You were probably fighting some space civilization.
Yuri Sokolov (13:10)
Yes, it was a reference to Anders
Karlo Kilayko (13:10)
Yes. ā nice, nice. Yeah, so, ā so I got a job. I dropped out of school because, ā I knew more computer stuff than most people. I got a job. Actually, my first job was actually programming simulation software, ā not like flight simulation, but simulating business processes and, and teaching, ā it was for training programs at big corporations and a guy worked with his wife or no. I worked with his wife and so her husband worked at this startup game company called Tiger Media and they were trying to do something very different at the time. ā CD-ROMs were brand new and Tiger Media wanted to make an experience that competed with the half hour sitcoms on TV so you could replay it and each time you played it would be different. So I was hired there. ā as the application programmer and I wrote a bunch of the tools because we had hundreds and hundreds of hours of audio, thousands of images for the media on this game. was like the CD-ROM. If you can imagine at a time when a floppy disk held about one and a half megabytes, the CD-ROM held over 700. This was like mind blowing. Yeah, 720 I think it was something like that.
Yuri Sokolov (14:29)
700 I think I think it was 700 and that's it.
Karlo Kilayko (14:37)
Okay, close enough. ā So, you know, nowadays that's what your word file, your word document, but yeah, so we would do that. I learned C. ā So I had one C book that was my only reference. There still was no internet. I learned how to program it. ā you know, maybe 30 years later, I finally could afford the KNR, the Kearney-Hann and Ritchie Official C book. because I always wanted it ever since I was young, but it was always so expensive. So, but I finally bought one just out of ā nostalgia. But anyways, the pay tribute, yes. So I, yeah, I started there. I programmed that game, that game released in 1989. It did not do well because there was no market of people that had color computers with CD-ROM drives. ā It did, there was a computer in Japan called the Fujitsu,
Yuri Sokolov (15:16)
paying tribute.
Karlo Kilayko (15:36)
FM towns that was one of the first computers that came with the, ā I don't know if I guess it was eight bit color. I don't remember 16 bit, eight bit and a CD-ROM drive and an audio card and things like that. So we tried to sell it there too, but Tiger media went out of business. ā And then I moved on to some other things, but yeah, that was my first game. It was, it was great. I was super, super proud. You know, I said, I don't like puzzles. I'm not good at puzzle solving. So
Amit Netanel (15:55)
Unfortunately.
Karlo Kilayko (16:05)
As a software engineer, you know, I have lots of weaknesses, but I constructed. So if you can imagine the game was like a murder mystery and there were different rooms you could take your character to and you could, ā you would see what's happening between the other characters, almost like a reality show now. And you would figure out who did the murder and it could change. So I built a giant array of structs, C structs that had pointers to functions. that would do different things depending on other conditions. And I put that together and I'm proud, I'm still to this day, I'm so proud of this architecture for this game because basically my boss was, he had a really good mantra. He said, it is far easier to debug data than code. So you want to favor data. So I look at the game, the design is like, how can I make this into data instead of logic? And that's what I came up with was just an array and the player just
Yuri Sokolov (16:37)
Mm-hmm.
Karlo Kilayko (17:02)
went through the array. We could change things at any time. ā It was really robust, really easy to test. So I was super proud. And as they say, it was downhill from there. But ā I enjoyed the work.
Yuri Sokolov (17:15)
Now,
Amit Netanel (17:15)
But.
Yuri Sokolov (17:16)
actually history kind of proven that data oriented design, it's not only easier to debug data, it's also more performant in terms of hardware. It's just harder to debug data oriented code. I know there are a lot of people probably that not a lot of people listen to this, but people who listen, there are people who listen and say that I'm mistaken and... Data-oriented design code is great, but I tend to disagree.
Amit Netanel (17:48)
Well, first of all, if you go into design talk, someone will disagree with you. That's a given. You don't even have to assume it. But you just have to assume it. ā But when you got started, Karlo has the unique perspective of seeing the cycle complete. Because back in the 80s and 90s, hardware limitations were a real thing.
Yuri Sokolov (17:54)
Yeah, for sure. Mm-hmm.
Karlo Kilayko (18:13)
Mm-hmm. Yeah.
Amit Netanel (18:14)
ā I wanted to ask you, Karlo, if you had the chance to program on the Apple II, because many of your generation got the chance to do it.
Karlo Kilayko (18:22)
Yeah, yeah. was, um, this is when I learned the hard way, because I was just a kid. I didn't know, but I had taken trigonometry in high school and I wanted to make a racing game. And I was like, okay, I didn't, I didn't understand, you know, bit maps and raster graphics and stuff like that. So said, okay, I've got to draw and I could draw the body of the car. It was a rally car game. I could draw the body of the car. No problem. But I was like, okay, wheels, what do I do? I was like, oh, I just learned trigonometry. Let me draw.
Amit Netanel (18:32)
Hmm.
Yuri Sokolov (18:40)
Mm-hmm.
Amit Netanel (18:49)
Mmm.
Karlo Kilayko (18:49)
just in a loop right and I was so proud of this but when you run it on the it was a four megahertz 8-bit chip whatever the Apple II had I don't know it would it would draw draw and I was like oh wow this is so sad yeah
Amit Netanel (19:02)
You Yeah, it was not given. And ā you reminded me when you talked about how you started with reading manuals and learning from other people's code, basically. ā Do you know Jordan McNer's book about Prince of Persia? He was a, ā really? So he ā wasn't still his documentation nerd, and he wrote a journal.
Karlo Kilayko (19:24)
I think so, yeah, I think I might have that somewhere. Maybe. Sounds familiar. I'd have to end the vlog.
Amit Netanel (19:37)
every day while he was developing Prints of Persia. ā Some with personal stuff and some with technical details. And he talks about them with the same ā tone. He was mad at his friend. One day later, he was mad at his code. And from there, I picked up some stuff you had to do back then. For example, he found out from a friend of his that he can use one disk to
Karlo Kilayko (19:48)
Yeah.
Amit Netanel (20:04)
basically boot up the code that unloads the operating system so he would have more memory. And that was the only way he managed to insert all the sprites for that game, which was amazing in terms of graphics back then. So.
Karlo Kilayko (20:10)
Yeah. Yeah. ā yeah, the memory management was big. There's a new data oriented design book coming out. ā Nitsen Walid, I don't know. Yeah, yeah. good, good. I was hoping so because I enjoy the book. He makes it very simple. ā He lays out the case. ā I like that.
Yuri Sokolov (20:31)
Yeah, we know him.
Amit Netanel (20:32)
ā Nitsal Vilnai, yeah, he's known in our circles.
Karlo Kilayko (20:48)
I am actually not, I don't know, we're gonna go into this, but I've never been a fan of object oriented programming. I never learned C++. ā Later in my career when I was doing iOS stuff, when Swift came out, I thought, this is nice. It's quicker to type than Objective-C and it's very simple. But now with Swift UI and everything, it's just become just too much. don't enjoy it anymore. It's like. I like simple pedantic code. So for me personally, for the things I'm working on, I'm doing Raylib and C now. Even Unity is too much. You know, I don't...
Amit Netanel (21:22)
ā
Yuri Sokolov (21:24)
Got it.
Amit Netanel (21:24)
so you're super lean, zero. You don't work with an editor, right? Raylib is just the engine, not composing scenes and stuff like that.
Karlo Kilayko (21:33)
Yeah, yeah, I actually, I'm one of the original Unity users and I can tell you the backstory in two cents for that. after my experience in the official real game industry, ā which I can talk about in a minute, but ā they reorganized. And so I went indie for like 10 years. And at the time, this was 2007. If you go to GDC, I would go and I would be carrying a Mac laptop. People would point and laugh.
Amit Netanel (21:39)
Mm.
Karlo Kilayko (22:01)
because Macs were a right? Nobody did development on a Mac or especially main game. So I said, okay, forget, screw all you guys. I'm going to do everything my way. Everything's going to be on a Mac. And Unity was the only game engine I could find. And I actually got to know David Helgeson. I met Joe Antti and I got to know those guys really, really well and help kick off the initiative that formed Unity Studios too, the For Hire arm.
Yuri Sokolov (22:05)
Mm-hmm.
Amit Netanel (22:14)
Hmm.
Karlo Kilayko (22:28)
And so I've been a Unity user. I was like one of the first people to purchase a professional license. When I did it, when I did my credit card, David Helgeson messaged me on Skype right away. I Hey, what's up? Thank you. This is great. Yeah. But now, you know, again, I look at Unity now and obviously a lot of the reason the indie game market is as accessible, a tribute to Unity and what those guys did. They had a...
Amit Netanel (22:41)
We have a client, finally.
Yuri Sokolov (22:55)
Yes.
Karlo Kilayko (22:56)
for making this available to everyone. And I respect them so much for following that dream and realizing it and making this available to, you know, 25,000 games on Steam and 9,000 are marked Indie. That's, I love that. It's so great. But when I personally set down to use Unity, everything's hidden under menu under edit this and it's hidden, hidden. And there's this process you have to do to animate and
Amit Netanel (23:12)
It's amazing.
Karlo Kilayko (23:24)
The last game I made with Unity, said, I just used it as like an engine and a code holder. Everything else, the animation was just spritesheets and everything. it was just, you know, it was too much. ā So yeah, I was like, okay, I found Raylib and I was like, my God, this is so great. have now I have the K and R book, so I'm unstoppable. ā
Yuri Sokolov (23:47)
Yeah, regarding, so I'll start from the object-oriented remarks. So object-oriented, in my opinion, is a great approach for ā business-oriented development. And when I'm talking business-oriented development, it's not only the applications, business applications that you write in object-oriented, because initially, at least initially, it not necessarily helped. people work with it. Initially, Object-Oriented was created for people to better understand the code they're writing. It's not as performant as Data-Oriented design. It has a lot of drawbacks. So there is a trend currently growing ā to get back to functional programming. People kind of starting drifting towards functional programming.
Karlo Kilayko (24:23)
Yeah. Yeah.
Amit Netanel (24:43)
Mm-hmm.
Yuri Sokolov (24:46)
And I might get into that if I will develop a game that, you know, an indie title that I will ship and I will forget about it in a year. But when we're talking mobile games, for example, it's still a business application in terms of code. It's still more business application than a game. So there...
Karlo Kilayko (25:12)
Yeah, I agree.
Yuri Sokolov (25:15)
you have the benefits of ā object-oriented code in my opinion because it's called the developed by tens of developers across tens of years. same game was contributed to by tens of developers every day for seven years, ten years, fifteen years. And functional programming or again there are great games designed, ā built with ā data oriented design in mind. In my opinion, it's a lot easier to find developers that will understand object oriented code that will then find developers that understand the data oriented design. So it's always this trade off and I think every tool has its use. And the other thing I wanted to...
Karlo Kilayko (26:06)
Oh yeah. No, it's it. Well, let me just touch on, you brought up a really, really good point. Mobile games now, they're business applications. Back when I started, you put the thing on the disc or you burned the CD, the gold CD, even through 2006 at THQ. Like I worked on all of the first round of Finding Nemo games. You you made the gold disc. It had to be perfect because once you shipped it, that was it. Once you press go and they burned 70,000 copies.
Yuri Sokolov (26:13)
Mm-hmm.
Amit Netanel (26:31)
No patching.
Karlo Kilayko (26:36)
You were not gonna last long if you had put a mistake on there. So it's very different now to your point. It is much more like traditional business software. ā And yeah, those rules apply. And also what constitutes a game now is very different. Back in the day, performance was critical. Like you mentioned, you had no memory, you had no processing power, you had to optimize everything. ā
Amit Netanel (26:58)
Mm-hmm.
Yuri Sokolov (27:04)
Jonathan Blow actually has a great talk on this, preventing the collapse of civilization, that he says, the premise of the talk is that ā software is getting weaker and software is ā living on... Yeah, yeah...
Amit Netanel (27:20)
It's breaking more easily. Like he tells the audience in the talk, just go for a week and just note down in a pocket notebook what bugs do you encounter in your day-to-day life? And it wasn't like that way back when, like 10 years ago. It wasn't like that.
Karlo Kilayko (27:34)
Bye. Yeah, yeah.
Yuri Sokolov (27:39)
And not only that, he says that the fact that today's software is faster, it's not thanks to software engineering, it's thanks to hardware engineering. Because hardware getting faster and not vice versa. So I kind of tend to agree with this, because... But performance even today, it's critical. You probably won't find... ā gems like you would find in, I don't know, in Doom's code where they... There are a couple of ā great examples in Doom how they managed stuff, a couple of famous examples. Yeah.
Amit Netanel (28:18)
There's a famous constant that enables... I can't even remember when it is used, but it makes... Yeah, yeah, yeah.
Yuri Sokolov (28:29)
It's used to calculate rotation. It's used to calculate rotation. ā yeah, they had a couple of great examples. Today, you kind of fight ā against your engine, against the... And the more... It's the second point I wanted to tell about the engine that you said it's too bloated. It's like any software that becomes... ā more general in use for more people and Unity today markets not only as a game engine it's for I don't know digital twin mobile automotive automobile applications a lot of stuff that's not really game related and even games mobile games needs are different from console game needs and different from PC game needs so the more general the app the more
Karlo Kilayko (29:06)
visualisation.
Yuri Sokolov (29:26)
features you have and you probably don't even need 90 % of them and
Karlo Kilayko (29:31)
yeah. Well, I think there's two things and I agree with you. think that's very observant and insightful. There's the layers of abstraction that we've built on top, which we can only do because the hardware gets faster. So we put more abstractions on top in our code. And then there's the environment in which the code runs. So your point about mobile games, right? It can't just be a pure game anymore. It has to accept push notifications. It has to log you in. It has to...
Yuri Sokolov (29:48)
Mm-hmm.
Karlo Kilayko (30:01)
make room for other applications so you can switch. It has to save state if a phone call comes in. just any piece of software in that environment has so much more responsibilities than playing the game. Which is why my reaction as an old man, go back to see Rayliv, I just want a pure game. Entity components is so simple, right? You have an entity, which is an ID, you have a component that you can compose.
Yuri Sokolov (30:26)
Mm-hmm.
Amit Netanel (30:27)
Yeah. That's a tragedy of ā the dots stack in Unity is so rich in features. It has so many layers and so much integration with the regular engine that it's a really high barrier to jump across for most people. In my experience, at least, that's the impressions for most of my friends that have developed in dots.
Karlo Kilayko (30:28)
and you have systems that operate on all those components. That's it. Done. I don't have to worry about. Yeah, yeah, yeah.
Amit Netanel (30:57)
And it's funny that you mentioned Raylib. I remember encountering that like two years ago. There was a period of time that Unity was the public enemy number one with all the runtime fees thing. Yeah, we all lived through that. I remember. Yeah.
Karlo Kilayko (31:08)
I remember. That was post-Daily Show this
Yuri Sokolov (31:15)
We even did in our previous podcast, we even did a prognosis what will come out of it and everything came through. We said the CEO will step down, we said everything and then every single thing was said back then. ā
Karlo Kilayko (31:23)
Uh-oh.
Amit Netanel (31:24)
Mm-hmm. Yeah, most mobile developers won't change engines. Many indie players will. And actually, that's the thing that I wanted to raise, that in some way, ā you have a perspective of working at the times that we didn't have much in ways of hardware. And we had a golden age. Every GeForce edition was way, way more powerful than the previous ones. And every two years, the amount of RAM in the computer would double. And now it's stagnant for a few years now. And we have to run, as a gacha player, I have two devices I use to play my gacha games, which are relatively expensive performance-wise. They have rich 3D graphics and lots of cutscenes and models and stuff like that. I can run it on my PS5 that sits right next to me, but I can also need to run it on this. And this is not getting faster at the rate it should. So many, many mobile developers around are trying to find, like Nitsan that you mentioned, trying to find and strike the balance of, hey, the object-oriented model
Karlo Kilayko (32:39)
Yeah.
Amit Netanel (32:53)
that we all learned in school and immediately placed in our games is not holding enough performance. ā But in the game I developed in my day to day, we need to make trade-offs. Like we pull everything, it's not enough. So we strip some vertices from models, it's not enough. So we need to find a sprite atlas to put other sprites into.
Karlo Kilayko (33:00)
Yeah. Yeah.
Amit Netanel (33:21)
Okay, we always run into limitations based on the hardware. ā So I thought, I...
Karlo Kilayko (33:26)
Yeah.
Yuri Sokolov (33:28)
It's, but the point, if you're listening to Jonathan Blow, the point is the limitations are not from hardware. If you were to use your own proprietary engine built on C++ without the blow that Unity brings, you...
Amit Netanel (33:37)
That's right, that's correct. So what I thought was going to happen is that if we are rioting against Unity, maybe someone will make the next generation of mobile devices engine, which will be a more simpler tool, performance oriented. And that didn't That didn't happen.
Yuri Sokolov (34:05)
Weren't you paying attention today? Like only today I saw at least two posts on LinkedIn about someone who made his own ā engine in JavaScript. And I see them freak...
Amit Netanel (34:17)
Or mobile for mobile or is it as an indie indie endeavor to release on stream, which happens a lot.
Yuri Sokolov (34:20)
Okay, I see people create their own engines and I think it's coincidentally started at the same time where AI agents became popular that now everybody can create their own game engine. ā And I see a lot of game engines out there today. And actually, of it.
Amit Netanel (34:28)
Mm-hmm. okay. Now I see what you did there.
Karlo Kilayko (34:42)
Ha ha ha.
Yuri Sokolov (34:50)
It might have some uses in this regard. So basically, if you want to run lean and you need some... Your game is really going this way. You need this and that. You can actually build your own game engine with AI that will accommodate your specific needs and will skip all the bloat of popular game engines. Right? So you're kind of... Game Engine is a SAS, and AI today is eliminating SAS. So why not eliminate this Game Engine field? It will not eliminate the whole thing that Unity is or Unreal Engine is, but it can create you a subset of the features that you do need today. So it's an interesting point. I think I'll start playing with it.
Karlo Kilayko (35:45)
That is very interesting. ā And it also brings up a distinction I've been trying to make over the last maybe half a year or a year is a difference between a game engine and what I'm calling the game IDE, which is what Unity and Unreal and that's the part that it's just like you're saying your mobile application, mobile game is a business application, right? Because it has to grow to
Amit Netanel (35:45)
Hmm.
Yuri Sokolov (36:09)
Mm-hmm.
Amit Netanel (36:10)
Mm-hmm.
Karlo Kilayko (36:12)
provide all the capabilities and be a good citizen on the mobile device. So that means it requires so many things that are not the game. So, you know, it makes sense to, to, you know, have all that sort of thing. So I think too, I, I started conflating game IDE with game engine because, that's when I found Raylib and I was like, Oh, this is, this is an engine. This is just a of code that draws to the screen or plays the audio or whatever. It doesn't have a,
Yuri Sokolov (36:36)
Mm-hmm.
Karlo Kilayko (36:42)
you know, the shader graph, doesn't have the ā animation key framing and all that kind of stuff. You know, that's to me, it's separate, you know, from the engine that should actually run your game. And I think you're onto something there. I think there is room, right? Because you still have the layers, right? So your engine at the bottom can be very robust. It can be ECS. It can be very simple to make a game. And then you can have the layer that is the OS compatibility layer that has to provide all the services. ā They're very different things. Performance isn't required here. It's required here. ā
Yuri Sokolov (37:17)
Mm-hmm. Yeah.
Amit Netanel (37:24)
Yeah, and actually to connect with your AI spiel, ā you and I, me and Yuri are a part of our WhatsApp group about ā game dev AI related things. And yesterday there was a huge talk there about how Unity is not really good with MCP because most of your LLM ID is whether it's a terminal or you're using cursor or whatever.
Karlo Kilayko (37:35)
Mm. Yeah.
Amit Netanel (37:55)
They have to have Unity open in order to communicate with it. It's a one process thing and it has to run the editor loop in order to communicate. And we all ran into the same issue and all the popular MCP engines on GitHub ran into the same issue. having, like separating the IDE from the actual engine is a good, can actually facilitate.
Karlo Kilayko (37:59)
Yeah. Yeah. ā You need
Yuri Sokolov (38:14)
So today...
Amit Netanel (38:23)
a more robust experience with agents.
Karlo Kilayko (38:26)
Yeah.
Yuri Sokolov (38:26)
A fun thing around that, today I was talking with guys from my team from my previous work, we still have a channel in WhatsApp and we're talking from time to time and I was telling that backend development became so easy I might switch from games to backend development because it's bringing me a lot of joy lately and guys there, my backend developers from back then asked me what... ā Is there a how how is unity in terms of AI? What does mcp helps a lot and I said no mcp is still a bottleneck. So everything everything tech art related is is a bottleneck. It's hard. So my technical artist says ā so I've got time. I'm not replaceable right now and I'm saying to her listen you are a bigger bottleneck than a unity mcp actually because
Amit Netanel (39:17)
you
Karlo Kilayko (39:19)
Ha ha ha ha! No.
Yuri Sokolov (39:25)
we were talking about speed, when we were talking about speed we were saying MCP is so slow it can't build us three games in one day and it's still faster than a human can do. ā There's still a lot of things that require human touch both in terms of programming and in terms of ā technical art so in my opinion and we talked about it in our previous episode ā
Amit Netanel (39:38)
Yeah.
Karlo Kilayko (39:40)
so
Yuri Sokolov (39:54)
AI won't replace engineers anytime soon, but it just amplifies whatever you have. If you're good at something, AI make you better. If you're bad at something, AI make you bad faster. So that's kind of it.
Karlo Kilayko (40:09)
Yeah. Yeah, I agree. Yeah. It's, and, this is okay. So we're talking about AI for just a minute. I've been to, was at a conference and then there's an author, an American author named Dan Pink. He writes a lot of really good books about, you know, how we should think. And he's, he's a really deep author and he posted a video on YouTube talking about six things you can do as a human in the age of AI to remain relevant. Right. And it was really good. And I, and I commented on YouTube is YouTube. never comment on YouTube's and you know, he's a big famous author. So I was like, well, whatever. I left a comment and I said, this is really great, Dan. I love all these ideas, but, and this is the same thing I brought up at a conference last year. What about that first rung? Where do people gain the experience to be able to effectively use the AI? Because if you don't know what you're doing, you're not going to get good results from the AI, no matter how good the AI is. and.
Amit Netanel (41:00)
.
Karlo Kilayko (41:10)
his re he actually responded to me, which was brilliant. I felt really honored. But he said, that is a great question that I do not have an answer to. And so it's it is still the problem, right? Because you're you're absolutely right that what I found with AI, and I spent the first two years, I paid for chat GPT from day one, but I didn't trust it. To me, it was still like, this is a faster stack overflow. You know? And and and but
Amit Netanel (41:19)
You
Yuri Sokolov (41:35)
Yeah, I might have exactly.
Amit Netanel (41:36)
.
Karlo Kilayko (41:40)
In the last eight weeks, six, eight weeks, it's gotten much better. But still, I've also gotten better at talking to it and telling it what I want. So ā I think you're absolutely right. I think it's a trick. It's a trap that we have to be wary of.
Amit Netanel (41:49)
Mm-hmm.
Yuri Sokolov (41:59)
I think at some point the LLMs will reach or maybe not LLMs, maybe there will be another development. ā The AI in general will reach a capability to actually replace people, ā knowledgeable people, knowledgeable technical people, or I don't know, maybe Jonathan Blow prognosis will come true once again and the hardware will become so powerful. that the issues that AI creates in this code will be not relevant. And I think this time will come, but it won't come today, it won't come tomorrow. We have a couple of years, I think, before that. But if we'll jump a couple of decades back, we were talking about ECS, were you developing in ECS back then?
Karlo Kilayko (42:57)
god no.
Yuri Sokolov (42:58)
this the approach?
Karlo Kilayko (43:00)
No, this was ECS to me is relatively simple. The thing that I didn't realize, it's because ECS is a label, right? For an approach, it's a nice acronym. But basically ā the idea of composition over inheritance.
Yuri Sokolov (43:10)
Mm-hmm.
Amit Netanel (43:11)
Mm-hmm.
Karlo Kilayko (43:20)
That was always the shield I used when people would say, oh, you should learn C++, or we have to do this object oriented. I was always composition over inheritance because if you make a game, can't have a horse that can swim and fly at the same time, whatever.
Yuri Sokolov (43:35)
But this term comes from object-oriented programming.
Amit Netanel (43:36)
A horse is not a vehicle.
Karlo Kilayko (43:39)
Yeah, and that's what I mean. So I liked composition, right? Where you had small things that you could compose into what you want. so capabilities, then so ECS was a really kind of formal version of that that I liked immediately when I first read about it. I was like, oh, this makes it so clear, concise, and easy to follow. it just makes it really simple. I've done a lot of business.
Yuri Sokolov (43:48)
capabilities, yep.
Karlo Kilayko (44:08)
type program, worked at FinTech and healthcare and aviation and things like that. ā And, know, sometimes it gets tricky, ā especially with a team of, you know, people with different abilities and different approaches. What is a clean object to one person becomes a huge ball of... ā
Amit Netanel (44:28)
Mm-hmm.
Yuri Sokolov (44:30)
And we as developers so passionate about this. We will defend our object with our lives. The indentation, the tabs versus spaces, the underscore before a variable, everything we will fight to the death. Yeah.
Karlo Kilayko (44:32)
Yeah. yeah. Well, and it goes beyond just that too. It's what is a function? What is the purpose of a function? What is the responsibility of a function? You know, those are the lines that get fuzzy and
Amit Netanel (44:56)
Mm-hmm. That cut. Kala, where do you stand on the debate on clean code? Yeah, the length of a method. If you have more than one line in your method, is it too much?
Yuri Sokolov (45:06)
Clean code.
Karlo Kilayko (45:10)
you
Yuri Sokolov (45:14)
I remember
Karlo Kilayko (45:15)
You can only have one parameter also.
Yuri Sokolov (45:18)
at college, I heard something even more outrageous from my lecturer. At college he said, well, when we're developing code, a good code is a good method should be four fingers length. So he showed us like this.
Karlo Kilayko (45:35)
you Did you shrink your font immediately down to nine point?
Yuri Sokolov (45:42)
Back
Amit Netanel (45:43)
you
Yuri Sokolov (45:43)
ā then, I don't know if I was able to change my font in my IDE. I'm not sure. So maybe he had a valid point or maybe he didn't know that he can shrink or enlarge the font. So he says like with default font, it should be four fingers in length.
Karlo Kilayko (45:56)
Hahaha! clarify.
Yuri Sokolov (46:06)
Also, my fingers are much larger than fingers from a lot of developers out
Amit Netanel (46:10)
Yeah, it's...
Yuri Sokolov (46:13)
So
Karlo Kilayko (46:13)
How far from the screen are your
Yuri Sokolov (46:15)
yeah, yeah.
Karlo Kilayko (46:15)
ā
Amit Netanel (46:15)
more of a guideline than actual law.
Karlo Kilayko (46:18)
I really like one thing from clean code. like Uncle Bob. I do not feel qualified to criticize him, but the one thing I like from clean code is unidirectional data flow. I think that's a great idea. I think If you can't draw your boxes and your data just goes from one side to the other, left to right, right to left, whichever your preference is, then you're going to have trouble. I'm not a big fan of a million different little tiny classes. I can't, I have a terrible memory. I can't hold it all in my head to know that there's you know, a router for this or I, you know, I don't even remember the pieces. What does solid stand for? can't remember, but
Amit Netanel (46:38)
Mm-hmm.
Karlo Kilayko (47:04)
Having your data, your data should only flow one direction. It should never be able to walk up. So I like that concept. I think that's an excellent concept that's very useful in keeping code functional, or not functional from the programming architecture, but functioning in a way that you can understand and debug it. ā To me, that's the most important. And I use this example. The other thing, the other podcast I was on, I had an engineer that worked for me.
Yuri Sokolov (47:07)
Mm-hmm. Yeah, yeah.
Karlo Kilayko (47:34)
and I was doing a PR or I was reviewing her PR and she had a nested ternary statement and I had to copy and paste it into a text editor and unwrap it manually so I could understand in my head what was supposed to be happening ā and you know that
Yuri Sokolov (47:42)
Mm-hmm. I can understand this. I can understand this easily because in my previous job, I worked as a manager for multidisciplinary team, team of guys, the Unity developers, tech artists, QA and backend developers. And our backend developers were writing code in TypeScript, which I'm not too familiar with and not too used to it. And the conventions of how the linter works in TypeScript, so different from C-sharp linter, which is my main language. And when I would review ā PR by the guys that wrote the code in TypeScript, I would look at this and I would feel like it's just a wall of code. I don't understand anything because of their indentations and how they're... I don't know, for example, a function requires multiple parameters, so every parameter on a new line and the spacing is different and it's just because I'm used to one way, this way felt to me like, I don't know, it's a wall of code, I don't understand this. On the other hand, I talk to those engineers and they say, it's perfectly understandable, it's the cleanest code you can find, it's perfect in every sense.
Karlo Kilayko (48:56)
Yeah.
Yuri Sokolov (49:18)
So I think it's just in terms of perception, how you used to things. I have a good anecdote on this. I'm used to creating my private variables with an underscore. ā So I was ā interviewing ā some engineer and ā he didn't have ā constant naming conventions across his code.
Amit Netanel (49:31)
Mm-hmm.
Yuri Sokolov (49:45)
So I was inclined to ask him about this because sometimes it points to the fact that he just mindlessly copy pasted code from different areas of the internet. And sometimes it can point to someone who just don't pay attention to this stuff. just, you know, and it was a junior developer. So I kind of asked why, why is that? And it says, Oh, it didn't.
Amit Netanel (49:57)
different threads.
Yuri Sokolov (50:13)
This I copied from there and then I asked him, why don't you, for example, use the underscore everywhere? You used it here. Why don't you use? says, why would I? I'm explaining, okay, it's easier when you're reading a long file. It's easy to notice that the variable ā is local or global to this class. He says, but they're different color. I say, wait a second, let me check that. and they actually a different color by default. And I'm sitting there, dumbfounded, because I didn't notice that. I was starting developing this thing with the underscores back when the color was the same. When I was starting out, I was writing this dot and then the name of the variable to differentiate between the local scope and the global scope.
Karlo Kilayko (50:59)
was one.
Yuri Sokolov (51:12)
Then the disk keyword dropped out and we left with the underscore. And now they have different colors so I don't really need it but I still use it.
Karlo Kilayko (51:23)
That's funny. You know what I always think of is ā when we run out of electricity and computers and all that, and we have to put together something from an eight bit processor, we're only gonna have one color again. So you better get used to it.
Amit Netanel (51:42)
Don't you forget, you don't have different colors when you're carving your code into the walls of the cave for the future generations to compile.
Karlo Kilayko (51:44)
Yeah.
Yuri Sokolov (51:54)
No, recently I got into a lot of backend stuff and so I'm used to my pretty terminal, iTerm2 on Mac and with custom themes and stuff and then I'm starting to deploy to configure some VPS on AWS and I'm making an SSH connection to it and the terminal there is default so and suddenly everything black and white and
Amit Netanel (52:19)
Yeah. Yeah.
Yuri Sokolov (52:23)
It's so boring, give me back my colors. I need my colors in the terminal.
Karlo Kilayko (52:30)
I've, so last year, last summer, I worked for a small startup. They were all really young guys just out of college and we had needed a quick change. So I was in the terminal and I just started VI and I was like, bang, bang, bang, bang, know, colon WQ, I'm out. And the guy looked at me like I had three heads or something like, you know, what, how did you, what is that?
Yuri Sokolov (52:54)
How did you exit it?
Karlo Kilayko (52:56)
Yeah, you exit that exactly. Command C doesn't work. ā But yeah, it's, it's, I, you always might end up on something like that, right? And, you know, you SSH into whatever into your raspberry pie, and you're not going to get, you know, colors or something. There was a
Amit Netanel (53:14)
Mm-hmm. Yeah.
Yuri Sokolov (53:15)
It's funny, AI, right? AI would replace us, but if it will replace us, how come the software development in the last 30, 40 years has gone a lot? Yeah, it's grew a lot. It's became a lot. All the banking systems still run on Cobalt.
Karlo Kilayko (53:39)
ā Yeah, that's true.
Amit Netanel (53:40)
Actually, that's mainly because if it works, why change it? It's reliable. It does something super important, super regulated. I don't know if either of you worked or saw ā what banks use for QA or testing procedures. But since most countries have laws over that stuff, ā I was... ā
Karlo Kilayko (53:45)
Why change it?
Amit Netanel (54:10)
Like almost 20 years ago, I visited a facility that hosts banking software for other banks. And we went there basically to learn how they do operations and maintain apps for years and years and years. And they showed us the procedure for ā hotfix. If something needs to be fixed in the software, what are the procedures that you have to do? And the guy I remember to this day, just pulled, he opened the drawer, he pulled a 500 page book with tests, with stuff he needs to do manually, because ā none of it was automated for probably also regulations and probably because the terminals of the mainframes that run the software aren't connected to anything else. And that's job security right there, first of all.
Karlo Kilayko (55:02)
Yeah. Yeah.
Amit Netanel (55:06)
Okay, this
Yuri Sokolov (55:06)
It
Amit Netanel (55:06)
guy
Yuri Sokolov (55:06)
actually is.
Amit Netanel (55:07)
is probably still there running routine number 500.
Karlo Kilayko (55:11)
Yeah, he's still not through the book yet.
Amit Netanel (55:13)
as we speak and ā yeah, it's reliable.
Yuri Sokolov (55:15)
15 years ago when I started my career, ā mother of my friend was working as a lead software engineer in one of the banks, ā Cobalt programmer. So she was a Cobalt developer since the 70s, I think 70s. So it was her first job to become a Cobalt engineer and she just got her job security. for the rest of life. She's retired now. She started, her first job was Cobalt developer, her last job was Cobalt developer.
Karlo Kilayko (55:45)
Yeah. You imagine how perfect the code, every function, you know, is so vetted and so thoroughly reviewed and everything after 50 years. wanted to jump back though. I'm sorry, Yuri, you mentioned something. And before we get off of this topic, I want to make sure I mentioned it because when we're talking about reliability backend and you mentioned functional programming, ever since I discovered it when I was younger, I have been trying to learn Erlang.
Yuri Sokolov (56:08)
I so.
Karlo Kilayko (56:27)
To me, so Joe Armstrong built Erlang for Sony Ericsson, right? Nine-nines reliability. ā If it crashes, automatically, it processes restart. If a process crashes, it restarts. And when I discovered this, I bought his book. I was like, this is the perfect game engine or game server technology. You can't go wrong with this. And so I had been trying to learn it for decades and... ā
Yuri Sokolov (56:32)
Mm-hmm.
Karlo Kilayko (56:56)
And then Elixir came out and I was like, okay, this is much better syntax wise. And I actually finally did have an opportunity. I was at a company called Skyward and we were writing the iOS app that used to fly the drone. And this is actually one of my career highlights and it relates back to everything we're talking about because we had a chance to do the demo for CES in 2019. And
Amit Netanel (56:59)
Mm-hmm.
Yuri Sokolov (57:09)
Mm-hmm.
Karlo Kilayko (57:21)
the CEO of Verizon was going to get in stage in Las Vegas and we pitched this and they accept this. We built it in just a few weeks, but he was going to hit a button on his iPad in Las Vegas and it was going to launch a drone in Los Angeles that was going to fly around and beam video over Verizon's new 5G network. That was the pitch. And so we needed a telemetry server to communicate between the ā mission control and the drone. that was 100 % reliable. I wrote it myself. It was literally 30 lines of Elixir and it worked perfectly. It was so simple. Data came in, got queued up, data went back and that was it. And it was the perfect, we're talking about perfect technologies and all that. And Erlang is not as old as COBOL, but it is way older than people think. It's about 40 years old now.
Yuri Sokolov (58:14)
Mm-hmm.
Amit Netanel (58:20)
Hmm.
Karlo Kilayko (58:21)
And it was just an amazing, amazing use. So I've always wanted to, you for a game server that can't go down and needs to track potentially millions of simultaneous processes, it is the perfect technology. that's, I, so I've been working on that. That's been my secret project for my whole life. It's not so much making the game, but making a server that can host ā games and stuff like that. And that's. So what you were talking about, Yuri, about the backend and all that, I would be a terrible backend programmer, but I have a vision to make this.
Yuri Sokolov (58:56)
I, if, when I retire, I am planning to learn Arnold C and, ā familiar with that. Asta la vista. And, it's, ā or maybe creating some, ā with, with the help of AI, you don't have to know anything, right? You can just create stuff, AI creates stuff. so maybe I'll create my own language. You're EC. I don't know.
Karlo Kilayko (59:06)
going it.
Amit Netanel (59:06)
you Yeah.
Karlo Kilayko (59:16)
Yeah. Yours?
Amit Netanel (59:22)
Leave your remark on the world in a positive way.
Yuri Sokolov (59:26)
I think it would be the most negative way I can possibly think of.
Karlo Kilayko (59:26)
We will.
Amit Netanel (59:27)
Undecipherable programming language. That's my legacy.
Karlo Kilayko (59:33)
That you need, there used to be, in my experience in the game industry, there were two things that all programmers in the game industry aspired to. And it's, it's definitely changed. But back in the day, one, they wanted to write their own engine. That was the number one
Yuri Sokolov (59:33)
By the way.
Karlo Kilayko (59:49)
Every programmer wanted to write their own
Yuri Sokolov (59:49)
Mm-hmm.
Karlo Kilayko (59:51)
That was the aspiration. But number two was writing their own programming language. And that one was so much more realistic and usable because I've worked on games, we had different puzzles the player had to go through, and we would write a language to define the logic of the puzzles. And it was horrible language, but it allowed... The other thing my boss taught me, my boss taught me two things. Data over logic, or three things, sorry, data over logic, the hardware will get faster, he literally would say that all the time, don't worry, the hardware will get faster, and...
Yuri Sokolov (1:00:11)
Mm-hmm.
Karlo Kilayko (1:00:31)
Program your way out of a job. Your job is to write code for a game so that you don't have to code the game. The designers should be able to implement the game. And those are the three things I learned from my first game industry job. And I think they're still super, super relevant.
Amit Netanel (1:00:50)
super relevant.
Yuri Sokolov (1:00:51)
Yeah, they are. And again, I'm kind of branching outside here because the mobile game industry is so different in this regard. We tend to try to pull back from controls that we give to our tech artists or game designers ā because of reliability, because of every... You made an error? you deploy the game, the QA haven't catch the error, suddenly half a million people felt the debug and it cost the company $100,000. I don't know. So it's kind of different.
Karlo Kilayko (1:01:29)
Yeah.
Amit Netanel (1:01:35)
Yeah, but let me, ā I think Karlo is super correct, but the way that the stakes that we have in the mobile industry are higher. So what we need to do is have more robust tooling ā and our tooling needs to adapt for the designers. And I can give you an example. I'm currently developing a mobile gacha game. in the studio I work at. ā during the last year, everyone shifted to working with cursor, like exclusively. Everyone has cursor open on their machines. And naturally, ā once the developers started using it always, the game economist and the game designer also wanted to use it. So up until now, we used to make editor tools within Unity for them. And one of those tools was defining rewards for everything. Like in gacha games, every little press you do gives you a reward. So there are naturally tens of thousands of rewards. like a year, something like a year and half ago, I wrote a simple ā UI toolkit tool in Unity to define all the rewards in the game. When we developed all the systems, it was OK. It held the 100, rewards that was needed. And the game designer could edit it manually with ease. Now we're reaching production, and we have 10,000 rewards. And the UI, takes him five minutes to scroll to what he wants to do. So he says, wait a minute. Wait a minute. It's saved in some sort of a database. It doesn't even know where it's saved. It communicates with a Mongo database somewhere in our server architecture. And it says, well, I asked Cursor to change something without your tool, and it worked. The thing that he didn't know, that it created a corrupted meta file that continued to appear to all of our team for ā about two weeks until I nailed the solution to that.
Karlo Kilayko (1:03:55)
ā
Amit Netanel (1:03:57)
It's not the game designer's ā fault. He's right that he wants to use natural language to edit stuff. So the tools I'm going to create from now on will support ā natural language moving forward. I don't want to create any more tables and data views and stuff that's, it was good for its time, but it makes much more sense that the creatives
Karlo Kilayko (1:04:01)
Yeah.
Amit Netanel (1:04:26)
will describe what they want, and the computer should do its thing. So I'm adding verifications to that, ā some agents that check the data for weird stuff and prompts the designer to pay attention to stuff. That works really well. And ā the next stage will be to actually create levels according to natural language specs. ā
Karlo Kilayko (1:04:30)
Yeah. Yeah. Mm-hmm. right.
Yuri Sokolov (1:04:45)
Mm-hmm.
Amit Netanel (1:04:57)
So the lesson is still valid in my opinion.
Karlo Kilayko (1:05:00)
Yeah. And I think that's a really good example. That's really powerful ā experience. I have so many stories.
Yuri Sokolov (1:05:06)
By the way, speaking of mobile games, we kind of dug into your past before this conversation. You worked on mobile games before iOS kind of came into existence and broke the market. What were you working on? How was it?
Amit Netanel (1:05:17)
Not in a creepy way.
Yuri Sokolov (1:05:35)
How was it? I don't know.
Karlo Kilayko (1:05:37)
So this is a story. when I, after spending some years as a game programmer, ā I wanted to learn the more business side. So there was an opportunity to become a producer. So I became a game producer and I ended up at THQ, which back in the day, the early 2000s was a $2 billion revenue game publisher. And they had licenses for lots of really good stuff. So I was working on some titles. ā The most fun I had actually worked on all the first round of Finding Nemo games. That was really good. ā But I was getting really burned out. ā It wasn't exciting anymore for various reasons. Working for a big publisher as a producer, you you spend more time on with marketing and licensors and stuff like that. So, you know, I was kind of getting burned out and then THQ kind of reorganized. They had started a division called THQ Wireless to make games for cell phones. And it started around 2003, 2004. It was Symbian and J2ME, Java Micro Edition.
Yuri Sokolov (1:06:43)
So a symbiont then.
Amit Netanel (1:06:50)
Wow.
Yuri Sokolov (1:06:51)
Yeah, Java Uplets back then. also was ā working on Symbian. Symbian was the industry standard back then, if I'm not mistaken.
Karlo Kilayko (1:07:02)
It depends. It depends. There were basically two kinds of phones, right? There were the, what were called, ā the Brew phones, which were actually more rare. And then there was the GSM phones, which were the European standard. And those mostly ran Java, J2ME, Java Micro Edition. The Symbian, the Brew phones used Symbian and C++. Most of ā our
Yuri Sokolov (1:07:17)
Mm-hmm.
Karlo Kilayko (1:07:31)
customer base was GSM oriented though. So we did have Symbian phones or builds. So.
Yuri Sokolov (1:07:38)
No, I meant that J2ME also worked on Symbian phone, so I remember having Nokia N95, for example, one of the Nokias I have back then. On my N95 I had to install Java Virtual Machine to run ā Java applets. It was called applets, ā if I'm not mistaken, not games, not apps, applets. So, yeah, Java games would run. ā Actually, Nokia N95, early 2000s, AR games. It had AR games. You would open up your camera on the phone, you see coins everywhere on the real world and you would go to them. It was having accelerometer, so it would detect that you're coming to a coin and it will collect the coin. So AR games back then.
Karlo Kilayko (1:08:15)
yeah. Yeah. Nokia, Nokia was the stuff, man. Nokia was it, right? Everything was Nokia. Sorry, I might be confused with the Semi and Peru thing. I don't know. It was a long time ago.
Yuri Sokolov (1:08:45)
Symbian was the operation system for Nokia. Developed by Nokia, but run on, I think even Motorola ran this OS, if I'm not mistaken.
Karlo Kilayko (1:08:49)
Okay, great. So Brew must be the non-GSM thing. so anyway, so I moved to that division and ā my first assignment, I was just a producer, my first assignment was to take over the Nokia account because we had a deal to make games for Nokia's top secret exciting new N-Gage. so, yeah, yeah.
Amit Netanel (1:09:15)
Hmm man
Yuri Sokolov (1:09:15)
ā it was the talk of the town back then, the biggest and the brightest failure by Nokia.
Karlo Kilayko (1:09:22)
Yeah, absolutely. I still have several if you guys ever want to buy one. I have them for sale.
Amit Netanel (1:09:25)
Do you know how much they are going for on eBay, which I have in my second tab right now? I see at least 100 USD for a used one. So you're sitting on a mountain of gold there.
Karlo Kilayko (1:09:31)
ā how much. Really? Because I have a lot of games too. Yeah, that's good to know. Anyway, so.
Yuri Sokolov (1:09:43)
Only cool kids had engaged back in the day when we were at school.
Amit Netanel (1:09:45)
Yeah. Yeah.
Karlo Kilayko (1:09:49)
So you had, so the Engage game, so in, I think it was 2004. So ā we had a license from team 17. We were gonna make a Worms game called Worms World Party for the Nokia Engage.
Amit Netanel (1:10:02)
Nice.
Yuri Sokolov (1:10:03)
Wait a second, have you worked on worms with team 17?
Karlo Kilayko (1:10:07)
Yeah, I know Debbie Bestrick and and so so bad he passed away. Recently. The main guy at Team 17. Sorry, we'll have to edit in his name.
Amit Netanel (1:10:11)
Very cool.
Yuri Sokolov (1:10:20)
Unfortunately,
Karlo Kilayko (1:10:22)
Yeah, I've just my memory is so bad now, but anyway, so in 2004, I think it was my developer was in Rotterdam, the Netherlands. I was in Los Angeles and we played what had to be one of the first multiplayer games over a cellular network. He played a battle of worms, world party against each other. so.
Amit Netanel (1:10:44)
Really.
Yuri Sokolov (1:10:46)
I played the hell out of Worms Armageddon and the Worms 1, Worms 2 and
Karlo Kilayko (1:10:51)
We used to have breaks at the office and the whole team, we would just take each other on in worms.
Amit Netanel (1:10:57)
Mm-hmm. Naturally.
Yuri Sokolov (1:10:59)
It was the best local multiplayer game of my childhood.
Karlo Kilayko (1:11:04)
Yeah, it's a little bit. There's still games copying it. I just downloaded one on my phone called Castle something. It's just basically worms, you know, with new graphics.
Yuri Sokolov (1:11:15)
Good games are being copied. It's an awesome game even by today's standards. It can be a great mobile game. I assume there are a lot of mobile games in this area. And I remember even searching for Worms mobile game a couple of years ago and I don't remember if I found something. But I know Team17 is still working on this franchise from time to time they're releasing. But what interests me more is Even today, no, maybe not today, but a couple of years ago, it was really difficult to rely on peer-to-peer communication on mobile devices. I know a lot of developers that still kind of shake from fear when I say sockets to them. How did you develop a multiplayer on a Nokia device 20 years ago?
Karlo Kilayko (1:12:15)
Well, first it's turn-based. that's a huge, yeah, it's asynchronous. Yeah. Yeah. That's at the time we were doing it, there was no way to do real time. There was just, it's too unreliable. There was an app I was working on when I was living on the West coast here and there was a bus route I could take home that I would intentionally take home because the cell signal would drop. knew where it would drop. So I could test while I was going home and that was critical, right? Because
Yuri Sokolov (1:12:19)
So synchronous multiplayer then, okay.
Amit Netanel (1:12:20)
Okay.
Karlo Kilayko (1:12:44)
We had to handle the drops and you have to test the drops. So ā yeah, it was asynchronous. ā So it worked fine. Orms worked just fine. ā
Yuri Sokolov (1:12:53)
Your story just reminded me, we worked at a company called Jelly Button and we encountered there was some issue that players were reporting or not players or somebody from the stakeholders were reporting that the game has issues sometimes. the assumption was that they have poor internet connection or something. So RQA, we were working on 50 something floor and RQA would go to the elevator to test it. He would start a game, enter the elevator and go all the way down. And then he come back. Yes, I found it. And then a developer would patch the bug and the way to validate it, the developer with the QA would go to the elevator and...
Karlo Kilayko (1:13:29)
Thank you.
Amit Netanel (1:13:29)
Yeah, I found the issue. elevator test. Funny thing is, after we patched it, they sent an email to try and play the game on the parking, which is below ground, which has a poor signal. So they said, everyone, when you go back home, just play for five minutes next to your car, and let's verify everything works.
Karlo Kilayko (1:13:47)
ā underneath that. Yep. Yep. I think we're gonna leave you, At Skyward, we had one of the most brilliant QA engineers ever. We had to test the same thing, right? So we have the app on your iOS device is flying the drone, controlling the drone, but you can lose the signal. So what happens? So she put the drone in the microwave oven and closed the door. that way it's a parody. Yeah. Yeah. So I thought it was brilliant. That's absolutely brilliant. So, but anyway, we're going to go back to THQ. So I started there.
Amit Netanel (1:14:17)
Nice.
Yuri Sokolov (1:14:17)
So it's a far day cage, right?
Karlo Kilayko (1:14:27)
We did the Engage games. got to go, I went to Espoo. I got to go to Nokia. I was in love with Nokia so much. We, I eventually became the executive producer. So I was responsible for the whole catalog and we would ship, I don't remember 20 to 30 some games every year, ported individually and tested on 382 specific mobile devices. So it was, it was a lot. I learned a lot about shipping and feature management and prioritization and stuff like that.
Yuri Sokolov (1:14:57)
When you're talking mobile devices, I assume you're meaning not only mobile phones, but because back then were handheld devices like...
Karlo Kilayko (1:15:08)
We didn't do Blackberry. ā It was only just Cellular. We didn't do Palm or Blackberry. did, you know, like the easiest one actually was Nokia because they're very organized. had series 30, series 40, series 60, and were variants of that. We would still have to test because one of the most irritating bugs we had, was on a, it was on a SpongeBob game that I actually designed. ā My favorite developer was working on it.
Yuri Sokolov (1:15:11)
Palms, Palms, I remember the name.
Amit Netanel (1:15:14)
on pilots.
Yuri Sokolov (1:15:22)
Mm-hmm.
Karlo Kilayko (1:15:37)
and there was an audio bug only on one specific type of series 60 phone and QA would not pass us to let us release until we fixed it and we could not replicate it. That was the problem. And it was every other series 60 was fine except this one model had an audio glitch. And so that was, that was the kind of thing, but there were so there were 382 different devices, but the most frustrating thing wasn't actually that the most frustrating thing in the early 2000s.
Amit Netanel (1:15:42)
ā man.
Karlo Kilayko (1:16:06)
in Europe and in the US, I'm not sure about Asia, the carriers, Sprint, T-Mobile, Vodafone, you know, that kind of thing. They had absolute control over what went on their phones. The manufacturers had no control. It was a commodity. The carriers had all the power. And we would lament, like, ā and it was horrible. We had to make version, not only did we port to 382 devices, we then had to make carrier specific versions because they made
Yuri Sokolov (1:16:21)
Mm-hmm.
Karlo Kilayko (1:16:35)
we don't like the red button. We want a blue button for sprint or Verizon wanted something else or AT &T something else. So it was horrible. It was a, it was just a mass disaster, but we would sit around and say, God, somebody has to break this hold the carriers, how on the celly, why, why won't somebody come along and just fix this whole thing and make a phone? idea. Some kind of fruit company came out of nowhere.
Amit Netanel (1:16:35)
man.
Yuri Sokolov (1:16:41)
Mm-hmm. and they came and fixed some kind of fruit company.
Amit Netanel (1:17:01)
Some kind of food company.
Karlo Kilayko (1:17:04)
and fixed it they met and so at that point when the iPhone came out I had been THQ had reorganized and then later they went bankrupt but I had gone indie freelance for about 10 years and during the middle of that time the iPhone came out and it was so exciting I got back into development I went full circle at that point and actually this is this is kind of nice I can tell you guys my wife and I would work together on things because she's an artist our first iPhone title we released was called Hebrew for Kids and we launched it in 2010. And ā it was really great. ā It actually got good response and ā it was a lot of fun. I mean, it was teaching a language, but to me it was still a game. So everything was the same. And to your point that you're making, it was not just a game anymore. It wasn't ECS data driven. It was a mobile business application.
Amit Netanel (1:17:39)
Seriously. Mmm.
Yuri Sokolov (1:18:03)
Yep.
Karlo Kilayko (1:18:04)
And that was the transition for me.
Yuri Sokolov (1:18:07)
Basically, the approach that we use there is if you work long enough, you get used to this. So today when I'm developing an indie title, I'm automatically bringing all my skillset from the mobile development ā and I'm starting to build things with dependency injection and ā inheritance with the... Yeah, yeah, yeah, yeah, yes.
Amit Netanel (1:18:31)
And you think about asset delivery from day one.
Yuri Sokolov (1:18:36)
Of course, every aspect of this is just you live through it, you know the benefits of it and then it becomes a physical pain to do something that comes against your things you used to. So you say, well, what if tomorrow I'll have to modify this? But no, I'm in control. I can decide what will be tomorrow, right? So... It's still kind of... ā You need to learn to let go. And I'm learning for the past 6-7 years... 6-7 months. I'm learning to let go and to allow myself to create something less than perfect. And I'm putting the word perfect in quotes here. Because it's never perfect. And as we already talked about this... the more people, the more opinions you have and we developers, especially game developers, were so passionate about our tabs and spaces, we will kill each other for the indentation.
Karlo Kilayko (1:19:44)
Yeah. I think that's the best philosophy, you know, and that's the way. And I also think this is a great topic, too, that I would like to talk about. What you said is absolutely right. It will never be perfect. It will never be done. I worked for Trip Hawkins, right? Trip Hawkins is the founder of Electronic Arts. I worked at 3DO. Trip Hawkins had a saying that I loved. And people would complain, it's like, why do we ship the game so fast? They're not perfect. They're not done. And he would say, we make zero billion dollars on games we don't ship. And that stuck with me for years. It could be used as an excuse, whatever. But I've also, I've expanded on it a little bit. It's like, what is the purpose of game software? It's to be played. You have zero billion players for a game you never ship. So it doesn't, even if you're doing it as a hobby,
Amit Netanel (1:20:19)
Hmm.
Karlo Kilayko (1:20:39)
Your game does not serve its purpose unless you give it to people to play. And if you wait for it to be perfect, you will never give it to
Yuri Sokolov (1:20:48)
So, better done than perfect. My mantra for the past couple of years that I'm unable to fulfill. I'm...
Karlo Kilayko (1:20:51)
Yes. Yeah.
Amit Netanel (1:20:53)
Yeah. You
Karlo Kilayko (1:20:57)
So this is very interesting and serendipitous because I know I didn't want to come on here and self promote. But what I'm working on now, it's in my bio on LinkedIn. ā I have a newsletter called Click Bam Boom. And I have a partner back from the THQ days when we were shipping 30 games a year across 300 devices. He worked with me as a producer also. We got really good at shipping. We've noticed a gap. in the indie dev space. There's a million tutorials if you want to learn Unity. Even if you want to learn Rust and the Bevy game engine, you can find free lessons. You can learn anything. Yeah, you can learn everything, but nobody has really addressed game production. How do you establish a system, especially as a solo or as an indie small team?
Yuri Sokolov (1:21:27)
Mm-hmm.
Amit Netanel (1:21:35)
Mm-hmm.
Yuri Sokolov (1:21:37)
I contribute to those million tutorials.
Karlo Kilayko (1:21:51)
So to make sure you ship. So that's what we're trying to address. We're trying to take all of the knowledge that we've learned and turn it into a system. ā And so we started a newsletter. We're going to eventually do more stuff. I want to have a community and I want people to know, have support. And I want to teach a system that we've used. And I actually tested this out. I still know a lot of Dutch game developers. And so there's a Dutch game club called the One Up Club that I did a presentation for to try this out and they liked it. It was pretty good. It's just simple stuff, but to know their support, to share the knowledge of production systems to ensure you get your game out. ā And I think...
Yuri Sokolov (1:22:36)
Currently it's a newsletter that you can subscribe to and just like TLDR and receive from time to time some nuggets of wisdom.
Karlo Kilayko (1:22:47)
Yeah, we're trying to do an issue every week. We're going through a whole process. We have a framework we've designed. It's called the mindset plus clarity. The mindset comes from the James Clear book, Atomic Habits. So the idea there is you're already a game maker. This is targeted at people who already know how to make games, right? Because it's useless to anybody else. If you already know how to make games, but you need to change your mindset to think about shipping. Shipping is the most important thing you need to do with your game.
Amit Netanel (1:22:59)
Mm-hmm.
Yuri Sokolov (1:23:00)
Mm-hmm.
Karlo Kilayko (1:23:16)
So you can make the game, you can come up with the cool features a lot. That's great. But shipping is the bottom line. So that's the mindset part. The clarity is simple, but hard. It's understanding every single thing that has to go into your game, right? There's the old saying that the first 90 % of game production takes 90 % of the effort and the last 10 % takes the other 90 % of the effort, right? And it's absolutely true, right? Even for me, like I've been doing this for so many decades.
Amit Netanel (1:23:38)
The other night.
Karlo Kilayko (1:23:46)
I, it's so hard to actually ship. It's all the little tasks at the end. They just kill you. Right. And so we're trying to help people recognize that, have clarity on it, understand it, plan for it, allow time and be able to, know, when, so Matt is my partner in this. When we were at THQ, we had marketing driven deadlines, like the, Finding Nemo games they had on the shelves the day the movie released.
Yuri Sokolov (1:24:12)
Mm-hmm.
Karlo Kilayko (1:24:16)
or we were in big trouble. And we did it every single time because we had a process. ā And that process was really valuable.
Yuri Sokolov (1:24:26)
I think coming to understanding that you need this sort of help is also a step that you have to take. You have to grow into it. I know a lot of people that kind of, oh, I'll leave this for later. So I know that I don't know anything about, I don't know, marketing the game, completing. I know that I don't know how to build a game company.
Amit Netanel (1:24:27)
And
Karlo Kilayko (1:24:36)
Yes.
Yuri Sokolov (1:24:54)
ā But I don't have time for this. I just want to build my game and to make my code perfect. And one of the... I had a boss once. ā He was a serial entrepreneur. He did a couple of exits, multi-million dollars. And ā he was a technical founder. And we were conversing, ā debating about some architectural decisions in the game I was working on at his studio. And he was saying, no, do this. And I say, but this is horrible. It's bad design. It's bad practice. He says, no, do this. We need to ship it. It will be faster. And I say, but it will come bite us. And he says, you know, Yuri, we've been working on games roughly the same amount of time. Tell me how many perfect games you've developed, how many perfect lines of code you wrote. And I'll tell you how many games I shipped. And this is kind of stuck with me because I never did a perfect, maybe a perfect line, not a perfect method or a perfect class. ā And he shipped a couple of successful games. yeah, coming to the realization that I need help in this regard is it's additional stepping stone that I need to overcome and everybody need to overcome and to understand that
Karlo Kilayko (1:25:57)
Yeah.
Amit Netanel (1:25:59)
you
Karlo Kilayko (1:26:01)
Yeah, I love that.
Amit Netanel (1:26:06)
Well.
Yuri Sokolov (1:26:21)
You need to learn stuff. Maybe things you will learn today will help you with other stuff you don't know with your development, with the things you're already familiar with. But I'll give an example. Somebody wants to create a game and ship for consoles. For PC and for consoles. And there might be some console-only limitation. that comes from legal terms, not technical limitation, it's a legal decision, I don't know, that you're not familiar with and something you're doing in your code today might affect how you will ship in one year or two years. And if you don't know this beforehand, ā you will start making a lot of mistakes and it affects all the areas, not only this, so... I don't know, guys, subscribe to the newsletter, maybe it will help you, maybe not.
Karlo Kilayko (1:27:26)
But no, I think what you're Thank you, Yuri. I appreciate it. No, I think I think what your story you were talking about about that guy It's it's exactly right and that's why we start with mindset because it's a it's a small thing but you have to think like you're saying you have to learn that lesson that ā There's so much to do and if you don't think about it and plan for it and understand the ramifications of your decisions then
Yuri Sokolov (1:27:27)
I'm selling on your behalf, you see?
Karlo Kilayko (1:27:55)
going to make it so much harder to ship. And that's not to say that you're never going to ship, right? People do it all the time. I made a website the other day for the first time. I completely missed the whole internet revolution. So my first website I finally made and I was like, hey, this is great. But then it came time. So there was the 90%. Then it came time to, well, let me deploy this and and make sure it registers with the Google SEO search and all this. ā it's got to work on mobile. And it's like, my God. Some of the decisions I made, I wasn't thinking of any of that stuff. And it bit me on the ass to break our no profanity rule.
Amit Netanel (1:28:20)
Yeah. And why? Because you don't know what you don't know at the beginning.
Yuri Sokolov (1:28:39)
What you don't know.
Karlo Kilayko (1:28:40)
Exactly. And we're trying to solve that. So part of the process is we develop a definition of done. And it's horrible. It's every single thing that could possibly be in your game. It's tedious, horrible. But what we do after you, that gives you the clarity. You see, here's the list of all 27,000 things you have to do. You have to go through after that and rank each one's like either
Yuri Sokolov (1:28:54)
Mm-hmm. Mm-hmm.
Karlo Kilayko (1:29:09)
I've got code for this and I know exactly how this works or I have never done this before and I have no idea. So then you have milestones and your first milestone as a publisher, we always insisted on the developer make a vertical slice. We want to see a vertical slice the game because we want every risky feature proven. And that's what you do. You tackle that risky stuff that you don't know first. The third leg of the tripod,
Yuri Sokolov (1:29:25)
Mm-hmm.
Karlo Kilayko (1:29:39)
that I always recommend do not start with your dream game, start with smaller games and iterate. You're not going to go out tomorrow and run a marathon. You're going to train and build up your miles. So people may laugh at small games. They say, that's not worth my time. But you build that muscle of finishing and understanding every system that's involved in finishing and shipping a game. You get better. And then you have code. When you get to that list and you say,
Yuri Sokolov (1:30:02)
Right.
Karlo Kilayko (1:30:08)
What about this steam marketing thing? Also, I've done that. I've got templates. I've got everything. So it's no big deal now. But when you're starting, it's a big deal. It's like the first time you submit an iOS app to Apple. That is hell. That is the worst thing. But the 39th time you do it, okay, it's not so bad.
Yuri Sokolov (1:30:12)
Mm-hmm.
Amit Netanel (1:30:13)
just the things. Yeah.
Yuri Sokolov (1:30:20)
Yes.
Amit Netanel (1:30:21)
Mm-hmm. ā man.
Yuri Sokolov (1:30:26)
Actually, specifically with Apple, it's a never-ending story. So I don't know how many apps I already submitted for the first time. And every time is like the first time. It's specifically with Apple.
Karlo Kilayko (1:30:40)
Is it? because like, it's different.
Amit Netanel (1:30:43)
They come up with a new form, a new disclosure you have to give.
Yuri Sokolov (1:30:49)
But that's it. On the other hand, there are a of things in the mobile industry that I see a lot of posts on Reddit and other places that people struggle with. I did, I don't know, compliance with the yearly compliance, Facebook compliance, if you want a Facebook login in your app. So I did this. Thousand times for me. It's an automated process. I can do it with my eyes closed and people and it's tedious, but people who never done it they encounter it for the first time because they're publishing their first mobile game and They encounter it and they kind of scared what all those thousands of questions I have to answer and submit a video and I don't know what So yeah, it's a muscle not with Apple Apple or Unique in that way. Yeah.
Karlo Kilayko (1:31:45)
They're always changing the game I'll tell
Amit Netanel (1:31:48)
continuous struggle.
Karlo Kilayko (1:31:49)
you I
Amit Netanel (1:31:49)
It's not a one-time struggle.
Karlo Kilayko (1:31:49)
gotta tell you guys one one one more funny story So I've made lots of console games, right Xbox PlayStation Nintendo When Apple came out 2009 2010 when they started accepting submissions People would complain and whine all the process is so horrible and I would get on the forum and I would just be disgusted and I said have you ever
Amit Netanel (1:32:15)
Mm-hmm.
Karlo Kilayko (1:32:15)
put an Xbox game through first party approval? Have you ever put a PlayStation game through Sony first party approval? You have no idea how easy you have it with Apple.
Yuri Sokolov (1:32:27)
Yeah, yeah, in those terms I only heard the struggles people go through to publish on consoles. On mobile phones we have different issues. The hardware.
Amit Netanel (1:32:39)
Yeah, but you know why that sentiment arises? Because people's first publishing experience nowadays is compiling on WebGL and uploading to each IO, and that's it. It's the easiest thing. You do it at the last five minutes of the game jam, and you say, ā I published the game. Right? And then you try to upload to Apple or Google Play, and you learn.
Yuri Sokolov (1:32:51)
Yes.
Karlo Kilayko (1:32:51)
Yeah.
Amit Netanel (1:33:08)
You learn the reality.
Karlo Kilayko (1:33:08)
Google, you lost your key, your API key or whatever it is for Google.
Amit Netanel (1:33:12)
ā man, yeah.
Yuri Sokolov (1:33:14)
I, till this day, I won't use it, but till this day I have my first key store file I generated 20 years ago. A key store file for an APK signing. Today you don't need them. Google signs your applications for you with the AABs. But back then I have, and it's still valid because I made it for, I don't, 100 or 150 years.
Amit Netanel (1:33:28)
Nice.
Karlo Kilayko (1:33:34)
Yeah, they told you
Yuri Sokolov (1:33:44)
So it's still working. 20 years ago? So it was really nice talking to you, Karlo. It was a fun conversation. ā Hope that everybody will enjoy it as well. Everyone except us because we enjoyed it so much. ā Thank you. Yeah.
Karlo Kilayko (1:33:44)
I love it. I love it.
Amit Netanel (1:33:47)
It's going to be okay. Time flew by, ā and ā who knows? Maybe we'll ā continue discussing, because I wrote down lots of stuff during the episode that I want to continue discussing, but time is limited. Time is final.
Karlo Kilayko (1:34:17)
Yeah. Yeah. Well, yeah, you're a admit. It was really great honor to meet you guys. I really enjoyed this too. I really like you guys are so down to earth grounded and calm and experienced. It's really nice to talk to people like you that have been through everything and know what you're talking about, but still have a good attitude about it. It's so refreshing. Right. And, and I think
Amit Netanel (1:34:36)
Blushing. That's the only way to continue doing it for as long as you did. I don't know how you did it, but.
Karlo Kilayko (1:34:46)
So many years. Because it's, we like to make things. We like to make things. To me, the best experience ever in my life was making a game and watching somebody play it and having a fun time. That is, that's the reason to do it and it's just so great. I love it. There's nothing else like it and I hope it lasts at
Yuri Sokolov (1:35:09)
Yeah, and the occasional detour to producer job. To switch some gears.
Karlo Kilayko (1:35:14)
Yeah.
Amit Netanel (1:35:15)
Yeah, to refresh.
Karlo Kilayko (1:35:15)
Yeah. Well, no, I'd like to switch lots of things. I've always done it. But the producer thing was super useful, I learned a lot, so much. And it's been really
Yuri Sokolov (1:35:23)
Yes, I did my share switching. So yeah, it was really nice. The honor is ours and thank you and see ya.
Karlo Kilayko (1:35:35)
All right. Bye.
Amit Netanel (1:35:35)
Thank you, man.
Comments
No comments yet. Be the first to comment on this episode!
TECH DEBT CLUB
YouTube
Spotify
Apple Podcasts
Amazon Music
Deezer