Game Jam Post-Mortem


Hey folks! Here's a post-mortem about the game jam version of Refuse or Refuge!

 My original thought was just, "Let's make a visual novel!" We've both made VNs and I thought it was a good opportunity to force myself to learn the Naninovel plugin.

Image

Once Rachel was on board, she started coming up with the characters and narrative design and I started making the 3D models. We knew at least part of it was going to take place in a dump so I actually went to the partly built dump scene from my VR dream sim Clarum. I basically used the Clarum dump (where I sculpted the terrain in Unity and textured it up and threw models of junk cars and trash mounds on) and then added A LOT. The iron gates, the trash bags, cardboard, random other debris et cetera. I'm not exactly an expert 3D modeler.

I bought some assets and made good use of them as set dressing. I also retextured some of them, especially the cat scratching post, which was originally some kind of marble column thing I got off Turbosquid. I retextured it to be rope looking. It works fine, I think. 

  For other scenes, I already had a modular suburbs pack which I was working on for Clarum so even that that's not in the demo build of Clarum I put up ages ago, trust me, that's where it comes from. Also, the title screen loading dock is the back of a Toys "R" Us model I bought.

Image

I reskinned the Toys "R" Us and through it into an HDRP project and tossed in a bunch of trash and a nasty puddle decal. If you REALLY mess with lighting you can make something very basic look quite nice. Materials with reflection and stuff are 100% awesome.

Image

If you don't know about it, this site is SUPER GREAT for generating normal maps with like no effort: NormalMap-Online I use it constantly. It REALLY helps A LOT, especially if you are just making a new quick and dirty texture or recycling a texture from something else.

Image

Anyway for all the backgrounds I decided to aim the camera, get really nice lighting, and make a build with the highest resolution my monitor can support which is 2569x1440. I know most people are playing this game in 1080P which is 1920x1080 but down rezzing high res is better.

Image

My original plan was to have the characters be fully featured 3D models with mocap animations from Mixamo but I immediately got frustrated trying to implement 3D models with Naninovel and decided to try making 2D sprites out of prerendered 3D models like it's 1995 again.

Image


Image

I started with a character I called the Trash Queen that became Valdis when Rachel got to writin'. The base model I created a while back for a weird part of Clarum where you get sucked into an old computer and everything's low poly.

Image

I actually made the model high poly using Adobe Fuse then decimated the living hell out of it to make the low poly version because I am ridiculous. So for Valdis, I went back to the original high poly version. Then I made two copies of the same body and stuck them on each other.

Image

The "outer" body has the same texture as the inner one but I screwed with the tiling and offset until it turned into the weird stripey pattern you see and then I made it render transparently so you could see the OTHER copy of the body through the transparent parts. This is dumb!

Image

This is a profoundly stupid way to make a 3D model because it's twice as much rendering then a normal model. I was in a huge hurry and again, I am not an expert 3D modeler. Since I decided to take screenshots of the characters and make 2D sprites so who cares about performance?

Image

The next stupid thing I did for Valdis was import the model into Oculus Medium, which is my favorite way to make 3D models ever. The whole "sculpt polygons like clay with a tool that can do everything from chopping and stretching to airbrushing" works for my brain so well.

Image

On a separate layer, I sculpted all the techno greebles onto the existing model IN VIRTUAL REALITY, because this is the future, and then I deleted the base model and exported the various machine bits to separate models and then went into Unity and parented them to limbs.

This is a weird, dumb way to do things but I was also the fastest way for my brain, so it's what I did. Rachel came up with the toaster and apple characters and I know Rachel loves reptiles so I was like, "How about a lizard man?" And she expanded on the iguana idea.

Image


Image


ImageImage


Image

Image

I got some feedback from Rachel and gave him more lizard-y eyes and changed the head spikes a bit! And he didn't change too much after that.

Image

Image

Hunter and Freda were simpler. I made humans in Fuse and stuck an apple and a toaster on their heads respectively! I bought models for both, decimated the shit out of them, deleted a bunch of geometry they didn't need, and after some re-texturing, I parented the objects to necks.

Image

Image

Image

Image

Once I had the characters all designed, I made variants of Valdis and Gus, the two characters with faces. Just different facial expressions. Then grabbed a bunch of Mixamo mocap animations for each of the base models.

Image

Then I did this thing where I made a background that was a white void using the lighting system. And created a camera for each of the characters that was coming at a roughly 3/4 angle. I was trying to imitate the angles you often see in hand drawn characters in VNs.

Image


Image

Image

Then I mapped the animations and hit play to make sure they looked good in Unity. I made a build and did a bunch of screencapping at 2560x1440. Then I edited the screencaps in Paint.net  to make the white backgrounds into transparent and imported them into Unity.

ImageImage

And then I repeated for all the different poses for all the different characters over and over until I was done. Well, that's leaving out all the resizing and crap I did to make it fit exactly right with Naninovel in Unity. Originally sizes were way different.

Image

Naturally Rachel was giving me feedback throughout this whole process! Anyway, once I had the characters and backgrounds all done, it was time to actually make a game out of it. Obviously I know Unity pretty well but I never used Naninovel before.

Image

Naninovel actually has its own scripting language instead of just using C# or whatever like normal Unity. I am not the biggest fan of it, but I did learn how to use it. To me it feels like an awkward midpoint between BASIC and C but whatever, it's fine, I guess.

The thing I was struggling with the most was how to it to do if x && y or x || y like you can in C# or whatever. I'm sure there's some way to do it but I couldn't figure it out, the documenting didn't make it clear, and I didn't have time to poke around a forum asking questions. So I ended up doing kludge-y shit like one if statement that led into another if. I hate doing that shit. It reminded me of trying to write BASIC on the Commodore 64 back in 1995 or whatever when it was the only computer I had access to at home in rural Michigan. Fortunately the developer of Naninovel replied to my Twitter thread and taught me the right syntax to get it to work! If you are in the same boat, it's like this:

@if PostTaken&&GusPost

That's an @if statement that will only execute if both the PostTaken and GusPost boolean variables are set to true.

Image

We were getting close to the original end date for the jam and I was getting panicking about a few things. One was the backgrounds consistently had a border around the top and bottom of them in builds that I could NOT figure out how to fix and the documentation was not helping.

Image

It turned out the problem was a Unity import option. I only figured it out by looking at a sample project since I couldn't find the answer anywhere on the internet. Pro-Tip: Make sure your texture type for backgrounds for Naninovel is set to Sprite (2D and UI) and NOT Default!!


Image

Image

Once I had all the assets going and had the basic visual novel functionality going I started working on implementing Rachel's great storyboards and later, the actual dialog trees. I got confused about some stuff but Rachel made it clearer for my foggy brain and we were off!

I struggled a bit implementing some of the logic due largely to unfamiliarity with Naninovel's scripting language but I eventually got it pretty much all working, up to the end of the first puzzle. Rachel  had written three puzzles over several different scenes.

We were definitely about out of time so I decided to stop at getting the first quest done because I just couldn't get more done with the time left. At that point I didn't even have the sound implemented at all. I was going to go through the songs I've written and pick some but I was bug fixing and implementing poses up to the wire. I was also going to either make new sound effects, grab some from a library I bought a while back, or recycle ones from one of my other games but nope! Rachel went and found some good songs from Kevin MacLeod (http://incompetech.com) and good SFX from freesound dot org and I frantically implemented them. And then the pushed back the deadline. And then they did it again. And again. So I was able to get more done!

I found SFX I created for an earlier game (actually a class project from when I was taking that Unity VR class several years ago) and used those for the sylph. Oh yeah, the sylph! I bought a ribbon particle effect from the asset store. The process of implementing the sylph was different than the flies even though they are both particle effects. The flies are a "special effect" and the sylph is a "generic character" in Naninovel. And once I figured out the generic char I realized I could use it for 3D models. I definitely did NOT go back and implement 3D models instead of the sprites. I thought about doing it after the jam finished but I actually like the prerender sprite thing I've got going on here. It makes it feel very vintage PC gaming and fits well aesthetically with the BGs.

Image

Image

I mentioned Myst before but also look at Issac Asimov's Robot City game! I bought that in the '90s and have not played it since the '90s but the memory sticks in my brain. I think our game looks a little nicer but that's where I was coming from.

Image

Image

As for the actual gameplay, I think Rachel was envisioning point and click mouse gameplay but my brain was going to Snatcher and also the NES ports of the MacVenture games Deja Vu, Shadowgate, and Uninvited.

I'm sure it's possible to do point and click gameplay and maybe I will look into at some point, but I'm actually pretty happy with the current interface. It has a really retro feel that I like, plus I think it will port well to mobile.

I think that about wraps up my thoughts on Refuse or Refuge for now. I definitely intend to at the very least implement all of the later stuff Rachel wrote including those puzzles. I'll also probably replace the music with stuff I composed and the SFX as well. So follow for future updates on Refuse or Refuge. 

Now here's some comments from Rachel:

"I was inspired by a mix of Aqua Teen Hunger Force and the Brave Little Toaster and kinda ran away with it, wanting to get deeper into the themes of why we throw away so much-- but we're also STUCK in situations where we don't have a better choice.  Then I found Hogan Torah's bagel button pieceand laughed my ass off, and thought, 'Oh shit I HAVE TO PUT THIS IN this batshit game starring an anthropomorphic toaster'.  And now that I'm staring down my first (don't know if it'll be only?) cross-country move, where I'm now chucking all this furniture if I can't donate it because it's literally not worth getting a truck for it all-- it made me think of the concrete and abstract we throw away."

That's it, folks! Android build coming very soon. It's working and I'm just testing it out to make sure it doesn't crash or anything.

Files

refuseorrefuge-android-1.0.apk 197 MB
Jul 30, 2021

Get Refuse or Refuge

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.