1997年11月1日京都の新馬戦でデビューし9着。その後も勝ちきれないレースが続いたが1998年4月中京の未勝利戦で初勝利を挙げる。同年6月に3勝目を挙げ、7月のやまゆりステークスで11着と大敗したのを最後に以降はダートのレースに専念する。10月4日中山の茨城新聞杯で4勝目を挙げると、交流重賞の東海菊花賞に挑み2着と好走する。積雪の影響で12月に延期されたダービーグランプリに3番人気で出走。レースでは2着のウイングアローに3/4馬身差をつけ快勝しダートグレード競走初制覇を飾った。1999年初戦の川崎記念は4着、続く竹秋ステークスは7着と凡走するも、4月29日のオグリキャップ記念を制し重賞2勝目となった。しかしその後は勝ちきれないレースが続き、2002年12月の春待月ステークスのあとホッカイドウ競馬に移籍するも未勝利に終わり、2005年には荒尾競馬に移籍。荒尾移籍初戦のレースでは6年ぶりの勝利を挙げるも、その後は勝ち星を挙げることなく2006年3月14日の大阿蘇大賞典10着を最後に現役を引退した。
Godotの開発がJuan 'reduz' LinietskyとAriel 'punto' Manzurによって開始されたのは2007年のことである。 Linietskyはプレゼンテーションにおいて、"Godot"の名は「エンジンに新しい機能を追加し、完璧なものへと近づけたい」という永遠の叶わぬ願いをサミュエル・ベケットの劇「ゴドーを待ちながら」になぞらえて取られたということを述べている。2014年2月、GodotのソースコードがMITライセンスでGitHubに公開される。2014年12月15日、Godotはライトマッピングやナビメッシュによる経路探索のサポートを追加し、シェーダー機能を強化したバージョン1.0をリリースし、これが初の安定版となった。 次いで2015年5月21日にリリースされたバージョン1.1はコードエディター上でのオートコンプリートの改善、ビジュアルシェーダーエディター、OSのウィンドウ管理のためのAPI、ダークテーマを追加し、Blender用Colladaエクスポーターの改善がなされた。また、2Dエンジンの書き直しとそれに伴い2Dナビゲーションポリゴンのサポートが追加される。新しい2Dエンジンはシェーダーやマテリアル、独立したノード毎のZオーダー、光源やポリゴンを用いたシャドウ、法線マッピングの他、Distance-fieldフォントのサポートが改善された。2015年11月4日、GodotはSoftware Freedom Conservancyのメンバー・プロジェクトとなる。2016年2月23日、Godotは安定版としてバージョン2.0をリリースした。シーンのインスタンス化と継承、複数シーンの編集機能やデバッガー等が改善され、新しいファイルブラウザが追加された。 更に2016年8月リリースのバージョン2.1では、アセットデータベースやプロファイル、プラグインAPIの追加がなされた。2016年6月22日、 GodotはMozilla Open Source Support (MOSS) の“Mission Partners”アワードからWebSocket、 WebAssemblyとWebGL 2.0のサポートへの支援として20,000ドルの支援を受けた。2018年1月29日、 Godotはバージョン3.0をリリースした。3DレンダリングとVRの互換性が向上し、C#（Mono）がサポートされた。また独自の組み込み3D物理エンジンはBullet物理エンジンに置き換えられた。
GodotはすべてのプラットフォームでOpenGL ES 3.0を用いた描画を行う。エンジンは透明度、法線マッピング、スペキュラ、シャドウマップを用いた動的な影や、FXAA、ブルーム効果、被写界深度、HDR、ガンマ補正やフォグ等のフルスクリーンポストプロセッシング効果を実装している。GodotはGLSLに似たシンプルなシェーダ言語を備えている。シェーダーはマテリアルやポストプロセッシングはもちろん、2DCGレンダリングに対しても用いることができる。ビジュアルエディタを用いたノードベースでのシェーダー編集も可能である。 Godotは独立した2Dグラフィックスエンジンを備えており、3Dのそれとは別に動かすことができる。2Dエンジンの機能の一例としてライティングやシェーディング、タイルセット、多重スクロール、2Dポリゴン、アニメーション、パーティクルに加えて物理演算エンジンを備えている。これら2Dと3D二つのグラフィックスエンジンを「ビューポートノード」を用いて併用・統合させて用いることが可能であり、エンジンの大きな特徴となっている。
関数オブジェクトの典型的な用途は、より優れたコールバックを記述することである。C言語では、コールバックには関数へのポインタを使う他ないが、コールバックの内外で状態変数を共有できない。この制限のために、関数の動的な振る舞いやインターフェイス設計が制約されてしまう。以下に例を示す。/* ライブラリ側のコード */typedef void my_callback_func_t(void);typedef struct my_handler {    my_callback_func_t* callback;} my_handler_t;void register_callback(my_handler_t* handler, my_callback_func_t* func) {    handler->callback = func;}void invoke_callback(my_handler_t* handler) {    if (handler->callback) {        handler->callback();    }}void perform_process(my_handler_t* handler) {    /* 前処理 */    /* ... */    /* コールバック関数の呼び出し */    invoke_callback(handler);    /* 後処理 */    /* ... */}/* アプリケーション側のコード */void callback_func(void) {    /* ... */    /* ここで後述の状態変数 state にアクセスしたくても、不可能 */}int main(void) {    /* 状態変数 */    static int state = 0;    my_handler_t handler = { NULL };    /* コールバックとして callback_func という関数へのポインタを登録 */    register_callback(&handler, &callback_func);    perform_process(&handler);}コールバック関数内で外部の状態変数を参照するためには、グローバル変数を利用したり、構造体メンバーに状態変数へのポインタを持たせたうえでコールバック関数の引数を経由して状態変数のアドレスを渡したり、といった工夫が必要になる。関数オブジェクトは、上記のように煩雑になりがちな設計パターンを言語機能として組み込み、関数を可搬性の高いオブジェクトとして容易に利用できるようにするものである。LISPや、Smalltalk、C++、Java、C#、Perl、Python、Rubyなどの現代的なオブジェクト指向言語は、ほとんどが関数オブジェクト、あるいは同等の機能をサポートしており、さらに有意義な使い方をしているものもある。