Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon
15. January 2016

 

An update for the Xenko (previously Paradox) game engine was released today.  Relatively minor, mostly a fix release.  Details from the release:

Async Debugging

There were some problems debugging async functions due to a problem in Mono.Cecil. We fixed that!

Now, you’ll be able to look at local variables of any async functions. Also, the usage of the namespace in the watch panel is implicit and you can step over any await calls just normally.

Windows 10 Certification

We fixed several small issues preventing Windows 10 apps created with Xenko from being compatible with Store certification.

Now you can submit your awesome apps/games to the Windows Store. Can’t wait to see your creations!

Skybox Compilation

Skybox compilation required a DX11 GPU (compute shaders) preventing some of you from using it.

We moved to a pixel shader version to ensure GameStudio works fine with older GPUs as well.

List of other improvements made

  • Fixed issues with displayed values of rotations changing after validation
  • You are now able to easily edit the 3 components of a vector simultaneously using the lock icon.
  • The convex hull generation is now working along with the new Skeleton Asset.
  • The Connection Router iOS script required to compile shaders on iOS devices has been fixed.
  • Added support for proper resizing in Windows Universal Apps.
  • Added support for OpenGLES devices that do not support packed depth-stencil-formats
  • Added the missing XenkoDefaultFont required by the profiler system.

GameDev News , ,

14. January 2016

 

Welcome to another episode in the “Closer Look at” game engine series.  The closer look series is a combination of getting started tutorial and review to help you determine if a game engine is the right fit for you.  Today we are looking at the QICI Engine and HTML5 game engine built over top of the Phaser framework which itself uses the Pixi graphics renderer. Normally when I work with a game engine, I have to spend several weeks with it before I can put together one of these guides.  With QICI, it took substantially less time, only a couple days, to come to terms with the engine.  This isn’t a slight on QICI in the slightest.  First, I am a big fan of the Phaser engine it is built on, so this gave me an immediate familiarity.  Second, it is just an extremely good, well designed, capable and well documented game engine.  Hmmm, bit of a spoiler there I suppose, but I really like the QICI engine.  Read on to find out why.

 

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

 

A Tour of the QICI Engine

The engine is available for download here.  It is bundled as a zip archive while available on Github (the code is not directly on Github however, but is included within the archive).  Simply extract the archive contents then run start-win.bat or start-mac.command depending on platform.  The engine is built around NodeJS  and Node must be installed before using the QICI engine.  The code is released under the MIT license, making QICI both free as in beer and free as in freedom.  There are future hooks for paid plugins, but currently all plugins are available for free as well.

Once you run QICI, it loads a browser window and a fairly humble project management screen:

image

Here you load existing or create new projects.  Creating a project is simply a matter of selecting an empty directory and clicking Create.

Once you’ve loaded or created a project, you will be brought to the primary editing window:

image

 

The editor is pretty typical of modern component based game engines.  You’ve got an editing surface for composing screen elements, a hierarchy view containing your current scenes contents, a project view for managing the assets in your project and finally an inspector view that updates dynamically based upon the current selection.  For a web based editor, the UI is silky smooth and doesn’t feel clunky.  For example, right click context menu support is prevalent and intuitive:

image

The editor supports common features like drag and drop, tool tips, resizes well in the browser and frankly doesn’t feel like a web app most of the time.  I encountered the occasional glitch where the cursor got stuck in the wrong mode, but they were uncommon and easily avoided.  Frankly, if you weren’t in a web browser, you would have no idea this was a web application.

You can also change the layout to work in Portrait mode, like so:

image

 

The UI can be switch between English and Chinese via the Language menu.  You can also configure the editing window to mirror common iOS device dimensions:

image

Oddly, no Android love.  Not really a big deal, as this just sets the dimensions and a Free Aspect option exists.

 

Creating Scenes

Your game project is composed of one or more scenes.  We can add, reload and save scenes via the project menu.

image

The following settings are configurable on the project by project basis:

image

Once saved, a Scene appears under states in your assets view:

image

 

Scenes are composed of the following elements:

image

 

To create a new game object, simply select it from the list and position it on screen.  Here for example is a sprite:

image

 

There are widgets for placement, free or axis confined, scaling and free scaling, but oddly enough, not rotation.  To perform rotation, you need to use the Inspector window:

image

As you can see, the Inspector has editors for the various components that go into our game object.  In this case, a Sprite contains a Transform and Sprite component.  You can add additional components via the Add Component button:

image

Somewhat confusingly, you can also add components in another manner, as we will see shortly when we attach a script.  You can add additional functionality via Plugin, like so:

image

 

Let’s add an Arcade Physics controller to our game, and make our sprite a physics object.  Select Plugins->Plugin Manager, then in Inspector enable Arcade Physics.  Next click Save and Reload:

image

Now if we click Add Components in the Inspector with our sprite selected, we get:

image

 

Select Plugins->Arcade->RigidBody.  You will see in Inspector, we now have an additional component to configure.

image

 

Set the Gravity Y value to 10, and hit the play icon and you should see:

GIF

 

As you can see, you can preview the running of the scene directly in the editor.

As you may have noticed from the game objects available, QICI has robust UI support.  You can easily use hierarchies of components to form complex UIs, like so:

image

 

An impressive number of layout properties are exposed to the inspector:

image

Assets can be imported into the engine using drag and drop, or by simply copying them into the folder in the underlying file system and click reimport in the UI.

 

Coding in QICI Engine

What might not be immediately obvious is how you actually code in QICI and of all the features, this one is probably the least intuitive.  You code by attaching behaviors to your game entities.

Start by right clicking the Scripts folder in the assets view and select New JavaScript File:

image

 

Name your script and you will see that a stub script has been created for you, you can preview the code in the Inspector:

image

 

At this point you are probably best off firing up your favourite JavaScript editor and opening the generated script.  You can jump to the script directly right clicking the script and select Open in Local File Explorer:

image

 

You can however edit using the built in editor if you prefer:

image

All scripts are qc.Behaviors.  You will notice that this class implements a number of callback methods for various points in the games lifecycle such as awake, onDown, render, onDestroy, etc.  By implementing these methods, we add functionality to our script.  Consider this simple script, that causes a button to change it’s text to “Clicked” when clicked:

var ButtonHandler = qc.defineBehaviour('qc.engine.ButtonHandler', qc.Behaviour, function() {
    // need this behaviour be scheduled in editor
    //this.runInEditor = true;
}, {
    // fields need to be serialized
});

ButtonHandler.prototype.onClick = function() {
  
    this.gameObject.find("Text").text = "Clicked";
};

 

Now attach this script to the component by dragging and dropping, like so:

GIF2

And you will see a new component has been added to our Button:

image

 

Values can easily be exposed to the editor, like so:

var ButtonHandler = qc.defineBehaviour('qc.engine.ButtonHandler', qc.Behaviour, function() {
    this.meaning = 42;
}, {
meaning : qc.Serializer.INT
});

ButtonHandler.prototype.onClick = function() {
  
    this.gameObject.find("Text").text = "Clicked";
};

Resulting in:

image

 

Behind the scenes however, Phaser is always there.  You can actually access Phaser directly using gameObject.phaser, like so:

ButtonHandler.prototype.onClick = function() {
  
    this.gameObject.find("Text").text = "Clicked";
    alert(this.gameObject.phaser.game.width);
};

 

Therefore, if you are familiar with Phaser, you should be immediately comfortable with QICI.  For more help with Phaser, I have already created a fairly comprehensive tutorial series.

 

Documentation and Community

This is a very new project, just shipping the end of last year.  There isn’t much of a community per say, but there is a fledgling question forum.  Hopefully in time a proper community forms.

 

In terms of documentation however, QICI Engine is good, shockingly good in fact.  There is a complete guide available here walking you through the fundamentals and primary components of QICI.  With the exception of a good scripting guide and a document on program flow, I found everything I was looking for in sufficient detail to accomplish what I needed.  There is also a very good searchable reference guide available here.  Between the two, and with prior Phaser experience (which is also remarkably well documented), I had no trouble whatsoever getting up to speed.  Additionally there is a pretty good collection of examples available here on Github

Frankly, for a young open source project, this is hands down the best documentation I have ever seen.  Kudo QICI team.

 

Summary

This is a game engine that takes one of my favourite HTML5 game engines (Phaser) and adds an incredibly polished layer of tooling on top of it.  Additionally a straight forward component system is added, while not getting in the way of the underling libraries.  If you are looking for a 2D HTML5 library, especially if you are already familiar or working with Phaser, this is a project you absolutely have to check out.  It is robust, straight forward, well documented and well designed.  Aside from the lack of community, there really isn’t much more you could ask of this great new engine!

I enjoyed my time with QICI and will be exploring it more in the future.  Let me know if this engine interests you and if you would like to see some tutorials from GameFromScratch.

 

The Video

Programming , ,

14. January 2016

 

This news comes via Gamasutra, Valve Software release their Steam Link SDK on Github.  SteamLink is a Linux powered box that enables you to stream your Steam library directly to your TV like you currently can between two PCs today.

From the github readme:

This is the SDK for the Valve Steam Link

Hardware:

The Steam Link hardware is a single core ARMv7 processor using the hard-float ABI, running at 1 GHz, with neon instruction support. It has approximately 256 MB of available RAM and 500 MB of usable flash storage.

Software:

The Steam Link software is custom Linux firmware based on kernel 3.8 and glibc 2.19.

The Steam Link SDK has support for the following major APIs:

OpenGL ES 2.0
Qt 5.4
SDL 2.0

The SDL game controller API is recommended for Steam Controller support on the Steam Link.

Contents:

examples 
    very simple example applications to demonstrate how to build applications using the SDK
external
    source code to 3rd party components of the Steam Link, each directory has a
    "build_soc.sh" script to rebuild the component.
kernel
    Steam Link linux kernel source code
rootfs
    Steam Link root filesystem
toolchain
    GCC toolchain for Steam Link
setenv.sh
    Script to configure build environment

Between this, NVidia GameStream, XBox One streaming and the upcoming PS4 to PC streaming, it seems like inhome game streaming is the next big thing.

GameDev News

14. January 2016

 

Remember when you used to wait months to years for updates for your game engine?  Isn’t competition a wonderful thing?   Along with today’s Unreal Preview release we get word of the new weekly Unity patch, 5.3.1p3.

 

From the release notes:

Features
  • Added link to learn more about Unity Cloud Build in the Build Player window.
Improvements
  • Tizen: Now supports tizenstore URL protocol to open up tizen store pages.
  • VR: Applications that lost Focus no longer throttle the CPU.
Fixes
  • (753610) - IL2CPP: Fixed StateMachineBehaviour messages not being executed if stripping is enabled.
  • (none) - [API Updater] Fixed possible crashes in ScriptUpdater.exe when resolving types.
  • (none) - [AssetLoading]: Fixed excessive memory usage when decompressing assetbundles with many objects inside (very large serializedfile).
  • (none) - [Profiler] Fixed excessive memory usage in development players.
  • (750442) - [Substance]: Fixed a rare crash that could happen around the destruction of animated ProceduralMaterials.
  • (none) - [Windows 10]: Fixed incorrect display of Korean characters on Windows 10 (if Korean language pack is not installed) and Windows Phone 10, Unity will now fallback to "Malgun Gothic" font.
  • (743739) - Android: Fixed a crash when loading many asset bundles.
  • (754108) - Editor: Display console documentation items in the help menu, when console docs are present, but the main documentation is not installed.
  • (754928) - Fixed an issue where enabling vertex compression for positions could result in geometry not being rendered.
  • (755088) - IL2CPP: Ensure that the header file for a type defined in a different assembly is included when that type is used for a method parameter.
  • (752197) - IL2CPP: Fixed double.Parse with InvariantCulture.
  • (756447) - IL2CPP: Forward declare a type and marshaled type in the method declarations header for marshaling methods so that the order of includes does not matter.
  • (670027) - IL2CPP: Implemented support for MetadataToken property on the following types: FieldInfo, EventInfo, MethodInfo, ConstructorInfo, PropertyInfo, Type, and Module.
  • (754539) - iOS/IL2CPP: Correct stack traces in exception messages, which could sometimes miss managed frames.
  • (754562) - Mecanim: Fixed a bug where Euler rotations would be retained in scene after scrubbing animation.
  • (752955) - Mecanim: Fixed a bug where Euler rotations would not work in Legacy Animations.
  • (748936) - Networking: Added a 'connecting' state and cancel button to NetworkManagerHUD UI to prevent multiple attempts to connect at the same time.
  • (757766) - Networking: Fixed 'recursion depth exceeded' error for complex NetworkBehaviour scripts.
  • (746011) - Networking: Fixed ClientScene object list being wrong after host migration.
  • (755391) - Networking: Fixed NetworkAnimator not working for non-player objects
  • (756153) - Networking: Fixed NetworkServer.SendToAll sends the message to the host twice.
  • (755450) - Networking: Fixed SyncEvent regression issue.
  • (745795) - Networking: Fixed SyncList updates don't use a configurable network channel.
  • (744002) - Networking: Fixed UI that allowed host migration to be enabled for WebGl platform where it is not supported.
  • (751239) - Networking: OnStopAuthority called on server when it should not be.
  • (729157) - Networking: Prevent [Command] functions from accepting NetworkConnection objects as parameters, which causes a UNetWeaver error.
  • (749338) - Networking: Prevent NetworkIdentity objects from being server-only and local-player-authority at the same time, as this is not a valid configuration.
  • (744007) - Physics: Fixed memory corruption/crash when deactivating a collider from inside of OnTriggerStay.
  • (755612) - Physics: PlatformEffector2D now supports negative scaling on parent Transform.
  • (750266) - Scripting: UnusedByteCodeStripper2 will show a better error message when processing assemblies, so it will be easier to identify offending assembly.
  • (759336) - Shaders: During surface shader generation, do not initialise non-vector type members of the Input struct i.e. a struct/int/matrix as a member variable of the Input struct.
  • (none) - UI: Added fix so that the placeholder text is enabled when the InputField is deactivated and the text is empty.
  • (741751) - UI: Removed remaining uses of multiple display system.(Temporary fix whilst none native resolutions are not supported).
  • (731324) - VR: Fixed Render Scale not reverting after being edited in play mode.
  • (732236) - VR: Fixed VRDevice.isPresent reporting true on first frame if Device was not connected at start.
  • (753256) - VR: Stereo Cameras correctly respect camera depth when rendering to the game view and HMD.
  • (754533) - Windows Store: Fixed a build failure (rrw failure) when calling methods with System.Numerics.Matrix4x4 as parameter.
  • (756086) - Windows Store: Fixed Screen.SetResolution when upscaling lower resolution to fullscreen, previously you would see a corrupt image on the screen.
  • (730289) - Windows Store: Fixed WheelCollider on x64 (NullReferenceException occurring).
  • (746301) - Windows Store: Fixed player crashing on startup on .NET scripting backend.
  • (759166) - Windows Store: RunInBackground option will be respected when application window looses focus, and if enabled, the application will keep updating. Note: if application window is minimized it will be still paused, because OS suspends the application.

GameDev News

14. January 2016

 

Want a little extra spice in your development life?  Does juggling live hand grenades, chainsaws and lit dynamite sound like a fun way to spend the afternoon?  Then have I got news for you!  Unreal Engine 4.11 Preview 2 has been made available.  Obviously it’s a “you get what you get” type preview release and the purpose is to find out what’s going to explode to make for a more stable release when the less adventurous types upgrade.

 

Preview 1 added:

  • Rendering Updates:
    • New physically based shading model for realistic hair based on the latest research from film. It models 2 specular lobes, transmission, and scattering.
    • New physically based shading model for eyes.
    • New physically based shading model for cloth. This combines the standard shading model with a layer of velvet fibers. This layer simulates fuzz and fabrics.
    • Capsule Shadows - We now have support for very soft indirect shadows cast by a capsule representation of the character
    • Lightmass Portals - Skylight quality indoors can be massively improved by setting up Portal actors over openings. Portals tell Lightmass where to look for incoming lighting, they don’t actually emit light themselves. Portals are best used covering small openings that are important to the final lighting. Placing large Portals all over the level will dramatically increase build times.
    • Per-vertex translucency lighting - There are two new translucency lighting modes available in the material editor which compute lighting per-vertex. PerVertex lighting modes use half as many shader instructions and texture lookups.
    • We now have support for 3 lighting channels. You can set which channels a PrimitiveComponent or a LightComponent is in.
    • We’ve integrated Intel's Embree ray tracing library into Lightmass and we got a huge lighting build speedup from it, as the majority of lighting build time goes toward tracing rays to figure out how light is bouncing.
    • We’ve integrated updates to the D3D12 RHI to allow better CPU utilization while generating rendering commands in parallel.
    • Improved quality and performance of the SubsurfaceScatteringProfile shading model.
    • Circle Depth of Field post process - New Material Functions to render small particles with out of focus.
    • Materials using separate translucency can now be rendered at a lower resolution, which can be useful to improve GPU performance for fillrate and overdraw heavy geometry (for example particle effects).
      The resolution is controlled via a console variable, r.SeparateTranslucencyScreenPercentage, which expresses separate translucency as a percentage of current screen resolution.
    • Static mesh LOD transitions now supporting dithering.
  • Core Updates:
    • CrashReporter Server available
    • Improvements
      • Garbage Collection up to 4x faster
      • Dependency preloading - brings us close to seek free loading (90% of the time seek free), faster package loading
      • UnrealHeaderTool makefiles - iterative UHT runs are 5x faster
  • Platform Updates:
    • Metal on Mac
    • AppleTV support
    • Fast Semantics on XboxOne
    • VS2015 on XboxOne
    • Code plugins for PS4
    • Deterministic cooking "bug-finder" commandlet
    • Background content precaching for most-recently-cooked-platform
  • Editor/Tools Updates:
    • Sequencer improvements
      • New tracks: Shot/director, play rate, slomo, fade, material, particle parameter tracks.
      • Improved movie rendering, exr support
      • Improved/consistent keyframing behaviors, copy/paste keyframes, copy keys from matinee, 3d keyframe path display
      • Master sequence workflow
      • Spawnables workflow
      • UI improvements: track coloring, keyframe shapes/coloring, track filtering
  • Framework Updates:
    • Anim Dynamics Skeletal Control for Animation Blueprints - allows dynamic motion to be procedurally added to skeletal meshes without having to use a full physics solution. This is accomplished using the new “Anim Dynamics” node in the Animation Graph of an Animation Blueprint.
  • Networking Updates:
    • Packet handler system
      • Easy interception of packets for things like encryption, compression, etc
      • Added CryptoPP, and packet handler components that support it out of the box
    • Oodle integration (SDK purchase required)
    • Client-side replays
  • Blueprint Updates:
    • The Blueprint search tool has been updated to support more advanced search functionality (to get more targeted results).
    • Native C++ functions marked BlueprintCallable can now also be optionally marked as DevelopmentOnly. This new metadata allows calls to those functions to be disabled (compiled out) of all Blueprint function graphs in cooked/packaged builds without breaking the execution flow.
  • Mobile Rendering Updates:
    • Support for hardware instancing on iOS and many Android devices, reducing draw calls for Foliage and InstancedStaticMeshComponents.
    • Improved reflections on mobile, optionally interpolating between up to 3 reflection captures and performing parallax correction
  • VR Updates:
    • Instanced Stereo Rendering
    • Head Mounted Display Camera Refactor
    • Stereo Layers
    • SDK Updates: Oculus SDK 1.0, SteamVR 1.0, PlayStationVR SDK3 Updates, and Gear VR LibOVRMobile 1.0 (not yet updated for Preview 1, but will be by final release)
  • Landscape/Foliage Updates:
    • Landscape layer whitelisting, allowing you to control which landscape components should accept which layers in the painting tool
    • Landscape layer usage view mode, to quickly see which landscape components are using which layers
    • Support for baking WorldPositionOffset changes into landscape collision

Preview 2 mostly addresses a number of fixes from Preview 1, including:

Fixed! UE-24563 Editor should launch launcher silently
Fixed! UE-25092 Error in NonUnityTestCompile_OnMac due to Shadow variable
Fixed! UE-25032 UnrealHeaderTool is checking for plugins required only by game.
Fixed! UE-24812 Editor crashes when adding a mesh reference to the event graph of a blueprint
Fixed! UE-24590 Crash resetting Bound Bone in Anim Dynamics node
Fixed! UE-25064 Crash upon removing Input Axis in Project Settings by using X
Fixed! UE-24958 Crash when getting the sequence player in level blueprint
Fixed! UE-24857 Re-implement plugin changes in 4.11
Fixed! UE-24854 Add release custom version
Fixed! UE-24729 Vehicle Blueprint template has hole in the floor
Fixed! UE-24710 Third Person Code has failed import load errors
Fixed! UE-24694 Match 3 crash when spamming gem moves
Fixed! UE-24773 Enabling Tessellation on Materials in 4.11 causes geometry to Disappear
Fixed! UE-24741 Flickering SpeedTree foliage when destorying an actor using the same mesh
Fixed! UE-24724 Dropdown menus are behind the Import window on Mac
Fixed! UE-24292 Using the Set console command to change a value at runtime causes a crash
Fixed! UE-24326 Vehicle Advanced projects have missing and blocking collision
Fixed! UE-24522 Find-in-Blueprints no longer works after switching languages.
Fixed! UE-24167 Physics Asset cannot be moved in the level
Fixed! UE-25140 VS2015 builds sometimes hang when using XGE
Fixed! UE-25027 Reading from ini sections not cached by new build system doesn't work in Android Plugin Language
Fixed! UE-25026 Puzzle Code lighting needs to be rebuilt
Fixed! UE-25013 Editing right-to-left text is very unstable
Fixed! UE-24967 Integrate D3D12 update from MS
Fixed! UE-25120 OBB downloader license check causes exception if TargetSDK set to 21 or higher
Fixed! UE-25090 Java libraries copied to JavaLibs by Android plugin are not included in project dependencies
Fixed! UE-25031 Mesh particles do not work on mobile
Fixed! UE-24989 Find-in-Blueprints does not find anything outside of current asset or Engine content
Fixed! UE-24975 Instanced stereo foliage culling incorrectly
Fixed! UE-24963 Zen Gardens opens with Load Errors/Map Checks/Warnings
Fixed! UE-24962 Crash exiting D3D12
Fixed! UE-24926 Include Render Pass name as variable in Filename Format field
Fixed! UE-24920 EXR renders won't go above 640x360 when rendering from an Editor Window
Fixed! UE-24900 Main and Alt input keys set in Touch Interface do not work
Fixed! UE-24873 Mac: Clicking on parent window when a child window is behind it activates the child window
Fixed! UE-22068 Changing inherited value in a blueprint child class also changes it in parent
Fixed! UE-21795 Switch on Gameplay Tag does not correctly register tag alterations in Standalone game
Fixed! UE-23269 Crash opening QA-Animation on Mac
Fixed! UE-22970 The white horizon for the sky is flipped upside down (at top of screen instead of bottom) for non-MobileHDR on mobile devices
Fixed! UE-24852 Creating a Blueprint out of existing Blueprints crashes the editor

You can read more about the release on the Unreal Engine forums.

GameDev News ,

 

Month List

Popular Comments