Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon
30. January 2018


Godot 3.0 is finally here!  Godot is an open source 2D/3D game engine and the 3.0 release brings a massive number of new features including a new 3D renderer, Bullet physics,Godot3Released C# support, OpenVR and Cardboard support, GDNative plugins and much more!  Stay tuned to GameFromScratch for some great new Godot 3 tutorials and more.  Our existing tutorial series is still about 90% valid if you are looking to get started today.


New features of this release taken from the Godot announcement blog:


You can get more detail in our hands on video available here and embedded below.

GameDev News


21. December 2017


With the release of C# support in Godot people are naturally going to want to use Visual Studio Code for their development.  This guide is going to walk step by step through the process.  It’s important to note that debugging is currently not supported.


Before continuing it is assumed that you are running Godot 3 Beta for Mono (or newer).  Also be sure to have a most recent version of Visual Studio Code installed.


If you haven’t already, be sure to install the C# extension in Visual Studio.

image


Next in Godot, let’s configured Visual Studio Code as our external editor.  Select Editor –> Editor Settings

image


Select Mono->Editor, then drop down External Editor and select Visual Studio Code.

image


Now when you edit a CS file in Godot, it will automatically open in Visual Studio Code.  Assuming you did the C# extension, you should get full intellisene, code completion, etc.


You now have two options, you can simply edit your code save it, then run from within Godot.  Or you can run directly from the terminal within VS Code.  In the terminal ( Ctrl + ‘ ) enter first the path to your Godot executable, as well as the scene you wish to run.  In my case:

D:\dev\Godot_v3.0-beta1_mono_win64\Godot_v3.0-beta1_mono_win64.exe Node.tscn

This should then execute your scene.


Of course, doing this over and over is going to get old quick, so why don’t we define it instead as a Task.  In Visual Studio Code select Tasks->Configure Task:

image


Next select Open tasks.json file

image


Now enter the following:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "run Godot",
            "type": "shell",
            "command": "D:\\dev\\Godot_v3.0-beta1_mono_win64\\Godot_v3.0-beta1_mono_win64.exe Node.tscn",
            "problemMatcher": []
        }
    ]
}


Be sure of course to set the path to your directory in the command setting.  Also notice the slashes are escaped using double slashes \\.  You can now run this via the palette.  Ctrl + Shift + P then enter Run Task

image


You should now have your newly created task available:

image


Again, doing this over and over again also gets old, so lets define a hotkey.  Choose File->Preferences->Keyboard Short Cuts.  Click the keybindings.json link:

image


Now enter

// Place your key bindings in this file to overwrite the defaults
[
    {
		"key": "ctrl+G",
		"command": "workbench.action.tasks.runTask",
		"args": "run Godot"
	}
]

This will cause your scene to run when you hit the Ctrl + G hotkey.


Programming


30. November 2017


Following on the heels of Alpha 2 released the end of October, we are one step closer to a full Godot 3.0 release with today’s release of Godot 3image Beta 1.  The major difference between beta and the earlier alpha releases is beta is now feature complete.  No new functionality will be added between now and Godot 3.0, only bug fixes and refinements.  This is important to me as it means I can get to work on new tutorials and content targeting Godot!

The beta release also contains several new features since the last alpha including Bullet as the new physics engine for 3D physics, onion skinning support for animations, improved remote debugging and auto tiling for tilemaps.

Details of the release from the Godot blog:

Godot 3.0's development officially entered the beta stage last week, which coincides for us with what we name the feature freeze: from now on, no new features will be merged in the master branch, as the focus will be fully on fixing existing issues to stabilize the current feature set. Don't worry though, Godot 3.1 will arrive soon after the 3.0 release to bring all the nice features that contributors are already working on.

To get broader testing of the feature-frozen branch, we're releasing an official build, Godot 3.0 beta 1, just one month after the previous alpha 2.

It notably includes Bullet as the new 3D physics engine, onion skinning, autotiling for 2D tilemaps, an enhanced debugger with remote SceneTree edit, and nice usability improvements such as code folding in the script editor, PascalCase builtins for C#, and many others.

But more importantly, it also brings tons of bug fixes compared to alpha 2, and we will continue to hunt down the remaining issues to guarantee a nice experience with Godot 3.0 stable. The documentation and translation have also been updated thanks to the work of our many contributors.


Downloads are not on the download page, instead available via the following links:


GameDev News


7. November 2017


With the upcoming Godot 3.0 release, there is a pretty major change to the physics system within the engine.  They have decided to replace the in-house physics engine with the open source Bullet physics engine.  Bullet is a well established open source project and has been used in such games as Rocket League, Grand Theft Auto 4 and DiRT as well as powering applications such as Blender and Cinema4D.  This change will not affect 2D physics in the Godot engine.


From the Godot announcement:

Introducing Bullet

Godot always supported an abstract physics interface, so Andrea Catania (Odino) volunteered to add Bullet support as a backend. I initially though it would not be possible to replicate Godot's API in Bullet faithfully, but Andrea proved me wrong and did a fantastic job. He also finished before the Beta deadline, so his work was just merged and will be present in Godot 3.0.

Physics should work just like before, and no code should change, except Bullet is being used internally. Godot's old physics engine is provided for compatibility and can be selected in the project settings, but will likely be removed by the time 3.1 is out.


In an unrelated but similarly timed announcement VR support was also added to Godot in the recently released Alpha 2.  You can read more about VR support here.  I did a hands-on video about both physics and VR in Godot available here or embedded below.

GameDev News


18. September 2017

In this section of our Bowling with Game Engines series, we will be implementing our bowling game using the open source Godot engine. The idea is straight forward, implement the same simple 3D game across a number of game engines. One warning right up front, this engine uses Godot 2.x on the eve of Godot 3.0 being released. Godot 3.0 will receive rather large changes to the 3D portions of Godot. We will go step by step through the process of creating our game, both in text as well as a video version available. All of the assets used in this tutorial are available on Patreon as part of the bowling game kit, along with project files and this document in PDF form. Don’t worry, these aren’t needed to follow along.  There is a video version of this entire process available here or embedded below.

First fire up Godot and create a new project. Once Godot is loaded, click New Project, then pick a location to create the project in. The project directory will be the project’s name.

clip_image002

Now double click your newly created project to load it.

clip_image004

Let’s start things off by creating our Title screen. Before we go too far ahead, lets create an empty node to parent our scene then save it. In the Scene panel, click the Plus Icon

clip_image006

Select Node from the following dialog:

clip_image008

Select the Scene menu, then Save Scene as:

clip_image010

Name it TitleScene.tscn and click Save. Ok now the we have a Scene to work with, time to get to work. Let’s import the title scene image. You can use any supported texture format, but if you are working from the Patreon files, the document you want is Titlescreen.png. Select the Import Menu, then Texture

clip_image012

In the following dialog, be sure to select 2D Texture, locate the texture you want to import, then click the Import button. The defaults for Texture options and format are fine. Please note, for 2D steps you can actually skip this step and directly copy the texture into your project folder using Explorer/Finder.

clip_image014

Now that we have our title screen texture, it’s time to go ahead and use it. In the Scene panel, select the node we created earlier, then click the + Icon. This time we want to add a node of type TextureFrame. You can filter the options available in the node list to quickly find the node you want to create.

clip_image016

Now that we’ve created a TextureFrame node, in the Inspector, locate the Texture property, drop down the menu and select Load. Select our newly loaded texture.

clip_image018

Now turn the Expand property on:

clip_image020

And resize the Texture to the full size of your viewport:

clip_image022

Woot, most of the way there… now we want to add some looping title music that palys when the game starts. We need to import a song to use. In this case I’m using a simple WAV file that we are going to loop. The process is just like with Textures, select Import->Audio Sample

clip_image024

In the resulting dialog, locate the WAV file you want to import, in options select Loop then finally select Import.

clip_image026

Ok, now that we have a sound effect to play, let’s play it. In the Scene panel, select TextureFrame then click the + Icon. This time the node type we want is a sample player. Your scene should look like this now:

clip_image028

Hmmm, that error Icon can’t be a good thing, can it? No worries, we just need to define the sample to play. This is going to take a couple step sthough, first we need to add a Sample Library, then add our sample to it. Don’t worry, it’s not that difficult. With the SamplePlayer selected, in the Inspector drop down the Samples option and select New SampleLibrary.

clip_image030

Now select samples again and this time choose Edit.

clip_image032

This brings up a new editing window:

clip_image034

Click the folder icon, select your imported sample in the resulting dialog. It should then look like:

clip_image036

Now in the Inspector we should be able to select our newly loaded sample in the Play menu:

clip_image038

This whoever has one EXTREMELY annoying side effect… the sample will play over and over in the editor while you have this scene open. Yeah, it gets annoying fast. Time to do our first scripting instead! Let’s add some code that plays our sound when the scene is loaded… a sure way to keep sane! This means we need to add a script to node in our scene… don’t worry, its pretty easy.

We are going to create and attach a script to the TextureFrame node, the parent of our SamplePlayer. Right click the Texture Frame in the Scene panel, then select Attach Script.

clip_image040

In the resulting dialog click the .. next to Path and name your file TitleScreen.gd, then click Create.

clip_image042

This will bring up the script editor like so:

clip_image044

Now we want to change the code like so:

func _ready():
set_process_input(true)
get_node("SamplePlayer").play("BowlingOhYeah")


Now it’s time to check out all of our hard work. Now click the Play icon:

clip_image046

Since this is the first time we’ve run it, we need to tell Godot which Scene is the entry point for our application.

clip_image048

Click the Select button. Then select TitleScreen.tscn in the resulting dialog. Now your application should run!

clip_image050

Now of course we have to get to the guts of our actual game. Next we create our next scene where the majority of the game is going to occur. First make sure to save your existing scene if you haven’t already. Then click Scene->New Scene.

clip_image052

Every scene must have at least one node. So in our newly created scene, again click the + Icon in the Scene Panel and select Node. Now save the scene as GameScene.tscn.

Perfect, now we have somewhere to go from our title screen... Next, we need to have some kind of action or trigger to switch between scenes. We are going to handle the scene change whenever the user presses any key or clicks any mouse button. This involves appending a bit of code to our script. Simply add the following function at the bottom of TitleScene.gd:

func _input(event):
  if(event.type == InputEvent.KEY || event.type == InputEvent.MOUSE_BUTTON):
  get_tree().change_scene("GameScene.tscn")

Excellent! We are now done with the Title scene… Time to move onto the main event!

If it isn’t already loaded, load up GameScene.tscn. Simply double click it in the asset view:

clip_image054

Multiple scenes can be open at once and you cant toggle between them using tabs across the top of the screen. You can also switch between scripting, 2D and 3D modes. We are working in 3D in this scene, so make sure that’s selected.

clip_image056

Now we are going to assemble all of the various assets we need to create our game. We have a Bowling Pin, Bowling Lane and in this example a Bowling Ball. You may note this differs from other “Bowling With” tutorials, in that in other tutorials we procedurally generate the bowling ball. In Godot 2.x there are no editor assessable geometric primitives so we instead import the bowling ball as a 3D model. There is however a plugin available for Godot that enables you to create meshes like spheres, cubes and planes that I document the use of in this video ( https://www.youtube.com/watch?v=Ca2FcVb2lBk ).


Click here for next part in the series.


The Video

Programming


See More Tutorials on DevGa.me!

Month List