
TDC #10: The Purrfect Networking Solution with Valentin and Bobsi
Show Notes
Valentin and Bobsi met contracting for the same multiplayer games platform, where a switch to Photon Quantum brought solid determinism and a workflow that took two hours to network a rolling ball. Almost two years after they started building PurrNet out of that frustration, their MIT-licensed Unity networking solution has passed 3,000 Discord members and around 20,000 GitHub clones a month. We talked about retrofitting multiplayer into ten-year-old single-player code, why no tutorial teaches server authority, a 100-player Unity server using 100–150 MB of RAM, player IDs that survive reconnects, 550 automated regression tests, and shipping CRACKED and Arctic Drive on their own stack. Every networking solution can make games, Bobsi says — two percent less bandwidth was never the point.
🔹 Links:
PurrNet on GitHub: https://github.com/PurrNet/PurrNet
Bobsi Tutorials on YouTube: https://www.youtube.com/@BobsiTutorial
NowUI: https://github.com/BlenMiner/NowUI
CRACKED on Steam: https://store.steampowered.com/app/3917010/CRACKED/
Arctic Drive on Steam: https://store.steampowered.com/app/4009490/Arctic_Drive/
🔹 Chapters:
- 00:00 Intro
- 01:18 What We've Been Playing
- 19:34 Voxels, C++ in Unity, and a UI Library Born From Hating UI
- 25:41 Ten-Year-Old Code Bases and Retrofitting Multiplayer
- 36:16 Arctic Drive, and Yes, You Can Pee on the Snow
- 41:33 Two Hours to Network a Rolling Ball in Photon Quantum
- 48:57 Server Authority, the Thing No Tutorial Teaches
- 53:48 A 100-Player Unity Server in 150 MB of RAM
- 57:51 Two Percent Less Bandwidth Doesn't Matter, Main Character Syndrome Does
- 01:02:30 Player IDs That Survive Reconnects, and Swapping In Your Own Systems
- 01:06:47 Dogfooding, Discord Growth, and Traffic From ChatGPT
- 01:15:50 550 Automated Tests and 45,000 Playtesters
- 01:20:45 CRACKED, Rollback Prediction, and Falling Sand With No State
- 01:24:55 One Book, One Movie, One Game, and WinRAR vs. OpenAI
Yuri Sokolov (00:00)
You know me, Amit. I love me some conversation with actual engineers. So
Amit Netanel (00:06)
Yeah, on hand professionals.
Yuri Sokolov (00:09)
yeah, with professionals. So we just had an and conversation with two amazing engineers, two people behind the PURNET networking solution. think, I don't know, mirror net code for game objects. They're doing a similar stuff that's kind of growing and spreading and looks awesome. And we talked about a lot of stuff actually, not not only networking, well it was the the main topic, I guess, right?
Amit Netanel (00:43)
Yeah, we you know, a an indicator of a great conversation is the ability to talk about, you know, engineering stuff and then games coming back to engineering. so that was fun. And
Yuri Sokolov (00:56)
Yeah, it was a lot of back and forth between our love to games and our love to developing games. we hope you'll have fun as much as we did and take a lesson.
Valentin (01:17)
Like New Year's.
Yuri Sokolov (01:18)
So guys, have you played anything recently?
Bobsi (01:22)
you caught me off guard with that. I mean
Valentin (01:24)
I played for Honor not long ago. It's a horrible game.
Yuri Sokolov (01:26)
For honor, really. Yeah.
Amit Netanel (01:27)
For Honor.
Valentin (01:28)
I torture myself with it.
Yuri Sokolov (01:30)
Yeah, why why do you do it to yourself to yourself? Because it's really I don't know. w back in the days, a lot of years ago when I played, it was buggy. I assume they they fixed the bugs, but
Valentin (01:43)
I think it's less buggy. There's been like cheating things as well. Like not long ago I actually I saw a video where people could like equip any perks on any character and like they could like have their like most useful perks, for example, active right from the beginning and whatever. Like it there was definitely got problems. I don't know why I go into it. I think it's just like the quick match. Like I'm doing something like, yeah, let me go get pummeled and foreign or then I just go back to work.
Yuri Sokolov (02:07)
I think the cheats were I think
Amit Netanel (02:07)
I totally get that. Totally get that.
Yuri Sokolov (02:09)
the cheats were related to the fact that they kind of Ubisoft decided to release a peer to peer mul multiplayer competitive multiplayer in a peer to peer environment. So
Valentin (02:17)
Yeah. That's a wild decision. I I don't know if it's peer to peer anymore. Maybe it is. I think it's server now, but it it did definitely launch. It was peer to peer.
Yuri Sokolov (02:25)
Probably these days it's server, but w on launch it was peer to peer. You actually actually you would enter a match and somebody would come with a poor internet connection. And I think Ubisoft decided who is the game server based on the worst internet connection in the room. So you have you're
Valentin (02:44)
Ha ha ha.
Yuri Sokolov (02:45)
on a 3G, right? You're the server. so yeah, it when it released it was peer to peer, if I remember correctly.
Valentin (02:53)
Yeah, it was, it was. I remember.
Amit Netanel (02:54)
How do you guys know that? mean, was that a plot point in the Mythic West show?
Yuri Sokolov (03:00)
What about the the fact that they released peer to peer? Yeah, they've
Amit Netanel (03:02)
About the networking, yeah.
Yuri Sokolov (03:04)
talked about it publicly. It was kind of a a business decision that way they were kind of proud about and talked about it. And from the first day of the release, people were unable to finish a match because it it was just disconnecting. And then there were a lot of cheaters.
Valentin (03:22)
Yeah, it's the beating was bad. but like I mean to be fair, it worked pretty alright for P to P. Like like I guess some if somebody disconnected it'd be kinda silly to just wait for like ten seconds for like everything to like restart, like for a new host to be picked.
Yuri Sokolov (03:35)
Mm-hmm.
Valentin (03:36)
and then like if they had like little NAT statuses at the top. So if you couldn't like directly connect to people to just have a like a constantly like red thing saying your internet sucks and like it was a bad experience. I I don't know. I don't know how like a triple A game could could could do that. But I mean it was fun. I I really enjoyed the the mechanics at first. And I still enjoy them, which is why I played them, even though the the the entire game is a little bit
Bobsi (04:00)
The the whole networking part here really sounds like the old Call of Duty games to me. Like Call of Duty 4 and Modern Warfare 2 and stuff. They 'cause they were similar, which was also why people could cheat by forcing themselves to be host and then they would start cheating. which it it really sounds similar to me because I when you mentioned those icons and stuff, I feel like I got flashbacks from when people stole the host you just knew now now it was gonna go wrong.
Yuri Sokolov (04:22)
I once worked at a company that we've developed a shooter game. it was web based, and when I joined the company, they just started migrating, porting the game to mobile, and it was based on photon, peer to peer. And it was so broken in terms of anybody could just put run commands, JavaScript commands in a console in a browser. And just write kill player one and the player would die.
Bobsi (04:58)
Ha ha.
Valentin (04:58)
That's wild.
Yuri Sokolov (05:00)
yeah, yeah. So well.
Valentin (05:02)
How do you screw up security that bad? That's impressive.
Yuri Sokolov (05:05)
It's it's a it was a game that was developed by guy that jineteen year old dude that developed a game
Valentin (05:12)
Yeah, that makes more sense.
Yuri Sokolov (05:13)
and the game just
Amit Netanel (05:15)
Yeah.
Yuri Sokolov (05:15)
kind of got tension and people people starting start started playing it a lot and some companies invested into into them.
Valentin (05:28)
Actually, he reminded me with the story with like I was working one time doing like a battle royale for like like a I guess it was two I know like it was maybe like three members in that. And there's actually one the guys that sent me my first beefy computer because I couldn't just I couldn't work on a project with my my computer at the time. and the funny thing is I was put in charge of networking, which I don't know why. And I barely knew anything about networking and we ran like a a test for like you know a full server maybe it was like what 50 people probably less like we I don't think we had that many playtesters at the time and everything was lagging and there's there's like this guy yeah I can look into it to see what's happening and there's like yeah I mean Valentin's been setting like footstep sounds on the like the reliable RPCs for everybody.
Yuri Sokolov (06:14)
Mm-hmm.
Valentin (06:15)
it's like well why is he doing this? Like I don't know. Like the guy came to ask me like why did you do this? How else am I supposed to play sound? Just spamming RPCs for every footstep Yeah, it was great. I I learned a lot with with multiplayer.
Yuri Sokolov (06:26)
Yeah.
Amit Netanel (06:28)
Sounds performant.
Yuri Sokolov (06:30)
You say battle royale. Ma our game was also battle royale. Let's let's confirm. Was it one v one game?
Valentin (06:41)
I I don't think so. I don't remember the name. It was more like what's that Hunger Games.
Yuri Sokolov (06:44)
No, the the battles, the battles there were one player versus one player, two players versus two players.
Valentin (06:49)
No, no, it was like Hunger Games. It was like a free for all.
Yuri Sokolov (06:53)
because our our game was
Amit Netanel (06:52)
Yeah, an actual Battle Royale.
Yuri Sokolov (06:55)
battle royale f
Valentin (06:56)
Yeah.
Yuri Sokolov (06:57)
for for only a couple of people. In the idea behind the game was like it's gonna be Fortnite, but people would be able to play a match in one minute or two minutes. So
Valentin (07:11)
Wow.
Yuri Sokolov (07:12)
Yeah, th this is this is was the the the main feature of the game. So kids in school, they would have you know five minutes off ten minutes off and they would enter and play a match. In Fortnite, you'll need you'll have you'll need five minutes to just to boot the game. So you would see the graph of players during school time in the US, the graph is up. Everybody playing our game and then in the evening nobody playing our game because everybody ran into Fortnite and Roblox and stuff.
Amit Netanel (07:49)
They're doing their homework, Like back home. They played all day. They need to
Yuri Sokolov (07:52)
Yeah, yeah, of course, of course they are.
Amit Netanel (07:54)
study sometime.
Yuri Sokolov (07:55)
Bobsy, any any anything you've played recently?
Bobsi (08:00)
I think the most the thing Valence and I mostly end up playing together is we kind of fall back to Rocket League, because it's a sort of a short and sweet game. You know, it's easy to hop in, play twenty-five minutes, hop out again. But when we have our like proper play sessions, we tend to try and find some like honestly, I think I have a soft foot for these shitty horror games. Like these these bad co-op horror games, they just sometimes hit a funny spot. so we we tend to to go looking or hunting for them. but I I honestly think the game we've had the most fun in. playing together was Elden Ring, with the proper
Valentin (08:31)
that was dope.
Bobsi (08:32)
co op mod. But that was a lot of fun, like grinding
Amit Netanel (08:33)
Nice.
Bobsi (08:34)
those bosses and facing those challenges together. that was really enjoyable. And then
Amit Netanel (08:38)
Did you guys play
Yuri Sokolov (08:38)
I made here as a fan.
Amit Netanel (08:39)
Nightrain together?
Bobsi (08:41)
We we have we played it very, very little with one of one of my friends before, but he kinda just pulled us through it, which kinda turned us off to it. So we've talked about we need to go back and play that together properly. just the two of us. Yeah, exactly that was the thing, like he was just
Amit Netanel (08:52)
Yeah, he carried you because he was so good. Yeah.
Bobsi (08:55)
kinda rushing us through. We had no idea what we were doing. He was just constantly like, Follow me, run, run, run, kill them, run again and we just had no idea what was going on. So I think we'll we'll probably give it a shot in our own tempo the next time.
Yuri Sokolov (09:08)
Anything
Amit Netanel (09:08)
Hope so.
Yuri Sokolov (09:08)
new from you?
Amit Netanel (09:10)
Yeah, so I've started playing the new Fire Emblem game, Fortune's Weave, like four days ago. And it was a holiday here, so I had relatively more time off. And I played till 3 in the morning one day. So I'm about 10 hours in, and I still didn't finish all the tutorial pop-ups. So I'm still learning the game, like 10 hours in. It's the most complex Fire
Yuri Sokolov (09:39)
Dude it it's
Amit Netanel (09:41)
Emblem has ever been. I mean...
Yuri Sokolov (09:42)
It's saying nothing. I play civilization for decades. I still see tutorial pop ups here and there.
Amit Netanel (09:49)
No, but the level of like all the tutorial tasks are so simple. Like you need to get a carrot from one place in the city to the other. Or if it's during combat, you can't do anything else. You need to use that exact ability. And when you're not in the fourth tutorial, you have like a bajillion options of things you can do. So the game holds your hand and then throws you like the second you're done. But it's a good game. It's a really good game. It's a lot better than Fire Emblem Engage, the last entry. And I still don't know if I can recommend it. I mean, I need to finish the tutorial first. Yeah.
Yuri Sokolov (10:34)
Finish the tutorial first, yeah.
Amit Netanel (10:36)
I'll update you in like 100
Bobsi (10:36)
If we can just show some love.
Amit Netanel (10:37)
hours or so.
Bobsi (10:38)
We need to also show some love, I mean, in this regard of I mean games with a lot of depth, I guess we could call it,
Amit Netanel (10:43)
Mm-hmm.
Bobsi (10:44)
to a game like Path of Exiles. I've played thousands of hours in that game. That is insane the depth.
Amit Netanel (10:49)
Yeah.
Bobsi (10:49)
I still feel really bad at it after probably two thousand hours. It is insane.
Amit Netanel (10:53)
Are you preparing for 2.0 in like two months?
Bobsi (10:57)
I have actively been staying away from Path of Exiles too, 'cause
Amit Netanel (10:59)
You
Bobsi (11:00)
I started playing it with one character only. I ended up spending like two hundred hours not getting my work done. So now I'm
Amit Netanel (11:05)
Yeah.
Bobsi (11:06)
just actively not touching it. But once in a while it pops up on Reddit and I feel that tingled really want to go in there again. It's so addictive. What what they did with the loot and the currency iotums and all that, I just I can't get enough of it and the the satisfaction of making a build and it actually works and yeah, that's just too much fun.
Amit Netanel (11:21)
A few guys in my office are playing each patch. And it's usually on the weekends here. So we can see on the company Discord, they log in to the queue at Friday evening. And they don't log out till two days later. And they always take a day off after. They're like groggy. Don't ask me anything. Yeah, I don't know. Because they try to use the end game builds, finish the content in one go, sometimes without sleeping. I mean, it's destructive, I think. I don't know.
Bobsi (11:53)
doing it in one weekend is insane. I I I'm not that bad. I just I play like six hour sessions or something, which is a lot for me at least in a single gaming sitting. But
Amit Netanel (12:00)
It's a lot. It's a lot.
Bobsi (12:02)
I I I I made it a personal quest to make Flicker Strike in Path of Exile always the best because it's it's a bad ability and everybody knows it. And somehow people just love it anyway. And I had actually one Path of Exile league where I was the highest DPS build in the world, because I just had so much fun with the Path of Exiles. I can't get enough, I think only like two percent of players of Path Effects I'll ever touch that ability, but you know, for me it's become a personal quest now to spend as much time making that
Yuri Sokolov (12:26)
Mm-hmm.
Bobsi (12:27)
good.
Yuri Sokolov (12:29)
Yeah, I kind of never never s played Path of Exiles. I know what you're talking about, but I never dove into it. because mainly because in the last couple of years I kind of got off the games. Child took all my attention, so the kid took my all my attention, so I couldn't play. And and then
Valentin (12:51)
Mature thing.
Yuri Sokolov (12:53)
once once I started to get some free spare time, I had So many games and series in the back catalog that I need to finish. So Beth of Exiles just wasn't one. these days I once again don't have time to play. So what I do, nothing, nothing new to omit here. I continue grinding Ballatro. I continue grinding this game. I decided that I'm gonna complete all decks on gold stakes. And it's hard. It's hard. There's there's a lot of Yeah, yeah, yeah. The top level, the top difficulty level. So I have
Amit Netanel (13:30)
Gold state is like the eighth difficulty. man. Just finishing Balatro once takes forever. So I can't imagine how long you've been playing.
Bobsi (13:40)
Yeah, it's it's
Yuri Sokolov (13:40)
Yeah, you get better
Bobsi (13:41)
a lot of gaming.
Yuri Sokolov (13:42)
with time.
Bobsi (13:44)
How about the sorry.
Valentin (13:44)
I guess finishing sorry. No, I was gonna say finishing is like discovering all the decks or like what what does finishing mean?
Yuri Sokolov (13:52)
first of all discovering all the decks. second of all when you in Ballatro, when you take in the deck and you're starting playing, first you're playing on the the easiest difficulty level, and then when you when you're reaching when you defeating the the level eight, you can kind of quit or proceed in the endless mode. and if you if you reach level eight, next difficulty level for this deck is unlocked. And there is Eight difficulty levels per deck, I think. So for me, finishing Bellatro is finishing all difficulty levels for all decks. So it's like eight.
Valentin (14:30)
Let's see.
Yuri Sokolov (14:31)
I think there's some more than ten decks and eight difficulty levels for each deck. So it it's it's a lot of time to finish it. I I think I finished five or six decks already, but it it takes time, it takes time. There are certainly more fun decks and less fun decks and I left the less fun decks to the end and now now it's less fun but I have to grind. I'm a com completionist. I'm finishing all side quests in Spider-Man. I don't I'm finishing everything.
Valentin (15:07)
Yeah.
Amit Netanel (15:08)
Just promise me, don't Google bilateral mode manager, because you'll have more decks on your hands. Don't look it up.
Valentin (15:14)
No you gonna ruin his life? Don't
Yuri Sokolov (15:18)
No, you know me, I don't like mods. I don't like mods in games.
Valentin (15:22)
That's fun.
Yuri Sokolov (15:23)
I just I love to play the game the
Amit Netanel (15:24)
You're better off that way.
Yuri Sokolov (15:26)
way the developer intended. The only mod I play is Hotas for Heroes 3. This is the only mod I I play in games. Yeah. But games is fun. What is more fun is developing games, right? And no.
Valentin (15:45)
No.
Amit Netanel (15:46)
Depends, depends.
Yuri Sokolov (15:47)
No. For real.
Valentin (15:49)
No, it's pretty fun. It's pretty fun, but it can be pretty hard as well, which I guess is part of the fun.
Amit Netanel (15:52)
Like I have to admit, doing the multiplayer part of any game is the part I dread about the most. It's the exact opposite of what you would define as fun for me. Most of the games I've played had, if they had a multiplayer component, it was restful communication with the server. Nothing like real time.
Yuri Sokolov (16:15)
Asynchronous multipleyer
Amit Netanel (16:20)
The only one time I tried to do real time was with photon and it looked like basically still like an async game
Valentin (16:29)
Yeah.
Amit Netanel (16:30)
I had a really bad experience with it and your goal in the I don't know how how long we'll be here but is to convince me that You know, it could be it could be different
Yuri Sokolov (16:40)
It's easy.
Bobsi (16:42)
I you just gotta try Pernad, it'll convince you. No problem. It'll do it for us.
Amit Netanel (16:45)
Sold. Yeah, that's
Yuri Sokolov (16:46)
I think we'll get to Pernet. I I
Amit Netanel (16:47)
a wrap.
Yuri Sokolov (16:48)
did I did my due diligence a little a little bit and I think it would convince Amit. Amit is not preparing for those interviews, but he's it's kind of flowing the wave and then he picks up a lot of interesting
Amit Netanel (17:01)
No, I.
Yuri Sokolov (17:02)
stuff and tries them afterwards. so I think I think he'll he'll be the one to try. My experience with with multiplayer is kind of limited as well. So the only experience I had in a in a proper production game was the game that I've mentioned the the battle royale slash shooter game that I just kind of worked at a company that already developed a poor quality code base because once again it's a 19 year old kid that started developing it it's two too actually so it was kind of okay what whatever we learned from from don't know breckies on YouTube, those kind of stuff. And later on I read a lot about theory of multiplayer game determinism and stuff like that, but never touched it in in a real-time multiplayer. So you're here with noobs, with complete noobs and everything related to multiplayer development Not to say it about you because you kind of live this life, right? Both of you.
Bobsi (18:19)
Yeah.
Valentin (18:19)
Yeah, multiplayer became our life.
Bobsi (18:21)
It's it's every day for us, whether we make games or we make systems, it's multiplayer touches all of it pretty much.
Yuri Sokolov (18:28)
Yeah, I I have to say also when I asked what did you play, you mentioned only multiplayer games.
Bobsi (18:35)
It's funny 'cause I realized I forgot to mention some because I even have them tattooed on my body. That's The Witcher and that's Horizon Zerodon, both not multiplayer. Although I gotta say Horizon's actually not that good a game. I I just thought they looked cool.
Valentin (18:47)
Yeah.
Yuri Sokolov (18:49)
I haven't finished the second one yet.
Bobsi (18:52)
I loved the universe. That was what I fell in love with and and why I liked it. And I mean, I
Yuri Sokolov (18:55)
Yeah, yeah.
Bobsi (18:56)
wanted a memory for my trip anyway, so that was that was why I got these.
Yuri Sokolov (19:00)
The technofantasy stuff is is a good one. I can recommend a book, Shonara Chronicles. If you watched MTV series, forget about it. Just just throw it throw it out of your mind and never watch it. But the books are kind of interesting. It's also techno fantasy like. Same with same as with the with the horizon. I have I don't have game tattoos on my hands, but Those two games are awesome, in my opinion.
Bobsi (19:33)
Yeah, for sure.
Yuri Sokolov (19:34)
yeah, so you do a lot of stuff, both of you. I kind of we we made some preparations to to this conversation. And I see, for example, Valentine's GitHub is kind of full of all kinds of stuff. not only Pornet, which we'll definitely talk soon about. how do you come up with ideas? Because Really, some of them are really elite.
Valentin (20:03)
I mean, I'm curious what you found that was lit. I mean, I I I've dabbled into some things which I guess piqued my interest. I've done a lot of voxel things as well.
Yuri Sokolov (20:11)
Mm-hmm.
Valentin (20:12)
I even have like a YouTube tutorial making voxel engines, which I don't know where it is anymore. it's been it's been a while. and I I did like two or three series rebuilding from scratch the voxel engine, and then I did some stuff like trying to like up how much I could render. I know, I I just always like voxels. I'm a Minecraft player. I was a Minecraft player as as
Yuri Sokolov (20:34)
Mm-hmm.
Valentin (20:35)
well, which is actually I use like this nickname Blend Miner for a lot of things. And it's a
Yuri Sokolov (20:39)
Mm-hmm.
Valentin (20:39)
mix of Blender and Minecraft. It's like the Blend Miner. Just a bit just a bit of a side thing. yeah, and then as I find stuff that interests me, I actually I did some UI things as well. And the reason I did UI things is because I hate UI. And it is as an effort to like try and make them, I guess, try and make it more workable or a
Yuri Sokolov (21:00)
Mm-hmm.
Valentin (21:00)
workflow that I could endure.
Yuri Sokolov (21:04)
So the the things I found interesting in your GitHub repositories, not the voxel stuff, because to be honest, just it was it was some time ago that every YouTuber released a voxel tutorial out there. So it's kind of okay, I saw it. But things that I was interested in, and not in terms that I have to use it, but in terms of why didn't I think about doing this experiment or stuff? you had the cpp nator to run c to run c plus plus in in unity you had
Valentin (21:38)
yeah. I rem Yeah.
Yuri Sokolov (21:44)
the the compute traders written in c sharp right so
Valentin (21:49)
Yeah. I mean that one wasn't really like a f it was more of a prototype. It it kinda worked. The idea was there, but it sort of paused it. But I wish I continued. That was such a fun project.
Yuri Sokolov (21:59)
Yeah, and then now UI, which is I I kind of love I'm a immediate GUI. Yeah, yeah,
Valentin (22:04)
I'm GUI, Zero Cap.
Yuri Sokolov (22:06)
yeah. So have you heard about PangUI?
Valentin (22:09)
yeah, actually if you go into the Now UI readme, there's some examples that I built with Now UI that are inspired by the Pan GUI demos.
Yuri Sokolov (22:20)
Have you have you had the opportunity to try the Panguy?
Valentin (22:23)
I have not I have not used it.
Yuri Sokolov (22:26)
Yeah, they they I think they're they'll start inviting soon more people. I I had the opportunity to use it. A lot of under NDA and I cannot spill the beans, but it's kind of fun. it's it it's it's a fun framework. so I saw that also the now UI is Ha have a lot of stars, relatively a lot of stars, right? So
Valentin (22:54)
Yeah, I mean I I got them all in a week and then it just kind of stopped
Yuri Sokolov (22:57)
Really?
Valentin (22:57)
again. Yeah, I guess it's an old project. I think I started like four or five years ago or something. and then I I just as just as another project that I had is kind of paused development. and then to be honest, when AI started being good, I was like, Yeah, let me try and resurrect this project and
Yuri Sokolov (23:12)
Mm.
Valentin (23:13)
and see how much I could push it. So there's a lot of the new things that are in there, with the help of of AI. But like the the core base. It's a it's a it's a shame I got my Reddit account hacked not long ago, which I had some some Reddit examples in there we like try and like render fonts. because I had gotten like the C plus plus rasturizer back in at the time, like getting the other thing to work and I like so happy getting fonts and I was sharing like performance compared to on GUI and then there's people
Yuri Sokolov (23:39)
Mm-hmm.
Valentin (23:39)
who comment saying they are this is shit. But as soon as you try to make something better it's gonna like not gonna work as good. But yeah. it was a fun, fun project that I kind of resurrected.
Yuri Sokolov (23:50)
Do you use it for anything?
Valentin (23:50)
Not long ago. I do actually. Bob C is working on Arctic Drive, which I I guess it's just probably was something
Yuri Sokolov (23:58)
Mm-hmm.
Valentin (23:58)
we should talk about as well. But I've infected him with now UI and he's slowly been making more and more things with it. I guess the cool thing about it is that it integrates with about anything. Like if you're using each UI, you can just like it it's as if it was an image, right? You can just plop
Yuri Sokolov (24:13)
Mm-hmm.
Valentin (24:14)
it in there, resize it, put it in, it just integrates with your workflow. Similar with UI toolkit. can like plop it as an element that you write through code and it just works. It's just there.
Yuri Sokolov (24:23)
Mm-hmm. Yeah, yeah.
Amit Netanel (24:25)
And I mean,
Valentin (24:27)
You're fine.
Amit Netanel (24:28)
you've talked about starting projects, drifting off to other projects, and then coming back to them. How do you decide when it's maybe not decide? When do you start shifting towards other projects? Is that a conscious decision or just one day something shiny just looks
Valentin (24:50)
I think it's
Amit Netanel (24:50)
shinier?
Valentin (24:52)
I think it's time. I think it's a mixture of time and sometimes you may get getting a little frustrated with the current projects, you know, because any project at some point will be like either slower or you'll be hitting some problems that you're having or struggling with. and whenever I'm like, I want to do something else as like a break, I'll just go see maybe pick up some old project that I've been going or like, you know, maybe start a new project. But I tend to be a little more wary of starting new projects because both you know They tend to be a huge time sink when you first start
Yuri Sokolov (25:20)
Mm-hmm.
Valentin (25:20)
them because they're like so new and shiny. It's kind of like playing POE too, I suppose.
Yuri Sokolov (25:25)
And then you and then you're sinking in the last mile, which is always the hardest,
Valentin (25:29)
Yeah.
Yuri Sokolov (25:29)
yeah.
Valentin (25:30)
Yeah, exactly. And then they just spause. And I think whenever I'm you know, I wanna do something different, I'll just go to an old project and try and revive it and see where I left off. it's kind of a unconscious thing.
Yuri Sokolov (25:41)
Fun stuff. Fun stuff. Really fun stuff. And Martin, you you also have quite a resume. An indie game developer, YouTuber, Tutor. anything? Yes, why not? It's it's it's
Bobsi (25:52)
Well you found the tutoring stuff? good heavens.
Valentin (25:54)
Yeah.
Yuri Sokolov (25:56)
out there, it's on the surface. contractor, which is kind of interesting because you worked on at least two big successful indie projects, right? As a as a contractor. implement multiplayer for those games, right?
Bobsi (26:14)
yeah, I mean so we've worked with quite a lot of well I've I've worked with quite a lot of clients, various degrees, right? I imagine well I think I know the two that you're you're pointing out here. and yeah, it's always interesting coming in as like a consultant on the side, seeing these projects. I think honestly it's been very motivating to me as like an indie dev as well, you know, making own games and stuff to to see how how much of a mess some of these big games are too. Like it it's actually very nice to see that, you know, sometimes I go into some of these big projects. Like actually the biggest one I've ever worked at, I got into that and I like, Holy shit, this is horror.
Yuri Sokolov (26:47)
Mm-hmm.
Bobsi (26:48)
And they kept they kept like, you know, apologizing for their own code too. Like they knew it that this would but obv obviously that's what happens, like, you if it's a ten year old project that's just been under continuous development. Like it's, you know, it's doomed to be full of well, I mean, technical debt.
Amit Netanel (27:01)
Yeah, Yuri just did like a 30-minute talk about it in a local dev group here about how come all the, not all, but most of the companies around seem to get into that corner of developing stuff really fast and rapidly. And if it succeeds, they don't have the time to like rebuild it. They don't have the time to learn how to build it correctly.
Yuri Sokolov (27:27)
Yeah, I mean I mean it's also I had the chance to work in a big company. that started the project that I was working on. It started with a really awesome architecture because it wasn't it wasn't the first project for the company. The company had already experience with bad code and stuff like this, and this per particular game that I worked on. Started with great architecture, but any great architecture can go to hell the moment requirements change. You work with tens of developers that over 10 years contribute daily to your code base, it's it's gonna be shit. So basically, I'm 15 years in this industry and I have yet to see a good code, including mine. I I never saw a good code.
Bobsi (28:25)
Well I think it's the beauty of it as well, right? Because I mean both as you get better at project age, stuff like that, you learn things too, right? I I feel like that there's an element of if you don't look back at your code from a year ago and think that could be better, then you haven't been improving. Right. Like I
Yuri Sokolov (28:37)
Mm-hmm.
Bobsi (28:38)
think I think it's a huge huge element of it. It's funny as well that you mention, I mean, my my portfolio on Git I'm not nearly as impressive as Valentin here. and I found it fun because just yesterday I looked at my own Git and I realized like on a on a public page, 'cause some somebody like messaged me and was like, Holy shit, you have a thousand commits. this year or whatever. And then I went to look at mount get and I realized like pretty much all of my commits are on private repos, right? I have over
Yuri Sokolov (29:00)
Mm-hmm.
Bobsi (29:01)
ten thousand commits this year, but they could only see a thousand.
Amit Netanel (29:02)
You
Bobsi (29:05)
like the it was it was fun to see how much more I guess private my stuff is. And I mean I mess around with projects too and stuff, but Valentin is a lot better than I am at just being comfortable at pushing them out there. Like I I will mess around
Yuri Sokolov (29:16)
Putting out there, yeah.
Bobsi (29:17)
with stuff and mess around with it for two months and then probably leave it be when I'm done playing with it, you know. I think Valentin does
Yuri Sokolov (29:22)
Mm-hmm.
Bobsi (29:22)
a much better job of just pushing it out there, which is I mean, as a portfolio piece as well, just a lot better to do. And I think ultra just gives more opportunities. I I should be better at at doing that too, to be fair.
Yuri Sokolov (29:31)
Yeah, it depends what what you're looking for. Because let's say it like this. I love me a good GitHub account, right? If I'm hiring a developer for my team, I see a great GitHub account, it's awesome. But on the other hand, I see something like what I saw in on your website, for example, that you as a one man company, correct me if I'm wrong, one man company, right?
Bobsi (29:57)
well I mean yeah, I'm the one running it. I mean I have a bunch of contractors under me, but that's more sort of different it's a whole different line of work.
Yuri Sokolov (30:03)
Got it. So what I saw you worked on Gunner Heat PC, right? And and Lens Island, and you've implemented those are big games, big names. You've implemented multiplayer on both of them, at least that's what what I I understood. It's also kind of adding up to a resume, right? and speaking of it, how was it? How was it for me? One of the most difficult things when I start in a new company on a new project is learning the code base. you have to, especially if the code base is not structured enough, it started as a prototype and then the prototype became a production code. And so it's always hard to dig into somebody else's mind and starting working on it and developing features. And now, usually when we're talking about code. game code, it's more often than not not only not optimized, it the developers don't think about multiplayer. Right? So and now you need to come there and without saying, let's crop everything and build from scratch, you need to find a way to insert multiplayer into those mess. How do you approach this?
Bobsi (31:27)
Well, it's funny you mentioned those games actually, because I mean internet game that we started at and then Gonna Heat PC and Lens Island, they're probably the three biggest factors to why we built Pernet. Like I think most
Amit Netanel (31:36)
Hmm.
Bobsi (31:37)
great systems, similar to what Valentin mentions with now UI, is it's a frustration over UI. For PerNet, it was a frustration over the networking stuff that was already out there, right? So just to answer your question as well in terms of how approaching this really works. I mean it's Obviously I think in an era of AI, actually that's probably a lot easier, but I've mostly been working with this stuff pre AI. and so it's really a lot about sort of figuring out what's the starting point. I think that's also an element of what is like this client that I then have, what is their immediate goal? What would they like to see? What like typically pretty much everyone I work with with multiplayer, whether that's from scratch or a conversion from single player to multiplayer, that's some kind of immediate goal that they want to see. You know, some some priority, some minimum viable of like you know, proving that this is possible to do, especially when it comes to converting. And so that's typically the thing I do first. you know, let's say again, I don't want to talk about specific clients because there's always NDAs involved, especially
Yuri Sokolov (32:31)
Yeah, yeah, yeah.
Bobsi (32:31)
with the big ones. But let's take a game like Arctic Drive, the game that my company is actively working on right now. you know, it's a big driving game, right? And it with a big environment, procedural generation, you know, origin shifting, there's a lot of sort of technical stuff in there. And the very first thing to do in that case is proving that we can network the vehicles with the physics and the procedural generation, right? Like that's all it becomes the minimum viable of saying that this is achievable with networking. We need to prove that. So that becomes the priority. And the same thing really goes for converting it, right? Like if you have a I mean let's just take something like Witcher, that's tattooed on my arm, right?
Yuri Sokolov (33:07)
Mm-hmm.
Bobsi (33:07)
if if we were to convert Witcher, the very first thing that would be a priority would be to just really actually narrow in instead of trying to get like an overview, because that would be a big mess in such a big project. Instead taking just, you know, that main character and figure out how can we network him and really nail the network on him, you know, have them moving around, have them animating, having sound play, maybe having them interact. that would be the first sort of minimum viable to show that hey, this is possible, right? That's what they want to see. Also, 'cause it's the one that gives the biggest wow factor 'cause now you can see each other, now you can, you know, do things and move around. And even if you can't really do a whole lot, maybe you don't even see the same enemies, it's still sort of a a first step. And I also think it's important to mention actually, funnily enough, I mentioned I do a lot of you know subcontracting work and stuff. So companies contact me and then I sort of navigate how do we convert this to multiplayer? Is it me? Is it someone else? And funnily enough, Lens Island was actually Valentin that was hired to to do that one. and he basically had to make a whole new multiplayer system. I mean, I don't again, I don't want to talk too much detail here, but he had to make like a whole custom networking system to be able to accommodate what they could do. And so much of sort of what we learn there. you know, is taken into to Pernet, right? To to give us the freedom and flexibility that would have been nice to have.
Yuri Sokolov (34:20)
But without speaking specifics, I'm and even forgetting about the the multiplayer aspect, how do both of you just approach entering unfamiliar code and kind of building a mind map to it or how do you approach understanding the code?
Valentin (34:45)
I mean, I guess you know, I guess for for Lens Island's sake here, the the way that I approach a lot of these things, and mind you it was fully single player games that was pretty much ready to release and they were still working on features when I got introduced to to the project. the the way that I approach how to like you know, I guess work around it and learn the code base was mostly like, you know, what's my goal? My goal, for example, is to whenever this pickaxe hits a rock or whatever. I want to damage it and I want to be able to communicate to everyone that it got damaged. My approach, my first approach was to actually make the pickaxe hit it and not do anything. Cause then I could stop it. And then my second approach was, okay, so now it hit it. Now I'm gonna go ahead and do what it did before, which is just damage it. But now since I was able to disconnect those two things, now I can cancel it and then I can do it whenever I want to, damage it. I could, you know, cancel the event or like just I guess let it. go through the event whoever hit it and then just communicate to the others like, hey, come and hit it. and then just that allows me to sort of slowly take control of the game and slowly attack it from different perspectives. Because usually that's how it goes. Like you know we have an action and now this action needs to be networked. so my first goal usually is just like control this action. Like when it happens, I want to be able to cancel it and then I want to be able to trigger it by myself. And that's how the whole thing was built.
Yuri Sokolov (36:07)
So basically to f finding a minimal viable scenario that can be synced across network, right?
Valentin (36:15)
Yeah, pretty much.
Yuri Sokolov (36:16)
Yeah. And you mentioned Bobsy, you mentioned the Arctic Drive. So before you explain what this game's about, I have to ask, can you actually pee on Snowdhare?
Bobsi (36:28)
Absolutely you can pee on snow. You can also
Valentin (36:29)
Yeah.
Bobsi (36:30)
pee on other players and make them wet, which is a big handicap in the Arctic. And and
Valentin (36:35)
Ha ha ha.
Bobsi (36:35)
I mean as late as today I was just implementing that you can sit in shopping carts and get pushed around by other players too. So you can, you know, push them down a hill if you want to and they can rack all around there. Well
Amit Netanel (36:44)
on the snow.
Bobsi (36:45)
I mean, you know, it could be it's probably a little hard to push you through the snow. There'll be some some friction there. But not impossible.
Yuri Sokolov (36:52)
What what's the game about? What what is this game?
Bobsi (36:56)
Yeah, so Arctic Drive is like you know, these games like the long drive, for example. that i is
Yuri Sokolov (37:01)
Mm-hmm.
Bobsi (37:02)
essentially, you know, infinite driving experience. We sort of wanted to take what's addictive about these kind of games, you know, the this recurring loop, it's fun with your friends, stuff like this. And for that sake, majority of these games that exist, which isn't that many, majority of them aren't even multiplayer, right? And so I thought for one, I always like to look at what games are popular and if they don't exist as multiplier, I'd love to do that.
Yuri Sokolov (37:22)
Mm-hmm.
Bobsi (37:23)
but there's also an element of these were And there's no no harm meant here, but these were always really one-dimensional games to me. Like they sort of just did that. Like you were just moving in an infinite world. There's not a lot of depth. There was not a lot of there's not a lot of goal. There was, you know, not a lot of questions to ask or a lot of answers to give. and so we really wanted to mix that together with sort of these really I don't know what's called it. Like these environments you can really get into. These, you know, you can feel the fantasy kind of thing, if you know what I mean. I really
Yuri Sokolov (37:51)
Mm-hmm.
Bobsi (37:52)
love games where you can feel the fantasy. It's one of the reasons why I love medieval or sci-fi or these things, because you can really, really get into them. And and honestly, environmentally and ambience-wise, one of my favorite games of all time is Frostpunk. I think it does such a good job of getting you into that cold environment
Amit Netanel (38:03)
Mm-hmm. Yeah. Yeah.
Yuri Sokolov (38:04)
Yeah.
Bobsi (38:05)
and feeling cold when playing the game. Yeah
Yuri Sokolov (38:07)
Eleven beats are awesome in the in this regard. D this worm of mine also gives you the
Bobsi (38:14)
Yeah, exactly.
Amit Netanel (38:14)
It's the chills of another another kind
Bobsi (38:17)
Exactly, exactly. So we really wanted to take that sort of feeling of of being cold, of the environment being a real danger, and the environment, you know, being I don't want to say ever changing 'cause that d that's not necessarily but you get the idea, you know, being dynamic, you know, it becomes night, it's colder, there could be a storm incoming, there could it be a tornado incoming, there's there's real challenges, you know, and and for us really the idea is really similar to frost punk where you have this one base that's really your lifeline, you know, everything to keep this center core alive. that's pretty much what Arctic Drive is with the car being your base, the car and your trailer being your moving base in this this landscape. So sort of sort of our way of of making what to me is a fun, interactive, engaging survival experience. and then I love cars, which was a natural fit. I always wanted to make car simulations and simulate the the suspension and the engines and the gearing ratios and stuff like that. So I of course
Valentin (39:07)
Yeah, he started with the car first and then he went to the game.
Yuri Sokolov (39:11)
That that that's how everything starts. You you
Amit Netanel (39:12)
That's way to do it.
Yuri Sokolov (39:14)
start with with a mechanic and then you say how do I make a game around this mechanic?
Amit Netanel (39:19)
around the mechanic.
Yuri Sokolov (39:20)
Yeah, yeah. But you know what? Apart from the release date, is there a release date for Arctic Drive?
Bobsi (39:28)
It's gonna be announced very soon, but it is in twenty six. So it it's the release date's announced very, very soon.
Yuri Sokolov (39:34)
I guess I guess the only question I left kind of for you specifically, can we see the cat?
Bobsi (39:43)
pebbles. I mean I can go find him
Valentin (39:45)
Ha ha ha.
Bobsi (39:46)
he's somewhere in the house. I can find you want me
Yuri Sokolov (39:48)
to to to our listener
Bobsi (39:50)
you want me to find pebbles?
Yuri Sokolov (39:52)
Yeah, you you can do that. Well,
Amit Netanel (39:53)
Yeah, I guess we're in it now. Yeah.
Bobsi (39:54)
I I can find them. Who who doesn't love a cat?
Yuri Sokolov (39:58)
while we're at it, I'll tell our listeners why I'm asking about the cat. So and Valentine here can correct me if I'm wrong here. So basically, the first thing the the Bobs is company called Pebbles Games, right? So it's based on his cat's name. And if I'm not mistaken, Purnet, the logo of Pornet is
Valentin (40:21)
Yes. Yeah.
Yuri Sokolov (40:22)
So so let me assume it's it's a British. It's a British or Scottish straight, right? We'll s
Valentin (40:28)
Yeah, it's a British it's a British I think, yeah.
Amit Netanel (40:31)
You cat people.
Yuri Sokolov (40:32)
Yeah.
Valentin (40:33)
Well I I I have I have a a cat that barks. Okay, I have a dog.
Amit Netanel (40:37)
OK, no, no, he's approved. But yeah,
Yuri Sokolov (40:42)
Yeah.
Amit Netanel (40:43)
well, I get it. I get stapling a beloved animal companion on everything. But it's really
Valentin (40:50)
Yeah.
Amit Netanel (40:51)
on everything you guys are doing, like a mascot.
Yuri Sokolov (40:53)
Listen, cats are lazy people's dogs, all right? So when you when you have a cat, you have an you have
Valentin (40:59)
Which is why I should have had a cat.
Yuri Sokolov (41:02)
an animal that you don't have to care about. Yeah, yeah, here's this British fella.
Amit Netanel (41:07)
Here he comes. Here he comes.
Bobsi (41:09)
There's the big cat. It's a real big cat. He was he was stuck outside, so he probably wants to go eat now. We had forgotten to open the door.
Yuri Sokolov (41:12)
Yeah, Brits are I think Brits always want to eat. It's it's in their na nature.
Bobsi (41:20)
Yeah, they're they're big animals. So that was very little cat time you got there.
Yuri Sokolov (41:25)
Okay, we'll freeze it and put it on a cover.
Amit Netanel (41:26)
We didn't invite him formally to the podcast, so maybe he's heartbroken about it. Yeah.
Bobsi (41:30)
That's true. I could have prepared him more.
Yuri Sokolov (41:33)
Yeah. So tell us tell us how how do you meet? Because you you both both of our of you from different countries even, right?
Amit Netanel (41:42)
like originally.
Bobsi (41:43)
Yeah, we we're a very international bunch, to be honest. I mean, Valentin is from Moldova, lived in Portugal most of his life and now in France.
Valentin (41:52)
Yeah.
Bobsi (41:52)
And
Amit Netanel (41:53)
wow.
Bobsi (41:54)
and I'm from Denmark, half Indian. and yeah, I mean we
Valentin (41:56)
Ha ha
Bobsi (41:57)
we met I mean we yeah, we met through the internet game contract. That was the first time. And I mean to be honest, I feel like for the first year or so working there, we weren't really communicating that much. Like even though we were working together, it was very sort of individual projects.
Yuri Sokolov (42:12)
Mm-hmm.
Bobsi (42:13)
and so we never interacted that much. But the first time we physically met was when we were flown to like an event in the US and we met over there and stuff. That was really cool. But we only really started becoming friends later, when we started actually playing our own games that we made with the company. we started sort of instead of, you know, like taking a break, we just took a break together by by playing some of the games against each other, which was a lot of fun. And yeah, that evolved to just playing games separately, which evolved to hey, let's meet up in real life. So me and my fiance we flew to France to to meet him and his fiancee and yeah, we just became really, really good friends from there actually. It went went quick and now we live ten minutes apart. we moved to France and and now we're here.
Amit Netanel (42:56)
So cool.
Yuri Sokolov (42:57)
It's it's a it's a great friendship story actually. And then you decided to build Burnett together, right?
Bobsi (43:06)
yeah w yeah, we build it
Amit Netanel (43:06)
Yeah, is that your first serious project together or any project together?
Bobsi (43:14)
I think s I think it w yeah, outside of outside of
Valentin (43:14)
I think it was I mean outside IG, which was just word.
Bobsi (43:18)
company stuff and contracting stuff. Yeah, I think that was I think that was our first yeah real thing. And the funny thing was it wasn't even really like well, as I mentioned, like it was built from a lot of frustration, right? So technically we started building it a little bit while we still worked at that internet game contract. And we were trying to push them to use that as well, 'cause we were just getting increasingly frustrated with, you know, internally we had already switched networking system as well and stuff, 'cause we just kept having issues. And the The issue was and I don't want to name names here, but we went from one networking system which had a good workflow, but results wise it just gave us a lot of trouble. Like it never really worked as well as we wanted. You know, you talked about like determinism and prediction and stuff earlier. Like in
Yuri Sokolov (43:57)
Mm-hmm.
Bobsi (43:57)
this regard, it just wasn't good. We never got good results out of it ever. And we kept struggling for months. And then all of a sudden the yeah, I guess it was the CTO he was he was pushing towards using other tech instead, which was deterministic and you know, had proper prediction and stuff and all fair to it, it worked really well, but the workflow was horrible. And and I really cannot undermine how much, you know, for developers that a good developer experience really matters. I I I I'm
Yuri Sokolov (44:25)
Mm-hmm.
Bobsi (44:26)
not kidding when I say I think seventy-five percent of our department got depression. Like while working with that system. None of us had fun.
Valentin (44:32)
I was I was full depressed. That was horrible.
Bobsi (44:35)
None of I don't think I've ever seen Valentin this sad in his life. Like he took a whole month away from the
Valentin (44:38)
Ha
Bobsi (44:38)
company just to recover. Like we we we were all just not having a good time.
Valentin (44:40)
Yeah. I was like, you guys don't need to pay me. I'll just take a month off, please. I need I need some time to brief.
Bobsi (44:46)
And it was so frustrating because things worked, right? Like that's typically what you'd want, right? It's the dream scenario, things just work, you build it, but the workflow was just so long that like even you know, building, you know, in Unity how the first thing everybody does is a classic physics based rolling ball game, right?
Yuri Sokolov (45:01)
Mm-hmm.
Bobsi (45:01)
Even even with multiplayer, this shouldn't preferably take long. But with that system it took like two hours to get going. You know, like it was a c uphill battle.
Yuri Sokolov (45:06)
Well I I'll assume it's I'll assume it it's the the photon Z C S. right.
Valentin (45:14)
Yeah,
Amit Netanel (45:13)
They said not to
Bobsi (45:14)
Maybe.
Amit Netanel (45:14)
name names, I mean... Not pointing fingers, but...
Bobsi (45:15)
Maybe. It was quantum, yeah. We've Yeah, not not pointing
Valentin (45:14)
quantum. It was quantum. Quantum.
Bobsi (45:19)
fingers here, but yes, it was quantum. And
Valentin (45:20)
Yeah.
Bobsi (45:22)
and the the thing was just like the tech worked so well. I can't fault them. I photon in general in my book has just become synonymous with good tech, really bad workflow. like that goes I think for more of their products, but I don't know their other products as well, so I can't speak much on that. But yeah, at least photon quantum was like it it works really well. I
Yuri Sokolov (45:38)
Mm-hmm.
Bobsi (45:38)
don't really like that they're going the consensus model route. which was actually part of what we struggled so much with was that we needed to be able to host tournaments and, you know, make this really competitive. And obviously to do that, you need to go to like a dedicated server that runs the logic and, you know, essentially ensures that there was no cheating involved. And doing that was Valentin's task, which just seemed like a horrible forever uphill battle to to get done.
Valentin (46:02)
Yeah, it was I mean to be fair, like the the hardest part in that process, which I mean I I guess now we're just talking about quantum and how much how much we want to talk about quantum, but it was dealing with p plugins and because you know it like compiles to different C sharp projects and then having
Yuri Sokolov (46:15)
Mm-hmm.
Valentin (46:15)
like the team just write code that shouldn't be in that project that and works in Unity, but then when you try and compile it with the plugins, because the plugins like kind of like a server in a way,
Yuri Sokolov (46:26)
Mm-hmm.
Valentin (46:27)
it it just com it just breaks and then I need to like why is this DLL that's meant to be referenced, not referenced, or why you know, can you fix your code because it's not compiling and like having to like migrate everything that we had to that and like being careful because it's how competitive and potentially tournaments that maybe would have involved money. It was just very stressful. And they they they also to be fair, I think it was partly fault of of like the company that we work too, because like they've kind of rushed that on top of us. It was like, yeah, hey, now you make this that use the different back end to work with this backend's like, my god.
Bobsi (47:01)
Yeah, we all of a sudden had like a
Valentin (47:01)
Yeah. I mean it was fun. We learned a lot of things.
Bobsi (47:02)
we all of a sudden had like a backlog of like ten games we needed to now convert, which was also a big mess.
Valentin (47:06)
Yeah
Bobsi (47:09)
but yeah, it was
Yuri Sokolov (47:09)
Yeah, I I heard a lot about photon quantum. I heard good stuff and bad stuff. And me and Amit here are also casualties of poorly implemented ECS framework in our past. different framework, but yeah we we also suffered a lot from this one. And yeah, I I I can I can get it. I can get it. I think also why why Did I say photon quantum? because if I'm not mistaken, this is the only one deterministic multiplayer server for Unity out there, right? At at least
Valentin (47:50)
okay, I guess I guess we kinda just chat ourselves in the foot with that one then.
Bobsi (47:52)
maybe we did sell it there. I don't yeah, i it it's at least the only big one. that's true. I mean th their approach is interesting as well, right? 'Cause the the idea of quantum is that it runs as like a an engine in the background essentially. and Unity just
Yuri Sokolov (48:05)
Mm-hmm.
Bobsi (48:05)
becomes a renderer. Yeah, exactly. Unity
Valentin (48:05)
It's a game engine. Yeah, yeah.
Bobsi (48:07)
just becomes a renderer. I think it's just that it's
Yuri Sokolov (48:08)
Yeah, because they you they're using their own physics system and they're using
Bobsi (48:12)
Yeah, exactly.
Yuri Sokolov (48:13)
everything everything is rewritten and then at the end of the day you're just saying, wait a second, why do I need unity?
Bobsi (48:20)
W that's exactly it. Like at that point at that point it
Valentin (48:21)
You don't, yeah.
Bobsi (48:23)
became so frustrating because all of a sudden you also had to write stuff in a different language and you had to bake code. And I mean, as with an ECS system, then you had to register all the correct systems and listen to all the correct events. And it's just there was just two hundred different things that could and would break all the time. You know, and it it were faults of hours, if you know what I mean, but it was false because you had to remember sort of two hundred buttons. I don't want to have to master
Yuri Sokolov (48:43)
Mm-hmm.
Bobsi (48:44)
being a pilot just to make a game in Unity. You know, I wanna make games in Unity, and that was what got frustrating there. but it does show
Yuri Sokolov (48:50)
Mm-hmm. So
Bobsi (48:52)
how much you can do if you take full control, which is the approach they chose to take. Like I I think I think they built a good system.
Yuri Sokolov (48:57)
So for me, all the question about multiplayer was always like, okay, if I'm developing a multiplayer game, and it's gonna be a competitive game, I need deter not only determinism, because you can achieve some sort of level of determinism, quote unquote, that that will be sufficient, right? Even with puns and stuff. The the more important aspect for me would be server authority, which is kind of the big struggle out there. If you're going to look for multiplayer tutorial on YouTube or whatever you're looking your where whatever you're consuming your tutorials from on Unity, I I was unable to find anything about server authoritative multiplayer. There there's just no and no information out there. So is Purnet supports supports server author authoritative multiplayer?
Bobsi (50:02)
Yeah, I mean we do in multiple ways. Pernet is sort of two ecosystems in their own. There's the what we call the normal Pernet, which is like a messaging-based networking system, like you know, with mirror and netcode and stuff like this.
Yuri Sokolov (50:13)
Mm-hmm.
Bobsi (50:15)
And then there's the one we call prediction, which is like the prediction system of Pernet, which both fully support server authoritative. So I mean, for prediction, that is just server auth out of the box. So if you write code in s in prediction, it'll run server auth. There isn't even the option of client auth there. so anything that runs in like the game simulation will be cheat proof. Obviously there's still other ways to cheat games, many other ways to cheat games, but at least you won't be able to manipulate the game in the in the simulation like that. Because the whole idea is everybody runs the same simulation, right? So even if you change the
Yuri Sokolov (50:44)
Mm-hmm.
Bobsi (50:45)
simulation on your computer, it doesn't affect the simulation on other people's computer because they're still running it with all the
Yuri Sokolov (50:49)
Mm-hmm.
Bobsi (50:49)
valid values. and then there's the normal per net, which really I think any I mean, correct me if I'm wrong here, Valentin, but I think any message based networking system does support server auth and typically by default will run server auth. But at that point it's way more on the developer's implementation, like the game developer's
Yuri Sokolov (51:06)
Mm-hmm.
Bobsi (51:07)
implementation of the tool rather than actually the network solution. Cause at least message based network, the whole idea is it kind of message based through, you know, some kind of main part, whether it's a host or a dedicated server or whatever, but it goes through, you know, one sort of path. And when you do that, you technically can sanitize things at that level.
Yuri Sokolov (51:26)
They do so they do support as far as I know. I I just mentioned that nobody teaches that. So basically, when when you're looking for multiplayer tutorials, everybody would say, okay, let's make a peer to peer. And when you're trying to, for me, at some point it was hard to understand. Okay, wait a second. If I want server authoritative, do I actually need to run a Unity client, headless or not headless, on the server? Do I can't I just have a
Amit Netanel (51:57)
That's exactly what I was struggling with, like mentally.
Bobsi (52:00)
Yeah, you would need to run something that acts as the source of truth here, right? Otherwise you can't really cheat proof it. Like it there needs to be something you can trust. That's kind of the issue.
Yuri Sokolov (52:08)
The something I can get behind of but I always struggle with the the fact that I need not just something, actual Unity engine to run on a server. This is what bothered me always.
Bobsi (52:22)
Well you need at least well yeah, in unity case you will. Yes. I mean in something like quantum's case you don't, right? Because quantum
Yuri Sokolov (52:29)
Mm-hmm.
Bobsi (52:29)
runs the simulation separately. But
Yuri Sokolov (52:31)
Mm-hmm.
Bobsi (52:32)
th I mean the whole thing is you would need at least for something like prediction that runs through a simulation. There he is, the cat's back.
Yuri Sokolov (52:38)
Yeah, we see it.
Bobsi (52:41)
something that actually runs through a a simulation will need to, you know, prove that that simulation is good if you want it to be fully cheat proof. That technically doesn't need to be run through an instance of its own. This is something I remember Valentin and I discussing actually before is you could cheat proof games in another way where you essentially just record what happens, right? Because I mean, especially with determinism, that's even lighter to record, but you can record anything that's state-based. But you can essentially record the bare minimum to replicate the game. And then after the game, you know, that recording can just be replayed whenever for validation cases,
Yuri Sokolov (53:13)
Mm-hmm.
Bobsi (53:14)
if you know what I mean. Like that would be great for tournaments, because then you technically don't even need to run like a a live valid thing during the tournament. You can just afterwards
Yuri Sokolov (53:21)
Mm-hmm.
Bobsi (53:21)
run it through like a you know a validation process. It'll, you know, essentially a computer that'll rerun the whole game and check does the output match what actually happened in the match, right? Like that would be a way of cheat proving it as well. But just to answer your question shortly, for something like server auth, you know, normal message-based networking server authors as as you think you get out of mirror and pernet netcode and these kind of systems. yes, you would need something you can trust, right? Which would be a dedicated headless
Yuri Sokolov (53:46)
Mm-hmm.
Bobsi (53:47)
client typically.
Valentin (53:48)
Yeah. But I I guess I guess what you're saying is that what bothers you is having to bring entirety of unity with you for the servers that
Yuri Sokolov (53:54)
Yeah. Yeah, yeah. You and also I I'm think when I'm thinking about you know capabilities of concurrency, I'm thinking about node, I'm thinking about dot net MVC, I'm not thinking about Unity client that that need to process tons of concurrent requests. How how does this work?
Valentin (54:18)
I mean, just because Unity's main engine runs mostly on a single thread doesn't mean your game has to as well. Like Unity has great tools for this, which they use for their ECS system, things like the the burst and the job system.
Yuri Sokolov (54:31)
Mm-hmm, mm-hmm.
Valentin (54:32)
you know, those are still valid. and i even better because when you're working with ticks, usually it's not like let's say sixty ticks or thirty ticks. You have a lot of time in between those ticks to run these things multi-threaded. So you you can offload a lot to different
Yuri Sokolov (54:46)
Mm-hmm.
Valentin (54:48)
I guess there is a natural overhead with Unity coming along. And I mean it's part of as well of just your experience. You know, part of the reason that we struggled to with you know, solutions that are outside of Unity is cause now you you gotta be careful what you do, 'cause you can easily use something that's not part of it. and it's a it can get a bit confusing. and I think it also depends on what kind of game you're making, to be fair. Like, you know, if you're making tic tac toe, like it's fine if you maybe put like a you know, some random server that
Yuri Sokolov (55:20)
Mm-hmm.
Valentin (55:20)
doesn't need Unity. But if you want to make some FPS or some some I guess games that use physics, unless you want to implement your own physics into the engine and you want to bring those along, you would need to have Unity tag along. And as heavy as Unity is, it's it's surprisingly unheavy. Like for for some tests that we did with like a hundred concurrent players using Unity, it maybe use like a hundred megabytes of RAM or like hundred and fifty. I mean that's not a lot of RAM. Like and like
Yuri Sokolov (55:49)
No, not at all.
Valentin (55:51)
CPU CPU usage wise was mostly whatever the game was actually running and unless so what Unity was doing maybe behind the scenes. And and sure there's some overhead with you know every every time you need to get a game object or like get a component there's like you gotta go to the C plus plus world which maybe you pay a little bit of price.
Yuri Sokolov (56:08)
Mm-hmm.
Valentin (56:08)
So interacting with the engine in that sense can be sometimes a little harder to maneuver, especially 'cause you can do most of these things in a Different thread. So you have to be a little conscious about these things. But it it's it it's workable, right? And I'd rather have to deal with how can a multi-fread this issue than why is my game not compiling outside of Unity sort of thing.
Yuri Sokolov (56:28)
Mm-hmm.
Valentin (56:30)
Or even like because there's a lot of baking with this systems where they bake your scene, and then if you have an animator, they usually like bake the animators with their own specific file. There's a lot of processes here that can l lead to weird issues which we ran into some like sometimes I just like rebuild the game and now it works like okay, some something something random and they just at some point either got cashed or didn't pay correctly or it it just brings other things to the table.
Yuri Sokolov (56:56)
Got it so so you've run tests with hundred concurrent players on one Unity server, right? That for most games it would be more than enough. I'd assume. Worst case scenario you can scale, you can scale to multiple shards or something.
Valentin (57:15)
Yeah, but but I mean this is a hundred t it's not the server was not fully loaded. Like this is
Yuri Sokolov (57:19)
Mm-hmm.
Valentin (57:20)
not saying that, you know, that we it could only run a hundred players. This it was just like I'll I wanted to do some benchmarks, but just put a bunch of networking solutions, including
Yuri Sokolov (57:28)
Mm-hmm.
Valentin (57:29)
Parthead, of course. And I just ran a bunch of tests with a hundred connected players at different tick rates and just see what would happen. and the CPU usage I think was around like twenty, twenty five percent at most for I think all solutions included. Except for net code for game objects, but I don't think it's made for bigger scale games. So I mean fair enough.
Yuri Sokolov (57:51)
Yeah, well, Unity makes a lot of stuff that are kind of entry entry level, and then either they're dropping it side and not touching it, not developing it, or it's kind of sufficient for some small scale projects. By the way, what's so different about Pernet? So y you were frustrated, I can understand regarding the completely, you know, a ECS framework that runs outside
Amit Netanel (58:21)
Yeah.
Yuri Sokolov (58:22)
of Unity and stuff like that. But why not f other solutions from photon? Why not mirror?
Bobsi (58:31)
Yeah, as as I mentioned before, I mean we've we've both I think accumulatively we've probably worked with the seven systems or something total. so we've we've definitely been around and trying them and and the thing is just, you know, again majority of them if if not I mean all networking systems out there and I and I keep telling people this, they can all make games. Like you
Yuri Sokolov (58:47)
Mm-hmm.
Bobsi (58:48)
know, you shouldn't I I don't know, I hate I hate when we see people coming in and nitpicking and it's like, you know, like you know, I chose Pernet because it's been it uses two percent less bandwidth than whatever and it's like it that doesn't matter. Like at that point it's it's gonna be up to you and your code that's causing the problem, not the the solution,
Yuri Sokolov (59:04)
Yeah, yeah.
Bobsi (59:05)
right? So that was really why we sort of have taken this approach. And I mean, don't get me wrong, pernet's really performant. Like all the benchmarks we've been running are looking really, really good. I think after this also we can share some with you if you if you wanna see it or pop something up or whatever. but but really the the most important thing for us have been the developer experience, both also at scale for production. I think that was one of the things that ended up con sort of frustrating me a lot. was because most of these systems initially and at a glance as you start working with them work really well. But as soon as you start using them for scale, again, as NDA has evolved, but some of the big projects you mentioned, as soon as we started using them for scale, there was just a lot and a lot of issues. For example, the way that they were baking IDs into the prefabs, because one of these projects had like prefabs nested in prefabs, nested in prefabs. Like they had s they had, you know, five hundred objects in one prefab because it's such an advanced game.
Yuri Sokolov (59:54)
Mm-hmm.
Bobsi (59:55)
and the network solution would just break. Like it would just continuously break. Every second time we'd press play, it would have baked IDs wrong, something would explode, the scene wouldn't spawn. Like it just felt really volatile and created such a bad experience at sort of a larger production scale. and it it it sort of cost us, even with my I mean, my first game release called Potion Shop Simulator was built with another network solution too. And even there I had to tiptoe around so many like scene baking issues and stuff like this. So that's why, example, for Pernet we've gone sort of a baking free approach instead, you know, so you don't have to pre-big IDs into everything and and really try to focus also on just what's the natural workflow of Unity and C sharp,
Yuri Sokolov (1:00:33)
Mm-hmm.
Bobsi (1:00:33)
which is also exactly what we tell people when they come in and ask, you know, are you coming to Godot? Are you coming to Unreal? stuff like that. And of course we can't say that we're not gonna do that at some point. But at least right now the whole selling point of Pernet is the fact that we're Unity and C sharp friendly. You know, you can I I don't I don't know of any other solution, at least and I feel like I know a lot of them, you know, that can where you can, you know, You can make like a static generic method that returns a value you know, in networking, like as an RPC, right? I don't know any other solution that can do that, but we can. You can make a static generic method that returns a value from an RPC. No other solution,
Yuri Sokolov (1:01:07)
Mm-hmm.
Bobsi (1:01:07)
I think, can do even one of those things, and we can do it all in a single one, right? Which is very natural and native to C Sharp to be able to do these things and work with it in that in that way. so yeah, really just embracing the the natural flow of what it's like you know, to work with Unity in the best possible way with can with networking, right? And th there's still some limitations and I feel like that's a whole other grand discussion. But there's obviously still some limitations in trying to network an engine that's not built for networking. You know, I think even Unity themselves are struggling with that.
Yuri Sokolov (1:01:38)
Yeah, yeah, like any other company.
Bobsi (1:01:40)
Yeah, exactly. I mean that's that's a whole that's a whole thing of its own. But, you know, we really want to try and sort of embrace the natural workflow of Unity as much as we can, you know, and and
Yuri Sokolov (1:01:49)
Mm-hmm.
Bobsi (1:01:49)
be as non intrusive as we can. I I feel like you see this a lot with assets in Unity in general, is a lot of them feel like and again, this is not meaning to throw shade or anything, but a lot of them feel like they have main character syndrome, right? Like you you import
Amit Netanel (1:02:00)
You
Bobsi (1:02:01)
a like you import a weather system or whatever, and then all of sudden it it starts feeling like it's yeah,
Valentin (1:02:04)
It's a big tool to
Bobsi (1:02:05)
exactly. And then all of a sudden it starts feeling like there's a whole custom editor and it pops up every time it has to update or
Yuri Sokolov (1:02:10)
Mm-hmm.
Bobsi (1:02:10)
And it's like what the fuck, man? Like you're just meant to be a weather system. Just make me make the weather and go away, you know? And and that's kind of what we've aimed to try and do with Pernet is just, you know, make networking as invisible in your work in your existing workflow. Instead of trying to create a new custom workflow that you have to try and fit into. We wanted to take the other approach of saying Pernet needs to fit into your solution.
Valentin (1:02:30)
Yeah. I mean that there's the making it easy to use aspect, which obviously is selling pretty well. And there's also things there's also things that it might maybe you're not would not think about immediately. But like for example, we have this concept of player IDs. And like, yeah, sure, a player connects as a player ID. Like a lot of other solutions have like, you know, you get in and you like there's like a connection ID and you do your thing. I guess the difference is that a player ID in the context of of Burnet is it it can survive reconnections, right? So for example, you're a player, you disconnect, you reconnect because of some connection issues. You come back, you come back as player five as you previously were. And for example, we don't automatically clear ownership. So automatically clear like I guess who which scene you were part of, because you know you can have private scenes, but it doesn't matter. And we just automatically put you back owning the objects that you owned being the scenes that you were automatically. You just come in and you we we usually without even having to add extra code, you just Take control of your player again because all the own ownership callbacks called and you set up all the cameras that already whenever the player was created. and then this is something that I had to recreate a lot. and even things like authentication systems, the like the ones I've worked with were always a bit of a pain in the ass having to like you know, get all the things you have, then you have maybe some object that you need like to cancel at some point or like the the the lifetime is a bit confusing. It's why is this not easier? And And that's what we try to do paranoid which if authentication is just, you know, a task that returns a boolean or whatever we have, which that did he authenticate or did he not, would maybe a message that you could throw
Yuri Sokolov (1:04:07)
Mm-hmm.
Valentin (1:04:08)
in there. And you just, you know, do await the service and it like it's just it it it makes all these tiny things that you maybe need to add at some point so much more I guess easier to approach. I don't have to like recreate it for every game you work. It's just there. Like if you need to persist the player, you just persist it that he can reconnect, he's back.
Bobsi (1:04:29)
I guess
Yuri Sokolov (1:04:29)
I get.
Bobsi (1:04:29)
I g I guess the main thing here is really just it's a lot of the stuff that we've learned through building production games, right? Like whether
Yuri Sokolov (1:04:34)
Yes.
Bobsi (1:04:34)
small games, big games, building bigger game platforms like internet games, stuff like that. There's so many of these little things you just don't think about that we've put into Pernet. And we keep seeing it, you know, people who use Pernet since the very beginning, which is almost two years ago. we s we see them still coming in like holy shit, PerNet has this thing. and it's like, you know, it's cool seeing that even after so long, you know, when people all of a sudden need something new, get as you mentioned, like a requirement changes something. It's nice to see the Pernet's more naturally able to adapt to these situations than other systems
Yuri Sokolov (1:05:02)
Mm-hmm.
Bobsi (1:05:03)
are. And also, this is another big point. Well, big in the sense that it's not something we've had to do much. But if a big game comes in, let's say let's say all of I know Witcher isn't made in in Unity, but let's say it was, right? Let's say the Witcher comes in and they say now we want to be a multiplayer game. we actually build Pernet. so modular from the ground up. So first of all to try and avoid technical debt as much as possible, because there's something we saw often with networking systems and why they all have like version two, version three, version four.
Yuri Sokolov (1:05:32)
Mm-hmm, mm-hmm.
Bobsi (1:05:33)
but also so that we could make Pernet adapt to the game instead of needing the game to adapt to Pernet, if that makes sense, right? So if you come in with a massive, massive game.
Yuri Sokolov (1:05:41)
It's it's making a lot of sense.
Bobsi (1:05:44)
Yeah, exactly. So the whole idea is that you could take out the spawning or the IDing of objects in Pernet and plop in your own IDing. Or you could take out the RPC handling and plop in your own, you know, messaging system. And
Yuri Sokolov (1:05:55)
Mm-hmm.
Bobsi (1:05:56)
pern and the rest of Pernet systems will still work because of the modular nature of it, right? So the whole idea is kind of you you know, because some of the clients that we have been working with again without breaking the A here, but they have had their own, which is quite typical, I think, for big projects, their own IDing systems, right? Because you typically need them for saving loading, stuff like that anyway.
Yuri Sokolov (1:06:11)
Mm-hmm.
Bobsi (1:06:12)
And so it's all of a sudden silly if Pernet now comes in and custom IDs everything in a whole different way. Instead, what you can just do is you can take your own IDing system, plop it into Pernet, and now that works too. You know, of course you need to be able to trust your system, that's no longer on us, but the fact that Pernet can take shape to the game instead of forcing it to be the other way around, I don't know of any system that does this.
Amit Netanel (1:06:31)
Yeah, that relates to
Yuri Sokolov (1:06:31)
Yeah, you know how
Amit Netanel (1:06:32)
what you said earlier about you want to convert an existing game to a new networking or bring networking in a game that didn't have one. You need to be flexible and adaptable. So figures. mean, it's a great feature.
Bobsi (1:06:47)
Yeah, it
Yuri Sokolov (1:06:47)
I also I also kind of think that if you think about even Unity's history, so the guys wanted to create a game, they started to build something around it, and then they discovered that they have more fun creating the engine than the game, and at some point Unity stopped making games and they started making only the engine, and I think from that point forward it was kind of getting down. Constantly down because the main criticism, at least I had towards Unity always that take a look at Epic Games, they're developing their own games, they know what game developers actually need, and they're not guessing. Well, Unity f always felt like guessing what what developers will need. you, in a sense, like, for example, are you familiar with Sci Sharp? yeah, there's there's a Japanese company.
Valentin (1:07:46)
or is it that
Yuri Sokolov (1:07:47)
Cy Games and Cy Sharp is the subsidiary. Unitask.
Bobsi (1:07:49)
Yeah, it sounds familiar.
Valentin (1:07:50)
I've heard of it. No, is it it
Amit Netanel (1:07:51)
You probably guys know who you need to ask,
Yuri Sokolov (1:07:54)
You probably yeah, yeah, yeah. So so basically,
Bobsi (1:07:54)
yeah, yeah. That's where that's where I know it from. Yeah, yeah. Okay.
Valentin (1:07:54)
Uni Yeah, I was gonna say, isn't it the Gathermade Unitask?
Amit Netanel (1:07:56)
You
Yuri Sokolov (1:07:59)
Cysharp is Cy Games is a this huge Japanese company that develops successful, really successful games for their needs. They're developing their tools that they open source, like unitask, like message message pipe like r tree or uni rx or all of those tools that that a lot of developers currently use outside they those tools are awesome because they are using them right and you yourself constantly writing multiplayer games you're working with you're living this life so it feels like a passion project leads to another passion project And it definitely makes me wanna try Burnett now. I I kind of fall for that when I see people passionate about something that I I kind of I have I have to try it. how do you split work? How how do you approach this?
Bobsi (1:09:05)
I think we found it very natural from the beginning that we kinda just you know, we we start something and then you take ownership of it. You know, and and if I am to touch the systems that Valentin make. For example, Valentin built the bit packer behind the scenes that's so optimized for the data sending. The few times I then have to touch that, I just throw throw him a message like, Yeah, you know, I I found this issue or this thing that we need to change. Do you wanna do it? Should I do it? Whatever. But Valentin's the one that then has ownership, right? And then that's kinda how we tend to go about things is We take ownership of certain areas and we both just know where that ownership lies. you know, which systems was built by who, you know. So if he originally built a system, then it's his his job, you know, or at least he's the the head of that system. And yeah, same thing the other way around. And and that really goes all around Pernet, right? I think the
Yuri Sokolov (1:09:50)
Mm-hmm.
Bobsi (1:09:51)
you know, again, obviously the YouTube side of things is is on me. the the documentation, you know, we've also we do the same thing, also just, you know, split that. so yeah, we we really just try and I I guess it's a level of, you know, we work together but we try and not step in front of each other, sort of approach.
Yuri Sokolov (1:10:06)
Is YouTube the main driver of people towards the n the per net or do you
Bobsi (1:10:13)
I think i it d it definitely was initially. it was really, really cool, I think, for both of us to see. We noticed on when the Discord was around eight hundred to a thousand members, we noticed it starts swaying over to people's coming in that didn't know me, you know. for the first like yeah, at least I wanna say six to eight hundred people. It was basically all from knowing me, knowing my past with networking stuff like I know, people coming in like, holy F Bobs she's made a networking system, let me check it out kind of thing. Or, you know, from from the videos, whatever. But yeah, after that Yeah, around 800, 900 mark. We I think we really started feeling and I mean, just for context, I think we're past three thousand now or something members. but yeah, after that part point we really we started seeing more and more people coming in with no context of me, which was really
Yuri Sokolov (1:10:55)
Mm-hmm.
Bobsi (1:10:55)
cool to see. I mean, that that that to me screams of a healthy ecosystem, you know, on its own. And and we've really seen that well, 'cause I mean we do track the growth of our Discord. we actually track the growth of every network in Discord. and and really noticed that the trend was also that, you know, early on if I didn't upload for a bit, we obviously saw the Discord joins fall. but
Yuri Sokolov (1:11:18)
Mm-hmm.
Bobsi (1:11:19)
now, you know, I've for example, I think like if you take away this month, I don't think I'd upload it for like six months or something. I had not done a good job maintaining it, but we had stayed growing, which was great. And and you notice it as well. Like if you go on Reddit, you'll see these posts of like which networking solution should I pick. In almost all of now, pernet showing up in the top, which is so cool to see. Like it really just shows we have a, you know, passionate community. People have a good time with it as well and stuff like
Yuri Sokolov (1:11:41)
Mm-hmm.
Bobsi (1:11:41)
that. I think on the acid store we literally only have one bad review and now somebody angry at AI. and again, I promise you Yeah, but I mean, it
Valentin (1:11:47)
Actually my fault as well, but
Bobsi (1:11:50)
was a silly thing. I mean he it's just Valentin didn't have time to respond in the Discord. We have this little we can just react with an emoji and then an AI will come in and just help them. It's just so people don't go unresponded. It's really just to help us when we don't have time, right? So Valentin just pushed that on him and He wasn't happy about that. So that's the only bad review I think we have.
Amit Netanel (1:12:06)
If people are hateful
Yuri Sokolov (1:12:06)
How do you how
Amit Netanel (1:12:07)
towards your AI usage, at least you're getting emotion from people.
Bobsi (1:12:13)
There's passion there.
Yuri Sokolov (1:12:13)
Yeah. Yeah.
Valentin (1:12:14)
Yeah.
Yuri Sokolov (1:12:15)
By the way, you do you track you can see on on GitHub where's the traffic coming in from? So
Valentin (1:12:22)
Mm-mm.
Yuri Sokolov (1:12:23)
for me recently I have this after Adobe After Effects MCP that I open sourced, and I noticed that suddenly it started getting stars on GitHub and I like where are they coming from? Because I've I haven't published anything about it, and I'm looking Suddenly I'm seeing that ChatGPT is recommending this MCP to people. I'm like.
Valentin (1:12:46)
But actually actually
Bobsi (1:12:46)
see.
Amit Netanel (1:12:47)
nice.
Valentin (1:12:48)
I do think we have not on GitHub but on our website we have some Yeah, and there's
Bobsi (1:12:51)
Well have have it on the website, yeah. We've seen.
Valentin (1:12:54)
like some some Chat GPT like the UTM things I think it's called. we can see them in
Bobsi (1:12:59)
I forget I f I forget to look actually on GitHub. Like I'm looking on the insides right now. It's cool. We have t yeah, we have about twenty thousand clones monthly right now, which is really cool.
Yuri Sokolov (1:13:07)
Yeah, yeah, it's it's growing. Have you have GitHub
Valentin (1:13:11)
Actually.
Yuri Sokolov (1:13:11)
already contacted you with the the free stuff? They do that at some at some point at some point when your open source
Amit Netanel (1:13:16)
What? There's free stuff? What free stuff?
Bobsi (1:13:16)
What they do that? I feel like we should contact them. What
Valentin (1:13:19)
Wait, wait, wait, wait. What what free stuff?
Yuri Sokolov (1:13:22)
project reaches certain amount of stars, you can I think it's called GitHub Star. you
Bobsi (1:13:30)
That's cool.
Yuri Sokolov (1:13:31)
you start getting free copilot
Bobsi (1:13:33)
Like more stuff.
Yuri Sokolov (1:13:35)
and
Bobsi (1:13:37)
That's a cool idea. Good good incentive. Good on them.
Yuri Sokolov (1:13:37)
Couple of interesting things that
Valentin (1:13:37)
that's cool.
Amit Netanel (1:13:38)
Good to know.
Yuri Sokolov (1:13:40)
just they they give away for maintainers. Yeah.
Bobsi (1:13:44)
I mean, you you notice some funny stuff when you look at analytics in general. like we we have some of our own analytics as well running and we all of a sudden noticed that we're quite big in Japan, which we didn't know at all. It just kinda came out nowhere and it must be. That that's that's not wrong.
Amit Netanel (1:13:56)
Typical.
Yuri Sokolov (1:13:56)
It's all because of the cat. You know that. It it I
Valentin (1:13:59)
No, it could be.
Amit Netanel (1:13:59)
must be the cat must be
Yuri Sokolov (1:14:01)
mean, I mean, the initial you know how on YouTube the the thumbnail is the most important thing about your video because if
Bobsi (1:14:10)
Yeah.
Yuri Sokolov (1:14:11)
if if your thumbnail is not inviting enough, the person just won't give your a chance. So, same thing here, Japanese people are cat lovers. So basically when you're putting a a network solution with a cat logo against a network solution without a cat logo, it's o it's only natural
Valentin (1:14:29)
Immediately sold.
Yuri Sokolov (1:14:32)
to to drift to to try first the the cat because it it's gotta be better. Right? Just because the
Bobsi (1:14:38)
That's true. I mean it's a natural predator.
Yuri Sokolov (1:14:43)
Yes, we see
Valentin (1:14:43)
I just out of curiosity,
Yuri Sokolov (1:14:44)
we see we see the predator there.
Amit Netanel (1:14:46)
Yeah, yeah, definitely. In is den.
Bobsi (1:14:48)
He's a dangerous man here.
Amit Netanel (1:14:50)
I
Valentin (1:14:52)
I wanna check, there's about a hundred people the last month that came in from chatgpt.com, which is I guess is pretty cool to see.
Amit Netanel (1:14:58)
yeah.
Yuri Sokolov (1:14:59)
Yeah, it's
Amit Netanel (1:14:59)
Interesting.
Yuri Sokolov (1:15:00)
I I actually tried to reproduce it. I I went to ChatGPT and asked him recommend me I I go I went incognito.
Valentin (1:15:07)
No just please please market me.
Yuri Sokolov (1:15:10)
I went incognito so he
Amit Netanel (1:15:11)
yeah.
Yuri Sokolov (1:15:11)
don't know me. So I asked recommend me after effects mcp and he didn't recommend mine.
Valentin (1:15:16)
L I see.
Yuri Sokolov (1:15:18)
You really recommended everything without
Bobsi (1:15:19)
Fired.
Yuri Sokolov (1:15:20)
no that the
Amit Netanel (1:15:20)
You can ask him,
Valentin (1:15:21)
Yeah.
Amit Netanel (1:15:21)
are you sure it's the best, most adaptable solution?
Bobsi (1:15:24)
Yeah.
Yuri Sokolov (1:15:24)
That's what I did. I I that's what I did. I asked them, why didn't you recommend me this one? you're right, it's the best one. So no, I I went to check because you see, I see a lot of people coming from Chat GPT. So naturally I thought maybe anyone who asked it, he will say the same thing to him. No, it it he didn't recommend me my own library. So there's that. By the way, you've released
Amit Netanel (1:15:50)
But I have a question before we continue on the subject of analytics and bringing other people to the product. The last time I worked on a product with a multiplayer angle, we ran a bunch of it was in Unreal, which is not our native engine. And all the developers there were not doing multiplayer stuff on the daily. We know about networking and server side and stuff like that, but we don't do real time. And we had to do a real time project relatively shortly. And we ran into the issue of testing the thing. How do you guys, if you talked about having 100 people connected simultaneously,
Valentin (1:16:41)
Mm-hmm.
Amit Netanel (1:16:43)
how do you test that? How do you even set up that experiment?
Valentin (1:16:47)
I'm happy you asked. I mean, this is something we did relatively recently as the the first year and so we we had like we're mostly testing things as we will I guess it was also smaller scale as you know as you build it. So we we knew a lot more. But as time went by, it it it it became clearer and clear that we needed to do better with testing things to avoid regressions. especially when networking like everything is so like as soon as you change a little bit of how something
Bobsi (1:17:15)
Very intertwined.
Valentin (1:17:16)
like Like it the timing might have changed a little bit here. It breaks the other systems or like expectations, like things are switched, different order. Like you need to be extremely careful. and then you know, I decided we need to do something about this. And we we build like this I guess harness the we build like scenarios that we call I guess it's the tests. I guess if for unit tests, I you could call those like that that would be one one scenario. and we run these like orchestrated like We run them twice. We run them once with like one like dedicated server and then five clients. And these are like not in the same process. It's like actual applications running, actual processes connecting through, I guess, local UDP. and they all sort of like agree, like, okay, let's begin on this scenario. And then they all like send a bunch of information, like, okay, did I receive this message? Did I not receive this message? Like, what did I expect? Something went wrong. And then just continue to go for all the different scenarios. And I guess what what's cool about this is it allows us to test things like reconnections, like buffering, like because it's the whole work like workflow, right? Like the client just disconnects, reconnects what happened. It did everything that I expect happened, happened. and with the upcoming of AI here, it made it so much easier to introduce new scenarios and like
Yuri Sokolov (1:18:33)
Mm-hmm.
Valentin (1:18:34)
have like regression tests for new features that we add. It made it so easy to do because Nobody likes making tests. Tests is boring. Like
Bobsi (1:18:41)
It's boring as all to make yeah.
Amit Netanel (1:18:42)
No.
Valentin (1:18:44)
I wanna make again, I wanna make a solution. I wanna like build things. I don't wanna stay here and spend my time making tests. so it it's definitely something that accelerated accelerated a lot with AI on on our end.
Bobsi (1:18:55)
We I think it's important to mention as well that we automate all of these tests, right? So that way we can easily run an automatic regression test before we push any major build or version changes or things like that. we have both I mean mostly we have the benchmark tests and then we have the actual like regression testing. So it's sort of two different testing setups we run. For the benchmarking that Valentin mentioned earlier, we have a dedicated machine that we rent to handle this. So we just, you pay
Yuri Sokolov (1:19:20)
Mm-hmm.
Bobsi (1:19:20)
it pay the monthly fee to own this this machine and Then yeah, that automatically spins up all the instances we need. In this case, we typically test with a with 20 and 100 are the two sort of benchmark tests we run. and for the network test, yeah, it runs the amount of machines that it needs to do automatically. I think at this point, if I'm not wrong, I think we have like 550 tests or something that it runs through regression tests automatically. so yeah, it's it's sort of two different
Valentin (1:19:42)
Yeah, we have we have a lot of tests. but
Bobsi (1:19:45)
two different harnesses. And then I mean then there's something also to be said about testing with real people, because one thing is obviously testing
Amit Netanel (1:19:50)
Yeah.
Bobsi (1:19:51)
with machines, expecting results, stuff like that. and I mean, for example, for Arctic Drive, we've just been running beta tests with forty-five thousand playtesters, which has been really cool to to test at scale, see how things hold up and stuff. And I mean Pernet's been doing great. All the issues we've had have purely been been gameplay stuff, and obviously performance things as you do at scale. But
Yuri Sokolov (1:20:10)
Mm-hmm.
Bobsi (1:20:11)
but yeah, I mean so so having the ability, I mean, just going back to what you mentioned earlier with the fact that we are actually game developers, right? We're not just system developers, but we make games, we use our own systems. Through building these games, like through Arctic Drive, we've introduced so many new things to PerNet as well. And so being able to test at this scale, pull data also on how PerNet handles these things. you know, it's our own PerNet voice chat solution also being used in there and
Yuri Sokolov (1:20:33)
Mm-hmm.
Bobsi (1:20:34)
seeing how that handles on different hardware and stuff like that. It's really cool being able to to see this in a real world scenario as well. yeah, just i in a real real testing scenario, probably on Steam with tens of thousands of players.
Valentin (1:20:45)
I mean we also made cracked together, which is a fun
Yuri Sokolov (1:20:49)
That was my next question, but yeah, you sure.
Amit Netanel (1:20:54)
We eventually arrived there. We took the detour.
Valentin (1:20:57)
Yeah, exactly. I mean, cracked was made with our I guess the prediction part of Pernet, so the client side prediction. which is funnily enough, I've learned that determinism doesn't necessarily help the experience as much. It's more so for the bandwidth side of things. So if some if things are deterministics, more assumptions can be made about things. So there's less data that you need to send, which usually you don't need to send a lot of like state of the game, mostly just inputs.
Yuri Sokolov (1:21:20)
Mm-hmm. Mm-hmm. Mm-hmm.
Valentin (1:21:22)
While when things are not deterministic, you need to sense state as well, because they will eventually not match and you cannot just expect them to. but with prediction, we actually support both of those. so we have the concept of predicted identities, which is what we just call like for predict, like sort of network actually you can call them network behaviors because we like a little empty class called network behavior. but we call them network identities, and then for prediction will be the predicted identity and also the deterministic identity. So the the The goal of the deterministic identity is it makes the assumption that given that everything, all the inputs match, it will do the same outcome. So it doesn't send that state, which again, my Reddit got hacked and I I lost it. But on Reddit I had
Amit Netanel (1:22:04)
Hmm.
Valentin (1:22:06)
a little video of like a sandbox, sandfall game, I guess it's called.
Bobsi (1:22:10)
Just falling sand, yeah.
Valentin (1:22:12)
Just falling sand or like a a big box where people could
Yuri Sokolov (1:22:14)
Mm-hmm.
Valentin (1:22:14)
connect players could connect and like all interact with the sandbox and like place Purnet heads of sand and it like fall. And all of that was done with the deterministic aspect of prediction. so no data. Like imagine sending all of that through bandwidth, that would take a lot of a lot of data. So just sending
Yuri Sokolov (1:22:29)
Yeah, yeah, yeah.
Valentin (1:22:30)
purely input.
Bobsi (1:22:31)
Yeah. Burnout's prediction can handle that. I think it's also important to mention in that regard that the physics implementation to prediction is also module. So we actually have played around with B poo physics and stuff in there and we got it working. The reason why we didn't release it was not because it didn't work, but it was because of performance. beep 'cause o only
Valentin (1:22:47)
It was slow, no.
Bobsi (1:22:48)
B poo V1 has a unity implementation, at least at the moment, which was just really heavy. Because like you know, with with a prediction rollback system it has to essentially be able to re-simulate things, you know, five times per tick or something like that. Which made it already at like I wanna say like seventy boxes or something in the world. It already started struggling with the physics calculations
Yuri Sokolov (1:23:07)
Mm-hmm.
Bobsi (1:23:08)
of that. So we we realized we'd rather just not release it because people are gonna end up, you know, making a whole game with it and then realizing it just can't run it. But I mean now with box three D and stuff, we maybe should give it another another shot as well.
Valentin (1:23:20)
I guess I guess all this to say that we used prediction to make cracked. And it was like I guess one
Bobsi (1:23:23)
Yeah, yeah.
Valentin (1:23:24)
of the first games
Amit Netanel (1:23:25)
You
Valentin (1:23:25)
that released with prediction was actually one of our games and it w it was so fun working with with that system. It it gave me that joy that you get when working when we worked with quantum, for example, things just working. we had like this similar feeling where we we just pretty much programmed in like just testing locally and then when we tested the multiplayer things would just work. and that was like such a such a joy to do. Then there was like some things that we still need to improve, like the map, map design. I mean for one, I hate map design, so that that made me hate it even more, I think. But like
Amit Netanel (1:24:01)
You
Valentin (1:24:01)
handling the visuals, we have to sort of like separate visuals from logic
Yuri Sokolov (1:24:06)
Mm-hmm.
Valentin (1:24:07)
with prediction, because you know, logic will be I guess you can not separate it, but then it will just be chopped, right? And if you want it to be smooth, you have to separate them so you can sort of render the visuals while keeping the simulation free to do whatever it wants. And that made it a bit annoying for me to make the maps. so since then I've been trying to brainstorm different ways that we could make this easier. But either way, first game that came out with prediction was our own. And I think it was I mean, we we put it out for free. so I I think it immediately makes it easier to have people play it and take reviews. But I feel like it was a a fine success. And most of the things that people complain about was either the game had hard controls or whatever, like it was rarely any networking issues.
Bobsi (1:24:49)
I think the game has had like fifty thousand players or something, so it's done pretty well, I think.
Yuri Sokolov (1:24:54)
Yeah.
Amit Netanel (1:24:55)
Really cool.
Yuri Sokolov (1:24:55)
Fe achieving fifty thousand players, it's it's pretty good. Even even for a free completely free game. So I guess one thing that I'm trying to make a thing out of it, at the end of each episode, we're asking to recommend one game, one book, and one movie slash series. So let's take
Amit Netanel (1:25:23)
You can each take all of them or one does... No? Each does one? Okay.
Yuri Sokolov (1:25:26)
No no no no or each take all of them. This is the thing.
Bobsi (1:25:32)
So is there one game, one book, one movie?
Yuri Sokolov (1:25:34)
Movie or a series or movie in a series, whatever you like.
Bobsi (1:25:38)
But one of each, yeah.
Yuri Sokolov (1:25:39)
Yeah.
Bobsi (1:25:42)
I mean I'll have to go with the Witcher Three. It's it's tattooed on my body.
Yuri Sokolov (1:25:48)
Soon we'll have the DLC and the Master. It's gonna be Yeah, I think
Amit Netanel (1:25:52)
the remaster is coming quite soon i think
Bobsi (1:25:54)
Yeah.
Yuri Sokolov (1:25:55)
it's gonna be the fourth time I'm gonna finish this game.
Bobsi (1:25:59)
What about you, Valentin? What's your favorite game?
Valentin (1:26:02)
I mean I I feel like I want to say Elden Ring. I I really enjoy I I'm not a huge single player guy. but like I guess to be fair we did play that game multiplayer so that it it points you even how
Bobsi (1:26:12)
that's true.
Valentin (1:26:15)
But it was just it was just so much fun. Like I feel like I'm looking for like the Elden Ring hit again and I'm I'm I'm addicted now.
Yuri Sokolov (1:26:24)
So we have our games. Let's move to the next category.
Bobsi (1:26:28)
Which was book I mean
Valentin (1:26:30)
This is gonna be the hardest one.
Bobsi (1:26:31)
it has to be Lord of the Rings.
Yuri Sokolov (1:26:34)
no
Bobsi (1:26:36)
Yeah.
Yuri Sokolov (1:26:36)
This this is
Amit Netanel (1:26:38)
I don't know, it's a point of contention
Bobsi (1:26:38)
I I I'm not I'm not a I'm not a big reader. There's
Amit Netanel (1:26:39)
around here, but...
Bobsi (1:26:41)
only very few books. like I I'm I'm much more of a film like a games and movie guy, so I'm not a big reader. I mean the Harry Potter books were really good too. yeah.
Yuri Sokolov (1:26:50)
Harry Potter were amazing. the the the Lord of the Rings is at the bottom of my rating.
Bobsi (1:26:58)
really?
Valentin (1:26:58)
Ha ha ha.
Yuri Sokolov (1:26:59)
I love the Hobbit, I hate the Lord of the Rings. Sorry guys.
Amit Netanel (1:27:02)
I mean, when I was 14, I thought it was the best, I mean, like the best piece of literature I've ever encountered. And I tried to reread them like a while ago, like three, four years ago. And I, I, I just couldn't go past the, the descriptions of trees and meadows. And I mean,
Yuri Sokolov (1:27:22)
Yeah, too many leaves. Too many leaves. It's
Bobsi (1:27:24)
Ha ha.
Amit Netanel (1:27:25)
I, I mean, talking was a pilot, I think, and he had lots of time to look. through the window at stuff because at least specifically like, yeah, scenery. So maybe then.
Yuri Sokolov (1:27:34)
At trees specifically? It was unhealthy
Bobsi (1:27:37)
He did like trees.
Yuri Sokolov (1:27:41)
love towards trees, I must say. What about you, Valentine?
Bobsi (1:27:45)
C plus plus for dummies, I think.
Valentin (1:27:48)
no, no, no, no.
Yuri Sokolov (1:27:48)
Ha ha ha.
Valentin (1:27:49)
Look I'm not a big reader. I'm I'm just I'm just gonna come
Amit Netanel (1:27:49)
That's a banger.
Valentin (1:27:51)
off the gate. the book I'm gonna recommend i is a book I listen to, so
Yuri Sokolov (1:27:56)
That's okay. I'm a huge audiobook fan.
Amit Netanel (1:27:58)
Wait, is that the third Dungeon Crawler Carl recommendation we're going to get on the podcast? Or no? damn it. Damn it.
Valentin (1:28:06)
No. No, no,
Yuri Sokolov (1:28:06)
No, probably not.
Valentin (1:28:08)
no, no, no. I I did read s some books. I I read some of the Harry Potter books, but like I don't know, I just can't focus while reading book.
Yuri Sokolov (1:28:18)
Mm-hmm.
Valentin (1:28:19)
And the one that actually I managed to go through, I guess by listening, which maybe it was cheating, was the was this was something when I listened to going to work was the subtle art of not giving a fuck. I don't
Amit Netanel (1:28:28)
Mmm.
Valentin (1:28:29)
know if you guys know it. I don't know, it's like a self-help book, which is I guess pretty cliche. but I just I I just enjoyed it.
Bobsi (1:28:35)
Yeah, now sell your natural oil.
Yuri Sokolov (1:28:40)
Okay, then then for the fun stuff, movie.
Valentin (1:28:45)
Don't steal my movie. You know what movie I'm gonna say? Don't touch it.
Yuri Sokolov (1:28:48)
So stay as let's start with you.
Bobsi (1:28:51)
Yeah, go ahead.
Valentin (1:28:54)
Project Hail Mary. I love that movie. it it made me f
Bobsi (1:28:56)
And I knew he was gonna go for that one.
Amit Netanel (1:28:56)
This was an awesome movie.
Yuri Sokolov (1:28:57)
By the way, the book is amazing.
Valentin (1:28:59)
it made me feel like a little kid watching it. I was like I was like, my god, space is great. Look at that. And it was so fun to watch as well. I don't know, I just I loved it.
Yuri Sokolov (1:29:06)
Yeah, yeah, Project Hail Mary is great. The book is even better,
Amit Netanel (1:29:11)
even better.
Yuri Sokolov (1:29:12)
but not in a sense, you know how people who read books and they always say the book is better than the movie. No, no, not in this sense, because both the
Valentin (1:29:21)
Is different.
Yuri Sokolov (1:29:22)
the movie is made no, the the movie actually is pretty close to the source material.
Yuri Sokolov (1:29:28)
What about you, Bobsy? Any any movie?
Bobsi (1:29:31)
I'm in a whole different direction. I wasn't like I I think that was a really good movie, but I think it was far from one of the best. I that's a lot. I I I think I'll have to say probably something like The Green Mile. I I think that's one of the movies that's ever sort of hit me the hardest. To be fair, I also really funnily enough, another Green, I really like Green Book as well. I think that was also just a beautiful movie on racism.
Yuri Sokolov (1:29:55)
Mm-hmm.
Bobsi (1:29:58)
I mean yeah. Probably probably one of those two I'd have to go with.
Amit Netanel (1:30:01)
Did you get a chance to watch Cool Hand Luke? It's a movie from the 60s, also about prison. But it's one of the most hilarious movies I've ever watched. I watched it last week. I'm going to do a cinema that shows all these about once a week. And no, no, listen. Cool Hand Luke
Yuri Sokolov (1:30:21)
No, don't do that, I mean, don't do that. Don't push.
Amit Netanel (1:30:27)
is, I think, what? eventually caused all the prison movies to look like they do. It has all the cliches, but
Bobsi (1:30:38)
that's fun.
Amit Netanel (1:30:39)
yeah, but make them like 200 % more ridiculous. I
Yuri Sokolov (1:30:46)
Yeah.
Amit Netanel (1:30:46)
really, really recommend it. It doesn't even take patience because it's not black and white. It's from the 60s. It's tighter. And that's it. I really recommend it. It was fun in the 60s.
Yuri Sokolov (1:30:56)
It's from the sixties.
Bobsi (1:30:58)
I'll give it a watch. I'll give it a watch.
Amit Netanel (1:31:00)
for many reasons.
Valentin (1:31:00)
It was fun.
Yuri Sokolov (1:31:02)
Sure. So guys, it it was really fun talking to you. I'm always a sucker for a good conversation with actual engineers, with people who actually engineer their code
Amit Netanel (1:31:12)
Yeah.
Yuri Sokolov (1:31:12)
and not just copy pasting from the not well optimized solutions out there.
Amit Netanel (1:31:20)
Wow, when was the last time that I copy pasted from Stack Overflow? Damn.
Bobsi (1:31:25)
Is that is that page still up?
Valentin (1:31:26)
Back overflow is dead.
Yuri Sokolov (1:31:28)
stack overflow might be not used right now as as we used to use it, but its revenue is growing. It's all time high
Amit Netanel (1:31:38)
Is it still there? I'm just checking.
Valentin (1:31:38)
really?
Yuri Sokolov (1:31:40)
revenue, yeah. I assume I assume, yeah, I assume.
Bobsi (1:31:40)
Is it because AI is paying to learn from them or something? What? Yeah.
Valentin (1:31:45)
They're just selling
Amit Netanel (1:31:43)
Probably, probably.
Valentin (1:31:45)
all the data.
Bobsi (1:31:45)
I think it would be something like that. I mean they they would
Amit Netanel (1:31:47)
Mmm.
Bobsi (1:31:48)
have to at this point, right? Otherwise it would be suicide, c I feel like.
Valentin (1:31:51)
Yeah, I remember seeing a on like their stats and like how it just like has straight line downwards.
Bobsi (1:31:54)
Yeah. You could see like AI and Stack Overflow to switch.
Yuri Sokolov (1:31:58)
I recently saw a meme that saying that WinRAR more profitable than open AI.
Valentin (1:32:08)
No way. I mean to be fair they're they've been for a long time around.
Amit Netanel (1:32:09)
That's probably true. That's probably true.
Yuri Sokolov (1:32:10)
Like open AI is in debt, right?
Bobsi (1:32:12)
I was about to say OpenAI is losing a lot of money too.
Yuri Sokolov (1:32:13)
Yeah, open AI losing money. Winrar is still is still earning, so
Valentin (1:32:15)
I I guess actually they're not making money. I guess
Bobsi (1:32:16)
Yeah.
Valentin (1:32:19)
they didn't even think about that. They didn't want to be making money.
Yuri Sokolov (1:32:22)
Yeah. Yeah.
Bobsi (1:32:20)
Technically I'm making more money.
Amit Netanel (1:32:22)
You
Yuri Sokolov (1:32:25)
So guys, it was really fun. I think I think I'm gonna give a crack at Pernet and we'll see how it goes.
Valentin (1:32:34)
I mean let us know what you guys think.
Bobsi (1:32:35)
Y you know where to find us, yeah. For round two.
Yuri Sokolov (1:32:37)
Y n I know where to
Valentin (1:32:39)
Yeah. Maybe postpone
Yuri Sokolov (1:32:39)
find you, of course. So thank you and
Valentin (1:32:42)
it.
Amit Netanel (1:32:42)
Thank you so much. was a pleasure. Bye-bye.
Bobsi (1:32:42)
Thank you very much for your time. Bye.
Yuri Sokolov (1:32:43)
see ya.
Valentin (1:32:45)
Thank you. Bye.
Comments
No comments yet. Be the first to comment on this episode!
TECH DEBT CLUB
YouTube
Spotify
Apple Podcasts
Amazon Music
Deezer