Updated formatting to improve visual spacing and clarity

This commit is contained in:
Parham Gholami 2024-03-05 20:51:25 -08:00
Родитель b60b73b6fb
Коммит 680550ce91
1 изменённых файлов: 20 добавлений и 2 удалений

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

@ -36,8 +36,13 @@ Open source allows teams or projects to change game engines to fit their needs.
Although FOSS game engines have existed 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 built a game engine with it.
This post will focus on some of the more notable FOSS game engines: Bevy, Godot, Open 3D Engine, and (of course) Stride. This is not an exhaustive list. As I mentioned before, [there are more engines out there than I could ever cover in a single blog post](https://enginesdatabase.com/?software_license=1). Many skilled and dedicated folks have put serious time and effort into making game engines and shared them with the world. I want to encourage you to use this post as a starting point and look at what each community offers.
<br>
<br>
<div align="center">
{% img 'Bevy' '/images/blog/2024-03-12-foss-engines-overview/bevy-logo.webp' %}
</div>
### Bevy
* Written in Rust, Supported Languages: Rust
@ -49,9 +54,14 @@ As the most popular Rust-based game engine, Bevy offers a rich code-only develop
As established with Bevys use of ECS, the engines developers care deeply about modularity. [The engines plugin system](https://bevyengine.org/learn/quick-start/getting-started/plugins/) accentuates their commitment to that principle in every part of Bevy. Developers can organize the games systems into discrete plugins. An example of this is organizing all the UI systems code into a UI plugin. From there, developers can slot the plugin into the games initialization step. The plugin system helps organize the code and encourages modularity by allowing developers to add or remove the plugin based on their needs. This paradigm even applies to the engines core features, as they are all organized into plugins. It becomes trivial to activate or deactivate any part of the engine—including rendering, audio playback, and event loops—as the developer sees fit.
Asset libraries provide a wealth of resources that empower developers to learn the tools quickly and get their game to a playable state. [The community assembled a library of assets available on the official website for the community to use and share](https://bevyengine.org/assets/). Bevys library includes tutorials, plugins, and templates that address subjects like physics, networking, and input management. Even entire games and applications are available in the asset library to either build on or use as a reference while learning the engine. Bevys structure encourages developers to use any of the resources from this library freely as part of the building blocks that will make up their game. In conjunction with Rusts package manager, there is a strong emphasis on modularity at every level of the engine.
Asset libraries provide a wealth of resources that empower developers to learn the tools quickly and get their game to a playable state. [The community assembled a library of assets available on the official website for the community to use and share](https://bevyengine.org/assets/). Bevys library includes tutorials, plugins, and templates that address subjects like physics, networking, and input management. Even entire games and applications are available in the asset library to either build on or use as a reference while learning the engine. Bevys structure encourages developers to use any of the resources from this library freely as part of the building blocks that will make up their game. In conjunction with Rusts package manager, there is a strong emphasis on modularity at every level of the engine.
<br>
<br>
<div align="center">
{% img 'Godot' '/images/blog/2024-03-12-foss-engines-overview/godot-logo.webp' %}
</div>
### Godot
* Written in C++, Supported Languages: GDScript, C#
@ -67,7 +77,10 @@ Theoretically, GDExtension supports any programming language that can interact w
Work in an editor long enough and you will probably want to tinker with it. For those interested in creating utilities and tools, as is common practice in Unity or Unreal Engine, [Godot provides the option to customize the editor to your liking](https://docs.godotengine.org/en/stable/tutorials/plugins/editor/making_plugins.html). You dont 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, Godots scripting language, by simply appending @tool to the top of the file. Writing a plugin becomes as easy as writing code for your game.
<br>
<br>
{% img 'Open 3D Engine' '/images/blog/2024-03-12-foss-engines-overview/o3de-logo.webp' %}
</div>
### Open 3D Engine
* Written in C++, Supported Languages: C++, Lua
@ -82,8 +95,13 @@ Only a few game engines offer visual scripting out of the box, and O3DE is one o
O3DE modularizes its engine by breaking down major components into plugins called [Gems](https://www.docs.o3de.org/docs/user-guide/gems/). This is the paradigm through which O3DE manages all its features and plugins. It is possible to swap out features like the physics engine, for example, allowing developers to choose between PhysX 4, PhysX 5, or another solution entirely, custom or commercial. The modularity afforded to O3DE through Gems allows developers to add and remove components of the engine with relative ease–using as many or as few of the features they want and in whatever combination best fits their needs.
With [the Atom Renderer](https://www.docs.o3de.org/docs/atom-guide/), the engines rendering system, 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 GPUs 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 incredible flexibility to developers.
<br>
<br>
{% img 'Stride' '/images/blog/2024-03-12-foss-engines-overview/stride-logo.webp' %}
<div align="center">
{% img 'Stride' '/images/blog/2024-03-12-foss-engines-overview/stride-logo.webp' %}
</div>
### Stride
* Written in C#, Supported Languages: C#, F#, and Visual Basic