Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

20. April 2018


Dust3D is a new application unlike any other 3D modeller I’ve used.  It’s free, open source, runs on Mac and Windows, with Linux support possible if you compile it yourself.  What makes it unique however is it’s approach to modelling.  Essentially you model by create a series of circles along two axis, which act as loft points for the generated mesh.  Really it’s one of those things you need to see in action to understand… thankfully I’ve made this video showing exactly that.



Dust is certainly not for creating highly detailed 3D models, instead it’s more useful for rapidly creating base meshes, which can then be exported in OBJ format and sculpting/refined in other 3D modelling applications.

Art ,

18. April 2018


GameGuru, perhaps the most beginner focused 3D game engine available, just received a pretty sizeable update.  Hands down the biggest new feature of the release is the new Direct X 11 powered, PBR (Physically Based Rendering) graphics engine, which should both look better and have increased performance.  In addition to the new renderer, there are several other fixes and features in the release.


Details from the release:

Great Assets and Levels

  • Improved the Welcome splash to show off PBR game level
  • Updated Big Escape level to use PBR only assets
  • Added new 'Miscellaneous' folder with 'Massive Chess' for Chess Game sampleGG
  • Security Fence and Gate
  • Added 'Preview Orbs' folder to Misc models for PBR material previewing
  • Added CityscapePBR folder which contains extra PBR assets for Big Escape
  • Added two new Grand Pianos to the Furniture folder
  • Added a new glass fence to the Fixtures folder

Much Improved Performance

  • Removed long-silence when standalone first runs (slow on some systems)
  • Launch time loading speed increased significantly (PCTEST: 60sec -> 12sec)
  • HLSL shaders and LUA scripts now compiled into binary for faster loading
  • Faster HUD rendering due to quad batching
  • Multicore AI for faster processing of character AI

Better Visuals

  • New post process shader used called FXAA-CV-LS (improves anti-alias and contrast)
  • Fixed issue with Steam Overlay not rendering correctly
  • Enlarged editor icons and gave them a new design
  • Cascade shadow mapping now with 8 cascades instead of 4
  • Standalone splash screen now detects closest watermark resolution
  • Can change sky shader in sky file and sky in realtime

And more........

  • Added full weapon and animation behaviour to the Character Creator
  • More control over static light mapper
  • Added support for Logitech F310 controller to control Standalone menus
  • Improved FBX importing
  • Added lots of new LUA commands

GameGuru is available on Steam here or on game-guru.com..

GameDev News

17. April 2018


If you are a Blender Game Engine (BGE) fan, I have some bad news for you.  Earlier today BGE was removed from the Blender 2.8 branch of source code.  This means in the next version of Blender and beyond, there will no longer be an in-built game engine.  The game engine was never particularly popular and apparently caused a bit of a code maintenance nightmare, so the decision was made to remove it.  Then changes to the game engine are massive, touching 916 files in the code base.

Details of the change from the Blender code commit comments:

Removing Blender Game Engine from Blender 2.8

Folders removed entirely:

  • //extern/recastnavigation
  • //intern/decklink
  • //intern/moto
  • //source/blender/editors/space_logic
  • //source/blenderplayer
  • //source/gameengine

This includes DNA data and any reference to the BGE code in Blender itself.
We are bumping the subversion.

Pending tasks:

  • Tile/clamp code in image editor draw code.
  • Viewport drawing code (so much of this will go away because of BI removal that we can wait until then to remove this.

You can learn more about the change in this video, also embedded below.

Art, Programming, GameDev News

17. April 2018


Foundry, the makers of Mara and Modo among other CG applications, have just released Kanova in early access on Steam.  Kanova is a 3D sculpting application in the same vein as Mudbox and ZBrush, although designed for a VR workflow.  Using your Oculus Rift or HTC Vive headset you can model in 3D like working with virtual clay.  Don’t worry desktop users, VR is not required to use Kanova.  The nicest part is, Kanova is also currently free as part of the early access release!


Details of the new application from Steam:

Kanova is a simple, easy to use, VR enabled, 3D sculpting application. It uses the patented 3D Adaptive Distance Field (ADF) technology developed by Foundry. Unlike other tools on the market, Kanova can be used in pure VR form, for creative exploration, or as a hybrid/VR desktop application. Artists can further refine and develop creations by exporting to Foundry's 3D content creation platform, Modo and Modo indie.
Sculpting in VR completely changes artists typically approach creating 3D objects. Freeing them from learning technical tools and terminology and allowing them to intuitively sculpt 3D objects in a natural fashion. The simplified nature of Kanova's interaction means that it appeals to first time users to 3D as well as seasoned artists and industry professionals, giving each a unique tool from which to create 3D artwork.
Feature highlights include:

  • Editing scenes using Kanova in desktop mode and within the VR environment
  • Selecting different modeling tools
  • Creating multiple layers
  • Sculpting and painting in color
  • Exporting to Sketchfab format


The Kanova User Guide provides details on the features available and how to access them using the Kanova desktop application and from within the VR environment.


I went hands on with Kanova in this video, also embedded below.  While early in development, it’s an application that holds a heck of a lot of potential.

Art

15. April 2018


A couple days back AppGameKit v2018.4.12 was released with the major new feature being AR (Augmented Reality) support.  I decided to give the new AR functionality a shot and it was really impressive how easy it was.  In order to get started with AR and AppGameKit you are going to need an AR compatible device.  On iOS, this means an ARKit compatible device, which basically means an iPhone 6S or newer device, while on Android device you need an ARCore compatible device from this list of phones.


I modified the AR example slightly, to remove a bit of functionality and to instead load a simple Tie Fighter model I downloaded off the web and converted to .X format.  AppGameKit can be coded using either C++ or their higher level Basic like script, which is what was used in this example.  Here is the slightly modified source code used:

// set window properties
SetWindowTitle( "AR Tie Fighter" )
SetWindowSize( 1024, 768, 0 )

// set display properties
SetVirtualResolution( 1024, 768 )
SetOrientationAllowed( 1, 1, 1, 1 )
SetScissor(0,0,0,0)
SetClearColor( 101,120,154 )
SetGenerateMipmaps( 1 )
UseNewDefaultFonts(1)
SetPrintSize(20)

// camera range from 0.1 meters to 40 meters
SetCameraRange( 1, 0.1, 40 )
SetAmbientColor( 128,128,128 )
SetSunColor( 255,255,255 )

// load tie fighter
LoadObject( 1, "tie.x")
SetObjectPosition( 1, 0,0.1,0 )
LoadImage(1, "diffuse.jpg")
SetObjectImage (1,1,0) 
SetObjectRotation(1,270,0,0)

function ShowModel( show as integer )
  SetObjectVisible( 1, show )
endfunction

ShowModel( 0 )

function ScaleModel( amount as float )
  SetObjectScalePermanent( 1, amount, amount, amount )
endfunction

ScaleModel( 0.025 )

// create some planes to show detected surfaces, initially hidden
for i = 101 to 150
  CreateObjectPlane( i, 1,1 )
  SetObjectRotation( i, 90,0,0 )
  FixObjectPivot( i )
  SetObjectVisible( i, 0 )
  SetObjectColor( i, 255,255,255,128 ) // 50% transparent
  SetObjectTransparency( i, 1 )
next i

// add some buttons to control various features
AddVirtualButton( 1, 100,565,100 )
AddVirtualButton( 2, 100,665,100 )
SetVirtualButtonText( 1, "Scale +" )
SetVirtualButtonText( 2, "Scale -" )

AddVirtualButton( 3, 924,665,100 )
SetVirtualButtonText( 3, "Hide" )

function ShowHUD( show as integer )
  SetVirtualButtonVisible( 1, show )
  SetVirtualButtonVisible( 2, show )
  SetVirtualButtonVisible( 3, show )
  SetVirtualButtonActive( 1, show )
  SetVirtualButtonActive( 2, show )
  SetVirtualButtonActive( 3, show )
endfunction

// initialize AR, if possible
ARSetup()
while( ARGetStatus() = 1 )
  // wait while user is being prompted to install ARCore
  Sync()
endwhile

AnchorID as integer = 0
ShowPlanes as integer = 1
ambientScale# = 1.0

do
  // get light estimation
  ambient = ARGetLightEstimate() * 255 * ambientScale#
  SetAmbientColor( ambient,ambient,ambient )
  
  // check screen tap for plane hits, but only if buttons are visible
  if ( GetPointerReleased() and ShowPlanes = 1 )
    // check the point that the user tapped on the screen
    numHits = ARHitTest( GetPointerX(), GetPointerY() )
    if ( numHits > 0 )
      ShowModel( 1 )
      // delete any previous anchor, could keep it around instead
      if ( AnchorID > 0 ) then ARDeleteAnchor( AnchorID )
      // hit test results are ordered from closest to furthest
      // place the object at result 1, the closest
      AnchorID = ARCreateAnchorFromHitTest( 1 )
      ARFixObjectToAnchor( 1, AnchorID )
    else
      // if the user didn't tap on any planes then hide the object
      ShowModel( 0 )
    endif
    // clean up some internal resources
    ARHitTestFinish()
  endif
  
  // place the buttons at the edge of the screen
  // needs to be done regularly in case orientation changes
  SetVirtualButtonPosition( 1, GetScreenBoundsLeft()+105, GetScreenBoundsBottom()-210 )
  SetVirtualButtonPosition( 2, GetScreenBoundsLeft()+105, GetScreenBoundsBottom()-105 )
  SetVirtualButtonPosition( 3, GetScreenBoundsRight()-105, GetScreenBoundsBottom()-105 )
  
  // detect button presses if they are visible
  if ( ShowPlanes = 1 )
    if ( GetVirtualButtonPressed(1) )
      ScaleModel( 1.05 )
    endif
    if ( GetVirtualButtonPressed(2) )
      ScaleModel( 0.95 )
    endif
    if ( GetVirtualButtonPressed(3) )
      ShowPlanes = 1 - ShowPlanes
      ShowHUD( 0 )
    endif
  else
    // screen tap whilst button are hidden shows them again
    if ( GetPointerReleased() )
      ShowPlanes = 1 - ShowPlanes
      ShowHUD( 1 )
    endif
  endif
  
  // hide old planes
    for i = 101 to 150
    SetObjectVisible( i, 0 )
  next i
  
  // show detected planes
  if ( ShowPlanes )
    numPlanes = ARGetPlanes(0)
    // this demo stops at 50 planes, but there is no internal limit
    if numPlanes > 50 then numPlanes = 50
    for i = 1 to numPlanes
      SetObjectPosition( i+100, ARGetPlaneX(i), ARGetPlaneY(i), ARGetPlaneZ(i) )
      SetObjectRotation( i+100, ARGetPlaneAngleX(i), ARGetPlaneAngleY(i), ARGetPlaneAngleZ(i) )
      SetObjectScale( i+100, ARGetPlaneSizeX(i), 1, ARGetPlaneSizeZ(i) )
      SetObjectVisible( i+100, 1 )
    next i
    ARGetPlanesFinish()
  endif
    
    if ( ShowPlanes )
    Print( "FPS: " + str(ScreenFPS()) )
    select( ARGetStatus() )
      case 2 :  Print( "AR Active" ) : endcase
      case -1 :  Print( "AR Not Available" ) : endcase
      case -2 :  Print( "AR Install Rejected" ) : endcase
    endselect
    Print( "Number of Planes Detected: " + str(numPlanes) )
    Print( "Light Estimation: " + str(ARGetLightEstimate()) )
    Print( "Light Boost: " + str(ambientScale#,1) )
  endif
    
  // draw the camera feed, and then the rest of the scene
  ARDrawBackground()
    Sync()
    RotateObjectLocalZ(1,1)
loop


You can see the results of this code and get a bit more detail by watching the video below:


If you are interested in learning more about AppGameKit, be sure to check out our Closer Look available here.

Programming ,

Month List

Popular Comments