Posted on Leave a comment

Unity Super Sale On Now Until Dec 4th

Unity are running their annual Super Sale just in time for Black Friday, with 700+ assets 50% off as well as daily specials that are 70%+ off. Additionally if you purchase Unity pro or Unity Enterprise, you currently get an additional license, such as Unity Build, MARS, ArtEngine, Reflect or Pixyz, a heck of a deal if you were going to get a pro subscription anyways!

The daily deals are as follows:

The above items are only for sale on the date listed, so if you click a link on any other day you will see regular pricing. All of the above links contain an affiliate code that pays GFS a small commission if used (and thanks if you do!). You can learn more about the sale in the video below.

[youtube https://www.youtube.com/watch?v=GLcCN9IpRH4?feature=oembed&w=1500&h=844]
Posted on Leave a comment

Applied Math & Statistics Book Bundle

The Applied Math & Statistics Toolkit by Morgan & Claypool bundle is now live on Humble. While not directly books about game development math, they are more on math fundamentals and that is the underpinning of game development. As with all Humble Bundles it is organized into tiers:

1$ Tier

  • Essentials of Game Theory
  • Matrices in Engineering Problems
  • Statistics is Easy 2nd Edition

8$ Tier

  • Introduction to Logic 3rd Edition
  • An Introduction to Proofs with Set Theory
  • Discrete Distributions in Engineering and Applied Sciences
  • Analytical Performance Modeling for Computer Systems
  • Probability and Statistics for STEM

15$ Tier

  • An Introduction to Multivariable Mathematics
  • C Programming and Numerical Analysis
  • Essentials of Applied Math for Engineers and Scientists 2nd Edition
  • Fast Start Advanced Calculus
  • Fast Start Differential Calculus
  • Fast Start Integral Calculus
  • Introduction to Statistics Using R
  • An Introduction to Partial Differential Equations
  • An Introduction to Numerical Methods for Physical Sciences

As with all Humble Bundles, you decide how your funds are allocated, between the publisher, charity, Humble and if you so choose (and thanks if you do) to support GFS using this link. You can learn more about the bundle in the video below.

[youtube https://www.youtube.com/watch?v=FbcjGYTXLf8?feature=oembed&w=1500&h=844]
Posted on Leave a comment

Podman with capabilities on Fedora

Containerization is a booming technology. As many as seventy-five percent of global organizations could be running some type of containerization technology in the near future. Since widely used technologies are more likely to be targeted by hackers, securing containers is especially important. This article will demonstrate how POSIX capabilities are used to secure Podman containers. Podman is the default container management tool in RHEL8.

Determine the Podman container’s privilege mode

Containers run in either privileged or unprivileged mode. In privileged mode, the container uid 0 is mapped to the host’s uid 0. For some use cases, unprivileged containers lack sufficient access to the resources of the host machine. Technologies and techniques including Mandatory Access Control (apparmor, SELinux), seccomp filters, dropping of capabilities, and namespaces help to secure containers regardless of their mode of operation.

To determine the privilege mode from outside the container:

$ podman inspect --format="{{.HostConfig.Privileged}}" <container id>

If the above command returns true then the container is running in privileged mode. If it returns false then the container is running in unprivileged mode.

To determine the privilege mode from inside the container:

$ ip link add dummy0 type dummy

If this command allows you to create an interface then you are running a privileged container. Otherwise you are running an unprivileged container.

Capabilities

Namespaces isolate a container’s processes from arbitrary access to the resources of its host and from access to the resources of other containers running on the same host. Processes within privileged containers, however, might still be able to do things like alter the IP routing table, trace arbitrary processes, and load kernel modules. Capabilities allow one to apply finer-grained restrictions on what resources the processes within a container can access or alter; even when the container is running in privileged mode. Capabilities also allow one to assign privileges to an unprivileged container that it would not otherwise have.

For example, to add the NET_ADMIN capability to an unprivileged container so that a network interface can be created inside of the container, you would run podman with parameters similar to the following:

[root@vm1 ~]# podman run -it --cap-add=NET_ADMIN centos
[root@b27fea33ccf1 /]# ip link add dummy0 type dummy
[root@b27fea33ccf1 /]# ip link

The above commands demonstrate a dummy0 interface being created in an unprivileged container. Without the NET_ADMIN capability, an unprivileged container would not be able to create an interface. The above commands demonstrate how to grant a capability to an unprivileged container.

Currently, there are about 39 capabilities that can be granted or denied. Privileged containers are granted many capabilities by default. It is advisable to drop unneeded capabilities from privileged containers to make them more secure.

To drop all capabilities from a container:

$ podman run -it -d --name mycontainer --cap-drop=all centos

To list a container’s capabilities:

$ podman exec -it 48f11d9fa512 capsh --print

The above command should show that no capabilities are granted to the container.

Refer to the capabilities man page for a complete list of capabilities:

$ man capabilities

Use the capsh command to list the capabilities you currently possess:

$ capsh --print

As another example, the below command demonstrates dropping the NET_RAW capability from a container. Without the NET_RAW capability, servers on the internet cannot be pinged from within the container.

$ podman run -it --name mycontainer1 --cap-drop=net_raw centos
>>> ping google.com (will output error, operation not permitted)

As a final example, if your container were to only need the SETUID and SETGID capabilities, you could achieve such a permission set by dropping all capabilities and then re-adding only those two.

$ podman run -d --cap-drop=all --cap-add=setuid --cap-add=setgid fedora sleep 5 > /dev/null; pscap | grep sleep

The pscap command shown above should show the capabilities that have been granted to the container.

I hope you enjoyed this brief exploration of how capabilities are used to secure Podman containers.

Thank You!

Posted on Leave a comment

Blockbench 3D Modelling Application Review

BlockBench is a free 3d modelling, texturing and animation application for creating Minecraft style models. Blockbench is available on Windows, Mac and Linux, as well online.

Blockbench features include:

  • Blockbench is an all in one 3D Editor and Animator for Minecraft and other games and applications
  • Blockbench comes with a powerful animation editor. Animations can later be exported to Minecraft: Bedrock Edition, rendered in Blender or Maya, or shared on Sketchfab.
  • Customize Blockbench with the built-in plugin store. Or create your own plugin and add a new feature or new format.
  • Collaborate with your friends on models, textures and animations – in real time, over the internet!
  • Blockbench is available in 12 languages, and the number is growing.
  • Create, edit and paint texture right inside the program. Create or import palettes, paint, draw shapes or automatically create templates.

You can learn more about Blockbench and see it in action in the video below.

[youtube https://www.youtube.com/watch?v=emhdpVv0Gx8?feature=oembed&w=1500&h=844]
Posted on Leave a comment

Epic Games Invest in Houdini Maker SideFX Software

Epic Games have just made an investment in SideFX Software, the maker of the procedural graphics powerhouse software Houdini.

Details of the investment from the SideFX blog:

We’re happy to share an exciting update: Epic Games is now a minority investor in SideFX. In Epic, SideFX gains a strong partner whose passion for the industry closely aligns with ours.

Kim Davidson remains the majority owner of SideFX, as well as President and CEO. He continues his strong, unwavering commitment to SideFX’s staff, customers, and partners.

SideFX and Epic are both committed to SideFX continuing its work with other industry partners – including all other content creation applications and game engines. This new development will have no impact at all on the Houdini development roadmap, as SideFX will continue to define its own path as an industry-leading procedural 3D platform for the film, TV, advertising and games sectors.

Dollar values of the investment were not disclosed. From the announcement it appears the investment should have minimal impact on neither Houdini or Unreal Engine. Epic Games have been making more and more investments of late including their $15M investment in Manticore Games.

Posted on Leave a comment

Babylon.JS 4.2 Game Engine Released

Babylon.js, the open source 3D web based game engine, just released version 4.2 with a ton of new features and tools. Key features of the 4.2 release include:

  • New particle editor for direct creation of particle systems in the Inspector
New Node System in Babylon.js
  • new Sprite Editor built into the Inspector to create, control and save sprites
  • new Skeleton viewer to visual bones and bone weights in Inspector
  • texture inspector for debugging texture issues
  • PBR support in the Node material editor with access to metallic, roughness, clearcoat, sheen etc when creating materials
  • new Procedural Texture, Particle Shader, Post Processing modes added to the Node editor
  • reusable frames in Node Material editor, enabling you to reuse shader code between projects easily
  • playground templates, essentially quick access code snippets in the code editor using Ctrl+Space
  • direct support for pre-filtered .hdr files
  • support for React Native for creating native applications
  • KTX + Basis U texture compression support
  • much, much more

You can learn more about the release in this article here or by watching the video below. Babylon.js is an open source project under the Apache 2 license with the source code available on GitHub. If you are interested in learning more about Babylon, be sure to check out our older Babylon.js tutorial series.

[youtube https://www.youtube.com/watch?v=aiTAfDB8Dis?feature=oembed&w=1500&h=844]
Posted on Leave a comment

Luminar 4 with Affinity Photo

This tutorial is going to be a little outside the normal topic of game development but should still be of interest to some of you because Luminar 4 is currently available on Humble Bundle. Luminar 4 is an AI powered image manipulation program that’s easy enough even I can use it! One of the challenges though is that it doesn’t formally support Affinity Photo out of the box, and Affinity Photo is my photo manipulation weapon of choice. Therefore in this tutorial we will show how to get Luminar 4 up and running on Affinity Photo 1.8.

If you are simply interested in learning more about Luminar 4 be sure to check out our hands-on video, it’s an impressive program.

Installing Luminar 4 with Affinity Photo

First, install Luminar 4. Just go with the defaults and don’t worry about the plugins portion if you don’t already have Photoshop installed.

After Luminar is installed, navigate to the install folder in Explorer. In my case it’s C:\Program Files\Skylum\Luminar 4. Once there, locate and copy the file Luminar4.8bf. Now we need to copy it into the Adobe plugins folder, a folder that you will most likely have to create. In explorer go to the folder C:\Program Files\Common Files and if one does not exist, create a folder called Adobe. Inside Adobe create a folder called Plug-ins, then inside that create a folder called CC, then paste the Luminar4.8bf file into that directory. The end result should be something like this:

Luminar 4 plugin folder creation for Adobe Photoshop in use with Affinity Photo

Now right click Luminar 4 in the start menu and Run as Administrator. Now select File->Install Plugins from the main menu.

Install Plugins Menu in Luminar 4

So long as you copied the file earlier into the right folder, you should now see Uninstall in the resulting Window.

Uninstall Luminar Plugin

Click Uninstall then Install and you are done with Luminar. Now fire up Affinity Photo and select Edit->Preferences. In the resulting window select Photoshop Plugins.

Selecting Photoshop Plugins in Affinity Photo

Now click the add button, then select the Luminar directory.

Adding the plugin in Photo

Once selected, Luminar 4 should show up in the detected plugins section. After installing the plugin it will prompt you to restart Affinity Photo. Once done, you can access Luminar 4 in Plugins->Skylum Software->Luminar 4

Running Luminar 4 in Affinity Photo

While these instructions are specific to Affinity Photo, any program such as Paintshop Pro should also be able to install Luminar using this process.

You can learn more about Luminar 4 and the Humble Bundle (plus see the above process in action) in the video below. The Humble links contain an affiliate code that enables you to direct a portion of the proceeds from your purchase to support GFS and thanks so much if you do!

[youtube https://www.youtube.com/watch?v=LIIRvS_mMD0?feature=oembed&w=1500&h=844]
Posted on Leave a comment

Godot FBX Importer Improvements In Godot 3.2.4

In Godot 3.2 FBX support was improved by implementing the open source AssImp library. In the upcoming release of Godot 3.2.4 we are getting an all new FBX importer. While based on AssImp initially, this project took over a year to developed, removed over 50K lines of non-FBX related code and made improvements across the board.

Developer Gordon MacPherson recently wrote about the experience on the Godot blog and detailed the following changes:

  • We rewrote all the mesh code to support all formats of FBX meshes correctly.
  • We built an entire abstraction for the FBX transform information, which was a very complex and convoluted undertaking to get working properly.
  • We designed a better handler for the animations which can compensate for the complex transform information, which means that we can handle animations correctly.

The project is ready for use but there are some plans in the pipeline:

  • Finish porting the rewrite to Godot 4.0 (we use the 3.2 branch in production, so that’s where this was developed and quality controlled by many users).
  • Locator bones. Right now, you need to bake your animation before exporting.
  • Improve material mappings (most are supported, some need mapping).
  • Fix bugs in the beta phase, we expect them.

Be sure to check out the blog post for details on the project, why they did it and why you should care. In the video below we put Godot 3.2.4 through the paces with a couple FBX tests, including this scene from Sketchfab. Unfortunately until Godot 3.2.4 is released, you will have to build Godot from source, just be sure to checkout the 3.2 branch from GitHub. Special thanks to IMVU for sponsoring the project.

[youtube https://www.youtube.com/watch?v=60Ofqmytzu0?feature=oembed&w=1500&h=844]
Posted on Leave a comment

Using Fedora 33 with Microsoft’s WSL2

If you’re like me, you may find yourself running Windows for a variety of reasons from work to gaming. Sure you could run Fedora in a virtual machine or as a container, but those don’t blend into a common windows experience as easily as the Windows Subsystem for Linux (WSL). Using Fedora via WSL will let you blend the two environments together for a fantastic development environment.

Prerequisites

There are a few basics you’ll need in order to make this all work. You should be running Windows 10, and have WSL2 installed already. If not, check out the Microsoft documentation for instructions, and come back here when you’re finished. Microsoft recommends setting wsl2 as the distro default for simplicity. This guide assumes you’ve done that.

Next, you’re going to need some means of unpacking xz compressed files. You can do this with another WSL-based distribution, or use 7zip.

Download a Fedora 33 rootfs

Since Fedora doesn’t ship an actual rootfs archive, we’re going to abuse the one used to generate the container image for dockerhub. You will want to download the tar.xz file from the fedora-cloud GitHub repository. Once you have the tar.xz, uncompress it, but don’t unpack it. You want to end up with something like fedora-33-datestamp.tar. Once you have that, you’re ready to build the image.

Composing the WSL Fedora build

I prefer to use c:\distros, but you can choose nearly whatever location you want. Whatever you choose, make sure the top level path exists before you import the build. Now open a cmd or powershell prompt, because it’s time to import:

 
wsl.exe --import Fedora-33 c:\distros\Fedora-33 $HOME\Downloads\fedora-33.tar

You will see Fedora-33 show up in wsl’s list

 
PS C:\Users\jperrin> wsl.exe -l -v
  NAME                   STATE           VERSION
  Fedora-33                 Stopped         2

From here, you can start to play around with Fedora in wsl, but we have a few things we need to do to make it actually useful as a wsl distro.

 
wsl -d Fedora-33

This will launch Fedora’s wsl instance as the root user. From here, you’re going to install a few core packages and set a new default user. You’re also going to need to configure sudo, otherwise you won’t be able to easily elevate privileges if you need to install something else later.

 
dnf update
dnf install wget curl sudo ncurses dnf-plugins-core dnf-utils passwd findutils

wslutilites uses curl and wget for things like VS Code integration, so they’re useful to have around. Since you need to use a Copr repo for this, you want the added dnf functionality.

Add your user

Now it’s time to add your user, and set it as the default.

 
useradd -G wheel yourusername
passwd yourusername

Now that you’ve created your username and added a password, make sure they work. Exit the wsl instance, and launch it again, this time specifying the username. You’re also going to test sudo, and check your uid.

 
wsl -d Fedora-33 -u yourusername
$id -u
1000
$ sudo cat /etc/shadow

Assuming everything worked fine, you’re now ready to set the default user for your Fedora setup in Windows. To do this, exit the wsl instance and get back into Powershell. This Powershell one-liner configures your user properly:

 
Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\*\ DistributionName | Where-Object -Property DistributionName -eq Fedora-33  | Set-ItemProperty -Name DefaultUid -Value 1000

Now you should be able to launch WSL again without specifying a user, and be yourself instead of root.

Customize!

From here, you’re done getting the basic Fedora 33 setup running in wsl, but it doesn’t have the Windows integration piece yet. If this is something you want, there’s a Copr repo to enable. If you choose to add this piece, you’ll be able to run Windows apps directly from inside your shell, as well as integrate your Linux environment easily with VS Code. Note that Copr is not officially supported by Fedora infrastructure. Use packages at your own risk

 
dnf copr enable trustywolf/wslu

Now you can go configure your terminal, setup a Python development environment, or however else you want to use Fedora 33. Enjoy!

Posted on Leave a comment

Creature 3D Animation Software Now In Alpha

Kestrel Moon software, creators of the Creature 2D animation software have just released the very first 0.1 alpha of Creature3D. Creature 3D is a stand-alone 3D animation application, currently available for Windows 64 machines for free, for rigging and animating characters using procedural animation.

Features of Creature 3D:

Procedural Animation at your fingertips

Walk Cycles, Tail Animation, Ropes, Skin Sliding and Dynamic Flesh/Breathing Motion are a breeze with Creature3D’s state of the art Procedural Motor System. Take full manual control by tweaking both keyframes and animation splines.

Fast, Easy setup of Characters

Easily rig your Characters via Auto or Manual Rigging Modes. Add bones, then pick between Auto Weight or Manual brush painting for your Skin Weights.

Export your Animations to the World

Export your animation as industry supported mainstream FBX or GLTF assets which can then be imported into Game Engines like UE4 or Unity.

You can learn more about and download Creature here. If you want to get started with Creature 3D there are a few sample projects now available here. You can learn more about Creature 3D and see it in action in the video below.

[youtube https://www.youtube.com/watch?v=tqO37ZlDqiw?feature=oembed&w=1500&h=844]