
Godot at GDC 2018 - makepanic
https://godotengine.org/article/godot-doing-well-gdc-2018
======
giancarlostoro
I gotta say Godot is one of those open source projects I want to see more
commercial adoption of. Not only is it well done, it is miles ahead of the
commercial offerings and everything from the tooling to the engine is MIT
licensed. You can do plugins not only for the engine, but the tooling itself!
This means that you're not limited only by what is already available through
the standard IDE they built (which is really already great) but by your
imagination entirely. You can code plugins in any native language you so
desire as well thanks to GDNative (this includes Rust, D, and more).

Also don't forget, they've got the latest of Mono available to you, so modern
C# features at your fingertips, no more C# 3.5 like a certain industry
slowpoke...

~~~
gameswithgo
Unity can use .NET 4.6 now. It wasn't because they were slowpokes, xamarin
would not license it to them until they were acquired by Microsoft.

~~~
psyc
As a fulltime Unity dev, this doesn't matter much to me, because it doesn't
address the major pain point for larger Unity games. This .NET upgrade does
not include a modern garbage collector, and the garbage collector update has
been "maybe next year, but definitely not now, because it's hard" for as long
as I've been using Unity.

Workarounds exist. That's great. I don't care. Workarounds don't address the
default experience of writing idiomatic C#.

I've considered switching to Unreal, but that has GC built into it a little
too much. I know nothing about its characteristics, but it makes me wary. This
thread makes me want to investigate Godot. Can anyone provide a one-sentence
summary of the GC situation there?

~~~
robrtsql
Sure!

Hopefully a more experienced Godot dev will jump in and correct me if I'm
wrong here..

Godot uses reference counting, but additionally supports a function which you
can call on an object which will cause it to become 'unmanaged' by the
reference counter, allowing you to free its memory on your own terms (or leak
the memory, if you're not careful).

Godot 3.0 added support for Mono, but I'm not sure how that works. I'm
guessing that game objects in Godot are still reference counted, but now you
also have memory allocated by the Mono runtime which will be garbage
collected.

~~~
psyc
Ironically, no amount of care towards memory management could approach even
one tenth of the care and attention I'm required to devote to memory
management in Unity (and, FWIW, also in actual Windows .NET) to avoid frequent
dropped frames. This is exactly what I was hoping to hear, thanks!

~~~
agmcleod
While I hear generally about garbage collection causing dropped frames. I've
had this happen to me in HTML5 land. I haven't heard about it as much with
Unity, that C# was fast enough, and the under the hood pieces are C++ anyways.
Perhaps I'm reading the wrong channels :). I'm curious if your game project is
3D, and what sort of intensity you tend to have with it.

~~~
psyc
It depends entirely on the details that affect the GC. The biggest factors are
the size and structure of your heap data. If the game uses a lot of memory,
the GC will try to collect more often. If the heap data is large and graph-
like (lots of refs to refs), it takes longer to walk.

------
cowmix
My kid who's in high school watched a few Godot tutorials on Youtube and then
created a nice/simple game in about 24 hours.

We walked me through the whole process and it is amazing the whole system is
free.

~~~
bringtheaction
> it is amazing the whole system is free

Speaking of which, they have a Patreon. Anyone interested in the prospect of
contributing financially to the development of Godot, check out
[https://www.patreon.com/godotengine](https://www.patreon.com/godotengine)

------
stateoff
Here is my personal opinion about Godot vs Unity.

Background Unity:

\- I've used Unity for small to medium sized commercial industry projects (3D,
VR Tours etc.).

\- I've used Unity for a 2D Gamejam.

\- Various Unity research projects.

Background Godot:

\- I've started using Godot v2.1 with little preparation successfully on two
Game jams (2D) [1]

\- I've contributed smaller additions and bugfixes to Godot in the past
months, in order to help the 3.0 release and also to understand more of the
internals.

\- I am currently working on a bigger 2D game in Godot 3.0.

This is my _personal_ experience and opinion: First of all: For sure Unity is
great and I would not hesitate to use it again in future, especially for 3D
(without having much experience in Godot 3.0 3D environment).

However it has drawbacks compared to Godot, especially for 2D which is my main
focus:

\- Terrible 2D support in Unity (for retro/pixel perfect projects). It's not
that it is impossible but you need to know and work around many aspects to
setup something that works. Same setup in Godot needs literally two clicks.
Units in Godot are pixel units. Perfect.

\- No Nested prefabs in Unity. Check out their GDC 2018 keynote (end). It is
even a joke to them. Well, to me it isn't. Godot does nested instances and it
is a great productivity gain.

\- (Open/Public) Source code access in Godot. That probably only applies to
people with C++ experience but it was great that I was not stuck since I could
dive in and find and fix my problems. Often I found other people with the same
problem, and sometimes a PR to fix it, so I could build it from their PR
before the official merge and could go on doing my work.

\- Source code state/community for Godot. Godot has a pretty non-idealistic
style of code. It's not heavily abstracted. And while one could argue if it
always has best design choices at least it makes it very easy to dive in. My
PRs and fixes were gratefully accepted, it is a very open and productive
community. Discussions on Github were constructive in my experience.

\- Unity has second class Linux (editor) support. To be fair: it seems to
gradually improve. Thanks for that btw. But whenever I try I get showstopping
weird issues. Every build is a different problem. In contrast: Godot under
Linux is flawless. To be honest: Unity Editor does much more under the hood.
And again: I personally do not care. I am focused on 2D and I feel I pay a lot
extra.

\- GUI. I know that there is now a new GUI framework in Unity but I feel like
it made things worse. I have a hard time getting the results I want as
compared to Godot's GUI system. Not impossible per se, just not as intuitive
as I would like it. Godot's GUI frameworks works similar to Qt Designer.
Simple layouts and widgets.

\- Nodes and scripts (Godot) vs. Objects and Components (Unity). I have found
that the nodes available in Godot make it very easy to come up with various
setups. There is just a bunch of (useful) functionality build in. Especially
their viewport/offscreen rendering on top of canvas mixed with GUI and shaders
make things pretty easy. No need to script for various scenarios + the benefit
of these nodes being native.

\- 2D Physics. Unity uses box2D (like?) physics. Godot has a custom physics
engine that works pretty much like old school arcade physics. It is a perfect
starting point for platformers etc. without the sacrifice in control. If your
game is NOT an angry birds clone then probably a box2D like physics engine is
not what you want.

I was quite surprised myself that Godot boosted my productivity so much as
compared to former workflows.

Initially one of my first doubts with Godot was GodotScript. And I must say I
was wrong. It is a great little language which helps iterating quickly. And if
you are not happy with the performance, you can use C++ or C# or anything else
with GodotNativeScript (around 2.6x speedups with C++ in my measurement[2]). I
for myself kept GodotScript as iteration speed is more important to me than
native performance, especially in the initial stage.

The big negative point as already pointed out is that Godot has few proven
examples of successful bigger projects. Therefor platforms may be another
issue. But having the source code under control helps, plus there is a drive
that hopefully spawns more interest and support in future. Godot deserves it.

To conclude. For 2D I have not found a better tool than Godot. Please disagree
if you like but give the tool a fair chance.

[1] Small Godot based Game jam projects:
[https://itch.io/profile/stateoff](https://itch.io/profile/stateoff)

[2] Personal benchmark of GDNativeScript:
[https://twitter.com/StateOffGames/status/944878511801753601](https://twitter.com/StateOffGames/status/944878511801753601)

~~~
geokon
How's the interplay btw GodotScript and C++? (and the several other scripting
options they give you)

I've played a bit with Unreal, so I'm not very qualified to have opinions, but
I really like how the system is mostly a C++ stack. The Blueprints are in
effect extending underlying C++ classes. The "FFI", if you want to call that,
is pretty clean and easy and if you want to write C++ it works very well with
the rest of the system. It definitely could be cleaner... not exactly git-
clone, cmake, make, make install... there are magic macros, some C# that does
godknowswhat and over all it's messier than I would like.

But with all the scripting that Godot supports it seems like it'd be even
messier still? You'll have some assets in C++ some in GodotScript and some in
C#. Or am I wrong?

~~~
stateoff
(Please correct me if any of the following is imprecise, as I am not a core
dev of Godot)

Languages are roughly stacked like this:

1\. Internal scripting

Godot internally (C++ source) makes a distinction between core and modules. So
many of the functionality that do not necessarily belong to the core engine
are modules.

You are free to write your own extension to and modules to the editor (for
example custom Node types). There is also an EditorPlugin API so you do not
necessarily have to get your hands wet in the engine API itself if not
necessary. Btw. the latter API is also exposed in GDScript.

Anything that implements script_language.h as a __module __is considered part
of the editor (e.g. exposed in-editor script support etc.)

In 3.0 that would be GDScript and C#.

2\. GDNative

Additionally 3.0 introduced GDNative which in essence is an API that exposes
the internal C++ API that makes up the In-Game scripting as C symbols. This
has the benefit that C can be bound to anything. Going this route even the C++
API is bindings created through C :-). More details here [1].

It is a relatively new effort but so far the following languages are supported
(not making claims about stability/maturity here):

\- C (just the API itself via the shipped headers)

\- C++ [2]

\- D [2]

\- Rust [2]

\- Python [3]

\- Nim [4]

\- Possibly others?

Once you have a library that can be hooked into you load it in the editor for
each individual platform you try to target.

That being said: There is no heavy boilerplate-magic going on. I've setup a
CMake file to handle C++ plugins without big issues. There is no real hot-
loading AFAIK but you do not need to restart the editor since it loads the
libraries in play mode.

This is a sample of the GDNative API [5].

Here is a manual setup with C [6]. While the tooling improved meanwhile (e.g.
in editor tools to set the libraries) it gives you a good overview how the
GDNative API works.

Hope that makes sense.

[1] GDNative Architecture [https://godotengine.org/article/look-gdnative-
architecture](https://godotengine.org/article/look-gdnative-architecture)

[2] Main GDNative Language Bindings
[https://github.com/GodotNativeTools](https://github.com/GodotNativeTools)

[3] Python via GDNative [https://github.com/touilleMan/godot-
python](https://github.com/touilleMan/godot-python)

[4] Nim via GDNative [https://github.com/pragmagic/godot-
nim](https://github.com/pragmagic/godot-nim)

[5] GDNative C++ API Sample [https://github.com/GodotNativeTools/godot-
cpp#creating-simpl...](https://github.com/GodotNativeTools/godot-cpp#creating-
simple-class)

[6] C example of GDNative (Godot Docs)
[http://docs.godotengine.org/en/3.0/tutorials/plugins/gdnativ...](http://docs.godotengine.org/en/3.0/tutorials/plugins/gdnative/gdnative-
c-example.html)

~~~
coldcode
I wonder if one could couple it to Swift.

------
curioussavage
I love Godot right now. I have made a ton of progress on my game in the last
two months using it. Highly recommend it to anyone wanting to pick up game dev
as a hobby.

~~~
yanisvieilly
I started using Godot recently. Do you have any good tutorials to recommend?

------
georgewsinger
SimulaVR (Linux VR Desktop written in Haskell) is currently in the process of
integrating Godot into its rendering loop.

In order to do that we've been making Haskell FFI bindings for the Godot API.
If anyone's interested check out:
[https://GitHub.com/SimulaVR/Simula](https://GitHub.com/SimulaVR/Simula)

~~~
aetherspawn
Are the Haskell godot bindings in a usable state? Very interested

~~~
georgewsinger
They're not in a usable state yet but will most likely be by the end of the
month. They are being generated in one shot via Template Haskell, and will be
located here: [https://github.com/SimulaVR/godot-
haskell](https://github.com/SimulaVR/godot-haskell)

Drop by [https://gitter.im/SimulaVR/Simula](https://gitter.im/SimulaVR/Simula)
to discuss this at any point. There are some other Godot people involved in
this project as well if you have any questions.

------
nrjames
I'm keen to try Godot.

The only thing I'd like to see soon or at least on the roadmap is Switch
support. Other open source toolkits, like Monogame, have included it. I
believe Love2D also supports it now, or at least has a partner that will build
projects for it.

~~~
keyle
Mate I wouldn't really worry about Switch support. Even if you could port your
game to Switch, Nintendo has a tight ironclad gate on the "indie" titles that
make it in the store.

And if you're thinking homebrew, the only thing you could run your game on
would be a Switch devkit.

~~~
Impossible
It's not unrealistic to worry about Switch support. You seem to be coming from
the perspective of a hobbyist game developer, which is fine, but anyone
running a serious game development project should at least consider the cost
of potential console ports, even if it seems inaccesible to a hobbyist.

~~~
keyle
I don't think you've tried submitting a game to Nintendo like we did, for 6
months.

------
kentm
Does anyone have an opinion on Godot Vs Unreal Engine?

~~~
applecrazy
Unreal is great for graphical fidelity. It also has tons of stuff built in
because of Epic's own use of the engine. Things like multiplayer support,
replay recording, and mobile support are there right out of the box. Plus the
engine has been widely adopted (it was used to make PUBG and Fortnite), so you
have an active community of amateur and professional game devs who can help
you.

While Godot has been adopted by some studios, most stick to their own engines
or use Unreal/Unity due to the lack of some of these features (or just a lack
of adopters in general, which becomes a chicken-and-egg problem).

However, I'd love for Godot to become as full-featured as Unreal. These are
exciting times that we live in.

Edit: Actually Godot also has multiplayer support out of the box in 3.0! It’s
getting close in terms of features.

~~~
zanny
I don't think graphical fidelity is a good argument for any engine today.
People are making movies with Unity[1] and Godot has demonstrated[2] all the
bells and whistles you could want at least if you intend to target consumer
PCs that exist today.

[1]
[https://www.youtube.com/watch?v=GXI0l3yqBrA](https://www.youtube.com/watch?v=GXI0l3yqBrA)
[2]
[https://www.youtube.com/watch?v=XptlVErsL-o](https://www.youtube.com/watch?v=XptlVErsL-o)

At least for anyone developing a video game right now, unless you know of
specific rendering techniques you need that Unreal has that the others don't,
there is nothing you can really come up with that one can do the others
cannot.

That being said, I'd imagine in a benchmark of GDNative vs Unity vs Unreal
Unreal would probably win, Epic has way more than enough cashflow to throw
tons of engineers on optimization that Godot just doesn't have. It wouldn't be
an orders of magnitude difference, though - we are talking optimization of
already tight render loops, and Godot benefits highly from having a tiny
renderer.

~~~
kenning
I'm working full time in unity, but the game is 2d and I don't have much
reason to learn about 3d rendering. I'd love to at some point...

From my perspective, and probably many other amateur game developers who are
making all three engines popular, I think the big difference may just be that
ue3 comes out of the box with a bunch of random postprocessing things turned
on. The base ue3 scene looks amazing, with lots of interesting materials and
textures, whereas the base unity scene is completely empty space with an ugly
blue-grey gradient horizon (which I've seen unchanged many times in game jams
and indie game competitions). Regardless of potential, most indie devs similar
to me don't care enough to make their indie games look good because they're
busy making them fun.

------
kumarvvr
Is this a good engine to begin game programming with? I am an experienced web
developer with deep interest in interactive stuff.

~~~
zanny
Yes, absolutely. Probably by far the optimization between being able to do
anything you want while being dead simple to do it in. "Easier" engines like
rpgmaker or LOVE severely limit what you can accomplish with the game, while
more established engines like UE and Unity have a lot more front loaded
scaffolding to do.

~~~
thomastjeffery
> more established engines like UE and Unity have a lot more front loaded
> scaffolding to do.

This, in my opinion, is Godot's biggest advantage. UE and Unity are a lot for
a new user to contend with.

------
tekromancr
Awesome! I have played with godot before, and while it has some sharp edges I
am thrilled to see an opensource engine coming together so well. Great job to
all involved!

~~~
bringtheaction
Been following Godot for a good while but never tried it myself. I support
them on Patreon anyway though, just because I think it's important that we
have a truly open source game engine like Godot :) Did you try Godot 3.0 yet?

------
plexicle
Looks great! I've heard of Godot quite a bit and have been meaning to check it
out.

Boy do I feel like a dummy though... I thought it was "Go"dot and it was built
with and/or uses Go(lang). Can't say I wasn't just a tiny bit disappointed!

In any case, I just checked out some of the videos and the IDE in particular
looks pretty amazing. Will check it out for sure.

~~~
applecrazy
You can actually use Golang with Godot to code gameplay using some open source
bindings[1] for GDNative.

[1]: [https://github.com/ShadowApex/godot-
go](https://github.com/ShadowApex/godot-go)

------
tty7
Any good tutorials to learn this ? I want to make an outrun like game but no
experience in this area

~~~
amarsahinovic
Here are a few YouTube channels with tutorials:

[https://www.youtube.com/channel/UCNaPQ5uLX5iIEHUCLmfAgKg/pla...](https://www.youtube.com/channel/UCNaPQ5uLX5iIEHUCLmfAgKg/playlists)

[https://www.youtube.com/channel/UCxboW7x0jZqFdvMdCFKTMsQ/pla...](https://www.youtube.com/channel/UCxboW7x0jZqFdvMdCFKTMsQ/playlists)

[https://www.youtube.com/channel/UChv-
gaPlKNROf6iMDhxIpUA/pla...](https://www.youtube.com/channel/UChv-
gaPlKNROf6iMDhxIpUA/playlists) (Godot 2 videos but good)

You can also find more links here: [https://godot-
engine.zeef.com/andre.antonio.schmitz](https://godot-
engine.zeef.com/andre.antonio.schmitz)

------
DaggerDagger
I'm really excited about Godot. I started using it and saw the limits of the
3d stuff that is there right now but I'm excited to start using it when really
good 3d animation libraries become available which seem to be lacking at the
moment.

------
thrillgore
I first discovered Godot when working on an ambitious game. While my ambitions
have tempered, my stance on Godot hasn't. It's been a great product to turn
out 2D games on, and I am looking forward to trying out some 3D projects with
the v3 Renderer. It's not going to replace Unity or Unreal for any ambitious
AAA-level title, but it can't be overlooked for rapid prototyping or 2D games.

Godot is also the first project I've ever given Patreon funding for.

------
ineedasername
I read most of that press release with no idea if Godot was a real thing or if
it was an eloborate riff on _Waiting for Godot_

It took clicking around their site a bit to realize it's actually a real
thing. I think.

------
skybrian
re: "The Gambling Industry is Largely Moving to Godot."

I don't know, seems like the author should have at least mixed feelings about
this? It can't be prevented with an MIT license, but it doesn't seem like
great news?

~~~
floatboth
I'm surprised gambling needs 3D at all…

related: AMD is making embedded products for gambling now (look at their
YouTube channel)

~~~
scott_karana
They have very flashy, AAA-style graphics now. Check out Konami's pivot:

[https://www.casino-review.co/wp-
content/uploads/2016/08/CR16...](https://www.casino-review.co/wp-
content/uploads/2016/08/CR167-Konami-Europe-1-696x392.jpg)

