Unity – Behind the Game: Recompile Transcript

June 2, 2020

♪ [MUSIC] ♪  

[NARRATOR] This is "Unity – Behind the Game," where we talk to the talent creating some of your favorite games made with Unity. 

[MIKE] Hello everyone, I'm Mike Geig, and welcome to "Unity – Behind the Game." Today we are joined by Phi Dinh from PhiGames.  Howdy, Phi. 

[PHI] How's it going, Mike? 

[MIKE] It's going great.  How about yourself? 

[PHI] Yeah, pretty good, apart from the quarantine here in the UK, but I'm holding up, I'm holding up. 

[MIKE] Awesome.  Yeah, in exciting news, this is the very first of these podcasts, and you are the very first person we're going to have on it.  So that's pretty cool. 

[PHI] Nice one, looking forward to it. 

[MIKE] Yeah.  So, this podcast here is really about understanding...  the games that are being made and the studios behind them.  So why don't you kick us off here in our first episode.  Tell us a little bit about PhiGames. 

[PHI] Okay.  My name is Phi Dinh, and I started my company PhiGames five or six years ago.  Before that I was kind of working in gambling and design agency work as a programmer for general stuff.  But I really wanted to make games.  So I actually quit my job and did a Kickstarter for my first game project.  It was a dungeon crawler roguelike thing called "TinyKeep," and that was a successful campaign.  So we kind of just started from there and I moved to Manchester  in the UK after that, and I've been making games since. 

[MIKE] Right on.  How many folks are in your studio? 

[PHI] So currently there is I think a total of ten people who are working on the current project at the minute, but in the core team, I think we've got about five people right now. 

[MIKE] Okay.  So you mentioned this current project which is what we're here to talk about.  We're here to talk about "Recompile."  Can you tell us a little bit about the story behind that game, not necessarily the story of the game, the story of the creation of that game? 

[PHI] Well, I guess growing up as a child I was really into computers and sci-fi, and nerdy stuff.  I think I also had a desire to know what was inside the computer and how can I find this is about virtual worlds and stuff and watching films like "Tron" and a kid's TV series called "ReBoot" and stuff like that, reading books by Iain Banks about AI and stuff.  I really wanted to make a game  based around those themes, so that's where the seed started for "Recompile." 

[MIKE] Yeah.  We had talked before this, and you actually told me a very interesting story behind the creation of the main character. 

[PHI] Yeah, so we knew we wanted to make a game that was based on a player who is actually a computer virus.  And this player would be inhabiting this virtual world but we didn't know what the player would look like and we had a few ideas, both big fans of "Zelda," looking at character designs and stuff but my friend at the time who I worked with on the first prototype, James, he is a V-effects and animator but we didn't have a character artist.  So I was like, okay, do we hire a character artist or should we make a character ourselves? And we kind of decided why not just make something that was playing to our strength, so V-effects and animation.  So why not just animate a lot of particles and see what it looks like?  So we spent a couple of days working on a skeletal animated rig just animating a lot of V-effect particles from Unity.  We took a little video of that, converted it into a GIF and put it on Twitter.  Within 24 hours we had 12,000 likes and at least 1,000 retweets.  And it was crazy, it just went completely viral.  It wasn't even a planned thing.  It was the first time we'd even shown anything. 

[MIKE] Was that a planned pun when you just called the virus from your game or said it went viral? 

[PHI] There we go. 


[MIKE] Maybe not, okay, fair enough. 

[PHI] I don't think that's a good word right now but ... 

[MIKE] True, true.  So you created this character, you had this idea for this world and then the rest just evolved naturally from there. 

[PHI] Yeah, the character was the main thing, I guess.  We wanted something that was kind of gender-ambiguous, like it wasn't even important what that was.  It was just a computer virus  but it was one in humanoid form.  We wanted the character definitely to be humanoid, so it's at least relatable.  And, yeah, we just posted that on Twitter and within 24 hours we had people  from games publishers and press, all wanting to find out more about the game so after that I was, "Okay, I guess we're making Recompile for real," and then it just continued from there. 

[MIKE] Social media success story. 

[PHI] Yeah, I don't think we'd be here without Twitter. 

[MIKE] Oh yeah.  So you're this virus, right? You guess it's a virus, it has one purpose or one goal.  But what's the story within the game? What are you trying to do? 

[PHI] You're injected into this kind of mysterious computer system.  And you don't really know why you're there, or who you are or what's your task.  All you know is that you've been installed in this mysterious world, we don't know what this computer system, what the purpose of it is.  And eventually, as you kind of explore and you're kind of having to survive against these antiviral machines and other programs that are out to get you, you eventually discover that you are actually the catalyst to create the first sentient AI in a game.  So if you imagine a "Terminator Skynet" situation, are you creating that kind of AI or are you creating something which is more akin to what Iain Banks has been writing about, where humans and AI have a symbiotic relationship.  So we want to explore all these different facets of what could a sentient AI turn into and how it would interact with humanity. 

[MIKE] Will the game have alternate endings or there is a fixed narrative in your mind that you want to really pursue? 

[PHI] I guess I should mention that the game itself is a 3D "Metroidvania", or at least it's a Metroidvania-inspired kind of adventure game.  But we wanted to make a Metroidvania that is also a half-opened world and also has more than one critical path because I know that most Metroidvanias, they would be a linear progression.  You have to collect ability A to access the next bit and ability B and it's always in the same order.  We wanted to create something with multiple paths, multiple routes, depending on your play style and with that the play style that you employ when you're progressing through the game determines the ending and it determines the kind of AI that you create.  So for example, if you're super aggressive and you go around shooting and killing everything, you can kind of imagine what kind of AI you'd create as opposed to if you're more hacking-oriented or stealthy. 

[MIKE] Interesting.  I noticed that in the demo that I played that you could collect the items  almost in whatever order you want.  And so that, no, that's really cool. I think branching narrative and stuff is really, really cool. 

[PHI] Yeah, we're planning like five different endings, and I think each ending is kind of analogous to the types of AI you can create and the types of future that humanity may have soon or whenever this kind of technological singularity might incur. 

[MIKE] Nice.  You've named a couple of really prominent terms.  We see it's like a Metroidvania style game, and you mentioned inspirations from things like "Tron" and "ReBoot," all these very stylized things.  So if you were to define who the perfect gamer who would just love this game, like what would you describe, like who this game really is going to appeal to? 

[PHI] I guess, if you're a Metroidvania fan, you would like "Recompile" because it is very like we do the whole double jump and traversal and kind of combat stuff, but we're also trying to cater to people who want to try and break games in general.  For example like speed runners they might try to find exploits with certain mechanics or people.  Have you seen those videos of "Breath of the Wild" where they're using these mechanics in different ways that even the developers might not have thought of.  So those are the kind of players that we want to try maybe an experiment with the mechanics in "Recompile."  Because in "Recompile" you can hack anything, so the environment can be hacked, the enemies can be hacked and its Metroidvania ability in itself allows to player to progress, but it's very free form, in a way, so we've seen people take some really weird solutions at events where they've completed the level completely in a crazy, insane way that I wouldn't even foresee, so I would love to see more stuff like that. 

[MIKE] A kind of emergent gameplay? 

[PHI] Yeah, exactly. 

[MIKE] Oh, very cool.  You mentioned hacking a few times.  Unless I missed it, I don't think hacking was in the demo I played.  What's entailed in that, like what does that do? 

[PHI] So you may have seen there was kind of a hacking thing in the older demo from last year you might have played before, but essentially, you can as you're exploring, as you're fighting enemies and stuff, anytime you can pause the game, and that freezes time, and then from there you can inspect any object in this kind of frozen state, and you can manipulate objects.  You can pick them up, you can pick enemies up, you can pick yourself up in some cases.  You can hack these things called logic gates that we have in the game, which is like the circuitry that powers everything in the level, and basically change the environment and how the game's behavior actually works.  You can also hack enemies as well.  So you can bring them onto your side and create a group of followers, that kind of thing.  So there's a lot of different mechanics we're using here. 

[MIKE] So that's actually interesting.  I played that version just like two days ago, and I completely somehow missed the hacking part.  I was just running around and shooting stuff, and I'm going to have to go back replay it because somehow that sounds awesome, by the way, and somehow, I don't know, I missed an entire part of this game here.  So cool, we'll chalk that up to replayability because that sounds pretty neat. 

[PHI] Yeah, that's exactly what we were aiming for was if you play a certain way, and that's fine if you're a combat-oriented player, but if you want to go back and create a different type of AI, you can do more hacking stuff, so that's absolutely fine, and maybe that's like a part of the fun. 

[MIKE] Oh, that's very cool.  So okay, let's switch up a little bit here.  Obviously you used Unity to make this game.  And I'm just curious about what elements led to that decision, what's the reasoning there? 

[PHI] I think I've been using Unity for maybe over five years.  And when I mentioned the first game I created was a Kickstarter project for a dungeon crawler.  That was actually a Flash game, and it was one of the first 3D Flash engines I've ever used.  But as soon as we got the Kickstarter, we decided to have a look at Unity and see if it was beneficial using that and at the time it was like great, there was physics, there were shadows, real-time lighting, the stuff that people take for granted now but at the time it was like amazing.  So I started using Unity then, and I've never looked back since.  And I think the reason I've stayed with Unity is... I mean, coming from my computer science background, I was very much into programming languages like Java, like the higher level safer languages with automatic memory management so I wouldn't have to manage my memory manually and I wasn't really good at C++ at all, so having an engine that was really similar to Java, so C# and Java are very similar, in terms of syntax, it was like a perfect fit for me. 

[MIKE] Oh awesome, so I have in my notes here actually, if you can confirm this for me, that you are actually using a much older version of Unity to build your game originally and you decided to update it to 2019 recently.  Is that accurate? 

[PHI] Yeah, I guess when we first prototyped the project, it was in 2014.  We just finished "TinyKeep," which was the previous game, and that was Unity 4, and then we did the prototype for "Recompile." At the time the game was called "Fort Mainframe." That was Unity 5.  And I think since then we've gone through maybe four or five different iterations of the project where we started again, learned from our mistakes and tried to make the game again.  But since I think from all of those versions has always been in Unity 5, and then recently, this year, we decided to make the switch to 2018 and then 2019 within a space of two months. 

[MIKE] Hmm, what was the reasoning behind that? 

[PHI] Well, we basically we saw some of the really cool stuff that was coming out this year, especially all the next gen consoles and stuff.  We have the new RTX graphic cards.  We have ray tracing support, and I really, really wanted to experiment with that.  Unfortunately the old Unity versions don't... They had the legacy Graphics Pipeline, so I couldn't really play around with it.  So I thought maybe if I tried playing around with HDRP, DirectX 12 maybe have a look at ray tracing, and when I did, it absolutely blew my mind.  I was like, okay we've got to make "Recompile" in this new engine so then that became the situation for the project. 

[MIKE] You mean we haven't back-ported ray tracing in Unity 5? 

[PHI] I don't know. 


[MIKE] That was a joke. 

[PHI] I mean HDRP is like completely new, right? 

[MIKE] So the graphics of "Recompile," they're very stylized, you're in this computer mainframe world.  When people think HDRP, they're generally thinking like realistic graphics and stuff like that.  So the driving idea to go HDRP, for these stylized graphics is actually a pretty interesting one. 

[PHI] It's all about lighting.  If you imagine you're actually in the virtual world, like for real, like you're actually there and you can see these stylized abstract shapes that are your enemies and your environment is very low poly, but that doesn't mean that the lighting can't be realistic.  Like if you're actually there in real life in this virtual world, sure the shapes and the meshes,  and models can be simplistic but the lighting has to be spot on as to feel like you're actually there, so we wanted to try and combine indie art styles in terms of like the mesh complexity with super realistic kind of AAA-style lighting and rendering, and that's the kind of thing that we want to push with "Recompile" today. 

[MIKE] That's awesome.  Are you using any of the Volumetrics and stuff? 

[PHI] Yeah, so we're using all the Volumetrics stuff, like Volumetric Fog lights.  We've got subsurface scattering Materials.  We're using all those new shadow rendering techs as well, like everything, we're trying to just cram in as much as we can.  And sometimes it looks crazy because of the amount of lights and shiny surfaces we have in game.  It just completely looks out of this world because obviously the art style that we've gone for doesn't like anything in real life, but the lighting does so that's kind of a weird contrast, and I think it looks good. 

[MIKE] That's very cool.  Yeah, you are absolutely right.  There's lights everywhere but if it's inside a computer... I guess you wouldn't think it'd be full light, but yeah new stylized.  So, it's got to feel a little bit like coming back to this game with a whole new tool box  and stuff like that. Has the style or vision evolved or changed now that you have all these newer capabilities? 

[PHI] Yeah, we wanted to, when we first started, it was to create more toon shading, or like cel shading kind of graphics before we compile, like the player is basically a big ball of light and when we put the two together, It kind of looked cool but it was missing that punch.  And the fact that the player is basically a glowing entity as soon as we enable the screen-space reflections, for example, and Volumetrics, that was when it made a lot more sense with the player basically lighting up the environment as he moves around.  So I think the evolution is definitely something that we're really happy about. 

[MIKE] Awesome. I know with HDRP that you use a lot more asset maps like traditionally you have your normal maps, but there's a lot of other things.  You had mentioned subsurface scattering, and I know there's a lot of detail you can apply there.  Has the process of actually  generating your art assets changed now that you start using HDRP? 

[PHI] Not so much as you'd think.  I guess with other games, if you start using some HDRP, you may already have highly detailed assets, 8K textures, that kind of thing.  But because "Recompile" is a very abstract indie game, we don't use any textures in the game at all.  There are no textures, it's just solid mesh.  We don't in general have any normal maps in a game.  We don't have anything other than just a mesh and a shader.  So in terms of the asset pipeline and the workflow between artists and engine, nothing's changed since we moved over to HDRP.  It just means again, render's better, as it has nicer lighting, but we can use the assets as is, and it creates a really cool contrast between abstract and realistic, I guess. 

[MIKE] Yeah.  I guess it's probably worth mentioning if anyone was listening and they were like, "What is HDRP?"  So we're talking about the High Definition Render Pipeline, which is part of the Scriptable Rendering Pipeline, so just a term drop for you. 

[PHI] I talk about HDRP quite a lot on Twitter, and it's something I'm quite passionate about.  I think a lot of people have mentioned over the past few months I guess HDRP is very much an experimental feature or very unstable but I kind of... I think if you're starting from scratch and you're making a game in HDRP and you're following all the right instructions, and I actually post  a lot of tutorials about this with Shader Graph and HDRP starter projects in general. And I think it's the next step for Unity projects, really.  There are a lot of decisions there that are really clever, and I think the sooner that we can all move away from the legacy pipeline the better, in my opinion. 

[MIKE] Yeah, especially the lights and the volume... I will air one single grievance, and it's not even a real grievance.  The one thing that HDRP, the Bloom post-processing effect is actually very realistic in HDRP, which is not what I want.  I want the old Bloom, which was just like... you just crank it to eleven, and everything just blooms like insanity.  That was always my favorite, that's not even a bloom, that's more of a flare effect, but it was called Bloom back before.  So the HDRP Bloom is actually very realistic, which is for me like, no, I didn't want realism, I wanted the old Bloom, that was just all crazy and whatever.  And that's just me.  If anyone's seen any of my talks, I just like to turn Bloom to the point where the entire screen is white because I just think it's funny.  Not even a real grievance, it's just one of those like "Bring back the crazy Bloom." 

[PHI] I think that was the reason why we moved to HDRP actually because the old Bloom... because there're a number of lights in our game and the intensity for all of the colors, the old Bloom made everything too white and too overbloomed, I guess.  Yeah, it would flare out and you couldn't see anything.  So as soon as we moved to HDRP, actually we could turn up our Bloom to like 200 million, and it would be like fine, you could still see the detail and it looked great.  So, I guess it depends on what you want but... 

[MIKE] You win.  We'll take your side on this one because you have an actual reason for that.  For me I just like to make the joke, the more bloom you have, the more AAA you are.  But, you're right, the one we have now is actually a very realistic bloom, and it does look really good. 

[PHI] But I can say that there is custom post-processing that you can inject in so I think as HDRP becomes more mature, I guess people will be making a lot of Bloom plug-ins so maybe that will be a thing. 

[MIKE] There you go.  I'll bring back the crazy flare Bloom.  Nice. 

[PHI] Please do. 

[MIKE] So when we're talking about graphics, and I'll move on from graphics here shortly, but we're talking about graphics, and sometimes it can just be really hard to just get something to look like it is in your head.  And I'm curious what were some of the toughest parts of your game that just were so difficult to get right to match your vision? 

[PHI] I guess not having a vision helps. 

[LAUGHING] Like we actually didn't have a concept artist or a pre-defined art direction for the game.  The philosophy of how we design games is we'll keep prototyping and we keep iterating on shaders, on rendering and just fiddling about with post-processing stuff until we produce something that looks cool, and I think it's also an advantage that we don't actually need graphics to look realistic because it's all based in a computer virtual world, so anything goes so as long as it looks cool it doesn't really matter if it doesn't make sense.  So I think we were quite, quite lucky that we didn't have too many challenges in terms of getting the visuals right.  The challenges that we did come across were more to do with more technical stuff like performance and optimization, and stuff like that. 

[MIKE] So with optimization what are some of the techniques that you explored or invested in or whatever because I know a lot of times, people as they're prototyping or as they're building their game, it's all smooth sailing, but then they need to run it on a device and you need actually turn everything on, and it can be slower.  So how did you address some of those optimization issues? 

[PHI] I think a couple of years ago or even last year when we were first making the game, we hit a CPU bottleneck pretty quickly.  And a lot of it's due to the player rendering, where we're rendering each individual cube in a kind of voxelized fashion and also the UI for the game as well where every count on the screen is like a customized animation.  So we hit a CPU bottleneck pretty hard, and that forced me to 1) really dig deep into the profiler and 2) find some solutions to move that to GPU.  So then lastly I decided to learn all about compute shaders and start using the GPU to control a lot of our rendering and a lot of our parallel processing as well.  Obviously, now there's stuff like DOTS, which I've yet to explore, but that seems like another solution for that as well. 

[MIKE] Oh, cool.  Actually you mentioned this UI.  And someone who... when I started using computers, it was all command line.  And so the UI in this game is a really cool representation  of that old command line, with the characters, and all the special characters, and the spacing on them and stuff like that.  Can you talk a little bit about how you got that UI like that? 

[PHI] Yeah.  I think the UI is a weird story actually.  I developed that a couple of years ago just as my free time thing and I wanted to make a text based roguelike, like "Rogue" or "Cogmind," that kind of thing.  And so I created a custom UI engine in Unity.  We don't actually use the in-built Unity UI for "Recompile" at all, it was always a custom thing that I'd made, and basically the way it works, it's a ASCII engine-- well, it's not really ASCII.  It's actually CP437, but if you say ASCII engine I think people would understand.  Every character on the screen is its own individually coordinated cell so you can actually animate any character individually and fade it in and out and do some transitions and stuff.  And we applied some post-processing to that as well and also built some layer support on top of that, and what we ended up with was something that looked a lot like an '80s terminal console which is really, really difficult to create in Unity using just the text meshes or the Label component. 

[MIKE] Sure. 

[PHI] You run out of string space for one and there's memory issues, and if you wanted to change the color of one character in a whole massive string, it's really, really difficult to do that.  If you start using rich text then everything gets slowed down as well.  So we actually use a mesh to display the UI where each character is its own quad and then we just fiddle with the UVs and the vertex colors to get that to work.  But it's a completely... 

[MIKE] So the whole thing is one mesh? 

[PHI] Yeah, the whole thing is one mesh.  Each character is a quad in a mesh, so I think 110 x 44,  which is a good size for the UI and then every frame we just update the vertex colors and UV for each quad to display the character from the font texture sheet so that's pretty how much it works.  But it does allow us to update the entire screen full of characters and have a really, really good frame rate. 

[MIKE] I bet you could do some pretty cool effects with a UI system like that, right? 

[PHI] Yeah, the effects that we've got...  Actually the UI that we've created... I did all the current technical stuff, the coding of the framework but the UI design and the animations, and the transitions are all done by a band called 65daysofstatic.  I don't know if you heard of them, but they did the soundtrack for "No Man's Sky," and I think they discovered my UI system.  I think I posted it on Reddit as an open source tool, and I think they found that one day and decided to use it for their music videos, which is pretty crazy. 

[MIKE] Right. 

[PHI] And then they emailed me just before they were about to release a bunch of videos on Instagram, and they said like, "Phi," they've been using my text-based framework to drive all of their music videos and live shows as well.  And I was like, "Wow, that's crazy," and I saw that.  And the effects were amazing and I just said, "Why don't you make me UI for Recompile?" That's what they're doing now. 

[MIKE] Naturally.  So a band is making the UI for your game. 

[PHI] They're not actually making the music for my game, they're making UI. 

[LAUGHING] That's pretty wild, right? 


[PHI] I think it's the main front man, Paul Wolinski.  He's the guy behind all the technical stuff behind their music videos and it was him that reached out to me in the first place.  So it was a weird happy coincidence but it has ended up making "Recompile" look particularly unique on the UI side. 

[MIKE] Yeah, I especially liked that opening sequence where it's doing that whole installing, installing, decrypting.  It just... I've always been a big fan of those command-line hacker simulations where you're like, I'm into the system and you're typing these commands.  It's basically a text based game.  You feel like you're this early '90s hacker and stuff like that so during the bootup of that it was particularly fun to just try to watch all the words and what was actually happening and stuff like that. 

[PHI] Yeah, nice.  I remember my brief was just look as many boot screens as you can, watch all the "Alien" movies, watch all the hacking movies, and just make a two-minute sequence of all the cool stuff and then put our story and lore into it and then call it a day.  And what I got was really breathtaking so I was really pleased with that. 

[MIKE] Nice.  Okay, let's switch up.  Let's talk about some mechanics.  So I obviously missed a huge mechanic in the hacking, but we'll come back to that.  I did see the traditional double jump.  I saw the gun which was actually really, really cool.  The dash, and I'm sure there are plenty of things I haven't seen yet.  So what are some of your favorite mechanics that are in the game? 

[PHI] I think when we first started prototyping, for me one of the most important things was game feel, and I wanted the game to look like it felt good even if you couldn't even hear it like it had to be a noisy game in terms of visuals, if you know what I mean.  Even if there was no audio, it would still feel like it was a noisy game based on stuff like screen shakes and really punchy V-effects and really energetic abilities.  So we were focusing on those aspects and my favorite abilities in the game are the traversal stuff, like dashing, you can jump really high, you can do like infinite jumps and then you can crash down onto the ground, and there's like a huge shockwave and the ground shakes and rumbles, and wobbles, as you're doing that.  And when you run around, the environment builds around you and everything is all glitchy and crazy like we wanted just bring in as much energetic visuals as we could, and I think traversal really highlights that. 

[MIKE] Yeah, I wrote some notes as I was playing the game.  And one of the things that I really liked is just how, I guess, heavy you feel when you jump and then you land on the ground because you're right there's that shake and that sound and even though you're just this being of light, you just feel like you have mass.  It was a really cool effect. 

[PHI] Yeah, thanks.  I guess I like rumble as well on the U controller really helps with that.  But we just wanted to make a character feel like a superhero.  I think that was originally our goal.  We wanted to make the player feel really, really powerful.  And I think that's probably is going to continue onto our future games as well, like we wanted to make games where you take a particular mechanic, make it feel super powerful and just run with it. 

[MIKE] Nice.  How did you achieve the camera shakes and things like that? 

[PHI] With the old Unity 5 project we used just like a sine curve, and we added noise to it but actually with the latest version, when we switched over to 2019 HDRP, we started to experiment with all of the official Unity packages, so stuff like Cinemachine, the Unity input system the in-built Volumetric stuff, et cetera.  So Cinemachine machine actually has its own screen shake components to it.  I think it's called... I can't remember what the exact... 

[MIKE] Impulse.  

[PHI] Yeah, Impulse.  That was it.  It actually allow the artists to define their own Impulse curves based on various inputs whereas before I had to hardcode that into C#.  Now I can hand it over to James, and with his animation and V-effects background, he can just design screen shakes in an artist friendly way.  And that's been amazing, I don't have to bother doing much really, it's like can you make a screen shape for me, and he'll do it so that's, yeah... 

[MIKE] Nice.  And you said you using the new Input package? 

[PHI] Yeah, we did, we are.  We had some input issues with C Input which is the one we were using before. We looked into Rewired as well but it was super complicated.  So I think when we moved to 2019, it was a good chance for us to say, "Okay, how much of the game can we make without using any third-party assets, as much as possible, to see how far we get?"  So Input system was one thing, so I'm actually friends on Twitter with Will Goldstone and I believe he is the product manager of the Input system for Unity.  And he said, "Why not use it? And I was, "Okay." So now we're using it, and it seems to work great. 

[MIKE] That Will's a persuasive guy. 

[LAUGHING] "Why don't you use it? Okay." 

[PHI] I think a lot of the stuff we're using at Unity has probably been down to Will.  He's just forcing me to use all these new things. 

[MIKE] Nice.  Were there any other tools you found that once you transitioned from the older version to 2018, you were like, "Hey, we can just do it this way now." 

[PHI] Yeah.  They obviously the Volumetric stuff is now in built with HDRP so before we had to use I think a third-party volumetric solution for fog and lights.  That was great.  I could create a point rght now and just say, "Yeah let's tick the Volumetric box," and suddenly it all works, and there's no ray marching to worry about.  It's just all done for you and so that was awesome.  What else have we done?  Making shaders.  In 2019 I spent the entire year learning how to code shaders  and I got really, really good at it.  And then soon as we switched to the new Unity, I was like, "Oh you can make shaders using nodes in Shader Graph." I was like "Okay." and then something that would have taken me two days to make now it takes me 20 minutes, and I was like, "Okay." 

[MIKE] But you know what, it builds character.  You're a better person for knowing that. 

[PHI] To be fair creating shader graphs is easier, if you know how it works in... 

[MIKE] For sure.  Sometimes I like to open up Shader Graph and just connect nodes because I don't know what I'm doing there.  "What happens?  What does this look like? Actually that looks kind of cool.  We'll pretend like I meant to do that."  And that's my exploration system there.  So, I'm going to guess here.  My guess is that you probably wrote a shader or used Shader Graph but one of the effects that you we're talking about traversal in the environment, and adding this sort of noise and stuff like this.  One thing I really dug was environment sort of twitching and shaking and not just in the distance but as you get closer, everything like is just buzzing all around you, and it was a really neat effect. 

[PHI] I think we were inspired by a few things.  If you remember the old original "X Men" film, where I think Magneto was walking along a bridge and all this stuff just appeared to create this bridge out of thin air, and then also a game called "Bastion," where if you were walking around, tiles just appeared from far below your feet.  But we wanted to create something similar to that in terms of the mechanic but was on scene with the whole glitchy virtual world.  So I was like, "Why not just break up the meshes entirely and break apart the polygons, push them, extrude them away, make them flicker, cycle the colors, that kind of thing.  And as you explore the world, it would slowly collapse these meshes into the actual thing that they were supposed to be.  And that gave its own visual identity to the game which is I think why a lot of people recognize "Recompile" like one of the characters, a glowing orange thing until there is a lot of glitchy environment stuff as you explore, builds up as you discover the world.  And I think those two things are probably be partly the reason why a lot of people recognize the game. 

[MIKE] I'm curious just from a gameplay programmer standpoint.  Did you actually break up the Colliders for that geometry as well or is there just one pre-formed Collider that gets turned on.  How do you handle that sort of physics? 

[PHI] The Colliders for the world are always there, so if you actually turn off the effect it's as if we created the world as you would expect.  It's just the visuals that change.  So actually if you have an enemy in the distance, for instance, sitting on a platform that doesn't actually exist, it actually does exist in terms of physics, it's just you can't see it.  That solves a number of problems where you may have physics issues with things not existing-- we don't have those problems.  They're there, we just can't see them. 

[MIKE] Right.  You don't have these problems where moving Colliders and stuff like that and trying to keep the RigidBodies in sync and things like that. 

[PHI] No, all the Colliders are actually static.  It just feels dynamic because of the visuals. 

[MIKE] Smart.  See, you thought this through.  That's exactly how I would have done it. 

[PHI] Nice. 


[MIKE] So I actually I have a note here that says "Hey, someone mentioned time hacking and it wasn't in my version, why not?" And then I realized I've just missed it.  So I need to go back... I'm curious because I haven't seen the hacking.  You mentioned being able to hack all these different things and stuff like that.  How did you manage to create things that are...? All these variations of hacking, is there some large data structures that you use to say, "Okay, you're this thing, you're going to hack this way or whatever." What was the process there? 

[PHI] I think when we design our games, I think the number one thing that we have followed throughout the process is everything is a system or everything is systemic, so we don't, as much as we can, try not to use smoke and mirrors or drive the player in a certain direction and then fake everything else, we don't do that.  Everything has to work.  So the enemies, they have a targeting system, they target something and they pursue it and shoot it.  What they target doesn't really matter, as long as it's a thing.  If they're targeting the player, then, okay, the AI kicks in, and they start fighting you, but if you then decide to convert the enemy to your side, they end up targeting other enemies which, again, is just another entity.  So if you make your systems work in a way that is flexible and generic rather than say everything has to attack the player.  That makes hacking a lot easier because then you can just switch around variables and parameters and it would just work.  Another thing that we do with the level design is that nothing is hardcoded in the level like even something as simple as we push this button, and the door opens, even that's not hardcoded.  We actually have a circuitry system.  That's actually within the level design, and it's all driven by logic gates, so you know like logic gates are these components that are found in electronics.  So we used those exact electronic concepts AND, OR, NOT, XOR, that kind of thing.  We have them embedded into the level design itself.  So for example if you need to press two buttons to open the door, that's because there is an AND logic gate that's connecting two buttons together.  And the cool thing of that is that when we implement a hacking mechanic, we allow the player to look at logic gates and then swap them out for other gates.  And that's changing the behavior of the world.  For example if they don't want to find the key to open this door, instead they can just go into hack mode and modify some logic gates.  Or they can get an enemy to move somewhere else and then press a button for you, and then that activates something else  So there is a lot of of flexibility in the systems and so that's the main thing that we're trying to do. 

[MIKE] So if you had two switches and you need press both to open the door and you're feeling particularly lazy, you could be like I pressed this one.  So I'm going to change a logic gate from an AND into an OR and then the door opens. 

[PHI] There we go, exactly, that's the simplest puzzle I guess.  But it gets like... 

[MIKE] I'm glad I was the simplest. 


[PHI] But it can get complicated quick, because with logic gates there's a circuit that you can build with them called a latch, and what it allows is that when you activate the circuit, it stores the value within that circuit and then you can reset that value with another switch.  And what that gives you actually is memory, so from then you can use a bunch of latch circuits and combine them together and you've got a RAM and then you can create arithmetic logic units, you can create entire PCs, entire computers, a bit like the Minecraft Redstone stuff that people do.  So I think a potential for logic gates within level design is huge, and we haven't barely scratched the surface with that really. 

[MIKE] So you are suggesting that I can use logic gates and "Recompile" to maybe make the assembly language and start creating my own programming languages? 

[PHI] Well, that's... theoretically, you could.  We can't right now but maybe in future if we release a level design tool, and allow players to create their own levels, then that is definitely possible. 

[MIKE] Yeah, it's pretty awesome because you think, "Okay, you guys have made this game, here's a button, somewhere there's a get component, and you press and this door opens.  To know there's this whole rich underlying logical system is actually pretty intense. 

[PHI] Yeah, we can't do stuff like get component and open the door.  We absolutely can't do that because the whole point of the game is we want people to find exploits in the level design in order to bypass.  If you want to do a speed run, they could hack a couple of things and then bypass the whole game, we want players to break the game.  That is why the game is called "Recompile," we want people want to recompile it. 

[MIKE] Now it makes sense, okay. 

[BOTH LAUGHING]  Fantastic.  So there is a lot in this game, there's a lot you've talked about with the graphics, the lighting, these mechanics, this whole logical system.  If you had to pick one thing that maybe you are the most proud of in this game, what would you say it is? 

[PHI] That's a good question.  I guess... it's difficult because I'm proud of the game as a whole, but I guess if I think back to when I play the game and what I do most, and it's all about traversal, it's all about feeling like I'm a God, and I'm moving about and I can just fly around or dash and crash into things and feel really, really powerful.  I guess I'm just really proud of the combination between VFX, animation, physics and audio and basically that describes our core team, the three of us as a trio have just created this combination of magic that I really love in the game. 

[MIKE] Nice.  That was an excellent answer.  Fantastic. 

[PHI] For instance, hacking is like my thing as a programmer, I love the hacking but that's not really something that James or Richard are passionate about because they're into audio or animation.  I think something the three of us have worked on, and it's just the quality of coming from that, it's just really overwhelming. 

[MIKE] That's awesome.  So this game, the initial prototype was 2014? 

[PHI] Yeah, the first version was 2014. 

[MIKE] So this has been going on six years of development.  There have to be a lot of lessons learned.  What are some of the things you've learned or discovered all through the process of creation and then finally getting a launch and things like that? 

[PHI] That is okay to not finish a project.  I know a lot of people give advice and say, "You have to finish a project," and that's fair enough.  I understand the need to have something polished and it does teach you a good lesson.  However the fun, the reason I'm doing this, the reason I'm making games is I want to experiment with things and have fun whilst making it.  It's all part of the journey, not the ending for me.  So the fact it has taken me seven years, it's not a problem at all, it's like this is the fifth version of our game, actually the first version was a turn-based strategy game.  In the same theme, it's still Metroidvania progression but it was a turn-based strategy board game almost.  And then the second thing was an isometric platform, and then the third thing was a bouncing cube adventure game.  And now it's like this, so my advice is just do what makes you feel happy, do what makes you feel like you're learning something, and just enjoy the journey. 

[MIKE] Another great answer.  I like that.  I like the inspiration behind that because you're right, everyone says, "You got to finish," but at what cost, right? And if you have this thought and this vision, seeing it through and making sure it's done right 

[PHI] As long as you're having a good time, it's good. 

[MIKE] Yeah, if you're hating it...  We can see with this game it's worth the wait, it's worth that discovery and that process and stuff like that because I'm sure the bouncing cube would've been fantastic, right? But this game is really cool.  I say that growing up in a very similar situation with "Tron" and "ReBoot" and all these things and I'm playing it, like yeah, this is so cool, and the system's like "Freeze" and I'm like, "No," and I just start shooting at it.  I would create the worst AI.  My AI would be this war hungry, violent, like I'd create "Skynet" if I was this virus playing through this game, but maybe that's just me. 

[PHI] Nice. 

[MIKE] I have one way to play through games, and it's the most brutal, direct route that's how I do it. 

[MIKE] I have one last question for you here.  Out of curiosity, what's next for PhiGames? 

[PHI] I think I touched on this before, we want to make games where the player feels powerful.  So I think there's a couple of mechanics in "Recompile" that when we implemented them, they resonated quite a lot with us, and there is one in particular that we think this could be actually  a whole game in itself.  I'm not going to tell what it is, but it is one of the cool abilities in the game.  And it makes the player feel super powerful.  So I think from the next game we're going to do it's going to be based around this ability and exploring that ability as much as you can and trying develop a narrative and another universe around it and hopefully a visual extravaganza as well. 

[MIKE] So if I guessed and I guessed right, would you admit it? 

[PHI] Try me. 

[MIKE] I'm going to go with the double jump.

[PHI] Okay, great, thank you. 

[LAUGHING] It's not the right answer. 

[MIKE] No, I'm sure.  That's why I picked it.  I didn't want to accidentally force you to say the right one.  Fantastic. 

[MIKE] It's been great talking with you.  I feel like it has been a very successful first episode.  How about you? 

[PHI] Yeah.  I had a lot of fun.  I want to go to sleep now because it's like 11 PM now in the UK. 

[MIKE] Fair enough.  Again, thank you very much.  It's just been awesome.  For anyone just now tuning in, you're late.  This has been Phi Dinh in PhiGames.  We're talking about "Recompile." It has just been a real pleasure having you here. 

[PHI] Yeah, you too.  Thanks for inviting me to the first ever Unite podcast thing or whatever this is called.  I'm really, really honored to be part of it so...  Had a good time.  Thank you. 

[MIKE] It's "Unity –  Behind the Game." 

[PHI] "Unity – Behind the Game," there we go. 

[MIKE] There you go.  Thank you very much and everyone, thank you for listening, and hopefully, you get some sleep. 

[PHI] Cheers.  Bye. 

[MIKE] Cheers.  ♪


Previous Session
Unity – Behind the Game: Hardspace: Shipbreaker Transcript

In this podcast, Blackbird Interactive’s Trey Smith and Richard Harrison take us behind the scenes of their...

No More Sessions