Customizing a UE4 project – launcher thumbnail and splash screens

The Epic Games Launcher shows a thumbnail for each project, looking in two places: first in the root folder of the game for [ProjectName].png (next to the .uproject) and then Saved\AutoScreenshot.png, which is created by the editor automatically. You can create your own thumbnail (192×192 .png) and set it using the “Project Thumbnail” option in the Description category of Project Settings.

You can also customize the splash screen shown when the editor or game is starting up (separately for editor vs game, windows vs mac) in the Windows / Mac categories (under Platform) of Project Settings. The splash screens need to be .bmp (not .png), but they can be whatever size you want within reason (the startup text and project name are overlaid on top of it, so you’ll probably want to leave space for that).

You can pick application icons and mobile startup screens in the various platform settings options pages as well (the rules for these are varied and some platforms require a wide range of sizes, but it’s all listed in the corresponding settings pages and platform vendor web sites).  Due to the variety of required splash screens for a universal iOS app, the size can start to add up noticeably, so it can be worthwhile to approach them differently, using large fill areas that will compress well, run pngcrush on them, etc….

Holographic foil card effect

Earlier this week I saw a really neat effect where @Sererena simulated the view-dependent shimmering of a foil card, fed by a smartphone accelerometer.  This seemed like a good challenge to improve my material creation skills in UE4, so I gave it a go yesterday and came up with something I’m reasonably happy with. The view angle is controlled by WASD rather than the accelerometer since I was more focused on the material.

Download

You can download the assets and test project (built with Unreal Engine 4.15), licensed as CC0.

Construction

The material has 8 layers:

  • Background
  • Distant large stars
  • Small stars / motes
  • Near large stars
  • Character foil outline
  • Character
  • Foil on character accents
  • Card border
Outline of foil card material (M_FoilCard) showing the various layers

The foil character accent layer and the star layers all parallax as the view angle changes (shift around, with a larger shift for nearer layers, faking a sense of depth).

The foil layers (everything except the character) are colored by a lookup into a ‘holographic plate’ texture, using an ad hoc function of the tex coord, distance, and tilt amount.

The character accents layer is done with a color notch filter and one star layer, directly added to the character color (rather than lerping to it). This is the part I’m least happy with in the current implementation, but I’d need to test it with a real character to see exactly what I’d want to change.

The material is built using a bunch of material functions as building blocks to make it cleaner, but these aren’t meant to ‘stand alone’; there are lots of assumptions built into them about textures and parameter values.

I’m using a live capture of a 3D character instead of a 2D base, but after the capture Blueprint updates the render target, everything else is the same either way. The capture BP is an opaque box containing the character, a capture component, and a controlled light source.  Even with setting the capture component to only capture the self actor and setting an aggressive culling distance, some ‘global’ things like atmospheric fog still render into it, so I had to use the mode that gave me depth in alpha rather than an opacity mask in order to discard it.

The outline is done with a Sobel edge detection filter on the thresholded depth from the character render target (which has depth as alpha). Rather than using a kernel of the adjacent texels, it uses texels 8 away to increase the width of the outline. If I were using 2D characters I’d probably skip the runtime Sobel filter and do that offline once into a mask texture.

Planetary Garden

Ludum Dare 38:

For one reason or another I’ve never managed to participate in a Ludum Dare before this past weekend (LD 38). Planetary Garden was made under the compo rules (worked alone, created all new assets, finished within 48 hours of starting). However, I got a late start (3 PM Sat) and did not submit in time for the official deadline, so it’s technically a jam entry.

The theme was “a small world”, and I started riffing on various ideas for many connected small worlds: perhaps a platformer on a circular planet or mini golf where you switch worlds.  These ideas didn’t quite jell or seemed out of scope considering compo rules, and incremental games have been on my mind as well, so I ended up going in that direction (tho Planetary Golf seems like it has legs, might revisit it in the future).

You can download the compiled version for Windows as well as the project with source code and assets at itch.io, and vote / leave feedback on the LD 38 project page. Unless otherwise noted, assets created for the compo are placed under a CC0 license and game code under a MIT license.

Art Style:

Entering the compo means that you have to make all of your own art and audio (with some very limited exceptions for fonts and brushes/samples, etc… that are suitably transformed). I’m not a particularly good artist, so I went with a watercolor artistic style that let me leverage materials for most of the impact, and created the actual art as simple RGB masks (outer border, inner border/outline, and fill color). I wasn’t going for realism but just something evocative of watercolors, with variations in opacity and splotichiness generated by a couple of noise samples operating in screen space so it looks coherent across objects.

How to play:

  • Repopulate a barren planet (Earth?) with life by seeding new plants
  • When the time is right, enlist animals to help automate the process (one of them knows an ancient secret).
  • Eventually other things happen. No spoilers.
  • Note: Progress is saved between sessions, but time does not advance while the application is closed. Keep it open to continue amassing life.

Tempo Tantrum

The music is having a tantrum and can’t decide how fast to play. You move with the tempo, as do the enemies. Watch out for environmental objects like spike blocks, they don’t have ears and will keep moving regardless, so don’t get caught in their tracks when the music stops.

 

Download from itch.io and give it a go.  Here’s how to play:

  • Two players (or one ambidextrous player) race to the end point.
  • Don’t move when the music has slowed down, and avoid anything red.
  • Collect coins to raise your score.
  • WASD moves player 1 (green)
  • IJKL moves player 2 (blue)

The theme for the 2017 Train Jam was ‘unexpected anticipation’, which was pretty challenging to work with. The first thing that came to mind was Johann Sebastian Joust, which fits perfectly but already exists. We bounced some ideas back and forth and ended up wanting to do something similar to Joust or musical chairs with stop and go gameplay, leaving you anticipating needing to stop but not knowing exactly when. The environmental enemies give a nice risk-reward mechanic, do you try to cross their paths and hope you don’t get stuck, or do you go the long way around?

Jammers:

Additional assets:

  • Used the character model and animations from the free Couch Knights sample, which is licensed for use only with Unreal Engine based products

Boops, Beez, and Bears

In Boops, Beez, and Bears, your voice is your weapon: hum, whistle, laugh, or cry – whatever works for you, just do it fast! It’s a cross between between a horde-mode survival game and a participatory art experience; best enjoyed with a crowd, who are likely to be amused by your vocal antics while avoiding the annoying beez.

Continue reading “Boops, Beez, and Bears”

SharedJamUI plugin for UE4

I’ve started a plugin that implements some useful base widgets and a simple menu manager to create game user interfaces in Unreal Engine 4. It’s sort of a spiritual successor to the SharedXNA library used in most of my XNA games.

It’s open source under the zlib license, mirrored to GitHub at https://github.com/joat/SharedJamUI. There’s a bit of usage information in README.md, but it’s pretty early and should be considered ‘jam quality’ code that hasn’t been really battle tested yet. Drop me a line if you end up using it and have some feedback.

Global Game Jam 2017

For the first time, we’ve actually got a couple of sites in the triangle area for the 2017 Global Game Jam, but the one I’m attending and focusing on is the UNC / NC IGDA site. As part of this, I’m giving a two-part talk with Travis Thompkins at UNC about game jams and using UE4 on Tuesday, Jan 17th at 4 PM.

Here are the slides for the first part of the talk (game jam thoughts):

Game Jam Workshop – Part 1

They’re not really meant to stand alone so I don’t know how useful they’ll be in this form, with the exception of the resources links on the last few pages.

Store all the things!

[From the archives: Built in April, 2012]

Initial thought process:

I did some searching for designs and found a picture of a wood storage cart that looked quite nice at ShopNotes. The actual plans for the cart aren’t online so I improvised based on the photo and cutting diagram.  I also adapted it to 6 feet as I have limited space in my garage and seldom work with anything larger than that.  My ‘schematics’ (really just math to see how much wood to buy) are below:

design sketch
design sketch

[Edit] Also found an underdocumented spreadsheet and a VCarve file I used to verify the measurements I came up with (though I ended up shifting the shelves down a bit so I’d have a 5th open-top compartment):

Measurement Verification

Time to go shopping:
Supplies

Some build shots:

I probably went a little overboard with the screws and glue; the thing is built like a tank.  Finished shots:

 

All the things meme originally from Allie Brosh.

Super Simple Slime Kat Slalom

A 1..4 player local multiplayer game where cats (made out of slime) compete to grab snacks and get the best spot on the colored couches, strewn about in a lake of lava because why not.

Created for the Simple Jam in a weekend using Unreal Engine 4.12. Simple Jam aimed to keep things manageable by limiting the number of rules and assets to 5 each. Here is how I spent that budget:

Game rules:

  1. Roll down the ramp
  2. Transform to start flying
  3. The floor is lava, so don’t touch it
  4. Grab some snacks
  5. Secure the best seat on the couch

Imported assets:

  1. Chamfered cube
  2. Sphere
  3. Lake water setup (stretching the definition just a teensy bit)
  4. Cat model [saved for later]
  5. [saved for later]
Menu screen
Menu screen
Gameplay
Gameplay

Turns out learning Z-Brush in a few hours is not actually a thing, so there’s no cat model yet; use your imagination. I’m watching Z-brush tutorial videos now and will probably work on it a bit more post-jam as I had a lot of fun making this.

You can download and play it from itch.io (Windows only ATM).

Angry Duck Diver

Angry Duck Diver was created as part of the 2016 Train Jam (March 10th to March 12th).

It’s a bullet-heavy vertical scrolling shmup/STG which contains neither ducks nor diving. Instead you have to constantly balance your avarice and cowardice, building up bonuses and choosing the ideal moment to bank your points before you are destroyed.

The theme was maximum capacity and I interpreted that as a risk/reward mechanic where you increase your bonus gauge as you approach maximum capacity, but you also increase your hit box and risk destruction, losing all your unbanked points.

Train Jam
The Train Jam was an amazing experience, both as a jam and as a journey. The scenery is gorgeous and inspiring, and jammer disciplines seemed much more diverse / evenly spread than I’m used to at local jams (which tend to skew heavily towards programmers). I’m certainly planning on doing it again next year. However, one downside was the venue for the theme announcement/team formation before boarding the train; it was narrow and loud so it was hard to hear pitches or mingle with different folks pre-jam, and so I didn’t form or join a team before we got on the train.

Continue reading “Angry Duck Diver”