Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

6. December 2016

 

The HTML5 powered Babylon.js 3D game engine just released version 2.5 today.  BabylonJS is open source (Apache License) and one of the best available native HTML5 3D game engines available.  I previously featured it in the Closer Look game engine series if you want more details on the engine.  We are also currently producing an in-depth BabylonJS tutorial series if you want to learn how to use this powerful engine.

 

The 2.5 release is packed full of new features, updates and fixes from the release notes:

Major updates
  • New StandardRenderingPipeline effect to support screen space lens flare and depth of field. Demo - (Julien Moreau-Mathis)
  • New HighlightLayer object to enable highlights rendering. Demo - (sebavan)
  • Babylon.js now supports right handed system with scene.useRightHandedSystem = true (deltakosh)
  • Babylon.js is now compiled with optimize-js to get faster initial load (deltakosh)
  • Canvas2D moved to a separate folder in main repo. Now you need to also include babylon.cavans2d.js to get Canvas@D feature (deltakosh)
  • New BoneIKController Demo (abow)
  • New BoneLookController Demo (abow)
  • You can now build your own version of babylon.js with gulp build-custom Doc - (deltakosh)
Updates
  • Added node.doNotSerialize to prevent specific nodes to be serialized by SceneSerializer(deltakosh)
  • Added scene.multiPick and scene.multiPickWithRay to return an array of pickedMesh objects (deltakosh)
  • Added Effect.GetVertexShaderSource() and Effect.GetFragmentShaderSource() (deltakosh)
  • New Texture.LoadFromDataString() to help loading base64 encoded textures (deltakosh)
  • Added Engine detection of the compresed texture formats supported by Hw / browser. You can specify those formats you have files for using Engine.setTextureFormatToUse(), and an appropriate one will be chosen. (Palmer-JC)
  • Added Ray.intersectsMesh, Ray.show, Ray.hide (abow)
  • Added AbstractMesh.setPivotPoint, AbstractMesh.getPivotPoint, AbstractMesh.getAbsolutePivotPoint (abow)
  • Added Debug.AxesViewer and Debug.BoneAxesViewer (abow)
  • Added Bone.getAbsolutePositionFromLocal and getLocalPositionFromAbsolute (abow)
  • Added Bone.setRotation, Bone.getRotation, Bone.setRotationQuaternion, Bone.getRotationQuaternion (abow)
  • Added Bone.getAbsolutePosition and Bone.getAbsolutePositionToRef (abow)
  • Added Bone.translate, Bone.setPosition, Bone.setAbsolutePosition (abow)
  • Added Bone.setYawPitchRoll, Bone.setRotationMatrix, Bone.setScale, Bone.setAxisAngle (abow)
  • Added Bone.rotate (abow)
  • Added Bone.scale (abow)
  • Added Camera.getDirection, AbstractMesh.getDirection, Bone.getDirection (abow)
  • Added subdivisionsX, subdivisionsY option to GroundMesh (abow)
  • New Tools.CreateScreenshot function will capture all canvas data. Previous implementation is now called CreateScreenshotUsingRenderTarget (deltakosh)
  • Cube textures are now cached by texture cache (deltakosh)
  • Added onAnimationEnd callback for sprite.playAnimation (deltakosh)
  • Added support for non square textures for sprites (deltakosh)
  • Added support for texture arrays (deltakosh)
  • Added camera.isInFrustum and camera.isCompletelyInFrustum. Can be used with meshes, submeshes and boundingInfo (deltakosh)
  • Several memory allocation reduction (benaadams)
  • Several GPU state change reduction (benaadams)
  • MapTexture: add supersample mode to double font quality. (nockawa)
  • New SPS feature : solid particle intersection with other solid particle or with any mesh particle.intersectsMesh() (jerome)
  • New invertUV parameter an all ribbon based shapes : ribbon, tube, lathe, basic and custom extrusion (jerome)
  • Text2D: new fontSuperSample setting to use high quality font (nockawa)
  • PerfCounter class added to monitor time/counter and expose min/max/average/lastSecondAverage/current metrics. Updated engine/scene current counter to use this class, exposing new properties as well to access the PerfCounter object (nockawa)
  • Better keyboard event handling which is now done at canvas level and not at window level (deltakosh)
  • New scene.hoverCursor property to define a custom cursor when moving mouse over meshes (deltakosh)
  • Canvas2D: (nockawa)
    • Performance metrics added
    • Text2D super sampling to enhance quality in World Space Canvas
    • World Space Canvas is now rendering in an adaptive way for its resolution to fit the on screen projected one to achieve a good rendering quality
    • Transparent Primitives are now drawn with Instanced Array when supported
    • New property in Canvas2D (instances) that contains all instances of canvas2d Temechon
  • WebVR Camera was updated to be conform with the current specs. (RaananW)
  • New "CubeTextureTask" function will allow you to load a CubeTexture in the assetsManager. (agallouin)
  • Scene.stopAnimation has now an optional second parameter, the name of the animation to kill. Usefull if a mesh has multiple animations. (agallouin)
Bug fixes
  • Fixed issue with SkeletonViewer not displaying correctly with meshes that have a PoseMatrix (abow)
  • Fixed issue with Quaternion.toEulerAnglesToRef (abow)
  • Fixed issue with Animatable.goToFrame (abow)
  • Fixed issue with instancse and viewports (deltakosh)
  • Fixed issue with FreeCamera not working in fullscreen or when pointer locked (abow)
  • MapTexture: Font Characters are now correctly aligned on Chrome (nockawa)
  • Fixed some missing parameter default values in MeshBuilder.CreateGroundFromHeightMap() and MeshBuilder.CreateTiledGround() (jerome)
  • Fixed cross vector calculation in _computeHeightQuads() that affected all the GroundMesh.getHeightAtCoordinates() and GroundMesh.getNormalAtCoordinates() methods (jerome)
  • Fixed Mesh.CreateDashedLines() missing instance parameter on update (jerome)
  • Added BBox update on each ribbon based shape (ribbon, tube, extrusion, etc) on dynamic updates (jerome)
  • Fixed model shape initial red vertex color set to zero not formerly being taken in account in the SolidParticleSystem (jerome)
  • Fixed billboard when the SPS mesh is parented in the SolidParticleSystem (jerome)
  • Fixed RenderTargetTexture meshes selection (deltakosh)
  • Fixed camera speed computation (deltakosh)
  • Fixed bug with instances, LOD and edgesRendering (deltakosh)
  • Canvas2D: (nockawa)
    • WorldSpaceCanvas2D:
      • Intersection/interaction now works on non squared canvas
    • Primitive:
      • ZOrder fixed in Primitives created inline
      • Z-Order is now correctly distributed along the whole canvas object graph
    • Sprite2D:
      • texture size is now set by default as expected
      • can have no id set
    • Text2D:
      • Fix bad rendering quality on Chrome
      • Rendering above transparent surface is now blending correctly
Breaking changes
  • FollowCamera.target was renamed to FollowCamera.lockedTarget to avoid conflicts (deltakosh)
  • Removed legacy shaders support (deltakosh)
  • Canvas2D: (nockawa)
    • WorldSpaceCanvas2D:
      • WorldSpaceRenderScale is no longer supported (deprecated because of adaptive feature added).

GameDev News

6. December 2016

 

The Atomic Game Engine just released a new version available for download here.   This is the first formal binary release in a long time, but there has been constant work on this engine since I featured it in the Closer Look game engine series.  Perhaps the biggest change was the move to open source under the very liberal MIT license but the changes certainly don’t stop there.  The next biggest new feature on the listatomic is probably the fact Atomic now supports the C# language, along side JavaScript and TypeScript (and of course, native C++).

 

New to this particular release are:


• Support for Atomic C# scripting on Windows, macOS, Linux, Android, and iOS

Visual Studio and Xamarin Studio integration (with VSCode support coming soon!)

• Updated to TypeScript 2.0

• Physically Based Rendering (PBR) - Thanks to @dragonCASTjosh

• New examples and project templates

• Revamped build targeting JavaScript, TypeScript, C#, and native C++

• Updated to Urho3D 1.6 and SDL 2.0.4 with a great number of platform improvements

• Updated to to Monaco VSCode editor 0.6

• Bug fixes, improvements, and optimization

Thunderbeast Games LLC have put together a demo reel of the major new features added to engine in 2016 viewable below.

 

The Atomic Game Engine is available here while the source is available on Github.

GameDev News

6. December 2016

 

A couple years ago I did a detailed text tutorial on how to use a debugger which oddly is a massively important skill that simply isn’t taught.  Given that this article is still popular two years later I’ve decided to follow it up with a video version.  This video, Debugging 101, walks through the basic tasks involved in debugging.  It used Visual Studio 2017 and C++ but should be applicable in most languages and IDEs.  The video shows how breakpoints and conditional break points work, how to step into, over and out of your code, how to use the local and watch window, call stacks, how to do memory debugging and more.  Basically the video shows you how to get started using a debugger.

 

The following is the code used in this example.  There is nothing special to this code, it’s extremely contrived, but it enabled me to show the various features available in most debuggers.

#include <iostream>

// These two functions are used to illustrate how the call stack works
// As well as how step into and step out of behave.
int innerFunction(int input) {
	int meaninglessCounter = 0;
	for (int i = input; i > 0; i--) {
		// First show stepping through the loop
		// Set a conditional breakpoint that breaks when i is a certain value.
		meaninglessCounter++;
	}
	return input;
}

int outerFunction() {
	int i = 42;
	return innerFunction(i);
}


class Demo {
	std::string stringValue;
	int intValue;
	bool booleanValue;

	public: 
		Demo(std::string a, int b, bool c) : stringValue(a), intValue(b), booleanValue(
		c) {};
};

int main(int argc, char ** argv) {
	// Callstack demo, jump into, jump over example
	int someVal = 0;
	someVal = outerFunction();

	// Data example -- simply create a char buffer, fill it with 'a' then null 
	terminate it so 
	// it can be treated like a string.
	char * data = new char[1000];
	for (int i = 0; i < 1000; i++)
		data[i] = 'a';
	data[999] = 0;
	std::cout << data << std::endl;

	//set a watch on d.  Demonstrates watches and drilling into complex object
	Demo d("Hello", 42, true);
	
	std::cout << "End of demo" << std::endl;
	delete[] data;
	// delete[] data;  Calling delete again will trigger an exception
}

Programming , , ,

5. December 2016

 

The mobile focused cross platform Lua powered game engine Defold just released version 1.2.94.  The release includes several bug fixes but more importantly contains some rather cool new features.  A big one, and something that was glaringly missing, is (initial) skeletal animation support for 3D models.  While a 2D engine, being able to mix in 3D models enables you to do some pretty powerful things, like texture swapped characters or dynamic inventory systems.  Particle system support for flipbook animation powered particles was also added in this release.

Full new feature list:

  • DEF-2308 - Added: Automatic particle resizing from flipbook animation
  • DEF-2161 - Added: Skeleton animations for 3D models
  • DEF-2295 - Added: Cursor and playback control for model animations
  • DEF-2304 - Added: Max GUI scene count per collection is now configurable in game.project
  • DEF-2202 - Fixed: Up-axis for Collada models are now taken into account
  • DEF-2202 - Fixed: Correct UV/texture coordinates for Collada models
  • DEF-2303 - Fixed: Label with dynamically set text remained after go.delete
  • DEF-2308 - Fixed: Automatic sprite resizing from flipbook animation
  • DEF-1972 - Fixed: Disable animating node during complete callback didn't update property fragments
  • DEF-2274 - Fixed: Spine nodes with animated alpha now works as expected
  • DEF-2145 - Fixed: Libraries/dependencies loading performance

 

You can read more, especially on the use and limitations of the new 3D animation system, in the release notes available here.  If you are interested in learning to use the Defold Engine we have a complete tutorial series available here.  If you just want to learn more be sure to check out our hands on video.

GameDev News

5. December 2016

 

Just recently at MechCon 2016, Piranha Games ( MechWarrior Online ) announced they were developing MechWarrior 5: Mercenaries as a single player game.  Why is this of interest to GameFromScratch.com readers?  There are two reasons, one big one extremely small.  First is Piranha’s decision to make the game using Unreal Engine.  This is interesting due to the fact that the studio’s previous title MechWarriormechwarrior5 Online was developed using CryEngine.  In fact it may have been one of the highest profile non-Crytek CryEngine titles that actually shipped ( sorry Star Citizen… ).  No doubt MW5 will re-use a number of assets from MWO and could have benefited from a great deal of the existing code, so the decision to change engines couldn’t have been made lightly.  This is a pretty nice win for Unreal Engine and has to sting a bit for Crytek.  Lead programmer Brian Windover gave the following answer on why they chose Unreal Engine:

“While deciding on a technology base for MechWarrior 5: Mercenaries it quickly became clear that Unreal Engine 4 would really hit all the notes for us,” said Lead Programmer Brian Windover. “When we were able to take our past experience developing a MechWarrior title and bring it to life in Unreal Engine 4 so quickly, and with such a high degree of visual fidelity, we had the immediate confidence that it was the clear engine of choice for MechWarrior 5: Mercenaries.”

“Unreal Engine 4’s increasingly versatile Blueprint system enables our designers to quickly prototype their ideas and craft the foundations of an outstanding single-player campaign. Its core technology, intuitive AI framework, and native VR support enables our engineers to introduce truly next-gen features with great ease and reliability. On the artistic side, Unreal Engine 4 is stunning, but it’s also extremely adaptable. It empowers our artists to really push our visuals to the edge, both in detail and scope, while still maintaining excellent performance.”

 

So, what’s the second reason?  The previous game, Mechwarrior 4:Mercenaries is easily in my top 5 games of all times list.  I also enjoyed MW:O, especially once their terrible publisher was removed from the equation, so I feel the title is in good hands.  Basically I’m just giddy this title was announced and I really look forward to seeing it happen.  The following early alpha video was shown along side the announcement:

 

 

 

For the three people that might be curious, my top 5 games of all times ( not the best games of all time, but certainly the ones that affected me the most) in no particular order is:

  • MechWarrior 4 series
  • Ultima 7
  • Tie Fighter
  • ShadowRun (Genesis Version)
  • Baldur’s Gate 2

 

Do you have a similar list? 

GameDev News

Month List

Popular Comments

Want a free license for Marmalade as well as a free Blackberry Dev Device?
Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon


Home > News >

7. June 2013

 

This promotion just arrived in my email and I figured a few of you might be interested.marmalade_logo

 

 

How do you get a Free Marmalade SDK Licence?

  1. Sign-up or sign-in below
  2. If you don’t already have a Marmalade SDK, download an evaluation licence
  3. Submit a draft BlackBerry 10 app using your existing Marmalade SDK or evaluation licence within 30 days. You will need a BlackBerry® World™ Vendor ID to do this. You can get one here. Don’t worry if it’s not ready at this stage - draft mode BlackBerry 10 apps are only verified to determine if they have been created with the Marmalade SDK, and thus qualify you for the offer. They are only reviewed for sale after the BlackBerry Vendor changes the app status.
    ***Please make sure you come back and input your BlackBerry® World™ Vendor ID (we only need the email address you use to register on BlackBerry World).***
    The first 300 qualifying Vendors* will receive a free BlackBerry Dev Alpha testing device
  4. Once your app is submitted for final review and approved for sale, you will receive a full Marmalade Indie licence worth $499 (existing Indie licence holders will have their licence extended by a year and new licence holders will convert to a full Marmalade Indie Licence).
  5. Go cross-platform: once your app is approved on BlackBerry World, reap further rewards on other app stores, using the full capabilities of your Marmalade cross-platform licence.

 

I am a little confused about part 3.  From the sounds of it, you can create a simple Hello World application and submit it, so long as it was compiled with Marmalade and you are one of the 300 first people to do it, you then qualify for a free BB Dev Alpha device.  It could be that I am reading that wrong.  Once your application is approved for sale on BB store, you then receive a Marmalade license ($499) enabling you to publish to other environments.  Makes sense in a way, as Blackberry is sponsoring this, so they effectively get the first release, but then you can bring your app to other devices. You can read the entire release right here(PDF Link).

 

For those of you that have never heard of it, Marmalade is a cross platform game development kit that supports just about any device you could think to target.  It is C++ based, although it now ships with Marmalade Quick, a RAD tool built on top of Cocos2D-x and Box2D and scripted using Lua.  Marmalade has been used to publish hundreds of mobile titles including Cut The Rope, Plants vs Zombies, Need for Speed and tons more.  Marmalade has been around for a number of years, starting life as the AirPlay SDK.  Marmalade have both a free (and limited) version available, as well as a 30 day trial of each of their versions.  The version being offered is a single seat for a year of the Indie version, which allows you to target BB, iOS, Android and Windows Phone 8.

 

Blackberry is a Canadian smartphone manufacturer, who outside of the business world were more or less a non-factor.  This is rapidly changing though with their most recent releases.  The recently released Z10 and Q10 smartphones, as well as the Playbook tablet are all powered by the QNX operating system, which RIM acquired a few years back.  After some serious teething pains, Blackberry is back and has a number of great devices for running games.  While the install base is smaller than both Android and iOS, it is said to be a lucrative market and hey… you’ve got nothing to lose, you can still port to iOS, Windows Phone and Android.

 

 

EDIT:  I figure I should point out that the Indie license they are giving away still has some limitations.  You cannot have an annual revenue of more than $500K and you need to give a Marmalade attribution.  Unlike the community version, this doesn’t involve a splashscreen or anything that intrusive.  A “Made with Marmalade” logo in your about or credit screen is sufficient.  Here is the full details regarding attribution:

 

As a technology business we thrive by sharing details of the amazing apps and games that are made with Marmalade.

It is for this reason that we ask licensees to reference Marmalade in one or more of the following ways:

Marmalade Community Licence holders

  • A Made with Marmalade splash screen will be displayed when your app loads. The splash screen will display automatically, and will remain on screen for a short time.

Marmalade Indie and Plus Licences

  • Include the Made with Marmalade logo and our website address www.madewithmarmalade.com within the credits and/or about screen. If possible, this should link to www.madewithmarmalade.com.
  • In the event that technical restrictions prevent the above, the wording “Made with Marmalade” and our website address www.madewithmarmalade.com should be included within the app credits and/or ‘About’ screen of your published app. If possible, this should link to our website www.madewithmarmalade.com.
  • An optional Made with Marmalade splash screen will be displayed when your app loads. The splash screen will display automatically, and will remain on screen for a short time.
  • Assets can be downloaded here.

 

EDIT2: I just did the Blackberry World vendor application, a bit of a warning, this doesn’t appear to be a real-time process!  I created a Blackberry ID, then a vendor account and cannot yet log in.  It appears there is a verification process before your account is created.  If it’s a race for the first 300 people, this disconnect, well, sucks.  Basically it means people with Blackberry World accounts already registered are basically guaranteed to get in first.

News ,

blog comments powered by Disqus

Month List

Popular Comments