Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

2. June 2017


SpeedTree is a popular middleware package for creating trees and foliage for games and other media.  Used for games like the Forza series, Gears of War, Far Cry, Dragon Age and many more titles, as well as films such as Iron Man 3, Avatar and World War Z.  Amazon have now ST8announced SpeedTree 8 is integrated into their Lumberyard engine and better yet, available free.

Following the release of Starter Game, we’re thrilled to give you another tool for building imaginative worlds in Lumberyard. Introducing SpeedTree 8 for Lumberyard, available free to all Lumberyard developers starting today. You can download it here.

The combination is a powerful one: take the industry-standard in 3D vegetation modeling, seamlessly integrate it with Lumberyard’s advanced rendering and lighting technology, and remove any subscription cost. The result is a faster, more intuitive way to create visually stunning worlds for your games. We can’t wait to see what you’ll build.


SpeedTree 8 brings the following new features:

  • Full PBR material workflow and rendering – PBR rendering and a revamped material workflow give you more precise control over your maps. You can also adjust your models before exporting them into Lumberyard, saving you time and effort.
  • New Generators – Sometimes imperfections can make your trees appear more lifelike. With these new generators, you can create a variety of realistic features on your trees, including knots, fungi, gashes, and cavities.
  • New Shape Control – This feature allows you to easily bunch branches together, so you can achieve more natural, organic shapes in vegetation (such as the “broccoli” effect.) You can create large clumpy trees or small clusters within your tree branches.
  • New SpeedTree Library – Buy stock assets, including 2K leaf textures and 8K bark textures. Get access to thousands of species of trees from around the world—an incredibly diverse, high-quality collection of models and materials.
  • And much more – Including unlimited age variation; one-draw-call models with tiling textures, wind, and LOD; new techniques for low-poly branch structure modeling and mesh editing; and automatic vertex color painting for wind, with an in-modeler preview.


You can read more about the SpeedTree and Lumberyard announcement here.

GameDev News

1. June 2017


Ever wish you could go back in time to the days of 8bit computing, when coding was simple and pixels were large?  Thanks to the rise of Fantasy Consoles, this process is easier than ever before.

So what exactly is a fantasy console?  Basically it’s a virtual console with a complete development environment.  The console is designed to be Pico3intentionally limiting, much like the primitive retro computers of the 8bit era.  Generally each also comes with a code editor, programming language (Lua), tile and world editor and some form of music composer.  This gives you a very focused, simple and constrained programming environment to work with.  You’d be surprised how striping away all the modern trappings enables you to focus on a single concept... fun.


So without further ado, let’s take a quick look at 4 virtual consoles available today.


PICO-8

PICO-8 is the application that seemingly launched the entire fantasy console movement.  The hardware it emulates provides a 128x128 pixel display, support for 4 channel audio, 128 8x8 sprites and 32k console/disk sizes.  It is PICO-8 illustrated in the image to the right.  In addition to the virtual machine, it also provides a code editor, sprite editor, map editor as well as music and sound editors.  It is available for $15 USD.


TIC-80

TIC-80, or Tiny Computer, is very similar in concept to PICO-8, with slightly less restrained virtualized hardware.  In this case it provides a 240x136 display, up to 256 8x8 foreground and 256 8x8 background sprites, 4 channels of audio and a 64kb disk/console size.  Tic is open source with the code available here.  TIC-80 also provides a VM, code editor, sprite editor, map editor and music/sound editors.


LIKO-12

Another open source option, LIKO-12 is heavily inspired by PICO-8, built on top of the LOVE game framework.   LIKO is currently less feature complete than the others, lacking many of the editors others provide.


PixelVision 8

Perhaps the most interesting of the options out there, certainly the most polished from a UI perspective, PixelVision 8 is heavily inspired by PICO-8 witha  major twist.  PixelVision aims to emulate the development experience of real world hardware such as the NES, Gameboy and SEGA Master System.  It also enables you to customize the capabilities of your target platform.  It also contains several built in editors for graphics, music and code.  Currently it is only available for purchase for $15USD, although a free version is in the works.


You can learn a bit more about fantasy consoles and go hands on with PICO 8 in this video, which is also embedded below.


Programming

31. May 2017


Defold Engine 1.2.105 was just released.  The Lua powered cross platform 2D game engine adds support for native extensions on HTML5 platforms.  This release also added a profiler module for monitoring CPU and memory usage of your app.  If you are interested in learning more about the Defold game engine, we have a complete tutorial series available here.


Details of this release:

Engine
  • DEF-1058 - Added: Profiler memory and CPU usage information.
  • DEF-2685 - Added: HTML5 support to native extensions.
  • DEF-2727 - Added: Addded html5.run() function to call JavaScript from Lua.
  • DEF-1995 - Fixed: msg.url() can be created before collection is loaded, and also be reused (msg.socket is a hash).
  • DEF-2721 - Fixed: Bob.jar now lists all options (including defoldsdk).
Native Extensions

We have now added support for building your native extensions for HTML5
It works both when using 'Build HTML and Launch' as well as when bundling.
It supports C++, embedded JavaScript, and Emscripten JavaScript libraries.
Editor 2 support for HTML5 native extensions is being worked on and will follow shortly.

We also fixed an issue during the sprint where the build server didn't take all the
Android flags, linkFlags and libs into account.

Documentation

There is a new section on the site called "Examples23" where you can find small contained examples on how to do common things in Defold. We will expand this section and are taking requests!

30. May 2017


Back in Part One of our look at the PlayCanvas HTML5 3D game engine, we started creating our simple bowling game.  We already created our lane and pins.  Now it is time to continue on and create our bowling ball.  Attached to our bowling ball will also be the script the controls the majority of our game.  Let’s jump back in.


Creating the Bowling Ball

This time, instead of importing a model, we are simply going to use a built in procedurally generated mesh.  Simply right click the Root in the Hierarchy view, select New Entity then Sphere.

image

Scale the newly created ball down and position it accordingly.

image

Under the Entity properties, I renamed it from Sphere to BowlingBall.  Right now our ball doesn’t look all that great.  Let’s go ahead and make it a bit shiny.  Right click in the asset area, select New Asset->Material.

image

Select the newly created material from the assets tab.  In the Material panel, I rename it to BowlingBallMaterial.  What I want to do is make the bowling ball a bit shiny.  I am going to leave it white, but if you want to change the color, do so under the Diffuse tab.  Next head on down to the Specular tab.  I used the following settings

image

Finally we need to apply the material to our bowling ball.  In the Hierarchy view, select the BowlingBall entity, under the Model panel, select our newly created Material.

image

Our bowling ball also needs to have a Collision shape and Rigid Body attached to it.

image

image

Be sure to set the Collision object to a Sphere and size the radius to be only slightly larger than our bowling ball model.


Now we have all the pieces needed for our game.  The pins, the lane and the bowling ball.  Now all we need to do is add some logic to the game.  This is done by attaching scripts to entities within our game.  In this case we are going to attach the logic to our bowling ball.


Scripting

With our BowlingBall entity active, add a component and select Script.

image


Scroll down to the Script panel, select Add Script->New Script.

image

Enter a name for the script.

image

Now click Edit Script to launch the script editor.

image

Now enter the following script:

var BallScript = pc.createScript('ballScript');

BallScript.attributes.add('speed', {
    type: 'number',
    default: -8
});

BallScript.prototype.initialize = function() {
    this.entity.collision.on('collisionstart', this.onCollisionStart, this);
    this.app.keyboard.on('keydown', this.onKeyDown, this);
    
    var pins = this.app.root.findByTag("Pin");
    this.startingPositions = [];
    this.startingRotations = [];
    for(var i = 0; i < pins.length; i++){
        this.startingPositions.push(pins[i].getLocalPosition().clone());
        this.startingRotations.push(pins[i].getLocalRotation().clone());
    }
    
    this.ballPosition = this.app.root.findByName("BowlingBall").getLocalPosition().clone();
    this.ballMoving = false;
};

BallScript.prototype.onCollisionStart = function (result) {
    
    if (result.other.rigidbody) {
        if(result.other.name == "BowlingPin")
            this.entity.sound.play("Hit");
    }
};

BallScript.prototype.onKeyDown = function(e) {
    if(e.key == pc.KEY_SPACE || e.key == pc.KEY_W){
        this.entity.rigidbody.applyImpulse(0,0, this.speed);
        this.ballMoving = true;
    }
    if(e.key == pc.KEY_R){
        var pins = this.app.root.findByTag("pin");
        for(var i = 0; i < pins.length; i++){
                pins[i].rigidbody.teleport(this.startingPositions[i],this.startingRotations[i]);
                pins[i].rigidbody.linearVelocity = pc.Vec3.ZERO;
                pins[i].rigidbody.angularVelocity = pc.Vec3.ZERO;
        }
        // now the ball
        this.entity.rigidbody.teleport(this.ballPosition);
        this.entity.rigidbody.linearVelocity = pc.Vec3.ZERO;
        this.entity.rigidbody.angularVelocity = pc.Vec3.ZERO;
        this.ballMoving = false;
    }
    if(e.key == pc.KEY_B){
         // Just the ball
        this.entity.rigidbody.teleport(this.ballPosition);
        this.entity.rigidbody.linearVelocity = pc.Vec3.ZERO;
        this.entity.rigidbody.angularVelocity = pc.Vec3.ZERO;
        this.ballMoving = false;
    }
    if(e.key == pc.KEY_LEFT || e.key == pc.KEY_A){
        this.entity.rigidbody.applyImpulse(-0.2,0,0);
    }
    if(e.key == pc.KEY_RIGHT || e.key == pc.KEY_D){
        this.entity.rigidbody.applyImpulse(0.2,0,0);
    }    
};

// update code called every frame
BallScript.prototype.update = function(dt) {
};


One thing you may notice in the script above is the definition of the speed attribute.  This exposes this variable back to the editor, like so:

image


You may notice the line of code in the script for playing audio when we collide with a pin:

    if (result.other.rigidbody) {
        if(result.other.name == "BowlingPin")
            this.entity.sound.play("Hit");
    }

Now we need to add this audio asset to our bowling ball.  First add the audio file as an asset.  Simply click add asset –> Upload, then upload a WAV file.  Now we need to add a sound component to our BowlingBall entity. 

image


Now scroll down to Slot 1 and add the asset you just uploaded and be sure to set name to Hit.

image


And done.  A complete, rather simple but fully functioning 3D bowling game in just a few minutes.


The Video

Programming , , ,

29. May 2017


SharpDX is a managed wrapper for the DirectX series of APIs including Direct 3D 9/11/12, Direct2D, DirectInput, XInput and more.  This library makes it easy to use DirectX libraries with languages such as C#, VB.net and more.  It is released under the incredibly flexible MIT open source license.  This release brings support for Visual Studio 2017 and perhaps most importantly, support for .NET core platform.


This new release of SharpDX contains:

  • Several bug fixes, see the full list below
  • A migration of the build system to VS 2017
  • Added support for the .NET Core Platform (netcoreapp1.0, netstandard1.1, uap10)

This release is the dedicated work of external contributors, thanks a lot for their work!

The binaries are accessible on nuget.


The full list of new features and bugs is available here.

GameDev News

Month List

Popular Comments