May Game Dev Log

It’s time for another game development update! Over the last couple of months, we added a lot of exciting features to Crimson Spires and found ways to make our development process more efficient. You can view these changes in action by playing our free demo, available on itch.

COMIC BOOK PANELS

As we began to block out an exciting action sequence in the story, we came upon an all-too-common challenge. How do we suggest a large amount of movement and action within a scene while constrained by static 2D characters? Sometimes movement can be suggested with slides and camera shakes, but other times, those motions look silly and dampen the player’s imagination.

The character sprites can’t properly overlap in this situation…

We consulted a fellow artist who has taken an interest in the project, Mike Harvey, who gave us a great idea. We could take a lesson from comic books and use panels to suggest some action while leaving the rest to player imagination.

Panels show character talk over CG

With panels, we can catch a glimpse of off-screen characters with a more dramatic flare than the typical side-portrait. Scenes like the one above are still a bit tricky to set up, and we might need to keep tweaking it. But overall, panels will be a fun feature for us to play with to increase the drama and action of exciting scenes.

We can also use the panels to display minor characters in an abstract way. Long conversations with a minor character become more visually appealing if that character remains on screen.

PERFECTING A NOISE / FILM GRAIN

We’ve talked in the past about how we occasionally work in/adapt UE4 Marketplace assets to Crimson Spires, but usually that comes up when there is a very specific asset we need and we search to see if there is a sufficient existing version that would save us the time of making it ourselves. This time, something different happened.

Every month, UE4 offers a new set of free assets that all developers can claim and use in their projects. For May, they offered Chameleon Post Process, a blueprint that applies a set of post processing effects. We’ve had our own journey creating the camera effects in Crimson Spires, starting with using the UE4 Post Processing volume to apply film grain, then setting up our own custom effect using Post Processing Materials.

When we tried out the Chameleon effect, we discovered that it could easily do everything that our custom effect could and more. We could still have the scratchiness and CRT noise we apply regularly in the game, but we could also use it for a few other dramatic effects in individual scenes. This left us with a hard decision to make of whether to replace our Post Processing with Chameleon. We could have never known that this Blueprint would later become available to us when we did our initial post processing work, but it’s still hard to throw away stuff you’ve worked on. We eventually decided that the extra effects would be worth our begrudging acceptance that we didn’t have to make the effects ourselves a few months ago.

In-game screenshot with Chameleon film grain and rain droplets

Once the decision was made, we carefully went through and replaced our PP volumes with Chameleon, which revealed some inconsistencies with how we maintained our effects between our player camera and cinematic cameras. This problem would have sprung up eventually, and we’re glad we were prompted to fix it. 

Dev Log – Chapter 27

As some of you may know, we recently closed our Patreon because we weren’t sure how well we’d be able to maintain it with other life responsibilities getting in the way. But we enjoyed sharing our development process with our supporters, and we’d like to keep doing that in some fashion. So here’s our latest development log!

OBJECTIVES

  • Prepare new demo for release!
  • Compose new music for romantic moments
  • Change the colors of Jones’s outfit
  • Set up barns for use in the 3D environment

CHALLENGES

Down-sizing a Demo

In case you didn’t already know, we recently released our first public demo of Crimson Spires on itch.io! We were excited to share it with the world, but it took some work to prepare. This game will probably be our largest yet in every way, including memory size. We knew we would need to delete a lot of assets from the full game in order to trim the demo to a pallet-able snack size. And this meant deleting a LOT of assets.

To spare you many tedious technical details, I’ll just say that we had trouble deleting the correct assets without causing errors. Our first few build attempts were missing some important files, so they failed. It took several attempts to juggle files around before we got a build that worked. But we finally got it working, and now we’re really excited to receive feedback from people who try it out!

The Scandal of Jones’s Pants

We also had the pleasure of sharing our demo with a live audience this week. It was a great opportunity to watch reactions in real-time and gauge people’s reactions to the opening of the game. In a group setting, people’s reactions can be heightened and more apparent than an individual playing alone. People might voice thoughts and reactions to the group that would otherwise stay quiet. In this case, a lot of people in the room started laughing when Jones’s first appeared.

We’ve demoed the game before, but always with individuals playing the demo alone. Never before did we get the reaction we got this time: a lot of people laughing hysterically. And it’s because they thought Jones had no pants on!

I’m not sure if it was the size of the TV, the color settings, or if it’s just something that no one had ever commented on before. But it did, in fact, look like Jones’s had no pants! So naturally, after laughing along with everyone else, we got to work fixing this as quickly as possible.

Now Jones has nice blue jeans instead of skin-colored khakis. Someone also suggested we make his shirt red; it’s an inside joke you might get if you play through the demo 😉

De-Bugging Modular Assets

To help build out the world of Bataille, as well as provide some variety to the environment, we’ve ended up using a few content packs purchased from the UE4 asset store. We’re very careful adding these to our game, because we’re aware that haphazardly throwing together different modeling/texture styles can lead to an aesthetic mess. Whenever we use something purchased from the asset store, we go through all of the models and textures and make sure that they are sufficiently low-fi, often modifying them to fit the style we’ve already developed.

Even though this is time consuming in its own way, it still is probably faster than building everything from complete scratch, especially when it comes to modular content. What is modular content? Walls, doors, roofs, and other sections that can be combined to make custom buildings. These are incredibly helpful because (a) they’re usually easier to modify to match our style and (b) they can be used to make a variety of structures.

This week, we picked up a content pack specifically for building barns. Since a decent amount of Bataille is spread out and rural, it makes sense there would be a few farms in the area. Unfortunately, this pack was a little more difficult to use than the other two we’ve added to the project, specifically because of how it flipped certain meshes by using negative scale values. This isn’t something we like to do in our projects for some complicated reasons related to using instanced static meshes, so we had to manually edit several of the modular pieces and build our own actors within the game. It wasn’t a big deal, however, and now we’re ready to fill out some of the outskirts of Bataille with farms/abandoned barns.

Romantic Music for a Horror Game

A challenge we’ve often faced while working on this game is meshing the horror elements of the story with romantic themes. This challenge presents itself in the music, as well. As we worked on blocking romantic sections of the story, we realized we needed softer, happier music that was not yet present in our soundtrack.

To solve this, Jenny composed a new song in a major key, but she tried to maintain a faint element of bittersweet sorrow in a few areas. To balance it with other tracks, she used a lot of the same instruments present throughout the soundtrack: strings, guitar, clarinet, and viola. She threw in a little harp to emphasize to the wistfulness of romantic emotions.

March Game Dev Log

We’re excited to say that we finished our big update for Echoes of the Fey: The Immolation in March, and it’s now available on Steam and itch! The game should now perform better on lower-end computers, and everyone can enjoy remastered artwork and new special effects. Meanwhile, our work on Crimson Spires continues!

WINDOWS OF ILLUSION

A few months ago, we considered trying to make false interior windows in the style of (among other games) the PS4 Spider-Man game. It was a half-realized thought that we didn’t follow through on because we weren’t sure it was worth the effort considering the lofi visual style of the environments.

Well, it turns out there was a good reason to start looking at fake windows, but instead of false interiors we were motivated by creating false *exteriors.* There aren’t too many times you’ll be wandering around  inside a house or other area in Crimson Spires, but in the few instances we had, we found that the black reflective material didn’t quite create the effect we wanted. It was just too reflective and looked like everyone was blacking out their windows with paint. That might work for our conspiracy-theorist Thomas Wagner, but characters like Erika and Maddy wouldn’t be doing that sort of thing.

With this in mind, Malcolm decided to re-explore the idea of using bump offset to fake depth and create some background images for windows that look outside. To do this, we created some textures based on screenshots of the open world and built a shader to adjust their depth based upon the  angle of viewing. Bump offset isn’t quite as good at this as it is at  fake interiors, but given how rarely players will actually walk around the windows to see the seams, we think its an effective way to portray exteriors without having to build out some small version of the 3d world outside every interior level.

This  is completely placeholder, because we haven’t taken the final  screenshots for the material yet. When we do, we’ll actually take three–one for day, another for dusk, and finally one for night. Using a  vector material parameter, we’ll fade between them to correctly show time of day.

Once this was done, we had to give the fake interiors another shot just  in case we wanted to use those as well. They look better in motion than  the fake exteriors, so we may end up using those as well.

BLOCKING OUT THE SCENES THAT BLOCKED US

In March, we passed an important personal milestone: blocking out the sequence of the story that gave Jenny writer’s block for so long. This was a segment of the script that she rewrote at least 5 times. She started to fear she would never find an iteration of the script that was solid enough to keep building upon.

At long last, adding one of these scenes to the game felt like confirmation that she was on the right track again and ready to keep going.

Here’s later in that scene, blocked out in UE4:

This whole scene didn’t even exist until Jenny’s final rewrite of that story sequence, but now it’s a pivotal moment that ultimately brings Erika and Julian closer together.

REDO ONE CG, REDO ‘EM ALL!

Similar to how Jenny ended up redoing every sprite in the Immolation after fixing up a few animations, most of the CGs also got a makeover. Jenny knew she could improve upon her old digital paintings. At first she was just going to touch up a few details, but then it was hard to stop.

In this case, it’s easier to show you the changes than try to describe them, so here are some examples.

There are plenty more CGs we remastered, but we’ll let you discover those for yourself when you play the update!

ADDING LIFE WITH MOVEMENT

While working on Crimson Spires, Malcolm started to worry that the world felt a little too  static. While we’re still going for a look that evokes older 3D games on simpler systems, we thought some movement in the world might make it more interesting. To accomplish that, we modeled and added a handful of new props.

While no one drives in Bataille, we thought it wouldn’t be too unreasonable to think that no one ever bothered to take down the streetlight. Is this just sleight of  hand to let us make a small Twin Peaks reference at some point? Maybe.

It  wouldn’t be small-town America without a lot of American flags flying  across the town. Since we have incorporated weather effects, we thought  the flags should be affected and created this prop with that in mind.

We’ll continue to add other less-than-static tweaks to the environment as we  build it out, hoping to make it a more interesting place to explore.

February Game Dev Log

In February, we kept working on Crimson Spires, but we also went on a detour to work on our first game in UE4, Echoes of the Fey: The Immolation. A lot of big changes will appear in the next patch of the game, hopefully next week! Meanwhile, here are the high lights from last month’s development. Check out our Patreon to see updates like these every week!

AVOIDING BURNOUT AT A JAM

In case you don’t already know, we participated in the 2019 Global Game Jam! Overall, it was a blast. But during that weekend, we had to keep a close eye on our burnout levels.

To clarify: we LOVE working on video games. But considering the fact we spend most of our days already working on games, it’s hard for us to get excited about a game jam. We try to spend our weekends doing OTHER things, like going out, socializing, or even just PLAYING games instead of making them! A lot of our good friends were planning to jam, and we wanted to join in on the fun. But we worried it would lead to creative burnout if we spent our whole weekend working on another video game.

All of this changed when we started joking about making a Bandersnatch parody. I’m sure most of you heard of Black Mirror: Bandersnatch, an interactive movie on Netflix with a lot of hype around its release. We enjoyed Bandersnatch, but all the hype around it annoyed us, considering that interactive stories–and even Full-Motion-Video games–have been around for AWHILE. We also had some issues with the story, which we already ranted about on our blog here. We also heard it praised as a technical marvel for having no loading times, and we were like, “We could do that in Unreal Engine 4. No biggy.”

SO WE DECIDED TO GO FOR IT.

The best part about making an FMV game (for us) was that it would be a huge diversion from normal development. Instead of staring at code all weekend, we’d be FILMING! Mind you, there was still some coding involved, but we survived. Most of the weekend, we got to goof around and make a movie with our friends. And we had a blast!

Malcolm played the main character, Sam. A lot of us on the team took turns playing “Cornelius,” a ghost who lives in Sam’s house. Meanwhile Sarah Wahoff, a talented musician, was the only one who could play the ghost while jamming on a violin:

We’re trying to get an HTML5 version of the game working, but until then you can download and play the game from our GGJ page! 

WALK SPEEDS – REALISM IS A DRAG!

Along with getting our fast travel system working, we’ve had to reconsider and tweak Erika’s walk speed many times over. At first, we had her moving at a standard human walk speed–a little over 3 mph. But we found that while playing, this felt excruciatingly slow. We have fast travel now, but we want to encourage exploration and we were afraid the slow walk speed would discourage it instead.

We effectively doubled the walk speed, meaning that in actuality Erika is intensely jogging everywhere. Fortunately,  video games aren’t reality and “feel” is more important than realism. We believe with her current speed, she gets around town a lot better without feeling like a hurried sprint (even if, technically, that’s what she’s doing if we apply real life measurements to the game).

RE-DRAWING A CHARACTER I’VE KNOWN FOR YEARS

One of the challenges we faced when revisiting The Immolation involved touching up animations for Sofya. In our new and improved VN Framework, it is crucial that every frame of animated blinks and mouth movement have the same pixel dimensions (more on that below). In order to accomplish this, we would have to redo every single character’s animations. But how could we stop there? Once Jenny started redrawing Sofya’s mouth and eyes, she kept going. She made a lot of small adjustments to Sofya’s face.

As you can see, Jenny simplified the line art quite a bit. She also sharpened the shading. (The only reason her scar and eyes are different, of course, is because The Immolation occurs before her transformation.)

The challenge with redrawing Sofya is that we’ve looked at her existing design for years. We’re so accustomed to it that it’s very difficult to accept any change. But since creating The Immolation, Jenny’s style and process has changed and improved in a lot of ways. She really wanted to bring some of those improvements to Sofya’s design, especially in the hopes of using the changes for an eventual Episode 3.

We’re still getting used to the new version of Sofya, but we hope that the new design will make for a better introduction to Sofya in The Immolation

ANIMATED SPRITES ARE THE SOURCE OF MUCH STRIFE

Here’s a little more detail on why we have to redo all the blink and mouth animations for the Echoes of the Fey: The Immolation update!

For all our Echoes of the Fey games so far, the blinks and mouths have looked something like this: 

If you look at the pixels around each sprite, you’ll notice they’re fuzzy, smudged, and inconsistent. The dimensions of each sprite are different, as well. The second blink is taller than the first. Some of the mouth animations are taller than others, because the entire jaw moves up and down. 

Now that we have experience making so many games, we have realized why designing sprite animations in this way is such a horrible idea. When separating the various layers into sprite sheets, it becomes a mathematical nightmare to keep every frame of each sprite in the right place on the character. The tiniest inconsistency causes a blink not to fully cover the eye, or makes the jaw look slightly unhinged. 

With Crimson Spires, we finally learned from our past mistakes enough to create a new method for designing animation layers. In the new method, each frame of each sprite layer always has the exact same dimensions. Shadows are sharper to reduce the need for blurred edges around sprites. Mouth animations are smaller, no longer moving the jaw, and causing a smoother look in the finished product. Blink layers contain a half-ring of pixels around the eyes that always stays in the same position with the head. 

While moving Echoes of the Fey: The Immolation to our new VN Framework system, we knew we’d need to redo all the animations. So Jenny figured that while she was at it, she would go ahead and fix up the original drawings, too. And that’s why we’re redrawing so much to make The Immolation update as good as possible!