Files
godot-website/pages/home.html
Emilio Coppola 2fa65521ee Complete website rewrite
This PR replaces the current CMS website with a static version of it built using Jekyll.

- Everything should be working 1 to 1 with the same permalinks except for the `/news` page (not articles) which was renamed as `/blog` (old links will redirect to new ones).
- The showcase entries on the home page now redirect to their showcase page in our site so that the user can choose which store front or page to visit next.
- I also changed the first link from the nav bar to go to the showcase page since the features one is still pretty outdated.

Co-authored-by: Yuri Sizov <yuris@humnom.net>
2023-01-09 19:14:36 +03:00

555 lines
15 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
permalink: /
title: "Godot Engine - Free and open source 2D and 3D game engine"
description: "Godot provides a huge set of common tools, so you can just focus on making your game without reinventing
the wheel."
layout: default
---
{% include header.html %}
<style>
.main-download {
margin-top: 48px;
}
#donations {
background-color: var(--dark-color);
color: var(--dark-color-text);
overflow: auto;
text-align: center;
}
#donations h1,
#donations h2,
#donations h3 {
color: var(--dark-color-text-title);
}
#sponsors .flex {
justify-content: center;
flex-wrap: wrap;
}
#sponsors .sponsor {
background-color: var(--sponsor-background-color);
border: 14px solid var(--sponsor-background-color);
border-radius: 8px 8px;
display: flex;
align-items: center;
height: 80px;
box-sizing: border-box;
margin-bottom: 8px;
margin-left: 8px;
overflow: auto;
opacity: 0.85;
transition: opacity 0.2s;
}
#sponsors .sponsor:hover {
filter: brightness(105%);
opacity: 1.0;
}
#sponsors img {
mix-blend-mode: multiply;
width: inherit;
height: 100%;
}
#sponsors .silver .sponsor {
background-color: var(--sponsor-silver-background-color);
border-color: var(--sponsor-silver-background-color);
height: 68px;
}
#sponsors .gold .sponsor {
background-color: var(--sponsor-gold-background-color);
border-color: var(--sponsor-gold-background-color);
}
#sponsors .platinum .sponsor {
background-color: var(--sponsor-platinum-background-color);
border-color: var(--sponsor-platinum-background-color);
height: 100px;
}
.feature-link {
text-decoration: none;
}
.features-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 20px;
}
.feature:hover {
transform: translateY(-2px);
}
.features-row> :first-child,
.split-row> :first-child {
margin-right: 8px;
}
.features-row> :last-child,
.split-row> :last-child {
margin-left: 8px;
}
.feature img {
display: block;
width: 100%;
height: auto;
position: relative;
background-color: #607080;
aspect-ratio: 3/2;
object-fit: cover;
object-position: top center;
}
.feature {
position: relative;
overflow: hidden;
transition: transform 200ms ease-in-out;
height: 100%;
border-radius: 8px;
}
.feature.dark {
background-color: var(--transparent-cover-darker);
}
.feature h4 {
margin-bottom: 10px;
}
.feature p {
margin: 0;
}
.feature .body {
padding: 24px;
}
.feature .dark h4 {
color: var(--dark-color-text-title);
}
.img-auto-size {
width: 100%;
height: auto;
}
.btn.btn-flat.btn-hero-learn-more {
background-color: rgb(111 111 111 / 27%);
-webkit-backdrop-filter: blur(4px);
backdrop-filter: blur(4px);
}
@media (max-width: 900px) {
.main-download {
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
}
.features-grid {
grid-template-columns: 1fr;
}
#highlight .highlight-cover {
border-radius: 4px 4px 0 0;
}
#highlight .highlight-details {
border-radius: 0;
}
}
.news-list .button-container {
text-align: right;
}
@media (max-width: 768px) {
.news-list .button-container {
text-align: left;
}
}
header {
box-shadow: none;
margin-bottom: -70px;
background-color: rgb(134 144 154 / 15%);
-webkit-backdrop-filter: blur(4px);
backdrop-filter: blur(4px);
}
@media (max-width: 1200px) {
input#nav_toggle_cb:checked~header {
background-color: var(--navbar-background-color);
}
}
/* Overwriting nav style */
nav#nav a {
color: white;
}
nav#nav .fund a {
color: var(--fund-color);
background-color: var(--base-color);
}
.nav-logo {
display: none;
}
.nav-logo.dark-logo {
display: inline;
}
#nav_toggle_btn {
filter: invert(100%) saturate(0%) brightness(120%);
}
@media (max-width: 1200px) {
nav#nav .fund a {
background-color: transparent;
}
}
@media (max-width: 1200px) and (prefers-color-scheme: light) {
nav#nav a {
color: var(--navbar-link-color);
}
input#nav_toggle_cb:checked~header #nav_head #nav_toggle_btn {
filter: none;
}
input#nav_toggle_cb:checked~header #nav_head .nav-logo {
display: inline;
}
input#nav_toggle_cb:checked~header #nav_head .nav-logo.dark-logo {
display: none;
}
}
@media (min-width: 1200px) {
nav#nav .fund {
margin-right: 0px;
}
nav#nav .fund a {
color: var(--fund-color);
background-color: var(--base-color);
border-radius: 9px;
box-shadow: inset 0 0 0 2px var(--fund-color);
padding: 13px;
}
}
</style>
<section class="hero">
<div class="background-image" style="background-image: url()"></div>
<div class="wrapper">
<div class="copy container">
<h1>The game engine you've been waiting&nbsp;for.</h1>
<p>The Godot Engine is a free, all-in-one, cross-platform game engine that makes it easy for you to create 2D and
3D games.</p>
<div class="main-download">
<a href="/download/windows" class="btn btn-download set-os-download-url">
<div class="download-title">Download</div>
<div class="download-hint">{{ site.stable_version }}</div>
</a>
<a href="/features" class="btn btn-flat btn-flat-white btn-hero-learn-more">Learn more</a>
</div>
</div>
</div>
<div class="credits">
<a href=""><span class="game"></span> <span class="by" style="opacity: 0.6;"></span></a>
</div>
</section>
<section class="container padded">
<h2>Latest news</h2>
<div class="flex eqsize responsive" style="gap: 30px;">
{% assign latest_posts = site.article | sort:"date" | reverse %}
{% for post in latest_posts limit:1 %}
<a href="{{ post.url }}" style="text-decoration: none">
<article class="article-card">
<div class="thumbnail" style="background-image: url('{{ post.image }}');" href="{{ post.url }}"></div>
<div class="content">
<h3>{{ post.title }}</h3>
<p class="excerpt">{{ post.excerpt }}</p>
</div>
</article>
</a>
{% endfor %}
<div class="news-list">
<div style="display: grid; gap: 18px;">
{% for post in latest_posts limit:3 offset:1 %}
{% if post != posts[0] %}
<a href="{{ post.url }}" style="text-decoration: none;">
<article class="article-card row">
<div class="thumbnail" style="background-image: url('{{ post.image }}');" href="{{ post.url }}"></div>
<div>
<h3>{{ post.title }}</h3>
<p class="excerpt">{{ post.excerpt | truncate: 103 }}</p>
</div>
</article>
</a>
{% endif %}
{% endfor %}
<div class="button-container">
<a href="/blog" class="btn no-margin">More News</a>
</div>
</div>
</div>
</div>
</section>
<section id="features" class="container padded">
<h2>A different way to make games</h2>
<div class="features-grid">
<a class="feature-link" href="/features#design" data-barba-prevent>
<div class="feature dark">
<img src="/assets/home/features/innovative.webp" alt="" width="1" height="1"
style="background: linear-gradient(90deg, #333747 11%, #2d3342 50%, #2d3342 68%, #272d3c 87%)" loading="lazy">
<div class="body">
<h4>Innovative design</h4>
<p>
Godot's Node and Scene system gives you both power and flexibility
to create anything.
</p>
</div>
</div>
</a>
<a class="feature-link" href="/features#script" data-barba-prevent>
<div class="feature dark">
<img src="/assets/home/features/language.webp" alt="" width="1" height="1"
style="background: linear-gradient(90deg, #252a35 46%, #252a35 53%, #202630 76%, #202630 89%)" loading="lazy">
<div class="body">
<h4>Use the right language for the job</h4>
<p>
Keep your code modular with an object-oriented API using Godot's own
GDScript, C#, C++, or bring your own using GDNative.
</p>
</div>
</div>
</a>
<a class="feature-link" href="/features#features_2d" data-barba-prevent>
<div class="feature dark">
<img src="/assets/home/features/2d.webp" alt="" width="1" height="1"
style="background: linear-gradient(90deg, #196f36 7%, #28674e 29%, #2a4b46 65%, #3b6f4e 97%)" loading="lazy">
<div class="body">
<h4>Dedicated 2D engine</h4>
<p>
Make crisp and performant 2D games with Godot's dedicated 2D
rendering engine with real 2D pixel coordinates and 2D nodes.
</p>
</div>
</div>
</a>
<a class="feature-link" href="/features#features_3d" data-barba-prevent>
<div class="feature dark">
<img src="/assets/home/features/3d.webp" alt="" width="1" height="1"
style="background: linear-gradient(90deg, #196f36 7%, #28674e 29%, #2a4b46 65%, #3b6f4e 97%)" loading="lazy">
<div class="body">
<h4>Simple and powerful 3D</h4>
<p>
Godot's 3D nodes give you everything you need to build, animate,
and render your 3D worlds and characters.
</p>
</div>
</div>
</a>
<a class="feature-link" href="/features#deploy" data-barba-prevent>
<div class="feature dark">
<img src="/assets/home/features/cross-platform.svg" alt="" width="1" height="1"
style="background-color: #333667" loading="lazy">
<div class="body">
<h4>Release on all platforms</h4>
<p>
Deploy your game on desktop, mobile, and the web in seconds. Godot
even supports consoles through third party publishers.
</p>
</div>
</div>
</a>
<a class="feature-link" href="#get_involved" data-barba-prevent>
<div class="feature dark">
<img src="/assets/home/features/oss.svg" alt="" width="1" height="1" style="background-color: #333667"
loading="lazy">
<div class="body">
<h4>Open Source</h4>
<p>
Truly open development: anyone who contributes to Godot benefits
equally from others contributions.
</p>
</div>
</div>
</a>
</div>
</section>
<section id="get_involved" class="container padded">
<h2>Get involved</h2>
<p>
Join the community and help create a game engine that belongs to everybody.
</p>
<div class="flex eqsize responsive">
<div class="text-center base-padding">
<img src="/assets/home/code.svg" alt="" width="250" height="250" loading="lazy">
<h4>Code</h4>
<p>
If you know how to code, you can help by fixing bugs and working with engine contributors towards the
implementation of new features.
</p>
<a href="https://docs.godotengine.org/en/stable/community/contributing/ways_to_contribute.html#contributing-code"
class="btn btn-flat" target="_blank" rel="noopener">Learn more</a>
</div>
<div class="text-center base-padding">
<img src="/assets/home/document.svg" alt="" width="250" height="250" loading="lazy">
<h4>Document</h4>
<p>
Documentation quality is essential in a game engine; help make it better by updating the API reference, writing
new guides or submitting corrections.
</p>
<a href="https://docs.godotengine.org/en/stable/community/contributing/ways_to_contribute.html#contributing-to-the-documentation"
class="btn btn-flat" target="_blank" rel="noopener">Learn more</a>
</div>
<div class="text-center base-padding">
<img src="/assets/home/report.svg" alt="" width="250" height="250" loading="lazy">
<h4>Report</h4>
<p>
Found a problem with the engine? Don't forget to report it so that developers can track it down.
</p>
<a href="https://docs.godotengine.org/en/stable/community/contributing/ways_to_contribute.html#testing-and-reporting-issues"
class="btn btn-flat" target="_blank" rel="noopener">Learn more</a>
</div>
</div>
</section>
<section id="donations" class="padded">
<div class="container sm-full">
<img id="sfc_graphic" src="/assets/home/sfc.svg" alt="Software Freedom Conservancy logo" width="1" height="1"
class="img-auto-size" loading="lazy">
<h3 class="text-center">Donate</h3>
<p class="small auto-margin">
You don't need to be an engine developer to help Godot. Consider donating to speed up development and make
Godot&nbsp;Engine even more awesome!
</p>
<a href="/donate" class="btn btn-flat btn-flat-white">Learn more</a>
</div>
</section>
<section id="sponsors">
<div class="container sm-full padded">
<h2 class="text-center">Sponsored by</h2>
<div class="platinum flex">
<a class="sponsor card" href="https://www.gamblify.com/" target="_blank" rel="noopener">
<img src="/assets/home/sponsors/gamblify.png" width="312" height="66" alt="Gamblify" loading="lazy">
</a>
<a class="sponsor card" href="http://spiffcode.com/" target="_blank" rel="noopener">
<img src="/assets/home/sponsors/spiffcode.png" width="291" height="66" alt="Spiffcode" loading="lazy">
</a>
</div>
<div class="gold flex">
<a class="sponsor card" href="https://scp.games/pandemic/" target="_blank" rel="noopener">
<img src="/assets/home/sponsors/affray-interactive.png" width="220" height="66" alt="Affray Interactive"
loading="lazy">
</a>
<a class="sponsor card" href="https://playfulstudios.com/" target="_blank" rel="noopener">
<img src="/assets/home/sponsors/playful-studios.png" width="196" height="80" alt="Playful Studios"
loading="lazy">
</a>
<a class="sponsor card" href="http://robotgentleman.com/" target="_blank" rel="noopener">
<img src="/assets/home/sponsors/robot-gentleman.png" width="120" height="103" alt="Robot Gentleman"
loading="lazy">
</a>
</div>
<div class="silver flex">
<a class="sponsor card" href="https://developers.join-striked.com/home" target="_blank" rel="noopener">
<img src="/assets/home/sponsors/striked.png?v2" width="171" height="40" alt="Striked" loading="lazy">
</a>
</div>
</div>
</section>
<script>
document.addEventListener('DOMContentLoaded', () => {
// Updating the hero on the home page
// get the current html lang attribute
const htmlLang = document.documentElement.lang;
if (window.location.pathname === '/' || window.location.pathname === '/' + htmlLang || window.location.pathname === '/' + htmlLang + '/') {
const authors = [{% for project in site.showcase %}
{% if project.featured_in_home %}
{
game: '{{ project.title }}',
by: '{{ project.author }}',
url: '{{ project.url }}',
image: '{{ project.image }}',
},
{% endif %}
{% endfor %}
];
let author = authors[Math.floor(Math.random() * authors.length)];
document.querySelector('.hero .background-image').style.backgroundImage = `url(${author.image})`;
document.querySelector('.hero .credits a').href = author.url;
document.querySelector('.hero .credits a span.game').innerText = author.game;
document.querySelector('.hero .credits a span.by').innerText = ' - ' + author.by;
// Parallax effect: On page scroll move background-position up.
// This effect is disabled if user opted to have reduced motion in browser/OS settings.
const reducedMotionCheck = window.matchMedia('(prefers-reduced-motion)');
if (!reducedMotionCheck.matches) {
// Parallax effect lags on mobile, so we disable it based on the window resolution.
const parallaxImage = document.querySelector('section.hero .background-image');
const parallaxMinWidth = 768;
const parallaxSpeed = 0.4;
const parallaxTick = () => {
if (window.innerWidth > parallaxMinWidth) {
parallaxImage.style.transform = `translateY(${window.pageYOffset * parallaxSpeed}px)`;
} else {
parallaxImage.style.transform = 'none';
}
}
window.addEventListener("scroll", () => {
window.requestAnimationFrame(parallaxTick)
});
window.addEventListener("resize", () => {
window.requestAnimationFrame(parallaxTick)
});
}
}
});
</script>
{% include footer.html %}