Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon
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


13. January 2016

 

I recently published a tutorial on creating a game level in Blender over three parts, but I never actually illustrated how such a level would be used by a game engine.  A user on /r/gamedev asked exactly this question, so I figured I would throw together a quick post showing how such content could be loaded into a game engine, in this case LibGDX.  This code is lifted directly from my LibGDX tutorial series, as is further information on how to export your model from Blender.

 

Here is the process...

First, and this is LibGDX specific... there is a data size limit of short int (32k) for the number of indices you can have.  This means by default the landscape we have generated is too dense for use in LibGDX.  I simply applied the decimate modifier to the plane object to get my face count down to 8,600.

image

 

Now export the scene as an FBX file.  Default settings should work fine.

 

Next you need the FBX-Conv for your platform, which can be downloaded here.

 

With the FBX file and the proper fbx-conv.exe extracted to the same folder, run the command:

fbx-conv.exe -f -o G3DJ level.fbx

Obviously change the exe name and level name to match your own.  This will generate a g3dj file, copy it to the assets folder of your LibGDX project.  You also need to copy in the Skybox and Ground textures you used in this project to the assets folder.  If these files are embedded in your .Blend file, you can export them using the command File->External Data->Unpack All Into Files or you can manually save the files externally in UV Image Editor.

image

 

Now with all of these files copied into your assets folder, write the following code:

package com.gamefromscratch.levelloader;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Files.FileType;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.PerspectiveCamera;
import com.badlogic.gdx.graphics.g3d.Environment;
import com.badlogic.gdx.graphics.g3d.Model;
import com.badlogic.gdx.graphics.g3d.ModelBatch;
import com.badlogic.gdx.graphics.g3d.ModelInstance;
import com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute;
import com.badlogic.gdx.graphics.g3d.loader.G3dModelLoader;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.utils.JsonReader;
import com.badlogic.gdx.utils.UBJsonReader;
import com.badlogic.gdx.graphics.g3d.utils.AnimationController;
import com.badlogic.gdx.graphics.g3d.utils.AnimationController.AnimationDesc;
import com.badlogic.gdx.graphics.g3d.utils.AnimationController.AnimationListener;



public class LevelLoader implements ApplicationListener {
	private PerspectiveCamera camera;
	private ModelBatch modelBatch;
	private Model model;
	private ModelInstance modelInstance;
	private Environment environment;

	@Override
	public void create() {
		camera = new PerspectiveCamera(
				90,
				Gdx.graphics.getWidth(),
				Gdx.graphics.getHeight());

		camera.position.set(0f,0f,300f);
		camera.lookAt(0f,0f,1f);

		camera.near = 0.1f;
		camera.far = 5000.0f;

		modelBatch = new ModelBatch();

		JsonReader jsonReader = new JsonReader();
		G3dModelLoader modelLoader = new G3dModelLoader(jsonReader);
		model = modelLoader.loadModel(Gdx.files.getFileHandle("level.g3dj", FileType.Internal));
		modelInstance = new ModelInstance(model);

		environment = new Environment();
		environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.8f, 0.8f, 0.8f, 1.0f));

	}

	@Override
	public void dispose() {
		modelBatch.dispose();
		model.dispose();
	}

	@Override
	public void render() {
		Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
		Gdx.gl.glClearColor(1, 1, 1, 1);
		Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);

		camera.rotateAround(Vector3.Zero, new Vector3(0,1,0),1f);
		camera.update();

		modelBatch.begin(camera);
		modelBatch.render(modelInstance, environment);
		modelBatch.end();
	}

	@Override
	public void resize(int width, int height) {
	}

	@Override
	public void pause() {
	}

	@Override
	public void resume() {
	}
}

 

And when you run this code:

resizedLevelGif


13. January 2016

 

To be honest, I am shocked it took this long.  JetBrains have made an excellent Java IDE for ages.  Then they released IDEs for just about every single language out there, as well as the C# refactoring tool Resharper, but never a full blown C# IDE, until today that is.

Interestingly though, this isn’t running on a JVM like their others (IntelliJ, Webstorm, PHPStorm), instead:image

Project Rider is a standalone IDE built on the IntelliJ Platform, much like WebStorm, DataGrip and our other IDEs.

The difference however, is that instead of reimplementing ReSharper’s features on the IntellIJ Platform, which runs on the JVM, we’re using ReSharper in a headless mode, out of process, and communicating with it via a very fast custom binary protocol. As such, the backend continues to be ReSharper written in C# running on .NET or Mono, and the frontend is written in Kotlin, talking to the IntelliJ Platform’s APIs.

 

And you may ask, why create a C# IDE with Visual Studio and Xamarin filling the need?

Well you kept asking us, so we finally got around to doing it!

Jokes aside though, our main reason is to provide choice. We believe that we can provide a great user experience for developers that might be interested in using alternative environments.

So why now? Because we believe it is the right time due to several factors:

  • We’ve been working for several years in allowing ReSharper to work in different environments, independently of Visual Studio. An example of this is dotPeek.
  • It’s quite clear that there’s an ever increasing tendency of developers using non-Windows platforms, and we’d like to give them the same experience they’ve come to know and love with ReSharper.
  • Finally, Microsoft moving its platform and C# language towards Open Source, along with initiatives such as CoreCLR, have been an added incentive.

 

So, what timeframe are we looking at then?

We’re aiming to open a private EAP in the coming weeks, towards the end of February. We’ll announce the signup form here on the blog, as well as on Twitter.

Soon after the private EAP we’ll move to a public EAP. When this will happen very much depends on the feedback we get from the early testers. Our aim is to release sometime in Autumn 2016.

 

For more details on Project Rider, click herehttp://blog.jetbrains.com/dotnet/2016/01/13/project-rider-a-csharp-ide.

GameDev News


13. January 2016

 

Welcome to the final part of our three part series on level creation using Blender.  In the first part of the tutorial we created a skybox for our world.  In the second we used a height map to create some terrain.  Today we are going to look at applying multiple textures to that terrain.

 

We are going to pick up where we left off, we have a large plane distorted to create our landscape.  If you haven’t already, apply the Displace modifier to make it permanent.  You should have already UV Unwrapped the plane object before we applied the displace modifier, giving us a nice even UV grid to work with.

 

Next we are going to need some textures to paint with.  Seamless textures work best as they can be tiled without creating a noticeable seam.  For this example however, I just downloaded a couple textures from TextureLib, a grass, rock and water texture.  Use whatever textures you wish to use.  Now that you have your textures, we need to import them into Blender.  I find the easiest way is to just add them as textures to the plane object and name them appropriately, like so:

image

No need to setup mapping coordinates or anything else, as we arent going to be using these textures directly, they just needed to be made available for Blender.

 

Now with your Plane selected, make sure there is a Material, and if there isn’t, create a new one.

image

 

Now switch over to the texture tab and add a new texture of type Image or Movie, then click the New button:

image

 

Call in GroundTexture or something similar:

image

 

You may find 1024x1024 is too low res for a large terrain, so you might want to try 2048x2048.  Now it’s time to start painting our texture.  Configure your Blender windows so you have a 3D view on one side and the UV/Image Editor on the other, and switch the 3D view to Texture Paint mode, like so:

image

 

Now in the UV editor, make sure that your GroundTexture is active:

image

 

In the 3D view, in the Tools (T) sidebar, we now set the texture we want to paint with.  Locate the texture area, click the thumbnail icon and select one of your textures, like so:

GIF

 

Now we can paint directly on the 3D model.  You have a ton of control over your brush, but the two most important settings are these:

image

 

These set the size of your brush and the strength of your paint tool.  Now simply paint the terrain as you desire:

GIF2

 

You will notice that the texture updated automatically the the UV/Image Editor:

image

 

If you prefer, you can edit in the UV editor window instead, simply turn Edit mode on:

image

 

The brush settings from the 3D View Tools window will be applied to the UV editor in Paint mode.  Now simply change textures and repeat the process until your texture is complete.  When you are done, you may want to export your texture for use in an external engine.  In the UV/Image Editor, select Image->Save As Image:

image

 

End result:

image

 

Not the greatest looking level, but that’s due to lack of effort, not the tool.  Not bad for 20 minutes work.  Obviously there are other tasks you’d want to perform.  You probably want a normal or displacement map on the terrain to give it small surface level imperfections, and obviously you’d want to add static meshes for trees, shrubs etc... but that is simply a matter of doing more of the same.

 

The Video

Art Design


12. January 2016

 

Corona Labs, the makers of the popular Lua based mobile game engine, just release version 1.6 of Corona Editor.  Corona Editor is a light weight IDE built as a plugin for Sublime Text that enables debugging, code snippets, code completion and more.

Details of the 1.6 release from the blog announcement:

Corona Labs is happy to announce the availability of Corona Editor 1.6. This is an update for the add-on package for Sublime Text 2 and Sublime Text 3 that provides code completion, syntax highlighting, documentation, and debugging to Corona developers.

The release of 1.6 includes the following updates:

Debugger improvements
  • Fixed an issue with a hanging after pressing Shift+F10.
  • Fixed a bug with spaces in project pathnames.
  • Current status is now displayed in the “Console” pane.
  • The “Console” output is now cleaner.
  • Generally improved reliability.
Corona Editor Project improvements
  • On OS X, Corona EditorRun Project now uses the most recent daily build in the/Applications folder by default. It will fall back to the public build if there are no daily builds.
  • Removed project “build system.” The menu command Corona EditorRun Project or the Cmd+F10(Mac) Win+F10(Windows, maybe mapped to FN+F10) key sequence is much more reliable.
  • Added Clear Build Panel command to main menu and context menu.
Editing improvements
  • Fixed indentation of elseif blocks.
  • Latest code completions are up to date to daily build 2016.2803.

Learn more about Corona Editor.

GameDev News


AppGameKit Studio

See More Tutorials on DevGa.me!

Month List