GDC Talk, Portals, and World 002 WIP

The GDC talks from this year have finally been uploaded to the vault. Some of the talks you need a vault membership in order to access.

Fortunately, my talk, “Level Design in Impossible Geometry” is up on the vault for free.

level design with impossible geometry


It covers my approach to designing levels in Manifold Garden, and goes into detail of what impossible geometry is. I explain how to image world-wrapping in 3D, and the talk also has some general guidelines that I’ve found to be useful when working with really confusing geometry.


We finally have portals working in the game now! Well, technically, I had portals about 2 years ago, but the system has been completely overhauled. It ties together with level loading, so is an incredibly complex system. David has been working on it for the past several months. It’s still not complete yet, and there’s still a lot of problems, but it’s really awesome that a basic version is now in place.

This is a significant milestone because portals are the glue that hold the levels together. I’ve mentioned this before, but in the game, there are no loading screens (aside from the first one), and no level select menu. The entire world of the game is seamlessly connected. However, up until now, because portals were not in place, each area had to be tested separately. I could not test for puzzles that took place over multiple levels. I could test for intra-area puzzles, but not inter-area puzzles. Now, with basic portal functions, we can start testing the game as one continuous flow, which is very important.

To connect the portals, David made a great tool, the portal path maker:

portal path maker

Each node is a level, and inside the node is the portals that are contained in the level.

To connect two portals together, I simply need to click on one, and then click on another. The lines show the connections between the portals, which is very useful.

Portal design:

The first version of the portal looked like this:

Portal Going Through

It was similar to the way the portals are in Portal. Stepping through it took you from one world to another.

However, I didn’t really like the way this looked. Looking into the portal, if the other side was a room similar in size to the room you’re currently in, the perspective didn’t look to be that different.

Plus, there is the issue of the edge detection shader picking up the edges of the render texture:


Note that the other side of the portal has the shadow all screwed up. This is apparently a problem on Unity’s end when doing with the particular view matrix being used here. Supposedly it will be fixed in Unity 5.5, so going to wait to upgrade to that.

Here is the new portal design:

portal going through wormhole

The black zebra stripes were initially placed there to deal with the edge detection issue. The black material covers up the edges due to the render texture, and makes it feel seamless. The stripes also really stand out – the pattern is never seen anywhere else, and it’s a very striking effect when walking down the tunnel. Plus, the tunnel view really enhances the difference in perspective of the portal when looking through it, the sense that there is this other world and the geometry is bizarre.

Right now the tunnel is actually it’s own separate scene, but I think we can make it an area in the same scene (just far enough away that the player can see it), so that the portal into it is an intra-level portal, as opposed to an inter-level portal. It may give us more breathing room in terms of loading and unloading levels.

Loading Percentage

loading percentage

Another really cool feature that David added is that the levels are now enabled or disabled in piecemeal, instead of either being completely on or off.

In the above picture, you are in World_001. On the other side of the portal is World_031. You can see that both levels are loaded in 100%. Both levels are actually in same spot, but the colliders for World_031 don’t get switched on until you cross over, and it is on a different camera layer.

As you step near a portal, the level on the other side gets loaded in. Right now, the condition for loading in the level is when you’re 20 units away from a portal, but this can be tweaked according to each situation.

Wold_002 Work In Progress Pics

Here are some images of the level I’m currently working on:

ManifoldGarden_2016-04-09_14-26-35 ManifoldGarden_2016-04-09_14-28-03 ManifoldGarden_2016-04-09_14-29-03 ManifoldGarden_2016-04-09_14-31-16 ManifoldGarden_2016-04-09_18-37-05 ManifoldGarden_2016-04-09_18-37-21 ManifoldGarden_2016-04-09_18-38-26

GDC Post-Mortem


Finally back from GDC and fully recovered. I didn’t get the GDC flu that seemed to be quite popular this year, but I was incredibly exhausted the first few days back.

Lots to report on since the last update (about a month ago! I really need to get better at updating this devlog. Just been super busy).


This year’s GDC was very different for me. It’s my third time going. The previous years, I wasn’t showing the game or giving a talk, so GDC was more about meeting other developers and hanging out in Yerba Buena Park. This year, I was showing Manifold Garden at the Day of the Devs exhibit and also giving a talk as part of the level design workshop. It was a ton of work to prepare for both, and during the week of GDC, I had very little time to do anything else. However, both were incredibly positive experiences and I’m very grateful to have been given the opportunity to do both.

Day of the Devs

This year, Double Fine and iam8bit organized an exhibition of several games at GDC called Day of the Devs. It was a fantastic venue – right at the bottom of the escalators in Moscone North. It was a prime location for showing the game, as it was right by the registration area, and you basically passed by it on the way to the expo floor.

It was an absolutely fantastic group of games to be a part of:

  • Below by Capy Games
  • David OReilly Game 2 by David OReilly
  • Headlander from Double Fine Productions
  • Day of the Tentacle Remastered by Double Fine Productions
  • SUPERHYPERCUBE by Kokoromi
  • Return of the Obra Dinn by Lucas Pope
  • Dreams by Media Molecule
  • Bound from Plastic
  • Hob by Runic Games
  • ARENA GODS by Supertype
  • Manifold Garden by William Chyr
  • Severed by DrinkBox Studios
  • Line Wobbler by Robin Baumgarten
  • Rez Infinite by Monstars + Resonair

It was a real honor to be a part of this, and I’m so thankful to Double Fine and iam8bit for this opportunity.

manifoldgarden_dayofthedevs1 manifoldgarden_dayofthedevs2

It was my first time showing a game at GDC, and it was great to have a home base where you can chill. In the past, I pretty much just wandered around the convention center. This year, it was really nice to have a comfortable place to sit and chill, and invite people to come and hang out.

On Monday, Double Fine also organized an event at the Alamo Drafthouse Theater and San Francisco. They rented out the entire theater, and each of the devs showing their games got to go up on the stage to present for 20 minutes. It was incredible seeing all of the games on the big screen with the sound system.

Here’s a pic of Lucas Pope showing how the rendering works in Return of the Obra Dinn (it’s quite dark so you can’t actually see Lucas in the pic). The game looked fantastic on the big screen.


Level Design Workshop


This year, I was also invited to give a 30 minute talk as part of the level design workshop. It was actually quite a lot of work to prepare for this, but Joel Burgess, the organizer of the event, made the whole process very smooth. We had to have rough drafts of the talk in several months before GDC, and this meant that when GDC snuck up, I wasn’t caught unprepared and actually had a really strong presentation to work with. I also had a mentor, Liz England, who gave me feedback on the various versions which was very helpful.

One thing I did that I found very useful was to record myself giving the talk, and then sending it to people for feedback. This works much better than just sending someone slides, because they don’t know how you plan to use those images to deliver your talk, and it gives them much better sense of your pacing. Liz and Joel both gave me really good feedback based on my video recordings.

I also gave a practice talk at the local Chicago Unity meetup, and also did a dry run on my twitch stream (which seemed quite popular – had around 50 viewers that day, when normally I have 20).

Anyway, if you ever plan on giving a talk at GDC, definitely know that it will mean a lot of work to prepare. Start making your slides early (as in, around October), practice a lot, and record yourself giving the talk.

By the time I went on stage, I actually didn’t feel nervous at all, and the talk went very well. It was also great the the Day of the Devs exhibit was right outside the room where I gave the talk, so I was able to point people to check it out. This was useful as Manifold Garden wasn’t out yet, but it allowed people to experience the game.

Here are my slides for the talk:


GDC Summary 

All in all, GDC was very busy this year, but very positive. Showing Manifold Garden at Day of the Devs was an incredibly positive experience. A lot of people I talked to were familiar with the game and seemed excited about it. It was such a great feeling to tell people I’m working on “Manifold Garden”, and to see them get excited. And when people didn’t seem to know the name, I’d show them a picture, and they’d say something like “oh ya, I’ve totally seen this game before”.

The most common reception I got from people was that they had seen a lot of beautiful pics of the game on twitter, and had no idea what the game was about, but were still excited.

I know it’s important not to base feelings on what others are saying, and certainly the crowd at GDC is part of a small bubble of developers, but it was nevertheless a big confidence boost. Some of you might remember two years ago, when I showed the game at PSX in Las Vegas (this was back when it was still known as Relativity), nobody knew about the game and I was super bummed out by that experience. It was almost the complete opposite experience this time around, so it felt super rewarding.

It was also great to catch up with friends in the little free time that I did have. The indie hostel as always was a highlight:


There was also an “impossible lunch” meeting. A bunch of guys from UsTwo, the makers of Monument Valley, proposed that devs working on games with impossible geometry meet up for lunch. There was Steve Swink (Scale), Albert Shi (Museum of Simulation Technology), and Marc Ten Bosch (Miegakure), amongst many others.

Henry Segerman, a mathematician, also joined us, and showed us a bunch of beautiful 3D prints of mathematical objects that had made.

In this one, for example, by shining a light through the orb, a grid pattern is projected on the surface below.


It was pretty funny to see all of us at the table playing with all of these objects and looking totally amazed.

Anyway, GDC was great. I got a big dose of inspiration, and am ready to continue tackling Manifold Garden.

Oh, and here’s a picture of me taken at the iam8bit 80′s booth. I stopped by on the last day while it was closing down, and Jon from iam8bit convinced me to jump in last minute for a photo.  So glad I did.


GDC Talk and Day of the Devs

manifold garden GDC

GDC is going to be really busy for me this year. I’ll be giving a talk for the first time, as part of the Level Design workshop, and also, I found out last week that Manifold Garden will be on exhibit as part of “Day of the Devs’!

GDC Talk

My talk is going to be part of the Level Design Workshop, and will be on Tuesday, March 15th, at 3:00pm, in Room 130 in North Hall. This is the day before the main conference starts.

[url+]Here’s the official page on the GDC website[/url], if you’re using the scheduler and want to add it to that.

level design workshop

I’m really looking forward to this, as GDC talks, and especially the level design talks, have been very helpful for me as a designer.

It’s cool to finally have an opportunity to give back.

I’ll be talking a lot about what it’s like to work with weird geometry in Manifold Garden, different problems I’ve faced, and various techniques I’ve discovered which have been helpful.

Day of the Devs


Also, super pleased to announce that Manifold Garden will be playable at GDC as part of Double Fine and iam8bit’s ‘Day of the Devs’ exhibition.

I still find it pretty hard to believe that Manifold Garden will be a part of this. The list of games they’re showing is fantastic:

  • Below by Capy Games
  • David OReilly Game 2 by David OReilly
  • Headlander from Double Fine Productions
  • Day of the Tentacle Remastered by Double Fine Productions
  • SUPERHYPERCUBE by Kokoromi
  • Return of the Obra Dinn by Lucas Pope
  • Dreams by Media Molecule
  • Bound from Plastic
  • Hob by Runic Games
  • ARENA GODS by Supertype
  • Manifold Garden by William Chyr
  • Severed by DrinkBox Studios
  • Line Wobbler by Robin Baumgarten
  • Rez Infinite by Monstars + Resonair

GDC is going to be pretty crazy this year. If you’re going, definitely let me know. It would be great to meet up!

GDC 2015

I just got back to Chicago from GDC. Just like last year, GDC was an exhausting, overwhelming, but also incredibly fun and inspiring week.

In a lot of ways, even though I was familiar with the format, and had some idea of what to expect, it was even more intense than last year. This was mostly because this time around, I knew more people, and there was more stuff that I wanted to do.

Anyway, since I wasn’t really showing RELATIVITY at GDC, at least not officially, I thought I’d try something a little different with this write-up. Instead of a standard post-mortem talking what I did and why, I’m just going to make a list of some of my favorite moments and events from last week.

1. Talks!

Last year at GDC, I got an expo pass, which got me into the expo floor, and also into all the upstair levels of the convention centers, but not into most of the talks. This was sufficient as I mostly was just interested in meeting new people. This year, I got the Independent Game Summit Pass, which allowed me to attend talks on Monday and Tuesday, many of which were focused on independent game development.

There were a lot of great talks, but the two I enjoyed the most and found to be very useful were the Talos Principle post-mortem and the Race The Sun post-mortem.

For the Talos Principle post-mortem, Alen and Davor from CroTeam talked about the various development and debug tools they used. One of debug tools allowed testers to hit a hot key, and then a raycast would shoot from the reticle to a point, and place a pin there. Then the tester could type in a description of the problem, hit enter, and their position coordinates, and camera orientation would be saved. Then the developer could view all the pins, and by clicking on each one, you could go straight to the position with the exact camera angle and see what the issue is.

They said once they implemented this system, the number of bugs reported went from hundreds to thousands (of course, this does not mean more bugs, just that previously, all of those weren’t being reported).

They also had a bot that was able to run through the game very quickly, making sure that there weren’t any areas where the player would get stuck (from a technical, not design point, ie doors not opening). For a human playtester, it would take about 40 hours to run through the entire game. For the bot, it took around 20 minutes.

The Race The Sun post-mortem from Flippfly was very inspiring. What was most interesting was that despite the game not being a megahit, or even a hit rightaway, it was still a success in that it has allowed the team to fund their next game, and it has gotten really positive review from players. A lot of it can be attributed to the team being open to feedback, and actually willing to make changes based on those feedback.

I won’t go too much into detail (hopefully it gets posted for free on the vault). However, they gave one analogy for game development that I thought was really great. They compared making an indie game to throwing darts. At first, you’re going to miss a lot. Over time though, not only do you get better at the act of throwing darts, but you’ve also thrown a lot more darts, so your chances of hitting the bullseye increases. With making an indie game, you just have to keep trying things, and constantly evaluate what you’re doing and how you can improve, and then keep trying more things.

2. EDGE Magazine

The latest issue of EDGE Magazine (#277) features a beautiful 2-page art spread of RELATIVITY!

EDGE had reached out to me back in January regarding this feature, so I had known about it for a while (it was very hard to keep it a secret), but I didn’t see it in person until I was at GDC and saw the issue in the “Industry Press” section.

It’s the first time RELATIVITY has been in a printed magazine, and it looked great! I was so excited when I saw it that I grabbed 3 copies and ran around the expo floor showing everyone.

This is actually a really significant moment for me, because at GDC last year, a lot of the feedback was that I needed to work on the visuals of the game. I also remember picking up a copy of EDGE and looking at the games in there.

This time around, to have the visuals improved so much that it’s in EDGE is pretty special. Also, this time at GDC, the reaction of people when I showed them screenshots of RELATIVITY was no longer “The art style needs work”, but “I’ve seen this game before! It looks beautiful!”

Of course, there’s still a lot of work to do and lots of room for improvement, but I think it’s safe to say that all the work spent on the shaders this past year has paid off.

3. ProBuilder

On Thursday, I met Karl from ProBuilder, who had a kiosk at the Unity booth on the show floor.

As you know, ProBuilder has been indispensable for me in making RELATIVITY. I talked to Karl about some of the issues I was having with my edge-detection shader picking up artificats due to T-Junction issues, and I think now I could fix them by using the weld vertices function.

Also, Karl showed me some of the stuff that’s currently in the works with ProBuilder. Not sure if I can talk about it, but it’s very exciting.

Anyway, it was just really cool for me to finally meet someone behind one of my favorite Unity plugins. It really has made development of the game so much easier, that I honestly can’t imagine ever making a 3D game in Unity without ProBuilder.

4. Steam VR Demo

I got to try the Steam VR Demo during GDC! When I told people at GDC that I got to try this, a lot of them were pretty surprised and asked how I got to do it. All I did was sign up for an appointment on the Valve website a week or two before GDC, but I guess a lot of people didn’t know about this? Anyway, in the future, do keep an eye out for the sign up notice. It was a scheduled half-hour demo that took place in a room, so it was by appointment only.

I don’t want to talk too much about it because 1) spoilers! and 2) I could dedicate 3 blog posts to this topic alone.

All I will say is, it was very cool, definitely the best VR demo I’ve tried so far. That being said, it is a demo, so the entire experience is tailored to showcase what it does best and to  minimize any of the problems.

It did make me realize that I don’t want to port RELATIVITY to VR. What I learned is that for a good VR experience, it must be designed from the ground up to be VR-specific. A port of something designed for another platform just doesn’t work.

5. Catching Up with Old Friends and Making New Ones

This was really the best part of GDC for me. It was great to see a bunch of friends I had met at various conferences and conventions throughout the past year all in one place. I wasn’t showing my game in an official capacity, so was able to take things at a fairly leisurely pace and not feel rushed all the time. The weather was fantastic for the whole week in San Francisco, so lots of time was spent in the park.

Development Update – GDC Feedback

Hey all! It’s been a while since the last update. March has been a pretty busy month. Between trying to implement all the feedback from IndieCade East in February, attending GDC, and starting playtesting again, I haven’t found the time to post here as regularly.

Anyway, finally made enough progress on the different fronts to take a small break and write up an update.


So, this was my first time attending GDC, and just as everyone had told me, it turned out to be awesome. I only had an expo pass, so didn’t get to go to any of the talks or workshops. But even then, for me, it was amazing just meeting other developers and getting feedback on my work.

There were so many indie developers whose work I respect that were there, and all of them were super approachable and generous with their feedback. Some of the people who I had playtest the game and get feedback from were Justin Ma (FTL), Marc ten Bosch (Miegakure), Brendon Chung (Quadrilateral Cowboy), and Pohung Chen (Perspective). They all had very different and interesting insight and feedback on the game.

Relativity_2014-03-30_v8 2014-03-31 16-36-58-14

Justin talked about having a clear distinction between areas where the player is solving a puzzle, vs areas where the player is supposed to be exploring. If there’s confusion between what the player is supposed to do, the player can’t quite approach the problem with the right mindset. For me, this was a really good insight, because I had noticed that sometimes players would walk into a puzzle room, and when they don’t get the puzzle right away, they would turn around and walk out, thinking they had missed something they need earlier.

For me, when playing other puzzle games, this is a really frustrating feeling to have. Is the reason why I’m not able to solve this puzzle because I’m not getting it? Or is it because I just don’t have the right tool? This is why I really enjoyed Portal’s puzzles, because you knew in each test chamber, that all the elements you need were right there, you just needed to piece them together correctly.

From this, I know I need to make the distinction between puzzles and exploration areas more clear. The challenge is that, unlike Portal, there is backtracking in Relativity. I don’t seal off a test chamber once you enter it, so how can make sure that the player understands that they have everything they need right there to solve it? Fortunately, because the player can walk on all different surfaces in the game, I can place the entrance in an area that’s not as easy to go back into once the player enters a puzzle area, so that it’s clear, “hey, this is an isolated area with a puzzle”.

He also had some feedback with the visuals, and really emphasize the need for the game to have a unique visual identity, to distinguish it from a lot of other FPS puzzle games.

Relativity_2014-03-30_v8 2014-03-31 16-37-42-44

I showed the game to Marc ten Bosch and Brendon Chung separately on Thursday afternoon at GDC, one after the other, and both gave me really good feedback on puzzle pacing and level design, specifically on how to isolate individual concepts, and introduce them one at a time. I didn’t realize until then that in a lot of my earlier puzzles, I was actually introducing 2 or more concepts at once, and a lot of players would get confused on what they were supposed to take away.

It was also interesting to see their approaches to puzzles. Marc, himself working on a puzzle game based on an abtract mathematical idea, found the difficulty level in the puzzles to be just right, and said that any hints or additions to make them easier would ruin the puzzles, but Brendon, who does more linear narrative based games, found the first puzzle to be really challenging. In a way, both are correct. The puzzles don’t need to be made easier, but there needs to be other puzzles before those, to correctly lead up the player. This way, it can address the issue of pacing. For example, I ended up adding another puzzle before what was originally the first one, to isolate one of the concepts, and but kept a lot of the other designs. From playtesting I’ve done since then, this seems to work a lot better.

Relativity_2014-03-30_v8 2014-03-31 16-38-23-13

Pohung gave me some awesome insight on puzzle design. He used an analogy from the Chris Nolan film, The Prestige, specifically this line about the structure of magic acts:

Every great magic trick consists of three parts or acts. The first part is called "The Pledge". The magician shows you something ordinary: a deck of cards, a bird or a man. He shows you this object. Perhaps he asks you to inspect it to see if it is indeed real, unaltered, normal. But of course... it probably isn't. The second act is called "The Turn". The magician takes the ordinary something and makes it do something extraordinary. Now you're looking for the secret... but you won't find it, because of course you're not really looking. You don't really want to know. You want to be fooled. But you wouldn't clap yet. Because making something disappear isn't enough; you have to bring it back. That's why every magic trick has a third act, the hardest part, the part we call "The Prestige".

In the same way, a great puzzle should follow this structure. Pohung used one the puzzles from Relativity that he felt did this correctly (which was actually unintended on my part). The puzzle had two parts. The first part is pretty easy, and is meant as a build up to the second part. The second part at first seems like the first part, but actually requires a variation of the technique. Pohung talked about his line of thinking in approaching the second part, going “Ah, this looks easy, it’s just what I did before…. wait a minute… that’s not going to work here… hm….. ah ha!”. As such, this puzzle shows something ordinary (a simple technique that the player learns), then something extraordinary (the puzzle looks similar, but it seems the technique no longer applies…), and then brings it back (player realizes a variation of the technique would work).Relativity_2014-03-30_v8 2014-03-31 16-38-45-43

Anyway, it’s quite difficult to talk about puzzle design in depth without showing you the actual puzzles. However, hopefully there’s some high-level stuff that you may find helpful in approaching puzzle design for you own games.