Implemented feedback from Discord convos

This commit is contained in:
Parham Gholami 2024-02-05 16:08:01 -08:00
Родитель b88636d9fc
Коммит 5c1eb24b65
1 изменённых файлов: 12 добавлений и 6 удалений

Просмотреть файл

@ -20,29 +20,31 @@ The party is over. In the last several years, many commercial software companies
As the name suggests, free and open-source software (FOSS) includes two notable characteristics: it is free (libre), and its source code is readily available. You can free (or libre) software for any purpose at your sole discretion. Most commonly you will hear folks refer to this as something to the effect of: "free as in speech, not free as in beer". The user has complete control over the software. The open-source aspect of FOSS describes how everyone has access to the code that makes up the software.
Using a FOSS game engine provides several advantages. Foremost, no licensing fees. While contributors always appreciate donations, none of the notable FOSS game engines expect or require any upfront payment, monthly subscriptions, or ongoing royalties. FOSS engines provide independence from a single organization. If changes to a FOSS engine's terms upset the community, the engine's licensing terms allow developers to stick to the version with the most favorable terms and even fork off [maybe link to an explanation of what this means?] the project if they choose.
Using a FOSS game engine provides several advantages. Foremost, no licensing fees. While contributors always appreciate donations, none of the notable FOSS game engines expect or require any upfront payment, monthly subscriptions, or ongoing royalties. FOSS engines provide independence from a single organization. If changes to a FOSS engine's terms upset the community, the engine's licensing terms allow developers to stick to the version with the most favorable terms and even fork off [https://en.wikipedia.org/wiki/Fork_(software_development)] the project if they choose.
The community guides the development and growth of their FOSS engine of choice. Many FOSS game engines have active and passionate communities who share their knowledge, advocate for their engine, and help newcomers. These vibrant and dedicated communities serve as a potent learning resource when working solo or as a small team. Some community members even contribute directly to their engine, ultimately improving the quality of the engine for everyone.
Open source allows teams or projects to change game engines to fit their needs. For example, if the engine lacks a specific feature, has a persistent bug, or needs quality-of-life improvements, anyone can freely update it as necessary. They can even take the additional step of contributing the changes to the project for everyone's benefit. Ultimately, one of the greatest strengths of FOSS game engines lies in their communities and a willingness for everyone to work towards a collective good.
## What FOSS game engines are available today?
Although FOSS game engines have been around for decades, the past several years have seen an explosion in the number of game engines available, as well as the number of contributors, money, and resources dedicated to them. It would be impossible to cover all the FOSS game engines available now. In fact, if you have a passion for a particular language or framework, more likely than not, someone has a game engine written for it.
This post will primarily focus on some of the most notable FOSS game engines currently: Stride (of course), Godot, Bevy, and Open 3D Engine. This post will not be a head-to-head comparison of the different engines. The summaries here are not exhaustive nor meant to highlight features exclusive to each engine. Rather, I really want this to be a celebration of the FOSS game development community and, instead, spotlight each engine's notable features. No engine is one-size-fits-all and some may be better fit for certain tasks than others. With that out of the way, let's start.
### Stride
* Written in C#, Supported Languages: C#, F#, and Visual Basic
* Platforms:
* Development: Windows, Linux (Code only)
* Target: Windows, Linux, Android, iOS
Stride began life as Xenko (and before that, Paradox): Silicon Studio's premium game engine. After several years of providing Stride to the public through a subscription-based model, Silicon Studio released the engine's source code and editor freely to the community under the MIT license. Among the major FOSS game engines available, it is unique because Silicon Studio completely wrote it in C# from top to bottom. There is no delineation between the language used for the core engine and the language you would write with day-to-day while working on the game. It becomes much easier to override or change any inherent engine behavior when coding in the same language. With that said, the code-only version of Stride supports any language that is part of the .NET family (C#, F#, and Visual Basic), providing some flexibility in language choice.
Stride began life as Xenko (and before that, Paradox): Silicon Studio's premium game engine. After several years of providing Stride to the public through a subscription-based model, Silicon Studio released the engine's source code and editor freely to the community under the MIT license. Among the major FOSS game engines available, it is unique because Silicon Studio completely wrote it in C# from top to bottom. There is no delineation between the language used for the core engine and the language you would write with day-to-day while working on the game. It becomes much easier to override or change any inherent engine behavior when coding in the same language. No need to develop an interop system to interface with the engines core logic. With that said, the code-only version of Stride supports any language that is part of the .NET family (C#, F#, and Visual Basic), providing some flexibility in language choice.
The engine offers a pure .NET experience that includes many of the advantages inherent to the framework, like hot reloading. Because the engine closely follows the .NET update schedule, you regularly get the most modern and up-to-date implementation of C#. You can seamlessly incorporate almost any C#-based library or tool available through NuGet, GitHub, or other platforms into Stride, enhancing your workflow. Stride is modular enough that sections of Stride are available as standalone NuGet packages. The engine provides the ability to tailor-make your game development experience.
The engine offers a pure .NET experience that includes many of the advantages inherent to the framework, like hot reloading. At the time of writing, Stride runs on .NET 8 (the latest version of the framework) and supports C# 12. Because the engine closely follows the .NET update schedule, you regularly get the most modern and up-to-date implementation of C#. You can seamlessly incorporate almost any C#-based library or tool available through NuGet, GitHub, or other platforms into Stride, enhancing your workflow. Stride is modular enough that sections of Stride are available as standalone NuGet packages. The engine provides the ability to tailor-make your game development experience.
The engine does its best to make sure it does not become a technical bottleneck for your game. A lot of processing within Stride is multithreaded. This means it allows logic to run on multiple threads of execution concurrently. The engine even implements a custom thread pool to maximize engine performance. As a result, Stride takes full advantage of the hardware it is running on, providing players with faster and smoother experiences. All the tools Stride uses to support multi-threading under the hood are also accessible to developers. Nothing is out of reach. An entire library exists within the engine focused on multi-threading that anyone can leverage in their projects. Used with features like the upcoming Bepu physics integration, it becomes possible to have thousands of objects concurrently in a scene with little effort. Stride provides the space to explore multi-threading and have fun with it.
The engine does its best to make sure it does not become a technical bottleneck for your game. A lot of processing within Stride is multithreaded. This means it allows logic to run on multiple threads of execution concurrently. The engine even implements a custom thread pool to maximize engine performance. As a result, Stride takes full advantage of the hardware it is running on, providing players with faster and smoother experiences. All the tools Stride uses to support multi-threading under the hood are also accessible to developers. Nothing is out of reach. An entire library exists within the engine focused on multi-threading that anyone can leverage in their projects. Used with features like the upcoming Bepu physics integration, it becomes possible to have tens of thousands of objects concurrently in a scene with little effort. Stride provides the space to explore multi-threading and have fun with it.
### Godot
@ -53,12 +55,13 @@ The engine does its best to make sure it does not become a technical bottleneck
Among all the modern FOSS game engines available to date, Godot has the largest and most active community. As the drama around Unity has unfolded, you have more than likely heard mentions of Godot on more than a few occasions. It is not without merit, as Godot encourages developers to shape the engine around their needs. Coming in at only 40 MB, the engine includes a lightweight, multi-platform editor capable of running on any major operating system (Windows, Mac, and Linux). In fact, you can even use a web-based version, albeit with some constraints. Godot can meet developers on whatever platform works best for them.
GDScript is Godot's primary programming language. While the prospect of learning a proprietary language may turn you off at first, don't fret! It shares a lot of commonalities with Python and Godot provides detailed documentation on how to use the language. Assuming you already have some experience with object-oriented programming, it won't take long to get going with GDScript. That said, if you would still like to write some code in another language, Godot provides the means to use alternative programming languages by the way of GDExtension.
GDScript is Godot's primary programming language. While the prospect of learning an engine-specific language may turn you off at first, don't fret! It shares a lot of commonalities with Python and Godot provides detailed documentation on how to use the language. Assuming you already have some experience with object-oriented programming, it won't take long to get going with GDScript. That said, if you would still like to write some code in another language, Godot provides the means to use alternative programming languages by the way of GDExtension.
GDExtension theoretically supports any programming language that can interact with its C-based API. The system allows the community to introduce new language bindings to Godot's development ecosystem, including Rust, Python, Lua, and Java. Not all language bindings are feature complete, but many are in active development. With that in mind, it's not necessary to commit to one language for an entire project either, as GDExtension languages can work alongside GDScript. This means developers can, for example, even use GDScript with other languages in the same project.
Work in an editor for long enough and you will probably want to tinker with it. For those who are interested in creating utilities and tools like as is common practice in Unity or Unreal Engine, Godot provides the option to customize the editor to your liking. You don't need to write in C++ and re-compile Godot to create plugins. Because the editor runs on Godot itself, it is possible to tinker with or extend the editor with GDScript, Godot's scripting language, by simply appending @tool to the top of the file. Writing a plugin becomes as easy as writing code for your game.
### Bevy
* Written in Rust, Supported Languages: Rust
* Platforms:
@ -71,6 +74,7 @@ As established with Bevy's use of ECS, the engine's developers care deeply about
Asset libraries provide a wealth of resources that empower developers to learn the tools quickly and get their game to a playable state. Unique to Bevy, the community assembled a library of assets available on the official website for the community to use and share. The library includes tutorials, plugins, and templates that address subjects like physics, networking, and input management. Bevy's structure encourages developers to use any of the resources from this library freely as part of the building blocks that will ultimately make up their game.
### Open 3D Engine
* Written in C++, Supported Languages: Lua
* Platforms
@ -83,14 +87,16 @@ Only a few game engines offer visual scripting out of the box, and O3DE is one o
The transition from Lumberyard to O3DE included a significant rewrite of the engine's rendering system. Now dubbed the Atom Renderer, it boasts a robust set of features, including ray tracing and a multi-render pipeline, as well as support for several high-profile graphical backends (DirectX, Vulkan, and Metal). With Atom, O3DE strives to provide an advanced renderer that is also exceptionally customizable. The Render Pipeline Interface (RPI) and Rendering Hardware Interface (RHI) constitute the primary channels for working with the Atom renderer. The RPI provides the tools necessary for customizing the rendering pipeline and implementing higher-level graphical features, such as split screen or additional rendering passes. Meanwhile, the RHI abstracts access to the GPU's functionality, allowing developers to write lower-level graphics logic without needing to target specific graphics APIs like DirectX or Vulkan. In short, the rendering stack provides an incredible degree of flexibility to developers.
# What engine should you pick? And other closing thoughts
There is no one right answer. Be suspicious of anyone who claims otherwise. Here is the truth: the answer lies in whichever one you enjoy using the most. Game development is a process. It requires a healthy level of commitment and discipline. Anyone can do it, but you need to put in the effort. The better your tools fit with your way of working and thinking, the more likely you'll be to commit to your project and put in your full effort.
There is no one right answer. Dont trust anyone who claims otherwise. Here is the truth: the answer lies in whichever one you enjoy using the most. Game development is a process. It requires a healthy level of commitment and discipline. Anyone can do it, but you need to put in the effort. The better your tools fit with your way of working and thinking, the more likely you'll be to commit to your project and put in your full effort.
All these engines are available for free and include active communities ready to help new folks. Pick whichever engines strike your fancy and try them. Maybe one of them has that one specific feature that hits just right. Maybe another has a community you just love hanging out with or the engine integrates well with a tool you're using already. Whatever the case, it's a matter of taste and what works best for you.
Wanting to know if an engine can make a specific type of game is asking the wrong question. People make games in Excel. You can make just about any game in any engine. It's not always a trivial task, but you can do it. Instead, ask yourself which tools you enjoy using the most. Make creating something rewarding in and of itself. If you enjoy working in your environment, you will enjoy the act of development. Once you manage that, creating anything, game or otherwise, will feel immensely satisfying in its own right. Be curious and have fun.
# Acknowledgements
These people helped fact check, etc etc.