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.
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):
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:
Roll down the ramp
Transform to start flying
The floor is lava, so don’t touch it
Grab some snacks
Secure the best seat on the couch
Lake water setup (stretching the definition just a teensy bit)
Cat model [saved for later]
[saved for later]
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 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.
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.
Tappy Chicken is the first UE4 game shipped on mobile platforms. It’s a very accessible one-button game, and you can download the entire game source assets and blueprints from the UE4 marketplace for free.
The shipped version targets the following platforms:
iOS: iPhone 4 / iPad 2 or above, running iOS 6 or above.
Android: Devices with an OpenGL ES 2.0 GPU that run API level 9 (Android 2.3) or above.
HTML5: Browsers that support WebGL (Latest Firefox, Chrome, Safari, or Opera)
A Blueprint Macro lets you reuse a set of nodes over and over, and can be created in any blueprint (using the Add Macro button on the ‘My Blueprint’ toolbar). You can also turn a selection into a macro by right-clicking on a selected node and using the ‘Collapse to Macro’ option. A macro works a lot like a collapsed graph; you can define arbitrary inputs and outputs, which will show up as pins whenever you place a macro instance. Here is an example of a macro named IsValid, which checks to see if an object pin is valid or not:
This macro can then be placed as an instance in another graph as ‘shorthand’ for the nodes it contains, allowing you to reuse code and hide complexity:
As you build larger projects with Blueprints, it’s easy to end up with an overwhelming sea of nodes. However, we’ve built in a number of different encapsulation and code reuse mechanisms to help you battle the chaos.
To encapsulate something is “to show or express the main idea or quality of (something) in a brief way”; in other words we can hide a complex sequence of nodes with a simple stand-in that conveys the same meaning or idea. You can still drill down and see how it works ‘under the hood’, but you don’t have to worry about the details when looking at the broader picture. Continue reading “Managing complexity in Blueprints”
We’ve worked really hard to provide you guys with lots of helpful shortcuts to streamline your workflow within the Editor. One of those improvements is the addition of asset navigation shortcuts.
Opening an asset to edit
You can Pick an asset to edit from almost anywhere in the editor by using the Ctrl+P shortcut. This will open an asset picker with the search box already focused. Once you’ve filtered the results, you can use the arrow keys to select an asset and hit Enter to start editing it. The mouse also works to select or scroll, and you can even drag/drop out of the picker into the level editor.
Working with the assets of selected actors
When you have one or more selected actors in the level editor, you can Edit their associated assets using Ctrl+E. For example, a selected static mesh actor will open the associated static mesh, while a selected blueprint instance will open the blueprint.
If you want to perform some other action on the asset, or just find out where it lives in the Content tree, you can use Ctrl+B to select the associated asset in the Content Browser. This shortcut also works in any asset editor, selecting the current asset being edited in the content browser.
So, source control is awesome, and you should be using it! One of the benefits of source control is being able to look at previous versions of files and compare or ‘diff’ them to see how things have changed. However, regular diff tools don’t work very well on binary files like Unreal .uasset packages. We’ve got you covered with support for exporting a text version of assets that can be diffed using your preferred tool, as well as a built-in specialized diff tool for Blueprints.
You’ll need to store your project in a supported source control system for the built-in tools to work. The editor currently has source control plugins for both Perforce and SVN. Perforce is what we use internally at Epic, and it is now free for up to 20 users (and 20 workspaces; you’ll probably end up using 2 or 3 per human user). SVN is totally free and there are a number of cloud SVN providers if you don’t want to host your own server.
Note: SVN binaries were not included in the 4.0 release, check out this thread for more details.
You can tell if your editor is currently connected to source control by the little icon on the top right of the main frame, next to the [Enter console command] prompt. If the icon is green, you are already connected, but if it shows up as a red no sign then click on it to enter your server settings.
Next, you need to tell the editor where it can find your favorite text diff tool in Editor Preferences. It defaults to p4merge, but almost any diff tool should work (e.g., Beyond Compare, Araxis Merge, Tortoise Merge, etc…)
Once you are connected, you’ll see additional options in the context menu for Assets, such as ‘Check Out’, ‘History’, and ‘Diff Against Depot’. Any asset can be diffed, and the default handler will export the asset to a readable text format and launch your preferred text diffing tool (some assets have a more sophisticated viewer). Comparing your current version against depot before checking in is a useful habit to form; it will help you write better checkin comments and can also help catch changes you made to test something but didn’t intend to keep.
History gives you a full list of the previous checkins and their descriptions, and you can diff any two arbitrary revisions from the history window (select two revisions and right-click). This can be extremely useful when trying to track down a regression (be kind to future you and write good checkin comments).
Blueprints are a much more visual medium and a textual diff wouldn’t be very helpful. The editor has a built-in diffing tool for blueprints where you can look at differences in each graph or diff the default values. We’ll talk about this in more detail in a future blog post, but here’s a picture of the tool