Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon
23. February 2016

 

We mentioned a few weeks back that Godot 2.0 Beta was released.  Today we can remove the beta moniker from the release, the full blown release of Godot 2 is now here.  Major new features from the release include:

NEW CORE FEATURES

While for 2.0 core changes were not a priority, there are some nice improvements on this release!

Improved scene instancing

Instancing is one of Godot's best features. For this version it has been further improved. Previously, only the root node of a scene was editable. Changes to sub-nodes would result in data loss.

It is now possible to edit any children node of the instanced scene and have the changes persist. Even sub-instances of instances can be edited with persistent modifications.

Scene inheritance

Begining Godot 2.0 scenes can not only be instanced but also inherited. This allows many interesting use cases such as:

  • Having a base scene (ie, enemy, collectable, obstacle, etc.) with a node hierarchy common to all (like explosions, shines, indicators, etc), and then extend it for each class.
  • Making non-destructive changes to a scene that was imported (ie a 3D scene, etc.)
  • Making non-destructive changes to a scene created by another team member.

New text-based scene format

Godot supports the XML format for saving scenes and resources, but we had problems with it:

  • Scenes are saved packed in xml, so the content is uncomprehensible.
  • The format is not efficient to parse.
  • It is not friendly to VCS (Git, SVN).
  • XML is not easy to write manually, and it's easy to make mistakes.

Having this in consideration, Godot 2.0 adds a new text file format inspired by TOML. This new format is descriptive (human friendly) when saving scenes, and Git/SVN friendly:

For 3.0, this format will be the only text based format supported, and XML will be deprecated.

onready & singletons

Initializing class member variables can be quite of a hassle, code such as this is common in GDScript:

The 'onready' keyword allows initialization of class member variables at the same time when _ready is called, saving some code:

But doing this for autoloaded scenes can still be a hassle, as it has to be done every time a script is created. To ease on this, it's possible to make an autoloaded scene or script a singleton variable (accessible at global scope) in the project settings:

All this, of course, working together perfectly with code completion.

Other new core features

Smaller new core features were also added:

  • Support for ZIP packs on export instead of PCK
  • Support for OPUS Audio Format
  • Changed to a more compatible JPG decoder.
  • Very improved gamepad support

NEW EDITOR FEATURES

The Editor part of Godot 2.0 is where most of the work was focused. The priority was to improve tools and make the workflow more efficient.

NEW LAYOUT AND THEME

Godot 2.0 sports a new theme courtesy of Andreas Esau. It looks more professional and less confusing than the previous one. Many unneccesary icons, margins, arrows, etc. were removed to further clean up the visuals.

As a plus, dock panels (which were previously fixed on the right) can now be moved and rearranged.

New file dialog

One of the common hurdles with Godot was the overly simple file dialog:

For 2.0 we have created a new one, which supports:

  • Navigation History
  • Favorites
  • Recent Folders
  • Thumbnail Previews (and list view compatibility mode)

New filesystem dock

Godot used to have a primitive tree dock panel view with all the project resources. This was replaced by a more modern filesystem dock:

This new panel can show resources in both thumbnail and icon view (similar to File Dialog), but it also includes several tools.

By popular request, Godot's new filesystem dock has tools to allow the user to:

  • Rename and move files and fix all resource/scene dependencies automatically.
  • Warn when files being deleted are referenced by other resources.
  • Use a heuristic to search for broken dependencies within the project.
  • Visually explore and reassign dependencies for a given resource.
  • Explore the owners for a given file.
  • Explore which resources might be orphan, for easier clean up.
Multiple scene editing

Godot's divide and conquer approach to making games relies on subdividing scenes in several sub-scenes, each with an identity or function.

Godot 2.0 improves upon this with multiple scene editing support, allowing several scenes to be open at the same time. Switching between them is painless and Godot also automatically reloads scenes when a dependency (instance or inheritance) has changed.

New tool layout

In Godot, tools appear contextually when a given node or resource is selected. This makes the UI flow fast and removes large part of the need to maually organize panel layouts.

This aspect of Godot was also improved in 2.0 with the introduction of a new bottom panel. On it, contextual editors can make a tidy appareance. Some of the editors are also always shown with persistent buttons:

  • Output console
  • Debugger
  • Animation editor

New code editor

Godot has the code editor integrated to the rest of the editors. Until Godot 1.1, scripts were opened contextually to the scene being edited but, as multiple scenes can now be edited, this is no longer possible.

To compensate, the new code editor now works more similar to an IDE, where scripts are just opened all the time. Switching to a scene will also automatically switch to it's dominant script (script in the root node, where it's most commonly placed), making the programming experience smoother.

The code editor also has many new features:

  • List of opened scripts, as using tabs would mean running out of space quickly.
  • Temperature indicator for each script, with most commonly used scripts being shown closer to red.
  • Script history: It is now possible to go back and forward in history of edited scripts easily.
  • Documentation pages show as documents. This allows having multiple pages open together with scripts.
  • Quick access to tutorials, class list and help search.
  • Improved code completion

Improved debugger

The debugger has seen many improvements too. A new addition is the reporting of run-time errors with proper notifications.

Godot is designed from the ground to attempt handling common crash situations by recovering and reporting an error. This is helpful in production games, as unexpected bugs that might commonly cause a crash will not make it fail. These errors, however, were silently being reported to stdout, so it was not easy to spot them. Added to that, given the debugger does not stop for them, having some context to understand their origin was difficult.

A new section "Errors" was now added which turns red when run time errors occur. Selecting or hovering the error will display a backtrace of script files that led to this situation.

Video memory debugger

Another new, useful feature is a new Video Memory debugger. This allows to see how much video memory is in use, as well as to discern which resources take up the most amount of video RAM.

Debug on hardware devices

It is also now now possible to debug a game running on an actual devices. Make sure to enable "Deploy Remote Debug" option in the remote options menu. If you have a device with Android 5.0+, Godot can take advantage and debug over the USB cable directly.

Collision and navigation debugging

We added support for debugging collision shapes and navigation polygons, both in 2D and 3D, in run-time. Just select the "Visible Collision Shapes" and/or "Visible Navigation" options in the above menu to enable this.

Live scene editing

In the vein of larger game engines, Godot has now live editing support. The way it implements this feature is different though. Godot uses IPC to synchronize the editor state with the running game. This means that any change made to the scene being edited is reflected automatically on the running game.

While this approach to live editing does not allow easy inspecting into the game from different editor cameras (something it might be implemented eventually anyway), it has the huge advantage of allowing the possibility of editing a level while it's being played (and avoid the edited state from being lost when the game stops). Just add enemies, move them around, change their properties, add colliders, platforms, tiles, etc. and everything is reflected instantly on the running game.

To enable live editing, just toggle it at any time from the remote options menu.

Video of live editing in action:

It is also possible to do live editing on an actual device! Just select "Deploy Remote Debug" together with "Live Editing" in the remote options menu:

New color picker

There is a new color picker courtesy of Mariano Suligoy, supporting visual HSV, raw mode, screen picking, favorite colors, and more!

Smaller new additions

Godot 2.0 brings several smaller new additions to aid in usability:

  • Visible history for property editor
  • Selection for overlapping objects in 2D and 3D
  • Categorized project and editor settings
  • Inline documentation as property tooltips
  • Array / Dictionary property editing
  • Multiple node editing
  • New Animation Editor Layout
  • Improved anchoring tool
  • SpinBoxes (both controls and in property list) can be dragged to change value.
  • Many more small additions.

FUTURE

We know the weakest part of Godot is still the 3D engine and we plan to fully work on modernizing it. However, we feel there are several more urgent issues that need to be improved usability wise. Godot 2.1 will continue in the same vein as 2.0 and keep adding usability improvements. (Feel free to check the Roadmap ).

The full text of the release notes are available here.  There is an even more complete change log available here.  The Godot team have also launched a Stack Overflow style question and answer site available here.  Of course, if you are interested in learning Godot Engine we have a comprehensive tutorial series available here on GameFromScratch.

GameDev News


22. February 2016

 

Today Xamarin announced the release of SkiaSharp, available now on Github.  SkiaSharp is based on Google’s Skia library.  The library was released under the MIT source license.

 

From the release:

Today we’re launching SkiaSharp, a cross-platform, high-performance 2D API for .NET developers available across mobile, desktops, and servers.

SkiaSharp provides a powerful C# API for doing 2D graphics powered by Google’s Skia library, the same library that powers Google Chrome, Firefox, and Android’s graphic stacks.

SkiaSharp ships conveniently as a cross-platform NuGet package, and supports the following platforms out of the box: MacOS X, Android and iOS with Mono, and the Windows Desktop with .NET. As NuGet evolves, we’ll offer this for .NET Core and assorted Linux distributions (In the meantime, if you need it now, you can build SkiaSharp yourself).

Why We Chose Skia

While Mono has supported System.Drawing for a while, and we built a CoreGraphics-powered version for Mac/iOS, it has never been a pixel-perfect match for the original .NET implementation of System.Drawing. Mono.Cairo is also generally available, but has some limitations that are difficult to work around.

Skia gives us the same graphics output across all platforms, is actively maintained, and offers great features not found elsewhere, like filters and hardware accelerated graphics.

GameDev News


22. February 2016

 

Corona SDK has been getting a lot of updates since it was recently acquired by Perk, which is never a bad thing.  Today saw another release of the Corona SDK, a cross platform game focused Lua based framework.

 

Update 2016.2830 brings the following changes/new features:

With this release, both OS X and Windows desktop builds are out of beta. Several people have even had their apps greenlit for publishing on Steam! In addition, our tvOS supportmoved into beta state and several people have already ported apps to the tvOS app store.

Corona Simulator improvements

This release also improves upon the Corona Simulator’s interface, providing you with an even better experience. The big new feature in this regard is the Simulator console window. Previously, we used either the OS X “Terminal” app or the Windows “Command prompt” to output Corona console messages. Now, the built-in console window takes on this role and offer some exciting new features, including:

  • Both errors and warnings are highlighted for quick reference
  • Easily search for text using the built-in search feature
  • Choose from several color themes to suit your preference
  • Jump to an error or warning in the log by clicking/selecting its message in the bottom panel
  • If you choose to build and copy to a tethered device, the console log will show messages from that device
    console

Other highlights/notes

Other additions and changes to this release include:

  • Android builds now support Android 6 “Marshmallow”
  • Windows, OS X, iOS, and tvOS game controller support; on Windows, support for bothDirectInput and XInput; on OS X, support for both HID and MFi controllers
  • iOS device builds now target the iOS 9.2 SDK
  • 3D Touch support for supported devices like the iPhone 6S and 6S Plus
  • Corona apps now respect the “Auto-Rotate” setting on Android
  • New texture loading/management APIs
  • Graphics V1 compatibility is now deprecated and may be removed in a future release

 

The complete release notes are available here.

GameDev News


17. February 2016

 

Coppercube 5.4, a full WYSWYG editor experience for HTML5 game development, just released version 5.4 as a free updated.

From the release notes:

This is a free update for all existing users, download it here. New in this update:

  • Heightmap import support for terrain
    If you want to sculpt your 3D world terrain with another software, you can do this now, too. Coppercube now is able to import terrain heightmaps of the formats .raw, .r16, .r32, .png, .tga and .pgm. It also has the option to automatically apply textures to imported terrain and distribute grass onto it.
    heightmap terrain import
  • Integrated Texture Packer
    CopperCube now has an integrated texture packer. This is useful if you are using 3D models (for example downloaded from the web) which weren't optimized for games. Most of 3D models available online have lots of textures applied to them, which slows down your game while rendering. You can now simply right-click such a model in your game, and select "Modify -> Pack all textures of selection into one". This will optimize your 3d model and make it render much faster.
    integrated texture packer
  • Much smaller, compressed files for WebGL
    CopperCube now generates up to -80% smaller files for WebGL (depending on content). Files are now compressed, causing WebGL websites to download and start much quicker. This feature is optional and can be turned off in the publishing settings.
    webgl compression
  • Much smoother first person shooter style camera
    The first person shooter camera now has a new property named 'movement smoothing', which when turned on causes the movement of the player to be much softer, even on very slow systems. This is nice especially for mobile apps and the WebGL target, but movement also on the Windows and Mac OS X apps feels now much more natural, when turned on.
    smoother fps camera
  • Full web page WebGL support
    There is now an option in the publishing settings to enable your game/app to use the full web page size.
  • Footstep sounds
    It is now possible to play foot step sounds easily. Simply attach the 'footsteps' behavior to any object, and once it is moving, one random of three actions is run, after a specific foot step length. Use those actions to play sounds, blow up dust, or similar. The footstep behavior is available as free downloadable extension behavior from the extension download page here.
  • Box testing for "On proximity do something" action
    The "On proximity do something" action now has a setting named 'testArea'. Set this to 'box' instead of the default 'sphere', and your objects will be tested against a box, which is more exact and useful in a lot of cases. Also, the box is rotated and scaled with the object, so you can also test for non-orthogonal areas now.
    integrated texture packer
  • Nicer 2D image drawing
    You can now specify if a 2D image drawn as part of a 2D Overlay will be drawn 'sharp/pixelated' or 'blurry/filtered' when it is scaled. Both options make sense, depending on the type and use case of your 2D overlay. Now you can choose manually which option will be used.
    integrated texture packer
  • New "Recalculate normals" command
    The command for recalculating tangents and binormals, which is intended to be used for normal mapped geometry only now also works for all kinds of static geometry. It has also been renamed accordingly "Recalculate normals and tangents...". You can use it to recalculate and fix normals for all kinds of static meshes now.
  • Possibility to update static Phyics geometry
    The new scripting function ccbUpdatePhysicsGeometry() is able to update the internal collision geometry of the physics engine. If you move a part of the static collision geometry while your game is running, and want the physics engine to respect that, simply run this new command afterwards. You can do this for example with a 'Execute JavaScript' action.
  • Pan support for Model Viewer Camera
    If you are using the model viewer camera behavior, you can now enable pan for it. This works when pressing both mouse buttons at the same time. It is implemented inm the downloadable extension behavior 'Model Viewer Camera Extended' from the extension download page here.
  • Improved .OBJ file loader
    The .obj file importer is now more compilant and can even import corrupt .obj files found on the web. It is also now able to import files correctly, exported with some newer version of a more popular 3d modelling software, which seems to add some unexpected characters into the file sometimes.
  • Increased WebGL performance
    WebGL performance is now much better, on all browsers: Internally, the engine now uses requestAnimationFrame() if this turns out to perform better on the target browser.
  • other, smaller new features:
    • Updated documentation with examples and more details
    • Improved french translation
    • Extension scripts in WebGL now also can handle right mouse button events
    • A handfull of smaller bug fixes.

GameDev News


17. February 2016

 

Unreal Engine just received a hotfix for their stable release of 4.10.3.  The hotfix contained the following fixes:

Fixed! OPP-4947 Installation Error code R-1638 / Unable to upgrade to 4.10.1 through launcher if 4.11 has been installed
Fixed! UE-13030 Crash related to loading sub-level - UEngine::LoadMap()
Fixed! UE-22075 Crash on compile when nodes use same name - FPersistentFrameCollectorArchive::operator<<()
Fixed! UE-22696 Crash on importing specific Skeletal FBX exported with FBX2016
Fixed! UE-22921 Parenting multiple actors under border crashes editor
Fixed! UE-23373 Crash occurs opening some animations - TSharedMapView<FName,FString>::Find()
Fixed! UE-23785 Crash in UE4Editor_Core!FSlowTask::GetCurrentMessage()
Fixed! UE-24169 Crash in PlayerInput.cpp - UPlayerInput::ProcessInputStack()
Fixed! UE-24443 Potential Crash When Migrating Assets - FGenericPlatformString::LogBogusChars<wchar_t,char>()
Fixed! UE-26315 Crash in UE4Editor_Engine!UActorComponent::BeginPlay()
Fixed! UE-26872 Loc gathering can crash in 4.10
Fixed! UE-23231 Can't Upload iOS build signed on PC
Fixed! UE-24972 VR headtracking locked on game start for some templates
Fixed! UE-26158 bIsActorBeingDestroyed incorrectly Commented out
Fixed! UE-26657 Regression on sprite import improvements from 4.9
Fixed! UE-26903 Loc dashboard doesn't export native translations when exporting a single culture

GameDev News


GFS On YouTube

See More Tutorials on DevGa.me!

Month List