Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

16. December 2016

 

Unity have released another patch for the 5.4 branch of Unity, patch 5.4.3p4.  This patch adds support for Direct 3D feature level 11.1 which enables several native RenderTexture formats.  Of course the patch also includes the usual swath of fixes, including:

Improvements
  • (757055) - Graphics: Added support for feature level 11.1 on D3D11/D3D12. This brings native support for RGB565, ARGB4444 and ARGB1555 RenderTexture formats.
Fixes
  • (856822) - Editor: Fixed a rare crash in the BuildReport system when building standalone data.
  • (840591) - Game Performance: Fixed a potential crash on player exit if Game Performance Service is enabled.
  • (853627) - Graphics: Added Material.SetBuffer with nameID overload.
  • (851359) - Graphics: Fixed a crash when deleting a Shader that was used by some Materials in the scene.
  • (849344) - Graphics: Fixed a crash when using Material.SetColor and similar functions with some built-in Unity variable names.
  • (851689) - Graphics: Fixed memory leak when instantiating materials (e.g. via renderer.material).
  • (836947) - Graphics: Fixed a rendering bug when grab pass was used with forward rendering and graphics jobs are enabled.
  • (none) - IL2CPP: Emit proper C++ for unsafe methods that cast a void pointer to a type pointer and access a field from that type.
  • (851793) - IL2CPP: Fixed a runtime crash when trying to call interface methods on integral pointers in unsafe contexts. Issues seemed to only show up when code was built outside of Unity with the Microsoft .NET compiler.
  • (856410) - IL2CPP: Prevent a stack overflow in the player runtime when metadata for an infinitely nested recursive generic type used (like the FullName of that type).
  • (763240) - iOS: Fixed Module Registration and Code Stripping for builds using the Mono scripting backend.
  • (814493) - iOS: Fixed an issue where the keyboard could lose focus when rotating the device
  • (828762) - iOS: Fixed audio ducking when background applications sound were muted after running Unity application.
  • (852363) - iOS: Fixed crash(es) in WWWConnection.
  • (none) - Metal: Improved handling of transparent rendering after post-opaque image effects when using MSAA.
  • (849681) - OpenGL: Fixed image mask when running in upscaled fullscreen mode.
  • (824508) - VR: Fixed a memory leak when using a canvas and VRFocus is lost.

 

As always, the patch is available for download here.

GameDev News

15. December 2016

 

Allegorthmic just released Substance Designer 5.6.  Substance Designer is a tool for making PBR (Physically Based Rendering) based materials, often used with sister application Substance Painter.  This release brings seven new tools and filters to Substance Designer, including:

  • Height Blend: Blend multiple materials or scans using their height maps for added realism. Output includes blended height and a mask to easily blend other channels of your materials.
  • Horizon Based Ambient Occlusion: Artists can now generate an accurate ambient occlusion with real-world scale and depth of surface, simulating a raytraced bake in milliseconds.
  • Color Match: Fine-tune the overall tint of your scans without destroying the color of small elements.
  • Real-World Height to Normal: Set the width, length and/or maximum height of a surface to generate a world space accurate normal map, perfect for precise displacement or parallax effects.
  • Snow Cover: Add a snow cover to any pre-existing material and create realistic effects like a windy blizzard or snowmelt. All snow piles realistically and can be adjusted via multiple parameters including thickness.
  • Water Level: Adds an artificial water plane to a material. Tweak the water’s height, dirtiness, fogginess and freeze.
  • Material Blend Height: Use the Height Blend method to blend two full materials using their height map, as well as making sure the albedos match properly, all in a single node.
  • Non-Uniform Histogram Scan: The Histogram Scan node is a favorite of artists wanting to create nice animated masks and weathering. This new version adds custom inputs to drive the contrast and level of the mask on a per pixel basis, allowing for the generation of much more complex and rich masks

 

A 30 day free trial is available here.  You can read more about the 5.6 release here.  Below is a video demonstrating the new filters available in 5.6.

GameDev News

15. December 2016

 

Godot are launching their third game jam starting tomorrow, December 16th, 2016  and running until the 31st of January 2017.  The theme of Jam as voted by the community is “Two Buttons”.  The Jam is entirely for fun and there are no announced prizes.  It is encouraged to submit source code withGodotJam your submission so the community can hopefully learn from your experience.  The game jam itself is hosted on itch.io.

 

Some details of the Godot Jam from the Godot announcement blog:

After the success of our previous games jams in March 2016 and June 2016, and since the community seemed pretty motivated for a new one, we are organizing a new Godot Community Game Jam that will run from 16 December 2016 to 31 January 2017.

As the previous one, it is an informal jam with relatively loose rules, and not much to gain apart from international fame within the Godot community and more experience with using our great engine! This is why this jam will run for a month and a half, giving everyone plenty of time to experiment with the engine to create something new, beginners and experienced users alike.

Check the game jam's page on itch.io: https://itch.io/jam/godotjam122016

JAM THEME AND RULES

The jam will take place from Friday, December 16th 2016 to Tuesday, January 31st 2017, i.e. for one month and a half. It is hosted on itch.io.

The guys from the Discord channel took the initiative and gathered some theme proposals, which were then submitted to the vote of the community. The proposal that received the most votes is Two buttons, and it will therefore be the main theme of the jam. The other proposals were Demake, No-death, Rust / decay and Round-based - those are not part of the voting criteria, but you are free to take them as an additional source of inspiration for your games.

Contestants are free to interpret the theme as they want, but keep in mind that your interpretation should be understandable if you want voters to give you many points for it.

Contestants can partake alone or as a team. Reusing existing code and assets is allowed.

GameDev News

15. December 2016

 

Today Unity released EditorVR, an experimental build of Unity that enables you to work (partially) in VR.  This means you will be able to layout scenes, modify existing scenes and adjust components in Unity while using a VR headset.  Currently EditorVR supports the HTC Vive and Oculus Rift 15-EditorVR-headsets. 

 

Details from the announcement:

Easily make VR tools and run them in Unity. EditorVR is now available for free, today!

You may have been following our progress with constructing environments for VR in VR. Now it’s your turn. Today, you can download the EditorVR Experimental Build and the EditorVR Unity Asset Package. There is so much more we’re looking to add, but we think that enough of the foundation is there that we no longer want to hold this out from the community.

For now, if you’re building VR games and experiences, EditorVR will likely help you with:

  • Initially laying out a scene in VR
  • Making tweaks to existing VR scenes
  • Making adjustments to components using the Inspector workspace
  • Building your own custom VR tools

At Unity Labs, we are on a mission to explore the long-term view of where creation technology is headed. At our Unite demo last month we gave a final peek at the experience of building out an environment in real-time using VR-specific UI (many thanks to our friends at Campo Santo for providing the beautiful Firewatch scene). You can build directly in the headset, on both Vive and Rift. Learn more about how to use it here.

 

EditorVR was first previewed at Unite 2016 last month, shown in the video below.

GameDev News

15. December 2016

 

Welcome to the next part in the ongoing Closer Look At game engine series.  The Closer Look series combines a review, overview and getting started tutorial in one and aims to give a developer a good idea ofs2closerlook a given game engine is a good fit for them or not.  Today we are looking at the S2Engine, which is a commercial game engine available for purchase on Steam.  Right off the hop the S2Engine is going to have two major strikes against it for many game developers.  First, it’s Windows only.  Figured I’d get the out of the way right up front as if you are looking to create cross platform games, this is not the engine for you.  Second, it’s commercial and closed source, although the price tag is quite low at around $20USD.

 

As always there is an HD video version of this review available here.

 

Without further ado, let’s jump in to the S2Engine.

 

The Tools

The entire development experience in the S2Engine takes place in the S2EngineHD Editor.  Here is the editor in action running the included sample scene:

s1

 

The S2Engine Editor is absolutely loaded with tools, lets take a guided tour.  First off we have the scene window where you can see a live rendering of your game in action:

sceneoptimized

 

Please keep in mind the fuzziness in the picture above comes from the animated gif process, the real-time viewport looks vastly superior to the image above.  The Scene view is where you place entities in your scene and preview the results.

 

You can switch between the various available tools using the following toolbar:

image

Or via menu:

image

 

The Project Window

image

 

This is where the various assets of your game are organized.  It’s an analog to the underlying file system of your project.  The buttons across the left enable you to filter the various different objects ( Animations, Models, FSMs, etc ).

 

The Class Window

image

 

This is where you can instance various game objects.  Select an object, click Create and then click within the scene to place the entity.  The newly created entity (or a selected entity) can then be configured using the lower Params window, which is context sensitive to the selected object.

 

Terrain Tools

image

 

S2Engine has a full terrain editing system in.  The Terrain tool enables you to interactively edit the scenes landscape (height map).  There are tools for raising/lowering, flattening, stepping and painting terrain as well as drawing roads and vegetation.  The actual editing is done in the scene window:

terrain

 

Model Window

image

 

S2Engine supports 3D animated models of FBX format, simply click the Import button in the Project view:

image

 

There are multiple different panels for configuring models, setting and handling animations, managing joints/bones and even vertex level manipulations.

image

 

There is also an animation panel.

image

This enables you to blend animations together, set and remove animation keys and of course, preview animations.

 

Material Window

imageimage

 

A detailed material system allowing multiple layers.  You can control diffuse and normal maps, UV tilting, lighting properties and more.  You also have control over detailed material attributes like alpha blending, animations, scattering, light emission and more.

 

Special FX

image

 

Fine tuned control over multiple special FX of types weather, post processing and environmental.  Fine tune control over all aspects, including water fx, sky, weather, lens effects, etc.  You also have fine tune control over day/night cycles using a keyframe system:

image

 

Cutscene Tool

image

 

S2Engine has a complete system in place for authoring cut scenes.  Includes a curve editor:

image

 

As well as a detailed timeline:

image

 

Hierarchy

image

This is essentially your scene graph.

 

Font Tool

image

Enables you to create png textures for fonts of varying dimensions with font preview.  Fonts are imported in fnt format created using the BMFont tool.

 

GUI Editor

image

Currently in Beta, there is a UI editor available.  You can create a hierarchy of UI widgets and configure them using the Params class panel.

 

imageimage

Currently supported widgets include button, slider, frame, input box, combobox, label, checkbutton, colorbox, image, listbox, groupbox, tabbox and rangeinputbox.

 

Publishing

When you are complete publishing is a pretty straight forward process.  This is one of the advantages of only supporting a single platform publishing is as simple as choosing a file name, starting scene, main script (entry point) and a few other settings and clicking the Publish button.

image

 

Coding

There are two ways to code in S2Engine.  You can use their own scripting language or the visual FSM (Finite State Machine) visual programming language.  The scripting language has the sc2 extension and has a C like syntax.  You can read the language reference here while the API documentation is available here.  Scripts are simply connected to (and thus control) game objects.  Here is an example script that controls a jeep found in the demo game.

#message TakeControl
#message LeftControl
#message LockWaypoints
#message UnlockWaypoints

#use "engine.wav"

var float acc;
var float steer;
var bool brake;
var bool control;
var float steerAng;
var string steerNode;
var string handsNode;
var float oldsteerAng;
var bool _on;

function void Init()
{
	_on=false;
	control=false;
	steerAng=0.0;
	steerNode="steer";
	handsNode="hands";
	AICreateObject(false,false,205.0,200.0);
	resetNodeFlags("camera","visible");
	resetNodeFlags("hands","visible");
	SetSource(10.0,15000.0);
}

function void PostInit()
{
	SetPerObjectMaterialData(3,0.0);
	resetNodeFlags("light01","visible");
	resetNodeFlags("light02","visible");
	_on=false;
}

function void update()
{
	if(control==true)
	{
		acc=0.0;
		steer=0.0;
		brake=false;
		RotateNode(steerNode,"rgt",-steerAng);
		RotateNode(handsNode,"rgt",-steerAng);
		
		SetSourcePitch((PhysicsGetVehicleRPM()*0.0025)+1.0);
		/*LOG( string(PhysicsGetVehicleRPM()) );*/
		
		if(IsKeyPressed("w"))
		{
			acc=1.0;
		}
		if(IsKeyPressed("s"))
		{
			acc=-0.5;
		}
		oldsteerAng=steerAng;
		if(IsKeyPressed("d"))
		{
			steerAng=steerAng+(frametime);
			steer=-1.0;
		}
		else
		{
			if(IsKeyPressed("a"))
			{
				steerAng=steerAng-(frametime);
				steer=1.0;
			}
			else
			{
				steerAng=0.0;
			}
		}
		if(IsKeyPressed(" "))
		{
			brake=true;
		}
		if(steerAng>=35.0)
		{
			steerAng=35.0;
		}
		if( steerAng<=(-35.0) )
		{
			steerAng=-35.0;
		}
		steerAng=ScalarInterpolate(oldsteerAng,steerAng,(frametime/200.0));	
		RotateNode(steerNode,"rgt",steerAng);
		RotateNode(handsNode,"rgt",steerAng);
		PhysicsVehicleControl(steer,acc,brake);
		
		if(acc!=0.0)
		{
			var vec3 fwdaxis;
			fwdaxis=GetWorldAxis("fwd");
			SendMessageMulti("pushOut",string(fwdaxis),400.0,"null");
		}
	}
	else
	{
		PhysicsVehicleControl(0.0,0.0,true);
		if(ObjectIsInRange("player01",300.0))
		{
			SendMessageSingle("player01","DriveVehicle","");
		}
	}
}

function void message()
{
	if( ReceivedMessage("TakeControl") )
	{
		/* lights control */
		var float tod;
		tod=float(GetLevelParam("TimeOfDay"));
		LOG("tod"+string(tod));
		if( (tod>=18.0) && (tod<=24.0) )
		{
			SetPerObjectMaterialData(3,1.0);
			if(!_on)
			{
				SetNodeFlags("light01","visible");
				SetNodeFlags("light02","visible");
				_on=true;
			}
		}
		if( (tod>0.0) && (tod<6.0) )
		{
			SetPerObjectMaterialData(3,1.0);
			if(!_on)
			{
				SetNodeFlags("light01","visible");
				SetNodeFlags("light02","visible");
				_on=true;
			}
		}
		if( (tod>6.0) && (tod<18.0) )
		{
			SetPerObjectMaterialData(3,0.0);
			ResetNodeFlags("light01","visible");
			ResetNodeFlags("light02","visible");
			_on=false;
		}
	
		/*=======================================0*/
		control=true;
		SetNodeFlags("hands","visible");
		PlaySound("engine.wav",true);
	}
	
	if( ReceivedMessage("LeftControl") )
	{
		control=false;
		ResetNodeFlags("hands","visible");
		StopSound();
		SetPerObjectMaterialData(3,0.0);
		ResetNodeFlags("light01","visible");
		ResetNodeFlags("light02","visible");
		_on=false;
	}
}

 

It’s a straight forward enough language, but I generally prefer that engines use an off the shelf scripting engine instead of rolling their own.  This gives the community access to a much larger source of expertise, sample code and generally is much more time tested and stable.  As you can see from the script above, much of the logic and communication is implemented via message passing.

The majority of in game programming however is done using FSM (Finite State Machines ) via the FSM graph.

s2

If you’ve ever worked in Blueprints in Unreal Engine or Flowgraph in CryEngine you should have a pretty good idea how FSM programming works.  You’re code responds to various events and creates program flows using a series of connecting cables to other states.  Each node can have multiple actions, configured like so:

s3

There are dozens of states available, and new ones can easily be created.

image

Variables are easily created as well.

image

In addition to local variables, parameters and globals can also be defined.

image

 

 

The Documentation, Community and Content

The S2Engine has a decent amount of documentation, reference materials, getting started videos and beginner projects.  There are however a few issues, the first of which is English.  The developers primary language is not English and it shows on occasion in the documentation.  The actual UI is very well translated but some of the documentation  is certainly a tad “Engrish”.  Worse, some of the linked starting videos aren’t in English at all.  I have no issue with non-English videos, but I would recommend not linking them directly from an English localized application.

In terms of actual available documentation, there is a Wiki available here, a very solid reference manual available here, and a series of video tutorials available here.  S2Engine also comes with the beginner scene you’ve seen throughout this review.

The community for S2Engine isn’t huge but there is an active forum.  There is also a Trello bug tracking board available on Trello as well as a few other community options.  One impressive thing about the engine is the engine developer is very responsive to user requests and feedback.

One interesting aspect of the S2Engine is the existence of Content DLC.  These are themed content packs you can download and use in your game.  Currently the only content pack is the Medieval content pack shown in the video below. There is another content DLC pack in the works.

 

 

Conclusion

I pointed out the two biggest negatives to this game engine in the very first paragraph.  It’s Windows only, both for tooling and target platforms.  It’s closed source and commercial.  For many those are going to be big enough deal breakers that nothing else really matters.  For the rest though, is this a worthwhile engine?  For a small team effort, there is a massive amount of functionality included in this engine, it’s capable of some staggeringly pretty results and the workflow, once understood, is pretty accessible to people with limited programming experience.

My biggest recommendation to the developer behind this engine is to make a proper demo available.  What will get people to use this engine over the other options is that they prefer the workflow, the tools, the built in assets, etc.  The lack of a current demo is going to vastly limit the potential audience.  Even with a low price tag, few people will spend money to evaluate an engine and having a previous weaker version of your engine available as the trial is certainly a mistake.  When you go to the download section of the website, you are greeted by this text:

NOTE: The version to be downloaded here (1.4.5) is a previous, very old, FREE BETA version. It is useful just for letting you to view How S2ENGINE HD is organized and How it works. It doesn’t represent the final quality of the 1.4.6 Steam version.

This is quite simply a mistake.  A demo is about selling people on your engine, so having them experience a “very old” version is a bad idea.  Always put your best foot forward when showing an engine.  I would recommend creating a version of the current engine that is full featured but either time locked, save limited or publish limited.  You will have a great many more developers willing to give your engine a try. 

I have found the performance to be a bit inconsistent.  I was running consistently at 70+ FPS, then struggled to hit 15FPS for a while with a ton of UI glitches.  Upgrading to the newest nVidia drivers didn’t help.  Then oddly, switching Optimus to use the integrated GPU, then back to dedicated seemed to fix the problems.  Hopefully these problems are localized to me and not widespread.  I wish the developers used a standard UI toolkit like Qt, as their custom implementation can be a bit buggy or not perform as you’d expect.  I also unfortunately experienced a half a dozen crashes while evaluating the engine, including one while making the video version of this review.

 

The Video

Programming , ,

Month List

Popular Comments