Godot Engine – Multi-platform 2D and 3D game engine
Go to file
Hein-Pieter van Braam cada03eedb Don't use -ffast-math or other unsafe math optimizations
Godot supports many different compilers and for production releases we
have to support 3 currently: GCC8, Clang6, and MSVC2017. These compilers
all do slightly different things with -ffast-math and it is causing
issues now. See #24841, #24540, #10758, #10070. And probably other
complaints about physics differences between release and release_debug
builds.

I've done some performance comparisons on Linux x86_64. All tests are
ran 20 times.

Bunnymark: (higher is better)
(bunnies)    min    max  stdev average
fast-math   7332   7597    71     7432
this pr     7379   7779   108     7621 (102%)

FPBench (gdscript port http://fpbench.org/) (lower is better)
(ms)
fast-math  15441  16127   192    15764
this pr    15671  16855   326    16001  (99%)

Float_add (adding floats in a tight loop) (lower is better)
(sec)
fast-math   5.49   5.78  0.07     5.65
this pr     5.65   5.90  0.06     5.76  (98%)

Float_div (dividing floats in a tight loop) (lower is better)
(sec)
fast-math  11.70  12.36  0.18    11.99
this pr    11.92  12.32  0.12    12.12  (99%)

Float_mul (multiplying floats in a tight loop) (lower is better)
(sec)
fast-math  11.72  12.17  0.12    11.93
this pr    12.01  12.62  0.17    12.26  (97%)

I have also looked at FPS numbers for tps-demo, 3d platformer, 2d
platformer, and sponza and could not find any measurable difference.

I believe that given the issues and oft-reported (physics) glitches on
release builds I believe that the couple of percent of tight-loop
floating point performance regression is well worth it.

This fixes #24540 and fixes #24841

(cherry picked from commit e5b335d367)
2019-07-03 15:53:22 +02:00
core Fix blitting from negative position 2019-07-03 15:40:42 +02:00
doc Enabled rst files to escape for parentheses after brackets 2019-07-03 15:43:31 +02:00
drivers Check for WebGL RGTC extension 2019-07-03 15:34:25 +02:00
editor Fix many errors found by PVS-Studio 2019-07-03 15:39:12 +02:00
main Fix many errors found by PVS-Studio 2019-07-03 15:39:12 +02:00
misc Update copyright statements to 2019 2019-01-03 11:41:35 +01:00
modules Don't use -ffast-math or other unsafe math optimizations 2019-07-03 15:53:22 +02:00
platform Don't use -ffast-math or other unsafe math optimizations 2019-07-03 15:53:22 +02:00
scene Label: Fix kerning when using Uppercase mode 2019-07-03 15:44:00 +02:00
servers Fix arg name in docs, some copy-paste errors 2019-07-03 14:02:47 +02:00
thirdparty openssl: Update to pristine 1.0.2s (security update) 2019-06-04 12:21:32 +02:00
.appveyor.yml AppVeyor: Skip saving cache on non-master branches 2019-07-03 07:46:13 +02:00
.clang-format Style: Format code with clang-format 6.0.1 2018-07-18 16:37:23 +02:00
.editorconfig Enforce insert_final_newline in the editorconfig. 2018-02-22 13:06:25 +01:00
.gitattributes Add .xml to .gitattributes 2017-10-13 21:29:26 +11:00
.gitignore fixed issue with PrismMesh size, ignore for VS code .code-workspace 2018-11-28 10:27:42 +01:00
.mailmap Disable colored output and progress bar when building outside of a TTY 2018-01-13 17:56:41 +01:00
.travis.yml Travis: Install libstdc++ >= 4.9 for clang-format-6.0 2018-11-28 10:27:42 +01:00
AUTHORS.md Update AUTHORS and DONORS list 2019-06-04 10:36:41 +02:00
CHANGELOG.md 3.0.6 changelog 2018-07-31 20:03:50 +02:00
CONTRIBUTING.md Add useful links for contributors to CONTRIBUTING and README docs. 2018-11-01 11:39:27 +01:00
COPYRIGHT.txt openssl: Update to pristine 1.0.2s (security update) 2019-06-04 12:21:32 +02:00
DONORS.md Update sponsors 2019-06-04 12:58:34 +02:00
ISSUE_TEMPLATE.md Issue template: Remove checkbox and reword some comments 2018-01-05 10:58:04 +01:00
LICENSE.txt Update copyright statements to 2019 2019-01-03 11:41:35 +01:00
LOGO_LICENSE.md Improve documentation of thirdparty code snippets 2017-05-07 11:42:37 +02:00
README.md Add useful links for contributors to CONTRIBUTING and README docs. 2018-11-01 11:39:27 +01:00
SConstruct SCons: Fix import clash between Godot and system modules 2019-02-27 09:20:15 +01:00
compat.py Fix build with Python 3 on Windows 2017-10-29 19:27:12 +01:00
icon.png Use new Godot icon consistently everywhere 2017-05-17 19:53:59 +02:00
icon.svg Use new Godot icon consistently everywhere 2017-05-17 19:53:59 +02:00
logo.png Use new Godot icon consistently everywhere 2017-05-17 19:53:59 +02:00
logo.svg Use new Godot icon consistently everywhere 2017-05-17 19:53:59 +02:00
methods.py added 'android_add_asset_dir('...') method to Android module gradle build config 2018-07-04 23:04:14 +02:00
version.py 3.0.7-devel 2018-07-31 20:13:10 +02:00

README.md

Godot Engine logo

Godot Engine

Homepage: https://godotengine.org

2D and 3D cross-platform game engine

Godot Engine is a feature-packed, cross-platform game engine to create 2D and 3D games from a unified interface. It provides a comprehensive set of common tools, so that users can focus on making games without having to reinvent the wheel. Games can be exported in one click to a number of platforms, including the major desktop platforms (Linux, Mac OSX, Windows) as well as mobile (Android, iOS) and web-based (HTML5) platforms.

Free, open source and community-driven

Godot is completely free and open source under the very permissive MIT license. No strings attached, no royalties, nothing. The users' games are theirs, down to the last line of engine code. Godot's development is fully independent and community-driven, empowering users to help shape their engine to match their expectations. It is supported by the Software Freedom Conservancy not-for-profit.

Before being open sourced in February 2014, Godot had been developed by Juan Linietsky and Ariel Manzur (both still maintaining the project) for several years as an in-house engine, used to publish several work-for-hire titles.

Screenshot of a 3D scene in Godot Engine

Getting the engine

Binary downloads

Official binaries for the Godot editor and the export templates can be found on the homepage.

Compiling from source

See the official docs for compilation instructions for every supported platform.

Community and contributing

Godot is not only an engine but an ever-growing community of users and engine developers. The main community channels are listed on the homepage.

To get in touch with the developers, the best way is to join the #godotengine IRC channel on Freenode.

To get started contributing to the project, see the contributing guide.

Documentation and demos

The official documentation is hosted on ReadTheDocs. It is maintained by the Godot community in its own GitHub repository.

The class reference is also accessible from within the engine.

The official demos are maintained in their own GitHub repository as well.

There are also a number of other learning resources provided by the community, such as text and video tutorials, demos, etc. Consult the community channels for more info.

Travis Build Status AppVeyor Build Status Code Triagers Badge