Episode 079 – Unity Game Development w/ Jason Weimann
Jason is a game developer and writer who loves to teach others how to build their own games. He’s spent his career working on all types of games, but his real passion is in teaching others game development.
https://unity3d.college/ https://twitter.com/Unity3DCollege https://www.linkedin.com/in/jason-weimann-bab0984/ https://unity3d.college/2018/11/28/unit-testing-in-unity-testing-against-monobehaviors-using-mocks/
Jason Weimann: Hey, thanks for having me, guys. Really excited to be here.
John Callaway: Yeah, so before we get started into sort of the unity and whatnot, could you just tell us a little bit about yourself? Kind of how you got started in the industry.
Jason Weimann: Yeah. Sure, I’d love to. I think my story, I don’t know, it might be a little weird, might be normal. But I started off as just a little kid with a computer and no games. My first computer was a Commodore 64. I had three games that I got when I got the system and never had the money or anybody to buy me another one. So, it kind of drove me to the idea of “Hey, can I make my own games?” And I’d get these little magazines that had code that I could type in and make something happen, and it kind of got me started and got that spark going like, “Hey, I could create a game for myself.”
Jason Weimann: So, I kind of taught myself. I’d say I taught myself a little bit but it was mostly my uncles teaching me how to code by writing some Basic, writing a little bit of … I’d say games, but they weren’t really games. Pick a number or copying a choose your own adventure book into a big giant mess of Basic. But it was a lot of fun and it kind of got me motivated onto that and thinking, “Hey, I could do game development one day.” And that kind of fell away. You become a teenager and get distracted by a lot of other stuff, so that faded away for a while and it didn’t really do any … I still played a lot of games and worked on computers a lot, and did a little bit of stuff here, a little scripting for myself every now and then. But I didn’t really try to code again until quite a while later.
Jason Weimann: Well, I shouldn’t even say … The next step was I got an electronics degree. I thought, “You know what, I like computers. I like video cards that make good graphics. So, I’m gonna design video cards and make them even faster and make things better.” I went through that whole process and realized that it was kind of boring. I shouldn’t say it was boring. It wasn’t as immediately gratifying. You didn’t get that immediate gratification. Like I could draw out my circuits and figure out like, “Okay, this is gonna do this.” I never got to the point of being able to design a graphics chip or anything like that. But I could do my basic circuits and all of the stuff that I needed for that. But I never got that excitement that I got from writing some software. And partway through, I took some more software classes and that just kind of reinvigorated me and got me going on that again.
Jason Weimann: When I finished my electronics degree, I ended up getting a software job instead. So, got like an entry level software job writing test tools for Intel, just writing test tools for servers. Which was a blast. And I think it really kind of pushed me to know that software was what I wanted to do. Before that, I’d done some basic stuff. I had played around with C++ and I was pretty terrible at it. At that time, this was kind of when I discovered C#. So, I got started, ’cause this was like early 2000. This was Version 1.1 or something. I got started with that and realized that I suddenly understood what I was doing. Before I would write code and I kind of knew what was going on, but I didn’t really get everything about it. There were a lot of things that was kind of like, “If I hook up this magic piece to that magic piece, other magic happens.”
Jason Weimann: When I started learning C# and building out actual tools, that’s when I realized I knew how to make things and I could write some code and make this computer do stuff to this computer and break things here and get value for the company. It was just all around fun. And at the time, while I was doing that, I was kind of trying to create my own little game prototypes. They weren’t really games. They were just like … I was like, “I’ll make a little shooter.” And I was using Torque, which is like a really old game engine. I think it’s still around, actually. But I played with that and a couple other ones. Never really got anywhere, but I did suddenly stumble into a job doing game development.
Jason Weimann: So, I was at Intel. I don’t remember the exact day, but I went home, hopped on an old video game that I hadn’t played in maybe two years. It was EverQuest. So, I hopped in there just to say hi to old friends, see if anybody was still around in my guild chat. And I got a message from the guy who was the GM on my server at the time, or who had been when I was playing, at least. ‘Cause we were kind of friends, we’d talk back and forth. And he messaged me randomly, asked me if I wanted to come down and work on a game with him. So, that kind of is how I fell right into game development.
Jason Weimann: And I had tried to get in a couple times before, but not really had much success, not really known what I was doing, just kind of applying places. But yeah, when that happened, I just stumbled into it. And it started off very similar. So, it was actually a really good fit. I was writing some test tools for games. I was just doing the same kind of thing, just writing tools for them. But then I realized while I was doing that … Well, let’s take it back just a step. I got the job offer from him. Told my wife, “Hey, we’re moving to California. I hope that’s okay.” She was onboard, really supportive, which was awesome. I was terrified that she wouldn’t be, ’cause we had two little kids at the time.
Jason Weimann: We moved down. First I moved down, got the job. Started working on it, building out these tools. And I was like, “Okay, this is awesome. I can do this. This is pretty easy.” And I was even starting to kind of understand how the game code worked and the database stuff in just a couple of weeks. And then on week three, I got the notification that half the company was getting laid off. So, I got laid off along with about half of the other people. Pretty much everybody that wasn’t a programmer or on a list of designers or artists that were kept. I think they kept just about every programmer and half of everything else.
John Callaway: Oh, wow.
Jason Weimann: Yeah, it was a little freaky. I’m like, “Okay, I just moved down here. Planning on moving the whole family down and now I’m laid off.” But luckily, before I left that day, I talked to one of the guys who was in charge and he mentioned that, “Hey, we’d actually decided this list before you were hired, so we hired you after and you’ve been doing cool stuff, so we want to keep you on, but we’re gonna have to rehire you a little bit later.” Which was great. I think had I gone in there and just kind of screwed off and slacked around and played games or whatever, definitely my life would be totally different. I would’ve moved back and everything would’ve changed. But at the time, I was here by myself, really interested, really into it, and I was just working on the stuff nonstop. So, I was building … even when I went home it was like, this is like the only thing on my mind because everybody else was gone, sitting there in a room coding and trying to figure things out.
Jason Weimann: It really worked out great for me. I feel bad, ’cause it was terrible for everybody else that got laid off. But I ended up getting a severance package and then getting rehired three weeks later for double the pay almost. So, I was like, “Yeah, this is awesome.” It was a lot of luck and I think just taking advantage of … or being really excited about that opportunity and going full on at it right at the start. I think had I not done that, totally different life, right? And then from there, I’ve been just kind of going nonstop, working on MMOs and mobile games. I took a little break to go back into some corporate development after getting a little bit burned out with mobile stuff. It was like, “I want to try corporate stuff,” ’cause I really loved Intel and I thought, “Let’s see what it’s like at other places.” And I had a friend at Qualcomm and went there for a couple years.
Jason Weimann: It was cool, but I just had that constant urge to go back to game development. So, eventually I started just doing it again on the side and on my own, and eventually turned into what I’m doing now, full time game development and teaching people how to make games.
John Callaway: Cool. What are you doing? Could you expand a little bit more about that with what you’re doing with Unity and whatnot?
Jason Weimann: Sure. I think it was around two years ago, maybe two and a half years ago, I started up a site. Unity3d.college. I initially started it with some really long stupid name that I don’t even remember. And I told enough people and nobody knew what I said. I’d tell them the webpage and they’re like, “Wait, what was that?” Then I’d have to think about it. I started blogging on that crappy site that got pretty much no traffic. It got like 10 visitors a day. Eventually it turned into Unity3D.college just because I randomly saw an ad for .college domains and I was like, “Oh, that’s kind of neat. I wonder what’s available. This is actually perfect, ’cause it’s exactly the kind of thing that I want to do. I want to teach people how to make stuff with Unity.” So, the domain name kind of matches up with the kind of thing that I want to do, so grabbed it and switched over to that.
Jason Weimann: And then about a year, I think it was November of 2017, started doing some YouTube videos. At the time, I was terrified of talking on video or recording myself, or anything like that. I’d done public speaking and I was okay with that, ’cause I’d practiced and gotten used to talking to the people. But the idea of putting something out there in a video or audio format online was terrifying. I’d only done long written blog posts up until then.
John Callaway: Do you remember what the first video that you put out was?
Jason Weimann: Oh, goodness, no. I’m sure it was terrible, though. I’ve looked at some of the old edits, the old videos, and it’s just like me sitting in a really, really messy room. I think that was like the first time I decided I was gonna really clean up my office, too. I got like the first comments were, “That’s really messy, buddy. You should really clean all that up.” Perhaps I should. But yeah, I just kind of got into it. Started doing it and got a little bit more comfortable with it and I started seeing it grow.
Jason Weimann: I think with YouTube, the way I noticed it was slow trends and then slowly just started spiking up. And it’s still not huge right now, but it’s just kind of, that curve is very visible. I can see it in the growth and I think it’s a great way to just reach more people. And it also lets me get things across a little bit better. I used to write out everything, ’cause I could really go in there and edit my thoughts and get it perfect, show the exact code. But then I realized that people don’t really consume the written stuff like that very often. Instead, they would kind of skip around, find the chunks of code, try it out, read the little bit about that. If I watched what people actually did on the page, some would go through, but that was a small percent. Most were just kind of bouncing around.
Jason Weimann: So, when I was able to do it in the video format and kind of answer … I tried to pre answer the questions that are gonna come up and anticipate things that people might wonder about, and I’m able to kind of shove that all in there without bloating a giant article. I can say, “Here we’re gonna do this,” and explain what the little Elvis operator does while I’m doing it so that people who haven’t seen it can go, “Oh, okay. That’s just doing null checks,” or whatever. And I like it because I can shove a lot of that little info in there while covering a bigger subject or like a bigger tutorial on how to do a different type of thing.
Jason Weimann: And then it’s also of course just great for discovery because so many people are searching for stuff on YouTube and just getting recommended things that they might like on YouTube. It works out great.
John Callaway: I would say that, like many of us in the software industry, I started becoming interested in software development because I really wanted to write games. And I think early on when I was much, much younger, I bought one of those early kits in the box with the big, huge five inch thick book of C++ and a CD-ROM, and it was just so daunting. Then I put it away and never looked at it again. But with the rise of Unity and the popularity, I’ve started looking into that a little bit more and really becoming interested in that in the last few weeks, few months. And then started looking into writing my own little top down vertical scrolling space shooter. Would you recommend … or how would you recommend people that are interested in getting into game development and specifically Unity, where would you recommend that they might start?
Jason Weimann: I think it depends a little bit. If they’re already C# developers or .net developers, I think it’s a whole lot easier ’cause you don’t need to learn the code too much. But you still kind of need to get familiar with it. I guess what I normally recommend and would probably recommend to everybody is to start off by just picking a mobile game, pick a really simple mobile game that has a single mechanic, and one that’s really defined that you know is fun and you know exactly how it works, and then just recreating that, just mostly to get familiar with the editor and comfortable with the libraries and the code and how things work.
Jason Weimann: I find that a lot of people, what they’ll do is they’ll come in with this grand lofty plan of this game that they want to make, have no idea how to make a game, and then struggle. They’ll bang their head against the wall trying to figure out too many things. And while they’re trying to figure out how to make a thing move, they’re also trying to figure out how to make this game fun. So, they’re trying to do just a little bit too much at once. So, I like to go with just take an easy mobile game, recreate it from scratch. And if you get stuck, start watching videos on how people recreate it. And then I like people to do that a couple times.
Jason Weimann: Now, for an experienced C# developer or .net developer, you should be able to do that in like maybe a two day turnaround, three day turnaround of, “Here’s this very basic,” like you want to make Flappy Bird. It’s like one of the easiest possible things to make, ’cause you only have to deal with one input. Did they push jump or not? All the rest of it is simple. It’s a thing moving and did they push jump. I like to have them just get familiar with that, do that a couple of times, and then start kind of building up to bigger projects. If they haven’t programmed at all, I’d expect them to take like a week or two trying to figure things out, understanding how colliders work and how collisions work. Understanding the special callbacks. Kind of going into the .net developer, C# developer thing, one of the things that people tend to struggle with is that they dive in and they’re so used to just writing code and being in their code editor all the time that they start trying to write code for everything and they think that they need to solve all of their solutions with code, not realizing that a lot of what’s in the editor and the engine in the library is there to kind of simplify that.
Jason Weimann: I’d say build lots of little games first and then slowly start ramping up. Definitely don’t try to start on a big project. Obviously don’t start with an MMO. Typical advice, but it gets said because people do it all the time. They’re like, “Hey, we’re gonna create Warcraft, but better. I just need to learn how to make a game real quick and we’ll turn it into a multiplayer game.” But that’s a small number of people. Most people I think are pretty realistic and they have some goal for some kind of a game, a side scroller or some semi casual game, and it’s doable. These things aren’t unattainable. If you want to make your own cool side scroller shooter or your own first person shooter or something, you can do it. You can do it in your spare time with what’s available now. It’s just a matter of kind of digging in and getting the work done.
Jason Weimann: And obviously you’re not gonna compete with the giant AAA games, but I think that that’s a terrible idea, anyway. We don’t need another Call of Duty. There’s gonna be millions of them. Make something cool that’s a little bit unique and a little bit different and much smaller scale.
Clayton Hunt: Yeah. I’m one of those unreasonable people. I got a taste for game programming in … must’ve been the late ’80s. Q Basic for DOS came with two games. There was one where you were a monkey throwing bananas and there was another one where it was nibbles, so you just run around eating fruit. And I tweaked the values in that a little bit and then I immediately started trying to make Final Fantasy. But I think I do that with everything. I got bored once and started trying to write an operating system in assembly code. So, I have a little trouble doing the simple.
Clayton Hunt: But you do a lot of Unity programming, or at least for your training site you do a lot of Unity stuff. I have worked with Unity mostly, I think like 2011-2012 timeframe, and it wasn’t too bad to get into then, but there were some restrictions around ray tracing and texture optimization and some other stuff. And then also I had trouble unit testing it. The structure that they had made it kind of difficult. Is that still the way things are? Or how have things changed since then?
Jason Weimann: Pretty dramatically. I think 2011 or so, maybe 2012 is when I first got into Unity development. It was in the three point something days. It’s changed completely. The rendering pipeline’s been redone. They’re in the second rework of that, maybe the third one since then. Unit testing is now something that I do every day. So, one of the projects I work on is a big MMO in Unity and it’s … At least it’s not completely unit tested, but I’m pushing towards that path. So, a lot of the new code that’s going in is all unit tested and it’s easy now. It used to be very, very difficult. It’s much, much easier now. It’s not easy to test everything, like testing full interactions of game objects and stuff if your code is very tightly coupled. It would still be extremely hard. You have to really code, just like in any other situation, you have to write your code right for it to be testable. But usually that means that you’re writing your code in a pretty clean way so that it’s good, not just for testing but for use and not blowing up and breaking stuff.
Jason Weimann: But it’s totally doable now. I test on anything that’s a big project that’s gonna last for a long time and I expect to see changes, and it’s saved me a ton. Just in the last six months, it’s saved me many times, just having good unit tests in there. But it is also something that almost nobody does. So, if you look, if you go around to game development studios and try to find out who’s doing unit testing, it’s probably five to ten percent. I know I can think of one place that actually does some unit testing in their games that isn’t a place that I’m working with and the rest of them just don’t. I think that that’s probably just that … It’s partially just because unit testing hasn’t really picked up throughout game development. It was big in web stuff ’cause it fits perfectly in there. The frameworks are just kind of built so that unit testing is great for it, and then I started seeing it in business apps, too, I don’t know maybe 10, 12 years ago.
Jason Weimann: But game development, it’s really just been kind of a new … it’s almost like a new subject. People don’t know what it is. A lot of them just don’t use it or they think that it doesn’t apply to games, that games aren’t a type of thing that you can unit test. But one promising thing that I saw was at Unite, Unity’s conference that they have nine times a year or whatever, but the one that was recently here in LA, they mentioned on their new code, their new systems, they have a ton of unit tests in C# testing their code. So, they’re kind of buying into it and I think the fact that they’re buying into it and mentioning it, talking about it, is helping to kind of grow that for all the other developers getting interested in thinking, “Hey, we can test our games, too. And maybe it’ll help. Maybe it’ll save us time and make stuff better.”
Clayton Hunt: That’s really awesome. One of the issues that I had was with the … is it game object that you have to inherit from in order for Unity to use a class?
Jason Weimann: Oh yeah, the mono behavior. It’s a script-
Clayton Hunt: Okay, yeah.
Jason Weimann: Yeah, you have to have that as a … as the base class to be a component on a game object and those are not very easy to test.
Clayton Hunt: Right. And it actually prevented me from even trying to test back in the day. I haven’t tried it lately, although I did, like John, I’ve started trying to get back into Unity. At least my experience so far is it’s a lot easier than it used to be to create something simple. Are there any tricks for getting around mono behavior? Or can you actually test the class that inherits from mono behavior?
Jason Weimann: You can. You can test mono behaviors, but generally I don’t. Most of the time, you try to implement the humble object pattern or just have the mono behavior be kind of a wrapper into the game engine, and the code and the logic be in another class that that wrapper is just kind of pushing into. For instance, like in this MMO project, I try to make almost nothing a mono behavior. Very little is a mono behavior. Mono behaviors just store …a reserved for things that need to have a visual representation of a thing, like a game object in the game, but then most of the data and stuff is kind of separated away from that, so that it’s not in that … I think of it almost, not exactly and it doesn’t get used this way, but almost like a view, like the mono behavior and game object are almost like a view, if they’re done that way.
Jason Weimann: A lot of the time, they’re not, though. A lot of the time you end up with just this big, just like any other code, you end up with this one big monolithic class that moves the thing, reads input, writes stuff, plays audio and all kinds of other stuff. But if you separate it outright and you really kind of think it through, and especially if you start doing tests first, or at least kind of tests side by side, I think it gets a lot easier to recognize and separate that stuff out and make it a lot more testable.
Jason Weimann: But you can still do some mono behavior testing. It’s just slow and a pain in the ass to set up and not really fun, so I just avoid it.
Clayton Hunt: Okay. So, if you had something like say a pathing behavior like A star or something, you would write that in its own class and then inject that into the script that it inherited from mono behavior to use it or …
Jason Weimann: Yes. I’d either have that mono behavior … whatever’s managing the life cycle, I have it go into that mono behavior and then the mono behavior could call in to that pathing system if it needs to. In fact, I may not even have a mono behavior for the pathing system. There may just be other things that are related, like NPCs that have a mono behavior but then also have an NPC script that’s totally not a mono behavior and reading all the pathing stuff and figuring it out. ‘Cause then you can also run your code outside of Unity, which is nice.
John Callaway: Say I’ve written a couple of side scrollers now and spent maybe a month with Unity and now I’m ready to jump in and write Final Fantasy 42 for Steam and Xbox and PlayStation and whatever. Where is a good place to start for a larger game with any kind of story? Do you start with like story boarding and mapping? Or just start throwing code into an editor? Or just start dragging objects onto the scene? What’s a good way to start on a larger project or figure out the pieces of a larger project?
Jason Weimann: The first thing you want to do, before any of that, at least before most projects and what I like to do is go through and figure out where the fun is in the game and get that part down. If it’s a long story driven game and the entire fun is the story, then that might not work out well and it’s more just like a writing exercise. But in general, I like to go through and figure out what the core gameplay mechanics are gonna be and get those fun first before spending too much time, ’cause a lot of the time you’ll have an idea for like, “Oh, this game’s gonna be great. It’s gonna be kind of like that but with this,” and then you mix those two things together and realize, “Oh, this is terrible, this sucks. This didn’t come out how I was thinking. I didn’t think of whatever the edge cases are.”
Jason Weimann: So, I like to get that process done first, just go through, iterate with some blocks or just some placeholder random art from the Unity asset store, which is great as well. If you want to get cheap or free art, you just go download it, import it right into your projects. So, I’ll go through that process first. And then once that’s done, if the game is still gonna be good and fun, then I’ll start kind of building it out and planning it. I just generally use Trello and grab, make a card for each of the major systems, check boxes for all of the sub systems, just to kind of get it in my head so that I know what I’m doing. And then if it’s a bigger project, whatever, we’ll go through a more formal planning process. But I try to keep it relatively simple and quick so that I can iterate as fast as possible, figure out what’s fun as fast as possible, and then either ditch it and move on to the next thing or make adjustments until it’s fun, and then go from there.
Jason Weimann: Some times I fail at that, though, and I’ll just kind of get into it and I’m like, “Oh, this is really neat,” and sit there and polish for like a week or two and I’m like, “Oh, wow. This was a lot of fun,” then realize I spent a lot of time polishing this thing up that nobody actually wants to play. And that’s another thing I like to do, too, is have other people play the stuff, like not just myself ’cause it’s very, very easy to fool yourself into thinking that something’s fun. So, I’ll have the kids, ask my wife, anybody that I can get to just kind of go in, try this out like, “Hey, is this fun?” And I try to generally avoid listening to their feedback and just watch them, ’cause people just lie. Everybody tells you it’s fun and they like it. It’s very rare that you get honest feedback that, “Hey, this is not that great.” You may get a suggestion or two, but I really just watch and see did they stop playing, did they want to keep going, did you have to kick them off? If you had to kick them off, that’s a good sign. If they played once and were like, “Oh, that was awesome?” “Do you want to play again?” “Nah.” Then yeah, ditch it. Ditch it or fix it, something’s wrong.
John Callaway: Yeah, I’ve got a six year old downstairs that is just chomping at the bit ready to play a game that I write and he will not lie to me.
Jason Weimann: No, they’re brutally honest at that age, yeah. At that age it’s like, “Dad, this is terrible. Dad, why does it do that?” But then when you find something good and they like it, you know that it’s actually good. Works out good. And that’s actually, if you guys don’t mind me diving into it real quick, that was what got me started with virtual reality stuff. I didn’t mention this earlier, but a couple years ago I went to a VR conference and Gabe went up there or on video and announced that he was giving away free Vive headsets to everybody. Awesome. I’m gonna go home and do a video on it. I was like, “I’ll go write a tutorial.” Actually, this was before I was doing videos, so I was like, “I’ll make a tutorial. I’ll write one up and that’ll be really cool. Teach people how to make games.”
Jason Weimann: So, I made … I was making a baseball one. “Okay, I’ll just make a thing where you hit a baseball. That’ll be simple but it shows controller tracking,” ’cause it’s the Vive controllers. So, I was like swinging it around and hit a ball. I built that up just as a little demo thing and I had my wife kind of play it. I was like, “Hey, can you test this out? I want to tune it and stuff,” and she actually liked it. It was really, really weird ’cause my wife does not play video games in general, she hates games. I’ve never been able to convince her to really play anything and she just kept playing it. I was like, “This is awesome. I made this in 40 hours and you’re enjoying it. This is cool. Maybe I’ll turn this into a game.” It actually ended up kind of spurring a whole subset of my career where I spent many years just doing virtual reality development and really diving into that.
Jason Weimann: I released that game as, that little side hobby project that was just gonna be a tutorial ended up being a launch title for the Vive.
John Callaway: Oh, cool. Nice.
Jon Ash: How hard is it to make the VR games? Was this with Unity or was this with something else?
Jason Weimann: Yeah, it’s with Unity. It’s amazingly simple. It’s just like making another game, just you have slightly tighter restrictions, like the visuals. You have a lower poly count, because you have to render at 90 frames a second times two. But other than that, it’s pretty much the same. Your controllers work as game objects. There are some scripts that are already built in with the library, so you get events on trigger pulls and button clicks. You get the position of the object. It just moves around with you. There’s really nothing special that you have to do. There are a couple little tweaks that you’ll want to do here and there to make the game better, but there’s nothing that you have to really do to make it work other than check the VR enabled box and import whatever STK you want to use, the Oculus or the Steam one, or recently I’ve been using the VRTK, which is a virtual reality tool kit. It just wraps on top of the Oculus and all the other ones so that you can build once and have it deploy onto the Oculus store, the Vive store, or Google, and the mobile headsets and stuff. It’s pretty cool.
Jason Weimann: Like I said, it’s amazingly easy. You can literally start up a project, check that box, import the thing, and you’re walking around and moving your controllers.
John Callaway: What’s the licensing like in getting these apps and games into various game stores and app stores and on different consoles and platforms? ‘Cause I know a couple of weeks ago, there was a big, very public mudslinging fight between Unity and Improbable on some of the changes to the Unity terms of service and some of the things that Improbable may or may not have divulged or were working with Unity.
Jason Weimann: Yeah. Those are two slightly different things. The Improbable thing, I don’t know a whole lot about the details, but it seemed like Unity’s been lately pushing towards a lot of their own services, so they’ve got their own multiplayer service, their own analytics service. They’ve been buying up companies, acquiring ones that worked with Unity and building their own in house stuff. I don’t know exactly how it worked out with the spacial, but spacial has somewhat of a competitor to Unity’s new stuff and they had some dispute over their licensing stuff, but it sounded like recently they’ve kind of come to an agreement and they’ve made it a little bit more open so that the licensing terms are, I think things that everybody agrees with.
Jason Weimann: There was whole giant Reddit threads on arguing about the license terms for developers, which is really weird and interesting thing to look at. It’s like this whole discussion about what should licensing terms be, who does it right, why is this wrong, what are the actual implications of this. A lot of people that aren’t lawyers and probably a couple lawyers chiming in, just saying stuff. But then there was a whole Unreal … Tim Sweeney from Unreal came out and they made a big statement on it. I think that they’ve resolved that all, though. I’m hoping that they go with something more like the Unreal terms of service where they lock it in at the version. That was kind of one of the bigger things is everybody was afraid of them changing the terms of service, but Unreal does the thing where you lock it for the version, it doesn’t change. So, it doesn’t get more restrictive. So, hopefully they end up somewhere like that.
John Callaway: They did update their terms of service and were really public and open about it and it seems like it’s much more of an improvement and the terms of service will be versioned and available in GitHub and will … you can stay at the version, as I understand it.
Jason Weimann: Yeah. That’ll be nice. And I think that helps a lot. But it’s also kind of interesting ’cause it wasn’t something that anybody ever talked about before. I never heard anybody talk about it other than like the random CEO, “Oh, we’re gonna use that? What’s the license requirements? What fee do they take?” Which is one really nice thing about Unity is that they don’t take a cut. So, if you build your game with Unreal, they take like a five percent cut over $100,000 I think it is. Unity, they have a flat licensing fee. I think it’s $1500 a month for the pro version and much cheaper for the lesser version if you’re making less than like … I don’t know the exact numbers, but it’s in the hundreds of thousands before you have to actually start paying for that. But then they don’t take anything off the top.
Jason Weimann: Now, when you go to the stores, though, they all do. So, every one of the stores except for one takes 30%. So, you got to like Apple, 30%. Go to Google, 30%. Steam, 30%. The only one that I know of that doesn’t is Epic. Unreal, they released Fortnight, made billions and billions of dollars, decided to release their own store, and they’re taking a 12% cut instead of 30. And they’re waving the 5% for using Unreal if … for the purchases in their store. So, you’re getting to keep … it’s a pretty big cut ’cause normally if you were doing an Unreal game, you went on to Steam, that’s 35% of your money gone, 30 to Steam and 5%, and that’s before any of your costs. That’s just off the top.
Jason Weimann: The Unreal one, the Epic’s thing seems great. Hopefully more companies kind of fall in line with that. They’re all making so much money that they could definitely afford to do it, but I think there’s just not been any competition and everybody’s agreed, “Hey, Apple set the bar at 30%. We’ll just stick with that.” And that’s pretty much where it came from. Apple came out first, said, “Hey, we do 30%,” and then everybody was like, “Oh, well Apple does 30, so we just do 30.” Which is, when you think about it, it’s a pretty insane percentage to take for just distributing the app. It’s not like they’re advertising it or pushing your stuff to the top. Maybe if it’s featured, charge 30%. But 30 seems really high for you’re letting them download a thing.
John Callaway: Very cool. What kind of words of wisdom might you have for yourself, kind of looking back the way you got started and thinking about someone who is just getting started and maybe wants to get into game development, what would you say to them or say to yourself now with the experiences that you have?
Jason Weimann: There’s a lot I would say, a lot I would tell myself not to do and a lot I would tell myself to do differently. I think when I started off with Unity, I started off like I was mentioning earlier with that programmer mindset of, “I need to just code all this stuff. I’ll write the code and it’ll do the thing.” And I did a lot of things the hard way, just ’cause I didn’t know that there were easy ways to do things. And I feel like I had overcomplicated things a lot for myself, just trying to dive in. I also didn’t follow what I would normally advise, and my first Unity project was a year long game that was on like a quarter million dollar budget or half million dollar budget, whatever it came out to. Way over budget. And took way longer than planned, because I didn’t really do any of the things that I would recommend now like practicing, getting it down, figuring out that core gameplay loop, and building on that.
Jason Weimann: So, I would say practice a ton and try to learn from other developers. Also, do if you can, take advantage of any opportunities to do some pair programming or mob programming with experienced developers. I’ve been recently, one of my friends leads up a bunch of mob programming stuff, this guy Chris Lucien. And I really, really love it. In fact, I’m going down there again next month, just to go out there and hang out for the day and code with them when they code. Group stuff, four or five people, just on the same project swapping off the keyboard. But every time I go there, I learn something new. I pick up things, because I’m watching other people code and we’re all coding together. And they’re working on C# line of business apps. So, I’m not learning Unity specific things, but I’m finding out new ways and new workflows to stuff. Introduced me to Gerkin, which seems awesome. Still trying to figure out how to get that right in Unity.
Jason Weimann: Introduced me to a whole bunch of other just concepts and cool things. So, I like just working with other developers and kind of going around and seeing them. Also going to events and meeting other developers and just talking to them, trying to learn from them, like expanding out that network and just talking to other people. The worst thing you can do I think is just kind of sit in your office or in your cube, staring at the screen, only looking at stack overflow for answers. Like “I need to figure this out. I’m gonna sit here until the end of the week. I’ll keep Googling answers until I find it,” ’cause you’re just gonna struggle and you’re not gonna get better and faster. Just keep constantly learning from others. And have fun with it.
Jason Weimann: If you hate your job, quit and go get a game dev job. Hate that one, quit and get another one. Make sure that you love what you’re doing.
John Callaway: Awesome, awesome. You obviously produced the Unity3D.college content. What other resources, or do you have any other resources you might kind of point people to or towards if they’re trying to get into game development in general or Unity specifically?
Jason Weimann: Sure. Quick shameless plug of my own stuff. I’ve got my channel, the Unity3D.college YouTube channel, which actually is just Unity3D.video. There’s a bunch of these. Unity3D.group goes to the Facebook group. And Unity3D.courses actually goes to my online courses, and there’ll be some new ones coming out right around when Unity 2019 comes out, so probably March time frame, have some new courses to go from intro to advanced and cover a whole bunch of different subjects. Other than that, though, I really like some of the Unity tutorials. If you go just onto Unity3D.com/learn I think it is, they have a lot of tutorials there. They do have a tendency to have some pretty bad general coding practices, so it’s good for learning Unity stuff, but I try not to send new developers there because they have everything public all the time. They don’t follow very many of the conventions. They’re generally focused very much on getting that specific thing done and doing that the way … getting that one thing right but not doing it in a more clean code architecture kind of way.
Jason Weimann: But if you’re familiar with that stuff, those tutorials are great. And they’re also good for just going through stuff. [inaudible 00:40:48] on Unity is really good. He’s got some really good, entertaining Unity tutorials, so teach you how to make a game. And he’s just a fun, entertaining guy, so it makes it fun. And those are kind of my main ones. I also just look on YouTube and go through Unity channels constantly. I’m just constantly looking at those. I like those and all of the solid Bob Martin style videos. Anybody that’s talking about clean code in architecture or game development, I just kind of watch and binge on it nonstop.
John Callaway: Cool. All right. And then if people wanted to follow you or just communicate with you, what kind of plug would you give for yourself?
Jason Weimann: Oh, sign up for my email list. I send emails almost every day, just about Unity stuff. You go to Unity3D.college, it’ll pop up and ask you. It’s literally just me writing about the different stories and different things that I hear and the ways that those relate to code. A lot of the time it’s code related stories of, “Hey, this happened. This is why it was bad and this is how we fixed it,” and just kind of giving you those examples of … I try to give them fun, entertaining real world examples of how to make things better for your code and your organization, just in general. That’s where I would go. That’s my favorite place. And then just reply to the emails.
Jason Weimann: I read them all. I try to reply to all of them. Some times I get a lot. I did one about Git recently and I got dozens of replies and I’m still way backlogged on replying to those. But yeah, it’s a lot of fun and I think that they’re interesting stuff. And if you’ve got stuff to share, send it to me and I’d love to talk about it, too.
John Callaway: Awesome. All right. Thank you so much, Jason. This was a lot of fun.
Jason Weimann: Hey, thanks for having me.
“Tempting Time” by Animals As Leaders used with permissions – All Rights Reserved