Engine Features Preview 1/7/2015

We’re excited to share a few of the new features now available on the Master branch on GitHub. To be able to try out these new features, you will need to download the source code for the Master branch and build the Engine yourself. For more information about how to build the Engine from source code, please see this page. The Master branch on GitHub is constantly being updated and is not quality tested so it may be potentially unstable. We do not recommend using the Master branch for project development. If you wish to wait, these features will be made available to all in an upcoming official release.

Engine News

New Features

New: Project Launcher

The new Project Launcher interface allows you to package and run your game with more control. It has various features that are useful when testing your game on multiple types of devices and configurations, as well as running multiple sessions simultaneously.

Of course, you can still run your game using the convenient “Launch” button on the toolbar. But if you need more flexibility, just open up the the Project Launcher from either the “Launch On” drop down or the Window menu.

1.png&stc=1

The Project Launcher has features for cooking data for your game as well as packaging and running on multiple devices. Read below for a quick overview of the features.

The first section which we refer to as “Quick Launch” allows you to launch the game on your devices very similar to how “Launch” on the toolbar would.

&stc=1

However, you can click the Advanced button to give a few commonly used advanced options, such as the configuration to build and run (Debug, Development, Shipping, etc.)

3.png&stc=1

Still need more control? Then it is time to create a custom launch profile.

4.png&stc=1

In this example we have two custom profiles.

Editing one or creating a new custom profile will let us set all the advanced options.

&stc=1

Launching a profile will run all the steps associated with it. Showing the status and logged information.

&stc=1

New: Software Cursor Support!

Software Cursor support has been added to both Unreal Motion Graphics and Slate UIs.

Software cursors can be useful in a number of cases:
Adding cursors to platforms that do not have hardware cursors. For example, a virtual mouse cursor on a console.
Adding cursors which are visually rich, have animations, or have complicated interactions.
Adding cursors that look consistent across PC, Mac, Linux without having to worry about the platform specific formats.

You can use the new “User Interface” section of Project Settings to setup your game’s software cursor Widgets. If you do not specify a cursor, you will get a default hardware cursor.

&stc=1

Notes:

  • Since the software cursor is actually a Widget Blueprint, you can use all the functionality of the UI system, add text, health meters, whatever you desire.
  • It is important to remember that operating systems do special rendering (generally high frame rate composition) for the cursor, which means it is very smooth regardless of the games frame rate.
  • Software cursors are rendered by the as part of the frame, so your cursor’s movement will be limited by your game’s frame rate.

Very nice update. Two quick questions:

1: Can you please explain about the Cook Options in Project Launcher? ie: By the book and On the fly?
2: Is Software cursor only for games or does it work for both editor and game?

[=;202323]
Very nice update. Two quick questions:

1: Can you please explain about the Cook Options in Project Launcher? ie: By the book and On the fly?
2: Is Software cursor only for games or does it work for both editor and game?
[/]

1: “On the fly” creates a file server on your machine and the device must be on the same router to run the program. “By the book” cooks and packages directly to the device (I’m paraphrasing a bit, but that’s the general idea)
2: it’s in-application only right now. It’s tied to Widget Blueprint code for allowing more dynamic game cursors, but those only appear “in game”

Super excited about the Software Cursor support. We were just working on trying to get this to work! Thanks.

It’s still not possible to launch (package) a blueprint only project with plugins, right?

What about custom hardware cursor, for games where smooth cursor is important (such RTS)?

[= ;202381]
1: “On the fly” creates a file server on your machine and the device must be on the same router to run the program. “By the book” cooks and packages directly to the device (I’m paraphrasing a bit, but that’s the general idea)
[/]

Thank you very much . So I think we should use By the book option when distributing our game…right?

Two questions regarding the software cursor, as we have hacked in something like this, too and I would like to get rid of our custom code:

a) Is it possible to control that cursor via a gamepad or programmatically (to control it via the gamepad on a console in the end)?

b) Is it possible to have one cursor per player for local coop gameplay and menus?

[= ;202514]
It’s still not possible to launch (package) a blueprint only project with plugins, right?
[/]

That is correct, we’re still figuring that out for a future release. You can workaround by adding code to the project and packaging with an executable that will have the plugins compiled in (provided the plugins you acquired have static libraries distributed with them, or the original source code.)

[=mkamradt;202696]
Two questions regarding the software cursor, as we have hacked in something like this, too and I would like to get rid of our custom code:

a) Is it possible to control that cursor via a gamepad or programmatically (to control it via the gamepad on a console in the end)?

b) Is it possible to have one cursor per player for local coop gameplay and menus?

[/]

It is possible to control the cursor with a joystick using an input processor.
Register a preprocessor with


FSlateApplication::Get().SetInputPreProcessor(...)

Check out FAnalogCursor in Engine\Source\Runtime\Slate\Public\Framework\Application\AnalogCursor.h
Which is an example of a simple cursor controlled by a joystick.

Unfortunately we do not support multiple Cursors, this is a limitation of our low level slate.
It’s a known issue but hasn’t really been a priority, split screen with joystick cursors is probably a relatively rare use case.
Regardless i’ll use this to put a little more priority on the tasks, at this time i can’t give any idea about when it would be scheduled.

If you create your own input processor (or just listen to input events through player input) you could trivially track the position of multiple cursors, and simply position your own cursor at that location.
This will not interact with our UI however, thought is was worth mentioning in case you didn’t need to interact with the UI system. Like a point and shoot game.

Thanks for the update. Sounds good so far. We may get along with a single cursor, however it needs to be controllable by different players in turn. I guess that is doable with an input processor.

I will look into this when the official 4.7 is released as I need to update Windows, PlayStation 4 and Xbox One at once which I rather not do too often. I will stick with 4.6.1 until then.

Does it mean that the software cursor can be used as a world actor with a Widget component inside ?

[= ;202806]
That is correct, we’re still figuring that out for a future release.
[/]

So it will still take some months until its possible? For me personally its not super important, until my game is not ready to be released I dont really need to package it :slight_smile: But being able to send it to friends would be nice. I would prefer to never use any code in my project, I don’t want to think about settings stuff like visual up and so on. So I will just wait and hope you will implement it in 4.8 :rolleyes:

[=Daemon Vanderpool;204289]
Will the issue of not being able to call Event Node for Event Dispatcher be fixed by 4.7?
[/]

This, wasted alot of time this weekend duplicating broken Widgets as when you add event dispatcher and an out variable it crashes (Note when placed in blueprint), only when you duplicate the blueprint can you actually work with it.

[=Daemon Vanderpool;204425]
Well hopefully it’s fixed soon. I tried a few things and I think there’s a few alternatives to work with I haven’t tried yet, but I’ll try that out and work in a separate blueprint in the blueprint’s graph of the UMG asset. I’m just now sort of learning how event dispatchers work from the Blueprint Advanced content example, I’ve also heard that maybe a blueprint interface may work, although those too I’m trying to get more use to using. First thing I was doing was working with the graph in the widget to call to another blueprint (trying to play an animation from UMG on a 3D button) then I saw the “Issues” list for 4.6 regarding event dispatching, but what I want everything to do eventually is be able to control animations and movement on various instances of a blueprint, probably from an array of these but only on certain individual ones, from UMG.

Edit: Just read that supposedly Event Dispatchers were working in 4.6.1, although that’s what I was using. Don’t know if that covers working directly from the UMG’s graph, it would be nice if it did though.

Edit again: Well I got it to work with a blueprint interface, I think the issue I was having was I had to enable mouse click events in the defaults of the player controller. The event dispatchers might be alright, so nevermind.
[/]

Thanks, After reading what you experienced I attempted to fix my blueprints but still cant get blueprints to communicate.