Busy busy...

This has been a terribly busy month for us, so we don't have time to write a proper post now. However, we've learned a lot about making two AnimBlueprints (a horse and a horseman) precisely sync up in Unreal 4, so we'll have something to write about next month!

Happy holidays, everyone!


Monthy ramble!

This month we've honestly just worked our asses off so there isn't much else we could write about, and we can't really write about that either, so...

We've upgraded our PCs - I (Lussy) only got a GTX 1070 video card, but Geril replaced his whole machine and it was painful.
We got him a socket TR4 motherboard, a Ryzen CPU, a Vega64 video card and some ram, but when we first put them together, the PC couldn't start up. We had to get another stick of ram to actually get into the UEFI. Then we had to flash the BIOS to get the video card and the other stick of ram to work. This took quite a while, and now he has 32GB ram instead of the planned 16...
So if you buy a recently released motherboard, just be prepared to deal with this.

When it's turned on, the whole thing lights up like a Christmas tree.
In other news, we've barely had time and energy to sit in front of a TV to play games, so we use the Switch a lot. We've seen lots of people just shrug off the portability factor of the Switch, but for us and our lifestyle, it is a godsend - we prefer anything portable over having to sit still in front of a huge screen for long periods of time, since that's what we do for a living, anyways... And we like taking long baths and now we can even play Skyrim during them.

We also try to play our PS4 frequently, but it's really inconvenient that we have to charge the controller every 2-3 hours (seriously, what's up with that battery life?), and, since we finish work well after midnight, we have to turn the volume all the way down and kill the subwoofer. With the Switch, the screen is just the right size that we don't have to sit too close to it and it's not tiring to hold, either. It's also pretty convenient that we can bring it with us to long train rides and family gatherings, where we can split the controller and play Mario Kart with other people.

As developers thought, we have to say that the Switch, while more powerful than last-gen consoles, isn't as powerful as the current generation of home consoles. That won't stop us from aiming to develop for it, however, because it seems like the Unreal 4 gets excellent support for the platform. We always keep in mind how we can tone down the stuff we make so that they will run on the Switch. Right now we're using the GPD Win as comparison: if it runs on the GPD, it will surely run on the Switch, too.

That's it for this month's ramble, we hope we'll be able to talk about or show more interesting stuff in the future.


A GPD Win post!


This month we've taught horses to follow paths, made a character creation system and also put together some complex interactive materials. All that in Unreal 4. Too bad we can't show any of this right now, because it's for our current job. In any case, we're learning a lot working full-time in Unreal 4!

There's a thing we only briefly mentioned in our previous post but didn't elaborate on it: the GPD Win that Lussy created the rhythm game project with, using Unreal 4.

The GPD Win is advertised as a portable Windows 10 PC, and Geril bought one about 3 months ago. At first he considered getting a LattePanda, but figured it would be too much trouble to make it stable. (Since, funnily enough, Geril bought it for work, stability is a huge concern)

Even though our GPD is for work, we still use it to play some games: we play World of Warcraft on it using random public Wi-Fi hotspots; Fallout: New Vegas and various indie games. For example, Cuphead runs with a stable 60fps.

To play any "serious" modern games on it, we need to do some heavy work and tweaking just to get it running in a bearable manner, so we don't do it very often. It's just too much effort, but it's just about what we expected.

But as for Unreal 4, we had no clue how it would run. It's a huge relief that it runs well, surprisingly well. Of course everything that can be set to low has to be set to low, and everything takes a really long time to load and compile.

At first, Geril created simple materials, material instances, particle effects and levels. Editing materials is fine, but compiling shaders is a problem - probably because the built-in storage is really slow. It also gets very hot when compiling shaders (and even the maximum fan speed doesn't help), so we actually had to leave it in the fridge for an hour to complete compiling about 5000 shaders. Well, at least anyone who opened the fridge had a laugh.

The framerate immediately drops in the editor when working with any lights in the scene. Funnily enough, playing in editor produces better framerates than not starting the scene at all.

What really works well on it though are blueprints. Last month's practice project was created almost entirely on the GPD, and apart from the controls (using blueprints with analog sticks...), there wasn't much to complain about.

We could talk about what's actually in the GPD, but we think it's irrelevant - it's basically a 64 bit PC, and Windows PCs are known for their customization options, therefore any issues can ultimately be solved. We were positively surprised how agile the Unreal Engine is, and how much work can be done using such a tiny machine.

So we can work even on the go! Yay... I guess?

With that said, Happy Halloween! (The Halloween spirit evaded us this year)


Keeping the beat in Unreal 4!

We're really looking forward to not beginning our posts with this: we've been very busy this month, and had almost no time for our personal projects.

That's only almost, though. We have had time for an approximately 3-day practice project in Unreal 4 (about 1.5 days of this was done on a GPD Win device, which can run Unreal 4, impressively, and is also portable, so we could work on it during a long trip). I (Lussy) have finally figured out a way to bind things to a soundwave's position (in seconds) in Blueprints, so we've made a replica of the rhythm game Taiko. Because we didn't have to come up with new gameplay, and only had to implement the existing mechanics, we've been messing around with binding things to BPM, and working on sickeningly colorful graphics.

Excuse me for the sub-par play, it was late and oh yeah we had to show off the 'Miss' particle effects!

The song and beatmap in the video are from one of the original Taiko games, but we used this osu file to bring them into our project by exporting the contents to .csv and importing it into a data table.

We tried to only include really light, unlit-only graphics that wouldn't impact gameplay. We even though about only using 2D sprites or just widgets, but it just didn't seem right for an Unreal project. But in any case, the gameplay stays stable even if the framerate dips. I can't overstate this, we're REALLY happy about the whole thing syncing up, and we never had to use ticks. I've been trying for years to accomplish this

So where to from here... This is a really low priority, tiny project, but we have a few ideas for our own gameplay mechanics that we are going to replace the Taiko mechanics with. Only the timing mechanism will stay. Until then, ... We managed to actually sync things up to a given song and rhythm without the framerate messing things up! Woooo!


Summer's over already!...


We're going through a pretty rough transitional period at the moment. We've had time to do this article for Sketchfab however, so enjoy:

This is related to the Fisheye Placebo fanart lipsync scene we've done. We show off some making of pics in the article, and describe our workflow.

There's also this little test we've cooked up, it's an Unreal 4 Blueprint AI system with very basic pathfinding and a few interactive objects.

The interactive objects work via a point of interest system. First, we created an offset for the head that follows the points of interest that the character is closest to (or that has more influence). After those, we've also added attractors and repellers as child blueprints to the PoI-s. The attractor has a chance to summon nearby characters to itself and make them clap, and the repeller can either explode and kill characters that were caught in the blast, and/or send the rest fleeing and cowering in fear. These are all pretty rough and basic, but functional nonetheless. We spent about a day working on them, they were made as a tech demo.

Oh yeah, and the assets are from the World of Warcraft.




This month has probably been the busiest we've had yet. We'll just avoid telling you about how much we've worked, day and night, with no breaks in-between, every day of the month. It was exhausting.

So, we'll show you some good things instead! As few as they are.

First, we've been 3D printing a lot! Our most impressive prints yet, in our opinion, are two small figures of Max from Sam & Max, Season 1.

It's a rip of Max's mesh from the Telltale series that we've posed and edited for printing. We still have to figure out a way to properly remove the supports from the print, but we're getting there.

In other news, we've made this scene public:

This is Frey from Fisheye Placebo, the same model from our Frey Underground fanart, lipsyncing to a voice clip by VisualRaid from their dub of Fisheye Placebo. This has been done for a while now (we participated in Sketchfab's beta for sounds), but we could only make it public after Sketchfab's sound feature was made public. Hooray for Sketchfab Sound!

Sorry if this embed breaks the whole blog. Sound on Sketchfab is still a new thing, and we've experienced problems with embedded files with sound.

See you again next month! Don't get cooked, stay off the hook!


Conversation Blueprints!

Hi! It's Lussy.

We're busier than ever this month. While we couldn't significantly progress with our projects, I had a little time to practice UE4 Blueprint scripting, so I created a conversation system using the new String Tables in UE 4.16. It's still in progress, but here are some features:

  • Each line of NPC dialogue can have up to four possible replies from the player. The conversation itself is saved into structs that feed off String Tables.
  • There are stats. Player replies can add to or subtract from a stat, and replies can also be tied to a stat requirement; for example, if your knowledge is under 5, a reply will be grayed out. I went with one stat this time, and it's "Personal", which is code name for how many times the player talked with an NPC and wasn't a complete ass. More stats can be added as needed.
  • I based the camera on Legend of Zelda: Breath of the Wild - the camera can be rotated during conversation, and is locked to the middle point between the player character and the NPC. There's a smooth interpolation when a dialogue begins and ends.
  • Greetings above the head - we gave each NPC a random personality out of 4 possible types: Normal, Wise, Upbeat and Lazy. Influenced by Animal Crossing.
    The personality type determines the greeting that appears above the NPC's head when walking close to them. We plan to include a system that lets NPCs insert random, personality-specific words into their sentences, or change adjectives to their own most preferred word. 

I still need to work on making this a more open system; for example, right now it's not possible to converse with more than one person at a time. I also need to figure out a way to tie the conversations to certain situations that come up in the game. Another feature I'd like to add is an optional animation for each line, for each character involved in the conversation.

If this becomes stable, we plan to use it in some of our projects, when it's appropriate to add such a system.


Unreal 4.16 & 3D printing!


This month was also very busy. We're currently working on an outsourced project, and that takes up a lot of our time, but at least we're using Unreal 4 and Substance Painter, so we feel at home. The extra practice doesn't hurt, either.

Unreal 4 got updated again! We've been waiting for volumetric lights and fog, and 4.16 finally delivered them. They will be useful for Lemniscate, since we've used fake godray effects for all the lamps, and this will make it easier and hopefully cost less in terms of hardware. It also looks cool.

In other news, we got our hands on a simple CTC Prusa 3D printer! We're still calibrating it little by little, messing up lots of prints but nailing others. Geril likes the DIY-aspect of it, and the fact that almost all components can be replaced and upgraded, just like a PC. Lussy likes it because once it works reliably, it will be very useful for cosplay.

Putting the printer together wasn't easy (it took about 8 hours), but we've learned a lot about 3D printing. We're still in the process of attaching extra cooling fans, so our prints are imprecise, but here's a bust of one of our characters, Beat!

Have a nice day!


Project Contrivance overworld progress!

We have lots of work unrelated to our own projects, and we've been networking with other artists. That slowed our progress with Project Contrivance considerably, but we haven't stopped completely.

We've been putting together the game's story for a while now, and I'll share the version we've liked the best.

The game plays out inside a person's head. The players play as two microscopic robots that are sent out to fix the person's faulty implanted chips and other artificial additions. We're already working on boss fights that explain the various things that happen inside the levels.

The overworld will be divided into multiple chunks that give players entry to the game's levels. Because of this division into multiple parts, we can play with the post process effects and color settings of each section. The overworld's fleshy appearance will likely be seeping into the levels themselves as well, through little cracks and damaged parts.

Geril loves creating twisted, disgusting things, so he felt great making the pulsing, inflating flesh-columns and the light-up brain nerves.

The design is very unfinished, background objects are absent, there are no gates for the levels, no puzzles, and the overworld is not the final size, but much smaller. But it's a start, and good enough for testing.


Project Contrivance overworld thoughts!

This month, we've been thinking and working on Project Contrivance's structure. We decided to base the game on an overworld that houses all the levels - kind of like in the N64 era.

Level progression would be driven by beating levels and gaining resources for opening up more levels. The overworld would contain puzzles of its own, so you wouldn't have to beat every level to proceed, you could gather the remainder of the resources in the overworld, allowing you to bypass levels you don't like.
Each section of the overworld would end with a boss that goes with, and explains the previous levels' theme. Beating the end boss would open up the next section.

Other things we've thought about were giving players the ability to color their characters by finding special items in the overworld, adding competitive elements to multiplayer, and opening up bonus levels.

This system was inspired by the N64 era games like Super Mario 64. We'll show you more once we've progressed enough with development.

In other news, the Nintendo Switch has arrived, and it appears to be successful. We like the console's idea, and enjoy playing on it, so we've decided to keep the Joy-cons in mind when designing the game. We've even managed to make them work on our PCs so we can test the game with them!

Stay fresh!


Co-op puzzles in Project Contrivance!


In the last month, we worked to implement local split-screen multiplayer in our puzzle game project that we dubbed Project Contrivance for now. The levels that are designed for two players can be played with a second player, or by switching between controlling two characters in single player.

Swapping between players
We've added various nodes and boxes to spice up the gameplay: there are and, or, delay, inverter nodes and switches, and boxes that can be picked up that contain these functionalities. These boxes can be placed into sockets and will connect into the circuit, and in there they work just like the regular nodes.

Here is a long playthrough video of a test level where we fool around:

The little noises you hear are the player characters' form of communication: they have a positive and negative sound, and players can trigger these whenever they want to. We plan to add gestures to them, too.

Falling into deadly liquid
Crushed by spikes
These GIFs are pre-alpha and about everything may be subject to change. We're going for functionality first, instead of graphics.

Our big dilemma right now is deciding between deferred and forward rendering. We don't know what the Nintendo Switch is capable of yet, and deferred rendering is more costly, so I guess we'll have to wait and see, but it'd be nice to know in advance. We could just use deferred rendering and upscale, but we're not sure if it's worth it. With forward rendering, we'd lose SSAO and screen-based reflections (among other minor things), but by using MSAA, we could get a more sharp picture, which fits the theme (machines) perfectly. Forward rendering also handles transparency better.

Deferred rendering
Forward rendering

Here's a gameplay video with forward rendering:

Of course, on PC there will be graphics settings, so this won't be an issue, but planning for a console(s?) is different.




We’ve been progressing with the puzzle game project mentioned in the last post. We’re learning a lot about how to make stable things, how to manage a project and time, and how to optimize games for lower-end machines. We have a couple of game mechanics ready, so the bulk of the work will be to build levels using these mechanics.

This puzzle game has a simple goal: get to the end of each stage by solving puzzles and avoiding obstacles. For now, most of the problems are solved by pushing buttons with the character, or placing blocks onto them, with some light platforming mixed in. The whole idea is to mimic programming/digital circuits with the puzzles - think logic gates, nodes.

Here are some gifs so you can check out the mechanics with placeholder art:

A basic level's layout
Breakable glass

Playing with momentum

Picking up and carrying items

Opening secret passages

Utilizing moving platforms

Obtaining the bonus box - this box grants the player extra points if taken to the exit
 Many ways to die:

Finishing the level:

We will put the new skills we learned to good use in our bigger projects. Please look forward to more updates in the near future!