Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon
27. January 2020

The Ursina Engine is a recently released open source Python based 3D game engine.  The Ursina Engine is built on top of the well established Panda3D game engine (learn more here).  Key features of the Ursina Engine include:

* hotreload code/textures/models while in-game
* automatic import of .psd and .blend files
* play in fullscreen while developing
* easy to use mesh class for making procedural geometry
* lots of included procedural 3D primitives

The Ursina Engine is available for Windows, Mac and Linux with the source code available on GitHub under the MIT license.  To get started with the Ursina Engine you need to have Python 3.6 or later installed as well as the pip package manger and git.   Once installed, simply run the command:

pip install git+

If you encounter a permissions error, add the –user parameter to the above line.  From the examples, here is the code required to create an application and display a grid:

from ursina import *

app = Ursina()

r = 8
for i in range(1, r):
    t = i/r
    s = 4*i
    grid = Entity(model=Grid(s,s), scale=s, color=color.color(0,0,.8,lerp(.8,0,t)), rotation_x=90, position=(-s/2, i/1000, -s/2))
    subgrid = duplicate(grid)
    subgrid.model = Grid(s*4, s*4)
    subgrid.color = color.color(0,0,.4,lerp(.8,0,t))

You can learn more about the Ursina Engine in the video below.

GameDev News

25. January 2020

Over on the Unity blog there is a discussion of the upcoming changes to VR and AR support in Unity 2019.3.  The Unity engine is migrating to a new plugin based framework called the Unity XR SDK.

We have been working to improve our multi-platform offering, enabling direct integrations through a unified plugin framework. The resulting tech stack consists of an API that exposes common functionalities across our supported platforms in a frictionless way for creators while enabling XR hardware and software providers to develop their own Unity plugins. This architecture offers the following benefits:

  • Multi-platform developer tools such as AR Foundation and the XR Interaction Toolkit
  • Faster partner updates from supported plugins via the Unity Package Manager
  • More platforms have access to an interface to leverage Unity’s XR rendering optimizations and developer tools

Unity has developed new XR plugins for our supported platforms as part of this shift. Additionally, we have deprecated our built-in platform implementations in 2019.3.

With the move to a plugin architecture future support for OpenXR will be handled by Valve in the future.  From version 2019.3 onward, GearVR, Daydream and Vuforia will no longer be supported, forcing you to use the Unity 2018 LTS release if you wish to support those platforms.  Additionally Google Cardboard support is ultimately going to be provided by this Google open source project.

In comments there was further details about VR/AR support improvements in the Unity 2019.3:

Hi Felix, Unity’s 2019.3 release is coming soon, and there are new features in XR that will roll out in that update. In 2019.3, we have enabled Vulkan for Oculus Quest, using multiview fixed foveated rendering (FFR). Additionally, the Universal Rendering Pipeline (URP) and High-Definition Rendering Pipeline (HDRP) are both supported in our XR SDK, and will continue to be supported. Lastly, our new XR Plugins are compatible with the new input system. That means if you add the Magic Leap XR Plugin and Input System packages, for example, you will get the controller layouts for Magic Leap devices.

You can learn more about the changes in the video below.

GameDev News

24. January 2020

Tiled, the open source map editing software, just released version 1.3.2.  Along side that release was a development snapshot with new features that will be available in the next release.  If you want learn Tiled we have an in-depth tutorial series available here.

Details of the 1.3.2 release:

  • Fixed initialization of selected layers (#2719)
  • Fixed stamp action shortcuts not being configurable (#2684)
  • Fixed the tileset view to respect the 'wheel zooms by default' preference
  • Fixed insertion position when using drag-n-drop to rearrange layers
  • Fixed displayed layer data format in Properties
  • Fixed repeating of export when map is saved by a custom command (#2709)
  • Fixed issue when multiple worlds are loaded that use pattern matching
  • Issues view can now be hidden by clicking the status bar counters
  • macOS: Fixed black toolbar when enabling OpenGL rendering (#1839)
  • Windows: Fixed context menus activating first item on release (#2693)
  • Windows installer: Include the 'defoldcollection' plugin (#2677)
  • Windows installer: Signed by SignPath
  • libtiled: Avoid inheriting Properties from QVariantMap (#2679)
  • docs: Added some notes to Python and JavaScript pages (#2725)
  • Updated Qt from 5.12.5 to 5.12.6
  • Updated Finnish translation (by Tuomas Lähteenmäki and odamite)
  • Updated part of Italian translation (by Katia Piazza)

As well as details from the developmental release:

Tinting Layers

Layers can now be tinted by multiplying their pixels with a color. This way you can darken or colorize your graphics in various ways without needing to set up separate images for it! The new "Tint Color" property is supported on tile layers, object layers and image layers, and is inherited from group layers.

Object Alignment

Ever since tile objects were added as a feature, their alignment has been inconsistent with the other shapes. Whereas a rectangle had its origin in the top-left, tile objects had their origin in the bottom-left (or even bottom-center, on isometric maps). While useful in some contexts, this inconsistency has annoyed many people over the years.

Now, a new tileset property specifies which alignment to use for tile objects using that tileset. If you set it to top-left, the tile objects will align consistently with the other objects. But of course you could also choose for bottom-center or center alignment depending on your needs.

Object Reference Properties

This change is a big step towards the Connecting Objects feature, which is planned for Tiled 1.4. You can now choose "object" as the type when adding a custom property, and the property will be interpreted as a reference to an object on the map, referring to it by its unique ID. A special dialog makes it easy to search for the object you want to refer to and the name of the referenced object will be displayed.

Tiled is available as a free download for Mac, Windows and Linux here.  The source code for Tiled is available on GitHub.

GameDev News

23. January 2020

Phaser Editor just released version 2.1.6.  Phaser Editor is an open source commercial game editor built on top of the Phaser game engine built on top of the Eclipse editor.  The 2.1.6 release brings Phaser editor to parity with the most current versions of Phaser and Eclipse.

Details from the release notes:

Phaser 3.22.0

The latest version of Phaser is now built-in. It is included in the project wizards, the Scene Editor, and the Phaser Labs tools.

The Phaser runtime files of your old projects are not updated. If you wish to update your game runtime to the new Phaser version you should do it manually. Learn more about it in the docs.

Eclipse IDE

We updated the editor to the latest Eclipse version (2019-12).

Asset Pack

  • #139: Use relative names of asset pack files in the new file dialogs:

  • #137: Bugfix: the New File wizard adds the new file to all the asset packs.

  • #138 Parameter to use the container folder as the key prefix of the new file items.

Now you can enable the Use container folder as a prefix for new asset keys parameter. It is in the global preferences (Window > Preferences > Phaser Editor > Asset Pack Editor). By default it is disabled.

If the parameter is enabled, when you add new assets it will use the name of the container folder of the asset pack as the prefix of the new key. For example, if you add a file background.png and the asset pack file is in the folder level3, then the new key will be level3.background. Only in case of scene files, the prefix is ignored.

Texture Packer

  • #141 Show import button in Properties.

macOS Mojave users are experiencing problems to drop files into the Texture Packer editor. We added a new button in the Properties view to import the files selected in the Blocks view.

Text editors

  • #142: Bugfix: cursor is lost in a text editor after save (Windows 10).

Phaser Editor is available for download on Linux, Mac and Windows here.  PhaserEditor is open source under the EPL license available here on GitHub.  Learn more seeing Phaser Editor in action in the video below.

GameDev News

22. January 2020

Material Maker 0.8 was just released.  Material Maker is a free procedural texture generation software that was built on top of the Godot game engine.  We previously covered Material Maker in this video.  The 0.8 release brings several new features including several new nodes and examples.

Details from the page:

Regressions and incompatibilities

Bad news come first, as always:

  • 2D SDF nodes do not output greyscale information and cannot be directly connected to greyscale/color/RGBA inputs anymore. you will have to use the sdShow Node
User interface
  • the 2D and 3D previews are now in separate tabs
  • the 3D preview in the background of the graph pane can now be shown and hidden using the "cube" button at the bottom left of the graph view and controlled independently,
  • the 2D preview now shows a tiled version of the selected node (so it's easy to check the result is seamless)
  • the 2D preview now has controls that can be associated to (float) node parameters (this applies mainly to shape/transform nodes)the UI will now be dimmed when exiting the application (this change was contributed by Calinou)
Nodes and code generation
  • 2 new types of node inputs/outputs have been added for 2D and 3D signed distance functions. Both types have a custom preview (distance field for 2DSDF and shaded scene for 3DSDF)
  • shader nodes inputs now have a "function" attribute. When this option is selected, the input is generated as a function and is usable in instance Functions. This feature made all 3D SDF nodes possible.
  • a few problems in convolution nodes have been fixed
New and improved nodes
  • all 2D signed distance functions have been modified to use the 2DSDF inputs/outputs (that are shown in orange). The sdShow node is now the only way to generate an image. Added 2DSDF transform and morph nodes.
  • the new 3D signed distance functions nodes can be used to describe 3D shapes. Many shapes (sphere, box, capsule, torus, cylinder...), transforms (translate, rotate, scale), operators (boolean, repeat, extrusion, revolution...) are provided and the Render node can be used to generate a height map and a normal map from 3DSDF information. All this is based on ray marching and can be used to describe 3D objects that can then be spread on the textures, as demonstrated in the "skulls" and "pile_of_bricks" examples.
  • the new 3D box and a sphere nodes are not based on 3DSDF and just output a height map
  • the new "workflow" nodes can be used to define base materials and mix them using height/orientation/offset maps, and to ultimately create complex materials without drawing spaghetti monsters in the graph view. A few simple base materials are provided in the node library as templates. The new "marble" and the updated "medieval_wall" examples show how to use all those nodes.

  • the bricks node has been improved with round brick corners and output UV information for each brick and each brick corner. Also added an output that gives brick orientation.
  • the new CustomUV node uses one of its input as coordinates to read the other input and can thus be used to implement psychedelic image transforms
  • the new generic truchet node tiles its input, randomly flipping it horizontally, vertically or both
  • the beehive node just outputs hexagonal tiles
  • the new convolution nodes are 3 edge detectors and a sharpen filter
  • the normal map node has a new option to disable its input buffer. The buffer should still be used when the input is complex, but disabling it will generate smoother normal maps
  • the new greyscale node converts color input to greyscale with a choice of 5 algorithms
  • the new swap channels node replaces all channels (R, G, B, A) of its output with 0, 1 or a (optionnally inverted) channel of its input

Material Maker 0.8 is available for download for Windows and Linux here.  You can learn more about Material Maker 0.8 in the video below.

GameDev News

AppGameKit Studio

See More Tutorials on!

Month List