Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon
23. October 2018

Amethyst 0.9 was just released.  Amethyst is a Rust powered data driven open source game engine built for highly parallel and performant code and implements an Entity Component System.  The 0.9 release included a new way to draw sprites, a new networking system, an experimental runtime editor support and more.

Complete details of the release from the release notes:

  • Added base networking implementation and the amethyst_network crate. (#969)
  • Support for debug lines using DebugLines pass, and DebugLines component or resource. (#917, #957)
  • Added JsonFormat (#950).
  • SpriteRender pass to draw sprites without using Material and Mesh. (#829, #830)
  • Sprite animation uses the SpriteRenderChannel. (#829, #830)
  • State::handle_event can now handle multiple types of events. (#887)
  • Added Named Component. (#879)(#896)
  • Support for progressive jpeg loading. (#877)
  • New application_root_dir() function in amethyst_utils. (#831)
  • Load node names for glTF prefabs. (#905)
  • Added automatic camera matrix resizing to allow clean screen resizes. (#920)
  • Added the Removal component to facilitate manual entity removal and scene cleaning. (#920)
  • Added DestroyAtTime and DestroyInTime components to easily destroy entities. (#920)
  • Support for loading TGA images. (#934)
  • GltfPrefab adds MeshData as a component on loaded entities. This is not configurable until the Prefab rework. (#946)
  • Added implementation of From<Vector3> for Transform which creates a Transform using Vector3 as the translation vector. (#946)
  • New vertices() method on MeshCreator trait. (#946)
  • Support for text alignment (align left, center, right). (#965)
  • Support for multiline text. (#965)
  • Added custom aspect ratio to OrthoCamera. (#983)
  • Added AntiStorage documentation to the book. (#997)
  • You can now stop the rotation of the FreeRotationSystem by setting HideCursor.hide value to false. (#997)
  • Support for logging to file, toggle for logging to stdout. (#976, #994)
  • Added a Hidden Component, that hides a single entity, and a HideHierarchySystem that toggles Hidden on all children when used. (#1001)
  • Documentation for drawing sprites. (#971)
  • Added shadow_update() and shadow_fixed_update() to the State trait. (#1006)
  • Added configurable width for debug lines. (#1016)
  • Added TextureMetadata::srgb_scale() for default texture metadata with nearest filter. (#1023)
  • Added motivation to use Amethyst over gluing the building blocks yourself in the book. (#1057)
  • Sprites contain their dimensions and offsets to render them with the right size and desired position. (#829, #830)
  • Texture coordinates for sprites are 1.0 at the top of the texture and 0.0 at the bottom. (#829, #830)
  • Made get_camera public. ([#878)]
  • Simplified creating states with SimpleState and EmptyState. (#887)
  • Updated ProgressCounter to show loading errors. (#892)
  • Replaced the imagefmt crate with image. (#877)
  • Optimize Sprite rendering via batching. (#902)
  • Derive Debug and PartialEq for amethyst_input::Axis. (#903, #904)
  • Updated winit to 0.17 (see Winit's changelog). (#906)
  • Updated glutin to 0.18 (see Glutin's changelog). (#906)
  • Updated gfx_window_glutin to 0.26. (#906)
  • Updated hetseq to 0.2. (#906)
  • Removed unwraps from StateMachine (#940)
  • Renamed ArcBallMovementSystem to ArcBallRotationSystem. (#946)
  • Moved the ArcBallMovementSystem::get_axis method to amethyst_input/src/utils: get_input_axis_simple (#946)
  • Ui Y axis is now from bottom to top. (#946)
  • Fixed issue with global anchors not actually aligning ui elements and containers properly. (#946)
  • Fixed issue with ui events not triggering at times. (#946)
  • Reduced the complexity of the UiPass and associated shaders. (#946)
  • Added comments to UiPass and shaders explaining what is going on. (#946)
  • The z in UiTransformBuilder now defaults to 1 instead of 0, allowing to skip defining the z in the ui prefabs. (#946)
  • Added comments to ui prefab. (#946)
  • Summarized all use amethyst:: statements to allow collapsing in IDE's. (#974)
  • Application now uses EventReaders to determine what events to send to the States, more information in the State book chapter (#996)
  • Breaking: Refactor TextureMetadata so filter method and clamping can be configured more easily (#981)
  • Renamed PrefabData functions to be easier to understand (#1008)
  • LMenu and RMenu key codes, following the winit update. (#906)
  • Material ids in GLTF loader caused multiple GLTF files to get incorrect materials applied. (#915)
  • Fix render gamma for most textures. (#868)
  • Joint entities can only be part of a single skin: Materials are not swapped anymore. (#933)
  • Fixed regression in sprite positioning after batching. (#929)
  • Now loading default fonts from the system for UiButton (#964)
  • Fixed single frame animation (#1015)
  • Improved compatibility with older drivers (#1012)
  • Forgotten channel field on examples/ui prefab (#1024)
  • AssetPrefab loaded files at an incorrect time (#1020)
  • Removed unreachable code in TexturePrefab (#1020)
  • Fix OpenGL not rendering on window creation due to glutin bug (#972)
  • Fix debug lines panic when no lines are rendered (#1049)

More information about Amethyst is available here.  The game engine is available under the MIT and Apache licenses on GitHub.

GameDev News

22. October 2018

Beta 54 of GDevelop 5 was just released with a major change to the way you develop in GDevelop 5, functions.  Using functions and extensions, you can easily structure you code in a way that is easily reused and shared across your GDevelop games, as well as possibly with other developers.  In addition to functions, this release also integrates the jsfx sound effects generator, enabling you to create sound effects directly within GDevelop.  If you are interested in learning more about GDevelop, check out our earlier hands-on video available here.  Also be sure to watch the video embedded below to see beta 54 in action.

Details of the release from the release notes:

New features

  • Introducing Functions ⚙️. Functions allow you to create new actions, conditions or expressions using events.
    • This is an advanced and very powerful feature: Functions will be shareable in the near future, allowing for even faster game creation and sharing of features between games.
    • Read more about functions on the wiki.
    • This feature is in alpha mode (and may slightly evolve). You must enable it manually in the preferences. Please report any issue!
  • Added jsfx, a sound generator that can be used to create sound effects in record time for your games.
    • Open it by clicking on the pen next the audio file in actions to play sounds.
    • Thanks @blurymind for suggesting and implementing this addition.


  • Objects can now be positionned on the scene by drag'n'dropping them from the list of objects to the scene.
    • You can also click on an object in the list, right click on the scene and choose the option to add an instance of it. (Thanks @blurymind!)
  • Added 3 new examples (Thanks @ddabrahim!)
    • including a simple level editor with an example of a function.
  • Add more JavaScript annotations (for autocompletion) (Thanks @Wend1go!)
  • Add option to scan for new image resources or remove unused images in Resource Editor (Thanks @blurymind)
  • Press Alt while moving an object to ignore grid (Thanks @kdparkinson)
  • Add Edit Object and Delete options to context menu on Scene Editor (Thanks @blurymind!)
  • Performance improvements in the IDE
  • Add word wrapping for Text Object (Thanks @Lizard-13!). Resize an instance of a text object on the scene to have it wrapped (you can also use events to do the same).
  • Snap position of objects to the grid when inserted (Thanks @blurymind!)
  • Add "Add event", "Add Subevent" and "Add Other" options in context menu in the EventsSheet (Thanks @blurymind!)
  • Add option to customize particles rotation speed (thanks @Lizard-13!)
  • Add button to rotate the selected instances in the Scene Editor (thanks @blurymind!)

Bug fixes

  • Fix selection of instances on hidden layers (Thanks @blurymind!)
  • Fix action to open URL in games
  • Fix True/False buttons in events sheet
  • Fix missing support for Escape key in "Key Pressed" condition.
  • Fix long action/condition words not breaking properly in the editor.
  • Ensure confirmation of project closing is shown when pressing Ctrl+W (or Cmd+W).

You can download the beta here.  GDevelop is available for Mac, Windows and Linux and is completely free and open source software.

GameDev News

18. October 2018

Meshroom is a new, free and open source photogrammetry software from AliceVision.  Photogrammetry software enable you to create a 3D scene using a series of photographs, generally the more the merrier.  Currently documentation is a bit lacking, so I’ve decided to create this quick tutorial.  In this tutorial we are going to quickly walk through the process of using Meshroom using a photoset available here.  That post links to a zip file containing 50 images that are confirmed to work with Meshroom.  Simply extract them somewhere on your drive.  Of course you need to download Meshroom, which is available for download right here.  Simply download the archive, extract then execute the Meshroom application.  Note Meshroom requires a CUDA GPU and works on Windows and Linux!  So this process will only work on nVidia GPUs, at least as of time of writing.

Once you’ve got Meshroom loaded, follow the following simple steps.

Drag extracted images into the Images pane on the left.


Save your project somewhere


Click the green Start button.


As it’s running, you will see the progress across the top:


This bar indicates a problem occurred.  You can divine more details by locating the current task in the Graph, like so:


With the node selected, check the Log (bottom right corner) for details.  This is the error message you receive if you run the process on a non-CUDA (nVidia) GPU.  Keep in mind, it can also be caused by the process running on a laptop with Optimus, not automatically selecting the right GPU.


Hopefully however you encounter no such errors and the process is entirely green.  On the bright side, it should pick right up where the error occured if you run the project again in the same directory, as Meshroom caches the results of each step as it goes.  You will find the vast majority of time is spent on the DepthMap section,  this is normal.  As the process continues, you should start seeing results in the 3D viewer.


You can pan, zoom and orbit the mouse using the LMB, scroll wheel and MMB respectively.  More detail in the point cloud will fill in as the process runs.  Once it completes successfully, you will see a button Load Model.


You can now preview the results of your effort!


A few steps in, it will have evaluated all of your photos, acceptable/usable photos will be marked with a green checkmark.


Review the remaining photos for flaws and inconsistency if you run it again.

Go make some tea… it’s going to be between 10 minutes and an hour depend on the speed of your machine.  Once the process is complete, there will be a folder called MeshroomCache, with the following contents:


This is a folder with all of the output files from each step in the process.  Generally what you are going to be interested in is the obj, mtl and texture file in the Texturing folder.  This can be imported into your 3D modelling application of choice, the obj format is fairly universal.  The resulting mesh is extremely dense and you may consider checking out Instant Meshes for optimizing the results.

Now that you know it works, it’s time to start refining the process or providing your own picture set.  I would recommend the following tips from my own experience:

  • use an actual camera, not a phone.  I got terrible results from my Pixel phone, but my Canon DLSR gave much better results.  YMMV
  • DO NOT green/white screen your background.  Unique markers in the background help Meshroom position each virtual camera
  • try to get the entire object in frame on each shot
  • get rid of any image with any blurring

So far we just default settings in the Graph Editor.  This graph represents a graph of nodes in the process, one for each directory shown in the screenshot above.  Note when you select a node, there are a number of properties you can edit:


You can also connect pins to multiple nodes to create multiple results.  For example, if you wanted to create a set of TFF and lower resolution PNG textures, you can do the following.  Right click the graph editor and select Texturing:


This will create a new node in the graph.  Now drag the output node from MeshFiltering and connect it to ini and inputMesh.


Select the new Texturing node and have it create a lower detail texture set:


Now when it runs, it will create two sets of textures for you.  Note there are other nodes such as Decimation that aren’t in the process by default.  You can see the entire thing in process in the video attached below:


17. October 2018

Back in August, Discord announced a limited launch beta of their upcoming game store.  Yesterday, that store came out of beta and became available world wide.  With it’s heavy focus on indie games, this is a development most smaller game developers should certainly pay attention to.  In addition to a new game store, they are also launching an exclusivity program for developers called First on Discord, where developers promise Discord a timed exclusivity Window on PC (console launches are not included) in exchange for unspecified assistance in bringing your game to market.  The first batch of First on Discord games was announced the end of September.  The program must have been somewhat of a success as their Discord Store blog launch announcement contains the following:

P.S. If you’re a game dev and interested in working with us, fill out this form (EDIT: WE’RE SWAMPED. FORM IS CLOSED RIGHT NOW) and sign up for our developer newsletter here.

In addition to a new indie focused store, Discord have also launched Discord Nitro with a new $9.99 price tag, that also includes several titles in a Netflix/EA Origin like subscription service.  There are currently 42 titles in the program including titles like Shadow Tactics, Metro Last Light Redux, This War of Mine, VVVVV, Psychonauts, System Shock 2 Enhanced and more.  

You can learn more about the store, details about platforms, refund policies, communication features and more right here or by watching the video below.  The store link is available here.

GameDev News

16. October 2018

Adobe have just released Adobe Animate CC 2019, the product previously known as Flash Professional.  This vector graphics drawing and animation package gained a number of new features in the 2019 release including auto lip syncing, new free form mesh deformations, webGL gltf export  (in beta), improved export options, a new launch window and more.

New features from the Adobe blog:

Asset sculpting for vector and raster content

Create new poses faster for vector or raster content using handles on a shape to change the mesh. No need to redraw assets on every frame — just tween between poses and create animations.

And yes, asset warping works with Raster content as well.

Layer parenting and layer effects

Organize your assets on different layers in a parent-child hierarchy. When an object on the parent layer is moved, the child layer moves along with it.

In addition, the layer effects feature provides you the capability to add filters and tint effects on frames. Create interesting in and out fades, depth of field, etc.

Auto Lip-Sync

Don’t waste time matching mouth poses to sound inflections. The new auto lip-syncing feature will use machine learning to make it happen automatically.

Animate After Effects workflow

Use the new simplified workflow to carry your Animate compositions into After Effects. Just drag and drop an FLA file into the new After Effects and proceed to add cool effects.

VR authoring and publishing (beta)

Use an existing 2D skill set and export 360 or Panoramic VR animations. Stitch your existing 360 or panoramic images and create a virtual walkthrough, or let your imagination run wild and create a 360 animated experience using the drawing tools.

New start screen

The all-new start screen in Animate provides a new intent-based onboarding experience. In addition, learn more about the existing or new features using the training videos in the learn tab — without leaving the product.

Other new features

  • Export to GL transmission format (glTF).
  • Texture publishing to enhance the performance of HTML5 Canvas compositions.

Key enhancements

  • Paint bucket tool,
  • Quick tween creation,
  • Support for Microsoft Surface Pen,
  • Redesigned timeline,
  • And much more.

You can learn a great deal more about this release on in the What’s new document available here.  You can see Adobe CC in action in the video embedded below.

Art GameDev News

See More Tutorials on!

Month List