The Modern .NET Show

Episode 88 - Making Cross-Platform Games in .NET With Evan Wolbach

Embedded Player

Episode 88 - Making Cross-Platform Games in .NET With Evan Wolbach
The .NET Core Podcast

Episode 88 - Making Cross-Platform Games in .NET With Evan Wolbach

Supporting The Show

If this episode was interesting or useful to you, please consider supporting the show with one of the above options.

Episode Transcription

Hello everyone and welcome to THE .NET Core Podcast. An award-winning podcast where we reach into the core of the .NET technology stack and, with the help of the .NET community, present you with the information that you need in order to grok the many moving parts of one of the biggest cross-platform, multi-application frameworks on the planet.

I am your host, Jamie “GaProgMan” Taylor. In this episode, I talked with Evan Wolbach about his experience with building cross-platform video games with Unity and .NET, including his Outbreak series of video games. We also discuss the extremely low barrier to entry for both .NET Six and Unity, and how it’s entirely possible to use Unity to build many different types of applications - all with almost no .NET knowledge required.

Along the way, we discussed the fact that you can use Unity to create more than video games; from VR and AR applications to in-game cut-scenes, but also including art pieces - an example of this is when a member of Corridor Crew used it to recreate a Bob Ross painting during one of their Bob Ross challenges. Check your podcatcher for a link to that.

So let’s sit back, open up a terminal, type in dotnet new podcast and let the show begin.

The following is a machine transcription, as such there may be subtle errors. If you would like to help to fix this transcription, please see this GitHub repository

Jamie

Thank you ever so much Evan for agreeing to be on the show. It’s a great pleasure to be reconnected with you. I’ll talk about what the reconnected means for the listeners in a moment. But thank you ever so much. You’re welcome to the show.

Evan

Thanks so much for having me. I’m excited to be here.

Jamie

Excellent, excellent. For those of you who don’t know, I produce another show called waffling taylors. And we’ve had a chat with Evan on waffling taylors before where we talked about the outbreak: endless nightmares video game, which was just then coming out. And there’s a whole series of them, I will put a link into the description of this podcast. So definitely go check that out, because we talk about the video games themselves, which I’ll let Evan give you a brief overview of those really quickly, in a moment. But my, my terrible description of them and I’m sorry Evan, is that the latest one is like a third person survival horror roguelike video game. So if those words are lighting up parts of your brain, go check the game out.

Evan

Absolutely, that’s a that’s a perfect description of it. Yeah, the whole series is, is routed in those classic 90 survival horror tropes and gameplay motifs and things like that. So if you like fixed cameras, you’d like inventory management, you like not having enough ammo, and you like kind of cheesy stories and stuff like that, I think you’ll find a lot to love across the series. There’s six games total, and endless nightmares is the most recent one to come out. And we’re gonna have more content for endless nightmares coming out in the next couple of months. And there’s plenty more stuff on the horizon that I can’t get into right now. But they’re, you’re going to be hearing a lot more about the series in the next six months.

Jamie

So one of the reasons I invite you on, and you should have graciously given us your time, is that the games themselves, you have some experience using unity, to build them. And this is something that we discussed on waffling Taylor’s; didn’t go into a huge amount of detail, because that’s more about the playing of video games. So I was wondering today, if you wouldn’t mind, we could talk about sort of unity and how you’ve gone ahead and bought those games?

Evan

Absolutely, I’d love to discuss it.

Jamie

But I guess first, if you wouldn’t mind, could you give the listeners a bit of a brief overview, like the elevator pitch of Evan and so we know where you’ve come from, and what you’ve been working on recently and stuff.

Evan

Absolutely. So I’m a professional software engineer, I’ve been in the industry now for quite a number of years. Formerly, I was a VP director engineering at an s&p 400 company. And now I run a video game, indie video game studio, that develops and publishes video games; both my own series, the outbreak series. And that also offers publishing and development services for other indie developers who want to bring their games to console and PC platforms that are developing with Unity as well. And I have a long history on the development side, I originally started with C and C++, then over the years, I’ve used everything from C#, JavaScript, you know, all those fun languages Java, then just, I’m really at the end of the day, I’ve kind of used everything, either professionally, or, or on my own. in my own projects. So I’ve kind of been everywhere and done pretty much everything now.

Jamie

What I feel like you’re describing them as like the polyglot programmer, you mentioned a lot of C-family languages, but hey, you know, how do I put it? After you deal with syntax, the most difficult part is typing it in, right?

Evan

Absolutely. And I mean, it’s, I mean, the one thing that I will say about languages that have been, you know, coming into the road over the last 15 years, is that once you once you have the fundamentals of computer science down have data structures and algorithms, you know, when you can programme well, in one language, a lot of these other languages coming out, you know, you can get up and running in them in hours usually and start creating stuff. And the the, the barrier to entry really has just been dropping precipitously, really over the last decade plus and it’s not like, you know, 25 years ago, when you pick up like a C or C++ book and be looking at like the windows examples in those in those large tomes that they used to sell it, all the bookstores and everything. And it seems so overwhelming. And now you can just grab something right off the net, and get going in a couple hours and build your own, you know, simple game or application or really anything you want. Computer programming has never been more approachable, and that’s awesome.

Jamie

Oh, absolutely, absolutely. I agree with you there. You know, some of the some of the stuff that’s coming out with the latest version of C#, you know, C#, Nine, .NET Six the sort of minimal API’s, the global using statements; let’s reduce all of that cruft, all of that barrier to entry, you know. I remember having to teach people, when I was teaching people .NET. In the early days, it was like, “okay, right. Yeah, you’ve got to put these using statements. I won’t tell you what they are. And then you’ve got a namespace, don’t worry about that. And then there’s a class Yep, we don’t worry that we’ll talk about classes. And then there’s a public static void Main. Yep. Okay. And then this culrybrackets, and now you can do Console.WriteLine("My name is..."); and then your name; and that’s cool.

Evan

absolutely

Jamie

“98% of what you’ve just typed is useless to you because it doesn’t actually teach you anything yet,” you know. So I completely agree with lowering that barrier to entry. And making it easier for folks to get into this, because the more people who can take those ideas and sort of digitise them, the better it will be right? We’ll have more voices, we’ll have more opinions, we’ll have more discussion. It’ll be wonderful.

Evan

Absolutely. And then the other the other great thing that’s happening too is that even if you don’t have like, like I, you know, my degree is in computer science, I come from the old school world where we had like operating systems courses, and C and MIPS and, and all that stuff that you know, we came up in, and it’s in, you know, having that foundation is very useful when you’re professional software engineering, you’re building stuff from the ground up. But what’s cool is that people who do not have that background who didn’t come from that intense level of study or schooling, can take these modern languages, like JavaScript, and TypeScript, and C# and stuff like that. And you can just build stuff now and you like, and you’re going to learn a couple, you know, topics and some content along the way. But you can actually build something without knowing all of the fundamentals. And I think that that lowering that barrier of approachability helps get people interested because they spend more time doing and seeing what they can build. And then that in turn will get them excited. Especially you see this in like high school and middle school and stuff like that, that they’ll see that they can build cool stuff. So now they’re actually getting really interested in going to computer science. You know, over the last couple of years, I’ve had, you know, several, or worked on several projects with getting folks those age groups excited about a career in computer science. And we’re not telling people about all these complicated stuff about pointers or Windows API’s or building apps from scratch. Instead, the conversations are just like, “let’s build something fun that you can see and play with.” And then they want to learn more. So it’s, it’s a really exciting time for the industry.

Jamie

Oh, absolutely. I feel like well put together. SDK, libraries, and frameworks are kinda like playing with Legos. You know, you take this junk that does TCP/IP and throw that into, or maybe not even TCP/IP, itl be HTTP, right? Because you don’t even need to think, “what is TCP/IP?”, you don’t need to know it, you just need to know HTTP, right? So httpClient.Get(..., and you can get a webpage. Done, right? All of the wiring up is taken care of for you. And not in that, you don’t have to learn it. But it’s like, “hey, you want to talk to an API? Here is a class or a thing that you can use to talk to it? Don’t worry about it. You can build your own if you want, but hey, we’ve built one for you.” You know?

Evan

Yeah. And honestly, not spending time reinventing the wheel. Because when I look at a lot of the earlier projects, I did like building my own game engine and stuff like that, which was now over 20 years ago, I was working on stuff like that, just kind of saying, “how do I okay, how do I get graphics rendering to the screen? How do I do 3d rendering? How do I handle input and stuff like that?”, like, there’s no reason why you should be wasting your time building that stuff from scratch, you’re likely not going to build it as well as a battle tested library or API that’s been out there for a couple years at a major companies building. And you’re also not selling the fact that you’ve got graphics to render on the screen or you’ve had your input to actually work on that you’re what you’re what you’re building is, at the end of the day is a product that you know builds on top of those foundations that can do something interesting, or can can fulfil a new need or, or a game or something like that. And that’s really what you’re selling at the end of the day.

So like, earlier in my career, I thought, “oh, it was really important to be able to build all that stuff from scratch.” I thought that’s real engineering was and at this point, my career, I’m like, “no, what, why would I waste my time doing that? I want to build something fun and new,” and that in turn becomes the product that gets sold. And that’s how you support yourself. So you know, it’s the whole it’s just that the industry is just it’s such an exciting place right now.

Jamie

Absolutely, absolutely. And this is something that I need to, I feel I need to tell juniors a lot of not not all the time, but a lot of the time. And that is, “the boss doesn’t care how you did it, as long as you do it. Right? If it means you pull in a library, you pull in a NuGet package, you pull in an NPM package, you pull in a Gem, Python, or whatever it doesn’t matter. They don’t care how you did it just that you did it,” you know, they do us a really bad analogy: Kirk never asks Scott how he fixed the thing, he just wants him to fix the thing so they can get out of trouble. You know, it doesn’t matter.

Evan

Absolutely. And and I mean on that point, an important thing is I work with students to work coming out of college and you know, going into their first software engineering careers. And that’s a topic that like when you’re in an academic environment, a lot of its study in theory and things like that. And that’s the thing that I find with students is the hardest thing to get across to them is that know when you’re in the workforce, you know, obviously you need to be interested in your work you need to be you need to be learning and building cool stuff that’s that’s important to keep you motivated. But at the end of the day, you’re there to build a product to ship a product to sell a product to make money. And you know if if you’re not interested in that path of building products and making money You can go in academia, you can go study to do that stuff. But when you go to a company, you know, to work as a software engineer, that’s what you’re doing, you’re not trying to write the most perfect line of code, you’re trying to write good code within a appropriate timeline that can be sold and that your your customers are happy with and meets their requirements. And that’s, that’s something that I spent a lot of time talking to people about is just helping them understand that that’s really what a career in software engineering is.

Jamie

Absolutely. You see, you mentioned other one that you had spent some time building your own game engine. And you’ve recently pivoted to using unity and the similar sort of tooling. So let’s, let’s talk about that right apart apart from the why, why am I spending all of my time building a game engine that that may only survive one or two games? Let’s not really talk about that. But let’s talk about the pivoting aspect, right? What was what was it that made you pivot to unity and similar technologies for building those games.

Evan

So my, my, it’s funny, my, my journey to arriving at Unity actually started quite a few years before I actually started unity. I was working in the Xbox 360, they have an indie developer programme for the Xbox 360, where you could actually you could use your existing console and actually run code on it and develop using some dotnet libraries and some other graphics frameworks and stuff that Microsoft built to run specifically on the Xbox 360. And there, there was like a creators programme on this one, this must have been back in like, 2008 2007, somewhere in that ballpark, you paid a small fee, and you started working with it. And prior to me working on like my Xbox 360 game, I had been writing games into myself and C, C and c++, and doing everything from scratch with that. And when I worked started moving over to the Microsoft environment and working on the Xbox 360 I realised all this stuff that I would spend months on building, it’s already provided for me to runs better than pretty much anything that I can write and it’s still malleable enough that I can change it over to do the things that I need. And that you know, that experience that I started looking into things like Microsoft Silverlight, which was I think big around, probably around 2009 2012 somewhere in that window, and that used C sharp that use a lot of dotnet stuff it was it was really it was really actually a really fun little web. It was kind of like a web and desktop hybrid toolset, and that kind of furthered my experience with that where I just spent more of my time actually building something fun and then I started really getting really interested in looking into okay so what’s like what is unreal engine look like what is unity look like? And it’s when I started investigating those I played around with Unity I realised Wow, this is like that stuff I was doing an Xbox 360 but now it’s like on steroids and and I and now it’s completely cross platform and then it’s stuff that I build in there now I can ship it on console I can ship it on PC, the you know the porting work is is not organic when I’m spending time building something that’s actually interesting and fun to fund to do instead of just the setup and that’s that’s how I got to unity and unity you know, it’s just such It was such a life changing environment for me to work in. Because you can do you can do anything and you know you can do anything in Unreal Engine but unity the the barrier to entry is just so small. Anybody can pick it up and play with it. It’s a really it’s I it’s known for games, but you can build any type of application in unity. It’s it’s just a phenomenal toolset.

Jamie

Yeah, totally. So I haven’t had any practical experience myself with Unity. But I do like to watch people being creative with it, right? One of my, one of the things that I like to do if I get like 20 minutes very, not very often I get time to myself, but when I get like 20 minutes of just me time, I’ll probably you know, I hit YouTube and I look for people using this technology or people using that technology. And I I happened upon a video by a bunch of Viet very, very talented VFX artists called the corridor crew. And what they did it was it was phenomenal. They did a a real time Bob Ross challenge. So they’re watching a Bob Ross show. And watching him create this painting and they have to recreate in real time with the tool of their choice. So there’s someone using cinema 4d, there’s someone using an iPad, you know, there’s all sorts of different tools. And there’s, there’s one guy called Sam builds the entire scene in unity, and then turns into a game before the before the episode of the Bob Ross show, I think is it called the joy of painting. I only know of Russia right? before the end of the episode of the Bob Ross show the joy of painting. He’s made like a small island to run around and there’s characters to interact with. They don’t do anything but they are there right? And I’m sitting there thinking to myself, wow, you can throw that together that quickly. And it’s it’s amazing, right?

Evan

And it’s funny that you bring that up because that’s a really great example of something that I think when people think of you to do they think of video games and they don’t think of just you know, 3d animation or like film or or things like that, or even just just doing cool stuff with graphics in a non game setting. And that’s something that’s really awesome about it. I as I, we were talking before the show, I have, you know, young children and a lot of what we watch now is like those cartoons that are, it’s kind of like mass produced 3d animation. And you know, I watch these cartoons were like, there’s a character playing like on a train driving down some tracks, and there’s, there’s grassy hills. And you know, it’s very, it’s very simple, it’s everything’s like shapes, and they’re all bright colours, there’s not a tonne of detail in the scene, but it still looks cool. And it keeps the kids attention, and it keeps my attention as an adult. And what I do there, when I’m sitting there watching that stuff is I think about, okay, if I had to build this in unity, how would I do it, and the cool thing is, is it’s trivial, it’s trivial to make those hills to make a little train, go across the tracks and, and spray smoke into the air and steam into the air. And, you know, I I’ve never actually looked into how those shows are produced. But I would not be surprised that there’s some stuff on these on these streaming services, that that maybe is actually being built in, in unity, just because it’s probably trivial to do so. And honestly, it’s probably a heck of a lot easier than working in some advanced animation suite where you need to have a huge render form to, to render the each image and build a video out of it. Whereas YouTube, you can probably do it in real time at that graphics level. And, you know, that’s, that’s just something I think about a lot. And it’s, it’s just a testament to how versatile something like unity is.

Jamie

Yeah, one of the other videos, I’ll put some links into the show notes if folks are interested. But one of the other videos that I’ve watched by the corridor crew is they, they talk about the Mandalorian, which is, you know, the Disney plus TV show, and parts of that are done with unity in real time. So for like a green screen area, and they’ve got, you know, a bunch of machines with some Nvidia 3080s or whatever, sitting there actually rendering the 3d images in real time as the actors and actresses are interacting with the scene, which is just amazing. I mean, it’s, I think, I think most of it is just previous. So it’s like, here’s what the 3d object will look like when our artists get, you know, six months to work on it. But like hardcore, he’s the director of vision of what that scene could look like, right.

Evan

And if you if you look at in videos, press releases, sorry, unities press releases over the last couple of years, they’ve I think, for me, I started noticing it really rare, like unity 2017, which was a couple years ago, they’ve been pushing very hard on on like graphics, parity with the high end Unreal Engine stuff. Unity actually, usually, like once a year, I think I’ve been seeing stuff if not a little faster that they produce these gorgeous real time tech demos are made in unity to show off all the cool graphics technologies and techniques they’re introducing into Unity. And they basically produce like real time film shorts, the stuff that looks like the quality that you’d see in a show like the Mandalorian. And I think kind of what you’re saying there is a testament to that direction that that unity is is partially going in. And their success that they’re finding so far, is because the very high end unity stuff it is it is gorgeous. And you know, I’m sure Unreal Engine probably still is a little bit of an edge if you’re at this super, super high end. But the the ground that they’ve covered in the last couple of years is is phenomenal. And you were starting to see that in the actual game space. Now we’re where I think and I think this was a very unfair thing to be saying. But if you if you remember, like five, six years ago, there was almost maybe a little bit of a stigma about unity projects, there was always like talk that all they always kind of look the same, or they have the same defects or it’s like, oh, I can tell just by looking at this, it was produced in unity. And as a developer, I think that’s very unfair, and really mean to the folks working on that stuff. Because a lot of effort does go into it. And it’s not just as simple as hitting an export button and saying I’ve got a game. But I’ve noticed that that kind of general chatter has really died down in the last two years. And I don’t feel like that I really hear that anymore. And when you when you play Unity game on console, where the Unity logo doesn’t pop up. I’m sure folks that played some unity stuff on there that they probably thought was unreal engine. And it’s it’s it’s just it’s just coming along so very well and it’s it’s such an exciting platform for those reasons.

Jamie

Oh absolutely. I think I’ve lost I’ve lost count of the number of times in the last few years where I’ve fired up a game and I’ve seen the Unity logo somewhere in one of those splash screens or little you know, loading screens and it’s just it’s amazing to know that their array is not all dotnet but you know there’s dotnet capability in there as well. And not like you say once you’ve once you’ve done the hard part for you which is create the game make it engrossing make it good to look at or create the 3d scene or create the the frame or whatever. The difficult part of the tooling then does presumably is just go in right. I’ll take this and I will format it however it needs to be formatted, encapsulate it in some container or whatever, so that it can be you know, side loaded onto a Nintendo Switch or loaded on or Playstation or something? Because that’s the crazy thing to me is there is one tool to rule them all right?

Evan

Yeah, and I definitely won’t be super clear. And obviously, we’re not going to get too deep into the content, the console side of things, for obvious reasons for proprietary technology and stuff, but you know, it’s it’s, I do also want to be very fair to the developers, of which I’m one of them that unity unity does a lot of that heavy lifting for you in getting the general executable and everything into the state that needs to be able to run on a different platform. And I do not want to downplay the amount of time that that saves an engineer like me, the fact that it can export and build and do and do that almost out of the box, in some cases is absolutely phenomenal. But there is you know, still definitely a lot of engineer work ensuring work that happens on the on the Game Dev or the developer side of it, to to basically connect all the little pieces together to kind of form the form the last bit that you need for everything to kind of work nice together, unity kind of gets you 90% of the way down that marathon, and then you’re left there with the last 10% to kind of handle on your own. But that last 10%, that is probably taking you months instead of years for doing like a port to a console version, or something like that. And, and that kind of technology. And that kind of time saving for engineers, like myself is the only reason why we can make games and actually have multi platform releases. You know, just to talk about my most recent title outbreak, endless nightmares, that was the first title that I released on virtually every major console platform and steam at the same time, virtually worldwide. And I was only able to do that. Because Unity has that ability to be so cross platform friendly, I still put months of work into writing reusable code to do that extra 10% of the gap there. But it would have been years otherwise. And I just want to make sure both unity gets its due. But also that it’s acknowledged that it is not just as simple as hitting an export button. And the developers are putting in their work as well on that too. Because I because I think that there are I do still hear kind of like misconceptions on the net, where people think it is just as simple as saying, hey, export, that’s a Nintendo Switch. It’s like, kind of But no, you know,

Jamie

so So, I mean, it requires those standard sort of software engineering practices of like, let’s encapsulate this code, let’s create something that’s reusable. Let’s, if I desperately desperately need to do something that is very specific to a platform, maybe I could do an IF def or something, some kind of check to make sure that this code loads in and runs on that platform. Or maybe I could pull in a library. I don’t know, like I said, I have no experience with it. Right?

Evan

Well, you’re you’re spot on. Okay,

Jamie

okay. So So we’ve we’ve sort of hinted at the fact that unity is you can use it for all sorts of all sorts of things, right? You can take the theory, you could do it for creating a 3d scene to make an image out of, I know that you can use it to create games, I get the feeling that you know, in game cutscenes are usually not drop out of the game, load some other app to play it and then come back to the game right there. That’s just that would be a waste of time. So in game cutscenes, I guess must be in unity as well. But what about other things? So I know that in the past, we’ve talked to a few people about VR. And one of the folks that we talked to had said, Hey, you know, I’ve been doing VR is totally a thing that you can do in unity. Have you have Have you any experience with doing that?

Evan

Yes, so um, yeah, a couple years back, I participated in the hackathon with a good friend of mine at the time I was working with, and we did an augmented reality application that was not a game. I’m using the Microsoft HoloLens v one dev kits in unity. And it was very, very cool to be able to build that 3d space and to build things like kind of like, you can imagine like a GPS tracking algorithm for the inside of a building. Like let’s say you wanted to know where the bathroom was, from where you were, you could strap on the HoloLens, and one of the things that we worked on was building something to actually show you a way points that you could walk all the way over to the bathroom or any other location you wanted to just by saying, Hey, where’s the bathroom or Hey, where’s the printer or something like that. And you know, and that’s just another great example of unity as a tool that’s not producing games but can produce real life applications that have real value. Things like you can export out to HoloLens, you can export out to obviously the the major VR headsets from Valve and an HTC and and all those other folks as well from there and we you’ll and I know that there’s going to be software out there that are your software that was written in built using unity for things that are like medical procedures and stuff like that. there there’s GPS stuff out there. But there’s there’s there’s just a it’s another it’s kind of another good example that the thing that you may strap on your your VR headset for that’s not a game. You may not know it, but that that very well may be a built in running Given the environment, um, at the end of the day, and that’s, that’s what’s really exciting about it.

Jamie

That’s pretty cool. So it was kind of a leading question just because I know of a project that is ongoing, that allow us friends who have maybe social anxiety or can’t really go into large populated areas, we’re not going to talk about the current situation, but you know, things that are happening in the world that are preventing people from going to places where they would usually be surrounded by a lot of people. So there is a company that I know of, who are building out VR applications with Unity, where you can sort of replicate that walking around an office or walking around a shopping centre. Without many people around just if you want that experience of Hey, I want to go to the to the shopping centre or to the mall or something, but I don’t want to have to be surrounded by 1000s of people well guess what we can make a a in quartz video game where you can just walk around the whichever mall is near to your house or whatever. Absolutely, you can have virtual meetings in them as well. So you know, there’s all these wonderful applications that things like unity are helping to build right

Evan

and think about it if you didn’t have a tool chain that lets you just kind of get up and running and just focus on the content of what you’re building for that and you had to figure out a HUD the basis of how to create an augmented reality or virtual reality application like that barrier is just absurd if you had to start from scratch with that, but you have these API’s built by HTC by Valve by all you know the Oculus and Facebook and all these other folks you have the hardware you have this this toolkit that integrates it all very nicely and if you if you ask me if you and I were to sit down right now and say let’s build a demo of that app to let you walk around in a crowded place I bet you you and I could have a proof of concept running very well on that would be probably cross portable the most VR headsets we could probably get that up and running in about eight hours you know and i mean that’s that’s the power of a tool like unity and the power of having all these standardised API’s for this for these hardware and software experiences out there and another testament to when we you know when I talk to newer engineers and folks that are in the industry about why you know it’s important to be okay with importing libraries not building everything from scratch yourself it’s it’s the power that you inherit you’re you’re standing on the shoulders of giants and you can just get up and running you know in eight hours versus if you and I had to engineer a VR headset and lift the API’s and figure out all the math for that everything from scratch I found sure years if not years to just get to a proof of concept it’s it’s just incredible

Jamie

absolutely and like he said if we were if we were building everything from scratch and we were targeting say the the steam headset I can’t remember what the valve one is called but the you know the valve VR headset right? And then somebody walks in and goes but but haven’t aware HTC Vive then we have to spend some research time figuring out how do we pull that over right whereas because we would be using something like unity Alright, it’s not just a file export, but you know, there’s all like the the amount of time like you were saying it drops from months down to perhaps an afternoon.

Evan

The argument there is okay, well that HTC headset that’s different from the other one we were looking at well that’s got standard API’s you can use but you’re but you’re still sitting there like yeah, okay, so even if you give me the API’s, that headset, we’re still probably looking at days, if not weeks, but unity already integrated all that nicely for you. And you know, it is as simple in some ways as maybe a couple hours of work than hitting export for that. And it’s, it’s just so powerful. And I also think to just the rate that we’re seeing the evolution of technology, and VR, and AR and all these, all these different areas, I think is due in fact that just these barriers are gone now. And that that a student can buy a $300 windows certified headset, or whatever the certification is for AR VR on Windows, and just get up and running. Instead of having to shell out 10s of 1000s of dollars or $100,000 for dev kit it’s it’s just driving the whole industry forward so quickly and it’s it’s awesome.

Jamie

Oh, absolutely. Being in the future is the best.

Evan

And we’re not even in the future. Imagine what’s 50 years down the road, you know, I mean, it’s it’s a it’s, it feels like we’re the future, but you know, our grandkids will look back at us and say, What were you guys doing?

Jamie

Yeah, they’d be like you had to put a headset on?

Evan

Yeah. Like it just wasn’t in your classes. It just wasn’t, you know, his signals weren’t getting sent into your eyes or something. It sounds like so much work to wear headset.

Jamie

Yeah, right. So So let’s say I’m interested in building something with a unity, right, I’ve got some dotnet background. I’ve got a little bit of maybe a little bit of c++ if I need it. I’ve got some assets. I’ve got some textures, I’ve got all those things. And now I’m sitting here wondering Oh gosh, now I have to remember 3d maths, right. I’ve got to learn, go relearn algebra. Is that the case? Or is it just a case of you can figure it out? Because there’s menus and pointers and it’ll just write the code for you. What’s the it’s difficult to say, I guess, right?

Evan

The answer is, and I’m sure you’re expecting this, the answer is it depends. And unity provides you a lot of standardised math libraries right out of the box. So like, you’re not, you’re not doing all the mathematical calculations from scratch on a piece of paper or anything and trying to figure it out, they’ve provided the tools for you to do the math fairly easily. As long as you have a background and understand like concepts like you know, vectors and, and matrices and things like that, and kind of How’s 3d space works, there is some assumption that you kind of have some knowledge of that, but they’re not asking you to be a deep domain expert on that to be able to build stuff. And that that’s really if you’re working like a scripting language, if you’re just writing like C sharp and unity, you can you can get all that math directly and, and do it all yourself there. The cool thing about unity, though, is that they put a lot of effort into making sure that the visual editor experience kind of like the What you see is what you get editor can do a tremendous amount on its own. They provide standardised scripts and tools for for common physics like for making something bouncing, for handling gravity for for move, like if you want to just have a character that can move around and animate simply, they give you out of the box tools, then you can edit to your heart’s content and get something going. So for you, let’s just say you’ve never used unity, you probably have a little bit of a programming background, and you sit down and you’ve got some cool models and stuff and you want to make a little playable thing, you’re going to be able to do a lot of that work a lot of the basic foundation for that without writing a single line of code, just by dragging your assets into Unity, using a lot of the pre prepared physics and controllers and stuff for that using the pre prepared input handlers, things like that, that don’t require running a single line of code. And that’s exciting. And then when you get that basic setup, going, and you have kind of like your proof of concept there, well, then you’re just going to start looking into Well, how do I have custom animations for my character? How do I have custom input everywhere, things like that. And that’s kind of the power of unity is that you gently get introduced each of those topics, as you try to solve one, you have a working prototype, and then you you’re gonna kind of work on it piece by piece until everything does or looks like what it is. And that’s when you’re going to dig into the documentation. That’s when you’re probably writing a little bit of code or or modifying code that they’ve provided for you. But there’s a tremendous amount you can build, you can build a whole game in many different genres in unity without writing a single line of code. And, you know, something like that would have been impossible 15 years ago, which is incredible.

Jamie

That really is incredible. I because because one of the things that I was going to ask is like, So you mentioned documentation, and you mentioned being able to use a lot of the sort of wiziwig, drag and drop, you know, drag your asset and your 3d model drag, I don’t know, maybe at animation violin, and just set some parameters. And he will move it may not be perfect, but it will move right? Which like you say it takes you from the either you you wake up one morning and go I’m going to run again, right and you in the old days it was okay, so I’ll start with drawing triangles on screen, you know, and then build up from there. Whereas right now like you say, you can go, I’m going to write a game, I’m going to open unity. And I’m going to futz around for three or four hours and guess what, I’ve got something right.

Evan

That’s the power of it is you’ve got something right, because I mean, you think about it, like where you and I started with like, okay, we’re going to, we’re going to get the OpenGL libraries, we’re going to draw some triangles on a screen and after eight hours, we’ve got some basic primitives on the screen, we’ve got some probably very basic broken input handling on there, and not a whole lot of anything. But with unity in that eight hours, you probably have prototyped out your entire gameplay loop, and you can play it It might be squares dancing around on the screen, but you have physics you have all the input working it looks kind of like in your mind’s eye what you can envision the gameplay looking like and and that that’s a huge motivator to keep going because you already have something and then it’s just refinement from there at the end of the day.

Jamie

Oh totally totally. And I suppose you don’t have to worry so much about oh well this person is on a PC but using a Dvorak keyboard you know if you’ve gone down the route of writing your own game engine, you’ve probably hard coded the ws cdkeys to be movement right? And on a devora keyboard that doesn’t look like how you know Ws ad on where you think they would be.

Evan

Right and I don’t I don’t use this part of the of unity obviously because I have my own like controller configuration built directly into my games but historically like I know that like even if you could literally like tick a box in unity that said, Hey, when you boot the game, pop up a controller configuration and keyboard configurator and you know literally like like if all you need with something simple like that, it was literally like a tech, a tick box and you could just tick and it would be there when you start the app. And then that’s kind of an example of, okay, you get a proof of concept. And when you’re ready for your commercial product, you can integrate controller remapping directly as, you know, part of the game inside the application, stuff like that.

Jamie

That’s it, that’s it, it’s all sounding like it’s getting me to the boss doesn’t care how you’re done it, but you’ve done it, that’s the sounding like that.

Evan

Precisely. And that and that’s what it is. And look I mean, it’s it’s I run a I basically make my livelihood producing indie games using unity. And you know, the fact that as a solo indie developer, I’m, I’ve produced a series of six games with more on the way that are available at all, constantly, all virtually all console platforms available on Steam, you know, and I’m, and I’m able to manage that workload, unable to continue to create new products and, and handle my technical debt on my own, I think it’s a testament to how successful you to be has been in building that environment, because it allows a one man show like me to exist, whereas I probably even 10 years ago, I couldn’t be doing what I’m doing, and in the way that I do it,

Jamie

show show. And, just to sort of reiterate, you mentioned that there’s the C sharp scripts that you can throw in those, those are just, I mean, I’m gonna use body kweskin, just, those are for like, altering the behaviours of certain things, right? It’s not like, Oh, I have to load up Visual Studio and write 1000s upon 1000s of lines of code, because there’s bits missing, it’s more a case of, so when I want the character to move around, I want to give them you know, when they pick up this particular item, I will increase the gravity used or I want to decrease the gravity or maybe I want to make them flash different cause or something, right, something that’s outside of the initial remit of unity itself.

Evan

Yep. Yeah, I mean, that’s when you probably start getting to scripting is when you want to change little things like that dynamically during runtime. And you know, that the great thing about the scripting languages is It is as simple or as complex as you want, it could be as simple as, okay, I want to be able to change gravity at this certain gameplay segment, whenever it’s detected, or something like that, that could be led that is literally one line of code in unity to do an operation like that. Or you can custom write modifications to how gravity is handled across the entire game, do a lot of the math yourself directly, like maybe you you need certain custom math that’s not handled natively for the system or something or custom gravity, I mean, and you can end up writing 1000 line file to handle all those edge cases and everything too. It’s It’s literally you’re just writing as much scripting as you need to get done with what you’re doing. You’re you’re not writing boilerplate, you’re not you know, you’re not wasting your time doing bait, you know, you’re not wasting your time, because the initial setup or the prototyping or anything like that, it’s really, it’s just basically what you need to do with what you’re writing and scripting for. And that’s, that’s why it’s so different from someone like me, who comes from the days of all that former point to get a went 32 application, just to render a window back in, like 99 or something, you know, and in 1999 It’s incredible. Yeah,

Jamie

I remember using OpenGL and some library or other to sort of hook into with dotnet two, and it was like, okay, so you get a great new window and put about 15 nulls in that, don’t worry about that, because that’s just because of how the windows 32 API works.

Evan

It’s so true, it’s so true. And yeah, I mean, it’s the the the I believe the current C sharp scripting engine in there is dotnet and I think they’re listed as four dot x i think it’s 4.5 I want to say so you they’ve put a lot of work in the last couple of years to bring dotnet up to more modern ish standards inside unity and that’s all just natively available to you alongside the API’s for the Unity engine and and you know, the scripting language gives you hooks into really everything everything that you could do through the wiziwig editor in unity you can access the innards through the scripting language and make the the per line modifications that you need for for really anything it’s it’s really really great that way and it’s as much or as little control as you want to have

Jamie

well that’s that’s pretty cool. Like you say you know being able to sort of drop things in to increase or decrease in as you say you know, as much or as little control as you want that’s great because like I feel like like I say I haven’t used it but from your description it’s very much like it’s ready to go Why are you not using it common usage Jamie you’re not using it fast enough. Just download unity and get it done you know?

Evan

And that really is like a lot of it is just downloading it running it. By the way I’ve noticed that we’ve this This podcast is trying to do an advertisement for unity. Whenever we’ve got to work it’s a product placement to get tickets or something. But but it’s but it’s but it’s funny. I think that anybody listening this probably would sound like this is We are kind of really singing unities praises a lot here. But honestly, everything I’ve said so far is just the, the honest impressions I’ve had. But over the years, I’ve been dealing with it. And I look, I don’t want to say that everything’s perfect all the time in unity. It’s not that it’s a magic place where everything runs great all the time, and you won’t run into problems and things won’t crash and stuff like that. One of the biggest things that takes up my time in unity is getting game performance to an acceptable level. And, and using all the built in tools and creating tools that are not built into Unity, to get the frame rate up to get the load times down to handle, you know, memory management and things like that. I mean, yeah, if you’re in C sharp, you’re using dotnet, four dot exe, you’ve got a garbage collector, I’m not messing around with pointers and stuff, and writing, you know, C for this thing. But even though it’s got that built in stuff, you can’t just go crazy, you have to be mindful of rendering batches, you have to be mindful to not have triangles being rendered on there, you have to be mindful about how if you’re writing scripts, that you’re not introducing inefficiency in the scripts that you’re handling asynchronous functions properly. So I definitely don’t want to get the impression that it’s so foolproof, you can’t get into trouble. There is a lot of trouble you can get into. And as a developer producing, you know, commercial games, you’re going to spend a tremendous amount of your time focused on tweaking things to get the performance where it needs to go. But at the same time, you’re not spending that time writing boilerplate code to get a window up and running and get a triangle on the screen. And that’s that’s kind of a trade off at the end of the day, as it is a tool set that tries to be everything to everyone. And then when you figure out who you are, while you’re going to spend some time customising it to your needs, from a performance perspective, tailoring things to the platform you’re targeting, not every platform is out of memory. Not every platform has like an SSD, or some of them have old style, you know, hard drives running at 5400 RPM or stuff like that, you will spend a lot of time working on those portions of your product. And that’s not a failing unity. It’s just a fact of life when you’re developing software.

Jamie

Yeah, I mean, you would you would have to spend time working on those same problems if you hadn’t wrote all of the code anyway. He just absolutely you get to that point faster, right?

Evan

Yes, you get to that point faster. And unity does not do it for you, your that’s where you’re putting in your your thinking to get there just like with anything else, you’re writing software, for?

Jamie

Sure. So with that said, Then do you have any specific resources that you’d recommend if someone was going, Hey, I’m a dotnet. Dev, I want to make a 3d scene. Unity is the way I’m going to do it. How do I get started? Do you have any specific documentation or resources you recommend?

Evan

Yes, the the place that I spend the most of my time is literally on the Unity website. They have a good they have videos for free. And a lot of this is for free. They have free videos, free tutorials for getting started guides for when you’re having your first day in unity. And when you’re on your, you know, 2,000th day in unity, you know, they’ve got a full discussion forums that are very active, we’re engineers now and folks building unity games or asking each other questions on the non proprietary parts of unity, or that or the platforms that they’re working on. And you can get a lot of help with with basically anything on there. And I’ve I’ve asked questions on there, I’ve answered a lot of questions on there from folks. Yeah, and, you know, ultimately, those are probably some of the greatest resources you will have. as anybody could expect. YouTube is a fantastic place people do tutorial videos on unity all over YouTube, there’s, I mean, just Google for whatever you’re trying to learn on there, somebody did a video. The thing to keep in mind though, is that obviously unity is versioned it has breaking changes. And you know, you may find a video from five years ago that literally just is not the same in unity today. And you may just be kind of back from trying to figure it out from scratch. And that’s just the one thing to be aware of. But there is there’s a tremendous amount of documentation. And I believe they do offer paid services as well if you actually want to sit down with like, somebody who works at Unity and discuss your problem and they can give you guidance as well and I think it’s part of their paid paid tiers and stuff like that to get classroom time and other things like that. So, um, you know, I got to say that they’ve put in a lot of effort into building a community and building resources to answer almost any question I’ve come across, you know,

Jamie

okay, that’s pretty cool. I’ll get some links to some of those parts and put the pepper them into the into the show notes, I guess. Yeah, it’s probably the grid that one of the best ways to do it because if people are driving along, they don’t be the leaping across the dashboard to get a pen typesafe folks started safe.

Evan

Yeah, yeah, honestly, it’s with anything in our profession. Google it, like literally that usually the Unity resources that I’m referring to are going to be at the top of the list when you Google a problem in unity. And you know, that’s, that’s how I find solutions to anything. questions or problems I have and, and I encourage folks they learned by you to to contribute back to those communities, because a lot of what’s keeping everybody going is just folks talking to each other and sharing their insights and stuff like that.

Jamie

Sure. That sounds great. Yeah, so definitely No, don’t do that while you’re driving, folks. But you know, when you get to a Google listing less, less, we’ll see if we can get unity development 101 up to the top of the Google ranking for when this episode drops, right? Well, maybe we can do that. I don’t know.

Evan

It is so funny to have to get the question of data. It’s like, just googling, you know, you’ll be fine. Just just Google it, you know, it’s like, but, but honestly, it’s the truth. In this case that they’ve done, their resources are good in there. And it’s because they’re good. They’re at the top of the search results, because people are using it. It’s there.

Jamie

So let’s say I’m not fictional, dotnet developer, I’ve picked up unity, I’ve created something, it’s my magnum opus, and I’m ready to publish it to all of the different spaces, right? I know from our previous discussion, when you were on waffling Taylor’s, which is the other show that I do, that you’re sort of pivoting a little bit into that, helping people to publish titles to the different formats. So can you talk a little bit about that? Like, what do I just give you a call and say, Hey, Evan, I want to publish this on my PlayStation five. due out, I’ll give you my credit card number. Is that what I do?

Evan

Please don’t send me credit card numbers. I think it’s I think it’s more I want to do not send your financial information to me. But no, but But seriously, like if you if you are working on a unity project, or you’re maybe you’re even getting started, and you you you have questions or you want some guidance, or you want some help, or you have a fully fleshed out product that you’re maybe you’ve released on Steam, you’re like, hey, this would be awesome on PS five or Nintendo Switch or something that you know, go to my website, dead, drop publishing calm, there’s a form on there where you can give me a quick rundown of what you’re working on, and what kind of what your needs are in the services that I offer there. And basically, I’m prepared to help out with everything along the entire development pipeline, everything from planning your project, planning your costs, I have a very deep personal professional history, and product management and project management as part of my career as a software engineer. And I’m able to help you plan out your projects, plans, your timelines, plans or costs. When it comes to building important work for your game, reach it, yeah, you can hit me up for that kind of stuff. And we can discuss, you know, what’s going to need to go into porting your game to like PlayStation or Xbox or console platform or PC or something like that, we can talk and talk about being your publisher, as well for digital storefronts, and handle a lot of the process of working with working with those companies reaching out and basically acting as your publisher to get to get them onto those platforms, and all the way up through going through search going through release and posts, post release product management, those are all things that that I’m extremely experienced in I’ve shipped six games on virtually every console platform that’s out right now in steam. And I’ve done it all I’ve seen it all I’ve run into every problem you can possibly run into. And I’m you know able to help you out with working with getting to know these companies working with them, publishing your products and, and getting everything across the finish line for you. So you know, go to desktop publishing comm there’s a forum on there, you can read, read about my games, you can read about the services, send me your information, don’t just send me financial information, that’s not going to that’s not going to help anybody. And basically, we’ll just we’ll, we’ll take it from there and, and talk about it and make a plan. You know, and that’s that’s as simple as it is.

Jamie

I like that because there’s there’s a lot more involved. I see a lot of, especially the war two person, indie developer teams with like, we’ve released it on ps4, and nobody bought it. And I’m like, well, there’s a little bit more involved than just push the release button, you know, he kind of have to do the marketing do.

Evan

Yes. And it’s everything. It’s not like, you know, and the thing to be clear about is porting your game and I actually have this, I think on the front page of the website is porting your game is not just about writing code. It’s about the business relationships. It’s about setting up your marketing, planning for your release, staging your release, getting folks to notice it and work on it. On endless nightmares. My latest title was the biggest success for me in a series I did a worldwide simultaneous launch on virtually every platform I could possibly release on. We did a lot of marketing. We did marketing through the platform holders directly on place that you can see the trailer and PlayStations YouTube, I’ve written PlayStation blog posts, tonnes of them, I’ve written Xbox wire post, I need Xbox to play through the game. I had marketing done through general gaming press and things like that. That’s the kind of stuff you have to do to really get the word out there and to find the financial success you’re looking at, because the worst thing to do is to invest a tonne of money, release your game, nobody buys it and then you’re in nobody knows about nobody buys it and you’re just sitting there like Well okay, I’m out of business now. It’s that whole pipeline and that’s kind of where I want to keep moving towards with people is helping them to understand what that whole pipeline looks like and helping to get their products out there and something that I you know, like a it’s not an understatement to say that I’ve invested years over six years now of my life into learning these processes for all these different platforms, learning the ins and outs, building the relationships, understanding all the pitfalls and stuff like that. For somebody starting out today who was only published on Steam and wants to publish on a console, that could literally be a year or two of work for you to get up and going. I put that down two months for you in and a few months not many months. And I mean, it’s it’s that that that it’s an order orders of magnitude of saving your time saving your money, saving everything else and actually getting it out there.

Jamie

Awesome. So would you mind then in our final few minutes together, because I know we’re both busy people you need to brush off and do some stuff. Yeah. Would you mind giving the folks who are listening or ways to get in contact with you and another really quick sort of brief overview of the outbreak series that you’ve you’ve produced?

Evan

Sure. So So again, for anybody hitting at the end here, my name is Ivan Wolbachia, I’m very easy to find on the internet you can hit me up at dead drop publishing calm or dead drop studios calm. My Twitter is at dead drop studios or at F Robach, which is EV w o l, B as in boy a ch. And if you go to any of those places, my contact information the services we offer, the games that my studio produces, and is developing and news on everything that’s happening you can find it all readily up there links to all the store pages on there, and very cool in the last couple of months we started publishing physical versions of the games of limited run games and no they’re they’re awesome folks. I’ve been you know, spending a lot of time working with limited run. And that whole team over there is absolutely phenomenal the stuff that they’re doing for indie devs is incredible. And we had our first release of the opera collection on ps4 as a physical ps4 disc for the first five games in the series back in July I think the orders ended in August and you’re going to see it probably popping up at stores and stuff probably towards the end of this calendar year if not early next year I don’t think there’s a date for that yet but it’s but it’s really cool it’s it’s we’re even getting the baby games are becoming physical, which is which is exciting, and it’s been wonderful to see the success there. The operate series is a series of survival horror titles that I’ve developed. They are designed to both look and play very similar to survival horror from the either late 90s, early 2000s on their six games in the series right now, everything from overhead 2d to fixed camera 3d to over the shoulder 3d. And with endless nightmares. Now you can choose between fixed camera over the shoulder or even a first person shooter view, play the entire game in that the series is designed to kind of look like a PS two ps3 game brought into the modern age give you all that all that tense inventory management give you all that crushing difficulty fighting off the undead, a lot of the games often offer Co Op play that you can bring your friends along. And there’s everything everything from roguelikes to narrative adventures, to shooters to everything that you’ve that you can think of in a survival horror genre. And the series has just been picking up steam non stop for the last couple of years and 2022 is going to be the biggest year for the series to date. In so many ways. There’s so much stuff I want to talk about but I just can’t right now but you’re going to be hearing a lot about outbreak starting in early 2022 and through that entire year I have just some really incredible stuff planned and scheduled and you know where the where the series is going and then the thing that’s cool is I’ve been working on this series i’d six seven years now it’s since when I really started on it and it’s finally starting to become what I envisioned in my head whereas iteratively the production values increased the quality is increased the gameplays become deeper the that we have mocap the animations and the when you see the updates friendless nightmares that I’ve already shared publicly it’s going to get some major content updates in the next couple of months and we’re you see where the series is going next and next game it’s going to be really just a lot of kind of what I always envisioned back then when I started finally becoming real and finally getting that narrative and and I don’t want to spoil anything but it’s it’s if you look at kind of like endless nightmares you’re gonna say hey, you know there’s there’s still a couple things missing from this, that it seemed pretty obvious if I were to go back and play an old Resident Evil game, and that stuff’s finally coming into place and it’s I it’s just so exciting. So I know that that’s kind of a lot of information at once but go go by the outbreak series are available on every platform you could possibly buy dead drop studios comm dead drop publishing. com hit me up on Twitter to drop Studios on Twitter. Yeah, it’s just it’s it’s never been a cooler time to be an indie Dev and I, I feel incredibly fortunate to be in a position where I’m able to do this as a full time career. It’s It’s really incredible. Awesome. And I’m sorry, to cut you off, I want to make sure I want to thank it, Xbox, Microsoft, PlayStation, limited run Nintendo, Val, everybody, because those companies, and those folks, especially the folks that limited run, Doug, and Josh, and their entire team, my success is because of the opportunities that these companies gave me in the faith that they put in my work, and everything else. And I would not be doing what I’m doing today without their support. And I just want to say across the board, these companies are phenomenal. And if you are an independent game developer, reach out to these folks. They’re there. They’re wonderful to work with. They’re there. They’re working on exciting stuff. And you know, it’s never been more approachable work in our ecosystems, and they’re just they’re off. Everyone’s Awesome.

Jamie

Awesome. Well, I like to say Evan is thank you ever so much for being on the show. We’ll put all of the links into the show notes. And one parting shot is that Squidge my co-host for Waffling Taylors absolutely loves playing outbreak: endless nightmares, so he’s had a lot of fun.

Evan

Oh, thank thanks. I’m so happy to hear that. And I and I feel I gotta say if he likes that, that he’s gonna I think he’s gonna really like where things are going.

Jamie

Cool. I’ll tell him to keep an eye on it.

Evan

Yep. Thank you. Thank you. Thank you so much for having me on this. This was awesome.

Jamie

No worries. No worries. Thank you so much.

Evan

All right. Thank you.

The above is a machine transcription, as such there may be subtle errors. If you would like to help to fix this transcription, please see this GitHub repository

Wrapping Up

That was my interview with Evan Wolbach about Unity, how easy it is to get started with it, and some of the many different types of applications that can be built with it. Be sure to check out the show notes for a bunch of links to some of the stuff that we covered, and full transcription of the interview. The show notes, as always, can be found at dotnetcore.show, and there will be a link directly to them in your podcatcher.

And don’t forget to spread the word, leave a rating or review on your podcatcher of choice - head over to dotnetcore.show/subscribe for ways to do that - reach out via out contact page, and to come back next time for more .NET goodness.

I will see you again real soon. See you later folks.

Follow the show

You can find the show on any of these places