
Godot 3's renderer design - uyoakaoma
https://godotengine.org/article/godot-3-renderer-design-explained
======
ognyankulev
While scrolling fast through the long document, my eyes immediately focused on
"Wait, why not Vulkan or DirectX12?" :-D

tl;dr "At the end of the day, the use case where Vulkan and DirectX12 make the
most sense is when you have hundreds of thousands of objects, which are all
different (different geometry, textures, etc.), and which move. This is a
difficult use case to achieve, even willingly."

~~~
wlesieutre
The paragraph above that is relevant as well. Vulkan is only on Linux and
Windows, DX12 is on Windows, Metal is on Mac and iOS. They'd have to have
multiple renderers written for different APIs to cover all the platforms that
they support.

~~~
slezyr
> Vulkan is only on Linux and Windows

And android. I.e. everything but Mac OS, iOS.

~~~
EddieRingle
Plus you can get Vulkan on macOS with MoltenVK.

~~~
wlesieutre
I've seen that before, and while it's technically true it's also 100% useless
for an open source engine.

~~~
microcolonel
It may be open sourced in the future, there are stakeholders who might be
willing to pay for this to happen (Google, for example, might want it for
their iOS and Apple deployments).

~~~
earenndil
Eh, google doesn't really need it. They don't make anything that requires high
performance and cross-platform, they don't make games, and chrome is only for
android so they don't need to be able to run it on ios.

~~~
microcolonel
Chrome runs on OS X, where GL is deteriorating; they also have Maps and Earth
on iOS.

------
mentos
Researching Godot's multiplayer support it looks like there is not anything
very comprehensive?

In a separate discussion, will we ever see any sort of UDP support in the
browser for client/server games?

[https://gafferongames.com/post/why_cant_i_send_udp_packets_f...](https://gafferongames.com/post/why_cant_i_send_udp_packets_from_a_browser/)

~~~
stcredzero
I have UDP semantics for my game, which has a Javascript front end and Golang
servers: (Though I use node-electron processes as a WebRTC proxy.)

[https://news.ycombinator.com/item?id=15334726](https://news.ycombinator.com/item?id=15334726)

[https://news.ycombinator.com/item?id=15332187](https://news.ycombinator.com/item?id=15332187)

~~~
mentos
Reading the article I linked in my first post, my understanding is that it is
possible to use WebRTC for UDP _today_ but its just very difficult?

"while WebRTC makes it easy to send unreliable-unordered data from one browser
to another, it falls down when data needs to be sent between a browser and a
dedicated server...It falls down because WebRTC is extremely complex. This
complexity is understandable, being designed primarily to support peer-to-peer
communication between browsers, WebRTC needs STUN, ICE and TURN support for
NAT traversal and packet forwarding in the worst case."

Given your experience with WebRTC stcredzero, do you think it is possible to
wrap WebRTC in a class to emulate UDP? What is the hold up?

~~~
stcredzero
_it falls down when data needs to be sent between a browser and a dedicated
server...It falls down because WebRTC is extremely complex._

The SimplePeer library works very well to hide the complexity of WebRTC. It
works just fine for me. The big sticking point is the complexity/overhead of
the setup. This might be mitigated by using the true headless modes in
Chromium and Firefox. Given what I remember from installing dependencies, it
should be possible to create a fairly lightweight headless fork that only has
just enough to run WebRTC datachannels.

So, if you don't need lots of scaling and can deal with the overhead, there is
no hold-up right this moment. It's just a matter of motivation.

------
willvarfar
I'm really looking forward to the proper release of Godot 3! Want to use it to
get my kids into game writing, but have been holding off because Godot 2 has a
custom scripting language which will be going away and I don't want to invest
in that. Any idea when 3.0 ships?

~~~
dave_sullivan
You might really like UE4's blueprint system, it's the only time I've seen
"visual programming" work really well.

~~~
lfowles
It's really impressive. I thought I'd be using C++ a lot more when I started
seriously digging into UE4, but more and more it's just to make helper
functions so the primary logic and asset management can be done in blueprints.

------
ravirajx7
Someone who wish to learn about developing game and its theory can get started
here.
[http://gameprogrammingpatterns.com/contents.html](http://gameprogrammingpatterns.com/contents.html)

~~~
rootlocus
While I agree this is a wonderful resources, it is much less about game
development than it is about design patterns. Basically, it's a gamedev
flavored book about design patterns. A much better books about game
development would be Game Coding Complete [0].

[0] [https://www.amazon.com/Game-Coding-Complete-Fourth-
McShaffry...](https://www.amazon.com/Game-Coding-Complete-Fourth-
McShaffry/dp/1133776574)

------
pjmlp
Very interesting reading.

I like specially the architecture decision of a separate render process.

------
microcolonel
Here's an archive link since you probably won't be able to see the article
from the original location.

[http://archive.is/lvKV9](http://archive.is/lvKV9)

