Best way to screen record Armory games?

OK, I know that I can run a dedicated screen recorder to record anything onscreen including Armory games. That has a number of downsides though, such as having to fiddle to match the window position and size, losing quality and raising file size unnecessarily by having mismatched frame rates etc.

I’m wondering if Armory has any built in screen recorder, similar to Blender (Alt+f3), and if so how to activate it?

If not, how is everyone else creating GIF’s to post here? Using a dedicated screen recorder and then a video editing app to convert to gif seems overly long and complicated, but maybe that’s the only way there is?

Armory doesn’t have a way to record the screen yet, I don’t think. It should be perfectly doable in the future. For now, check out this thread for creating GIFs. Also just try searching GitHub for tools for your OS.

@Armored_Blob I have made a grab_screen function to get an image of the environment for training my neural network like it’s done in tanks/Atrap and it’s running perfectly on Krome or Html.
That is the picture you take is coming from the Camera you choose for doing it.

Maybe you could reuse it to make your own screen record logic node that you then activate with an OnKeyboard.

Thereafter the code

function grab_screen() {
image = RenderPathCreator.finalTarget.image;
g.color = 0xffff0000;
if (image.g4.renderTargetsInvertedY()) {
g.drawScaledImage(image, 0, image.height / 5, image.width / 5, -image.height / 5);
}
else {
g.drawScaledImage(image, 0, 0, image.width / 5, image.height / 5);
}
pixels = image.getPixels();

return s.length;

}

with the following declarations:

package armory.logicnode;

import iron.object.CameraObject;

import armory.renderpath.RenderPathCreator;

import haxe.io.Bytes;

and in the class
var camera:CameraObject;

var image:kha.Image;

var pixels:Bytes;

var g = new kha.graphics2.Graphics();

var imagesize:Int;

var s:Array<Float>;

1 Like

OK, that looks easy. So @Armored_Blob theoretically, then, it looks like RenderPathCreator.finalTarget.image gives you a kha.Image object that has an Image.at() ( or Image.getPixels() ) function to get the color of each pixel in the frame and then use the Haxe format library to write out each frame to an FLV video file.

That would be cool, but I don’t have time to try it.

Maybe screen recording software?
ShadowPlay, Bandicam, Fraps, Mirillis Action, OBS, etc.

I’m well aware of screen recording software, and have been using it already.

As I mentioned in the original post, I’m looking for a way of recording Armory games that is optimized to match the window position, frame rate etc of the actual game.

The aforementioned Fraps does all of that and it’s not easy to beat it - Image.getPixels works of course but you’ll likely run into trouble handling the amount of data. Unless you want to record varying framerates but I don’t know whether any video formats support that so you might have to live without that in any case.