diff --git a/.github/workflows/stride-website-github.yml b/.github/workflows/stride-website-github.yml
index 93715c0..d0cb51d 100644
--- a/.github/workflows/stride-website-github.yml
+++ b/.github/workflows/stride-website-github.yml
@@ -11,13 +11,13 @@ jobs:
strategy:
matrix:
- node-version: [18.x]
+ node-version: [20.x]
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v3
+ uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
diff --git a/.github/workflows/stride-website-release-azure.yml b/.github/workflows/stride-website-release-azure.yml
index ec9faac..8aa40ac 100644
--- a/.github/workflows/stride-website-release-azure.yml
+++ b/.github/workflows/stride-website-release-azure.yml
@@ -21,12 +21,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up Node.js version
- uses: actions/setup-node@v3
+ uses: actions/setup-node@v4
with:
- node-version: '18.x'
+ node-version: '20.x'
- name: npm install, build, and test
run: |
@@ -35,7 +35,7 @@ jobs:
npm run test --if-present
- name: Upload artifact for deployment job
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: node-app
path: ./_site
@@ -49,7 +49,7 @@ jobs:
steps:
- name: Download artifact from build job
- uses: actions/download-artifact@v3
+ uses: actions/download-artifact@v4
with:
name: node-app
diff --git a/.github/workflows/stride-website-staging-azure.yml b/.github/workflows/stride-website-staging-azure.yml
index 75695e0..3eafdee 100644
--- a/.github/workflows/stride-website-staging-azure.yml
+++ b/.github/workflows/stride-website-staging-azure.yml
@@ -20,12 +20,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Set up Node.js version
- uses: actions/setup-node@v3
+ uses: actions/setup-node@v4
with:
- node-version: '18.x'
+ node-version: '20.x'
- name: npm install, build, and test
run: |
@@ -34,7 +34,7 @@ jobs:
npm run test --if-present
- name: Upload artifact for deployment job
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: node-app
path: ./_site
@@ -48,7 +48,7 @@ jobs:
steps:
- name: Download artifact from build job
- uses: actions/download-artifact@v3
+ uses: actions/download-artifact@v4
with:
name: node-app
@@ -59,4 +59,4 @@ jobs:
app-name: 'stride-website'
slot-name: 'staging'
publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_987D5D58A3DB4FC585848F34A99F7E0D }}
- package: .
+ package: .
\ No newline at end of file
diff --git a/.github/workflows/stride-website-wiki.yml b/.github/workflows/stride-website-wiki.yml
index 22cb2e4..8a5c902 100644
--- a/.github/workflows/stride-website-wiki.yml
+++ b/.github/workflows/stride-website-wiki.yml
@@ -1,10 +1,10 @@
name: Publish to GitHub Wiki
on:
- push:
- branches:
- - master
- paths:
- - wiki/**
+ # push:
+ # branches:
+ # - master
+ # paths:
+ # - wiki/**
workflow_dispatch:
jobs:
@@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Upload Wiki pages
uses: docker://decathlon/wiki-page-creator-action:2.0.1
env:
diff --git a/README.md b/README.md
index 2891eec..21333be 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@ Welcome to the Stride website repository. This repository contains all the sourc
## š Getting Started
-All the information you need to start with Stride Website development is available in the š [Stride Website Wiki](https://github.com/stride3d/stride-website/wiki).
+All the information you need to start with Stride Website development is available in the š [Stride Docs - Contributing](https://doc.stride3d.net/latest/en/contributors/website/index.html).
## š¤ Contributing
@@ -26,7 +26,7 @@ The `master` branch is the default branch for pull requests and most other devel
Releases are based on a stable `master` branch. Use of [Conventional Commit](https://www.conventionalcommits.org/en/v1.0.0/) is encouraged.
-Stride Website is _not_ released under a regular cadence; new updates arrive when maintainers fix issues or see enough changes that warrant a new releases. Sometimes we use prereleases to get feedbacks from the community.
+Stride Website is _not_ released under a regular cadence; new updates arrive when maintainers fix issues or see enough changes that warrant a new releases. Sometimes we use pre-releases to get feedbacks from the community.
### Staging
@@ -36,16 +36,16 @@ The staging website is available at https://stride-website-staging.azurewebsites
## šŗļø Roadmap
-Our Wiki [Roadmap](https://github.com/stride3d/stride-website/wiki/Roadmap) communicates upcoming changes to the Stride website.
+Our [Roadmap](https://doc.stride3d.net/latest/en/contributors/website/roadmap.html) communicates upcoming changes to the Stride website.
## š Stride Documentation Landscape
-The Stride documentation landscape is organized across different repositories and their respective wikis to cater to both users and contributors. Here's how it's structured:
+The Stride documentation landscape is organized across different locations. Here's how it's structured:
1. [Stride Website](https://www.stride3d.net/) - Stride's official site showcasing its free, open-source 2D and 3D game engine, alongside blog posts
- - [Stride Website Wiki](https://github.com/stride3d/stride-website/wiki) - This wiki serves as a comprehensive guide for those looking to contribute to or develop the Stride Website
+ - [Stride Website - Contributing](https://doc.stride3d.net/latest/en/contributors/website/index.html) - This serves as a comprehensive guide for those looking to contribute to or develop the Stride Website
1. [Stride Docs](https://doc.stride3d.net/) - Here you'll find Stride's documentation, including manuals, tutorials, and API references
- - [Stride Docs Wiki](https://github.com/stride3d/stride-docs/wiki) - This wiki is a comprehensive guide for individuals interested in contributing to or developing the Stride Docs
+ - [Stride Docs - Contributing](https://doc.stride3d.net/latest/en/contributors/documentation/index.html) - This is a comprehensive guide for individuals interested in contributing to or developing the Stride Docs
1. [Stride Wiki](https://github.com/stride3d/stride/wiki) - A thorough guide for those who wish to contribute to or develop Stride game engine
## š .NET Foundation
diff --git a/_data/site.json b/_data/site.json
index 88fc6f2..0eb8615 100644
--- a/_data/site.json
+++ b/_data/site.json
@@ -1,5 +1,5 @@
{
- "version": "2.0.0.24",
+ "version": "2.0.0.25",
"engine": "Eleventy 2.0",
"title": "Stride Game Engine",
"description": "C# Stride Game Engine is a powerful and versatile game development engine that is based on the C# programming language",
@@ -96,6 +96,12 @@
"github": "manio143",
"linkedin": "",
"twitter": "MDziubiak"
+ },
+ "parham": {
+ "name": "Parham Gholami",
+ "github": "parhamgholami",
+ "linkedin": "",
+ "twitter": "parhamgholami"
}
}
}
diff --git a/_includes/blog-aside.html b/_includes/blog-aside.html
index 3993e12..acfc120 100644
--- a/_includes/blog-aside.html
+++ b/_includes/blog-aside.html
@@ -45,6 +45,13 @@
diff --git a/images/blog/2024-03/bevy-logo.webp b/images/blog/2024-03/bevy-logo.webp
new file mode 100644
index 0000000..54b5555
Binary files /dev/null and b/images/blog/2024-03/bevy-logo.webp differ
diff --git a/images/blog/2024-03/foss-engine-girl-banner.webp b/images/blog/2024-03/foss-engine-girl-banner.webp
new file mode 100644
index 0000000..80d3630
Binary files /dev/null and b/images/blog/2024-03/foss-engine-girl-banner.webp differ
diff --git a/images/blog/2024-03/foss-engine-girl.webp b/images/blog/2024-03/foss-engine-girl.webp
new file mode 100644
index 0000000..e0de7ad
Binary files /dev/null and b/images/blog/2024-03/foss-engine-girl.webp differ
diff --git a/images/blog/2024-03/godot-logo.webp b/images/blog/2024-03/godot-logo.webp
new file mode 100644
index 0000000..dd37f28
Binary files /dev/null and b/images/blog/2024-03/godot-logo.webp differ
diff --git a/images/blog/2024-03/o3de-logo.webp b/images/blog/2024-03/o3de-logo.webp
new file mode 100644
index 0000000..1975f52
Binary files /dev/null and b/images/blog/2024-03/o3de-logo.webp differ
diff --git a/images/blog/2024-03/stride-logo.webp b/images/blog/2024-03/stride-logo.webp
new file mode 100644
index 0000000..5408a19
Binary files /dev/null and b/images/blog/2024-03/stride-logo.webp differ
diff --git a/posts/2014-2021/2021-02-01-release-stride-4-0.md b/posts/2014-2021/2021-02-01-release-stride-4-0.md
index 488a42b..a0e46e5 100644
--- a/posts/2014-2021/2021-02-01-release-stride-4-0.md
+++ b/posts/2014-2021/2021-02-01-release-stride-4-0.md
@@ -1,7 +1,6 @@
---
title: 'Stride 4.0 is Now Live'
author: virgile
-popular: true
tags: ['Release', 'Tutorials']
---
diff --git a/posts/2022-02-16-community-meeting-february-2022.md b/posts/2022-02-16-community-meeting-february-2022.md
index 35fa1eb..4d6f439 100644
--- a/posts/2022-02-16-community-meeting-february-2022.md
+++ b/posts/2022-02-16-community-meeting-february-2022.md
@@ -1,7 +1,6 @@
---
title: 'Community Meeting February 2022'
author: aggror
-popular: true
tags: ['Meeting']
---
diff --git a/posts/2022-07-16-release-stride-4-1.md b/posts/2022-07-16-release-stride-4-1.md
index 7d317e8..7a4e06d 100644
--- a/posts/2022-07-16-release-stride-4-1.md
+++ b/posts/2022-07-16-release-stride-4-1.md
@@ -1,7 +1,6 @@
---
title: 'Stride 4.1 is Now Live'
author: aggror
-popular: true
image: https://i.imgur.com/7GVEiSR.jpg
tags: ['Physics','Tutorials','Release', 'Graphics']
---
diff --git a/posts/2024-03-14-open-worlds-intro-to-foss-game-engines.md b/posts/2024-03-14-open-worlds-intro-to-foss-game-engines.md
new file mode 100644
index 0000000..8e39ceb
--- /dev/null
+++ b/posts/2024-03-14-open-worlds-intro-to-foss-game-engines.md
@@ -0,0 +1,139 @@
+---
+title: "Open Worlds: An Introduction to Free Open-Source Game Engines"
+author: parham
+popular: false
+image: /images/blog/2024-03/foss-engine-girl.webp
+tags: ['Education']
+---
+
+With so many free open-source game engines out there, where do you even start?
+
+---
+
+
+ {% img 'Girl thinking about game development' '/images/blog/2024-03/foss-engine-girl-banner.webp' %}
+
+
+Table of Contents:
+
+[[TOC]]
+
+## Introduction
+
+The party is over. The era of companies offering their products and services at unsustainably low prices is coming to a close. Growing pressure from shareholders to transition from maximizing growth to maximizing revenue has pushed many commercial software companies to reevaluate their business models. In other words, introduce price increases and new fees. Those dependent on their software must now decide between accepting the increased financial burden or switching to alternatives. The video game industry is no exception to this changing tide as major game engine developers explore new ways to monetize their users. It raises a lot of questions for the community. How will we, as developers, manage these rising costs? Just as importantly, considering the immense impact licensing changes can have on developers, should Epic and Unity continue having a disproportionate influence on the game development landscape? While there is never a good time to wrestle with these questions, the rise of free and open-source game engines over the past decade gives independent game developers an opportunity to evaluate where free and open-source software can have a role in their next project.
+
+## Before we dive in
+
+I want to make this clear from the start: I will not be doing a head-to-head comparison of free and open-source game engines. The summaries of each engine discussed will not be exhaustive nor specifically highlight exclusive features. This is a celebration of the hard work of the game development community. I want to use this as a platform to get you excited about free and open-source game development and consider options beyond proprietary engines like Unity, Unreal, and GameMaker.
+
+If I tried to cover every feature of every modern free and open-source engine, this wouldnāt be a single article but an entire book series. For that reason, I identified notable features and characteristics of some handpicked engines I thought would be worth sharing. While reading this, keep in mind that no engine is one-size-fits-all, and, as Iāll explain later, picking an engine is about choosing the right tool for _you_. With that out of the way, letās start!
+
+## What is FOSS and why should I use a FOSS game engine?
+
+As the name suggests, free and open-source software (FOSS) includes two notable characteristics: it is free (libre) and its source code is available. You can use free (or libre) software for any purpose at your sole discretion. You will most commonly hear something like: āfree as in speech, not free as in beer.ā It may be available at no cost, but even more importantly, 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. First, no licensing fees. While contributors always appreciate donations, none of the notable FOSS game engines expect or require upfront payment, subscriptions, or ongoing royalties. FOSS engines also provide independence from a single organization. If changes to a FOSS engineās terms upset the community, the engineās license allows developers to stick to the version with the most favorable terms and even [fork off the project](https://en.wikipedia.org/wiki/Fork_(software_development)) if they choose.
+
+The community guides the development and growth of their FOSS game engine of choice. Many FOSS game engines have active and passionate communities that 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 to their engine, improving it for everyone.
+
+FOSS game engines allow anyone to modify the engine 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 update it as necessary. They can even take the additional step of contributing the changes to the project for everyoneās benefit. 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 existed for decades, the past several years have seen an explosion in the number of game engines available, as well as 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 modern FOSS game engines: Bevy, Godot, Open 3D Engine, and (of course) Stride. However, 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 encourage you to use this post as a starting point and look at what each community offers.
+
+
+
+
+
+### Bevy
+* Written in Rust, Supported Languages: Rust
+* Platforms:
+ * Development (Code Only): Windows, Mac, Linux
+ * Build Targets: Windows, Mac, Linux, iOS, Android, Web
+
+As the most popular Rust-based game engine, [Bevy](https://bevyengine.org/) offers a rich code-only development environment (an editor is coming in the future) capable of running on all major operating systems (Windows, Mac, and Linux). At the heart of Bevyās vision for game development lies the [Entity Component System (ECS)](https://bevyengine.org/learn/quick-start/getting-started/ecs/) paradigm. While there are other resources available that can explain the benefits of ECS better, in a nutshell, ECS breaks down the code into three core pillars: entities, components, and systems. Entities are composed of components that can interact with each other using systems. For example, the player character could be an entity with a health component that tracks the player characterās health bar. An enemy character could also use that health component for the same purpose. ECS encourages modularity and reusability by enabling developers to create components applicable to distinct entities. While other game engines can approximate a similar system, Bevy makes this part of its core design ethos.
+
+As established with Bevyās use of ECS, the engineās developers care deeply about modularity. [The engineās 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 gameās systems into discrete plugins. An example of this is organizing all the UI code into a UI plugin. From there, developers can slot the plugin into the gameās 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 engineās 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 everyone to use and share](https://bevyengine.org/assets/). Bevyās 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. Bevyās 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 Rustās package manager, there is a strong emphasis on modularity at every level of the engine.
+
+
+
+
+
+### Godot
+* Written in C++, Supported Languages: GDScript, C#
+* Platforms:
+ * Development: Windows, Mac, Linux, Android (Experimental), Web
+ * Target: Windows, Mac, Linux, iOS, Android, Web
+
+[Godot](https://godotengine.org/) has the largest and most active community among all the modern FOSS game engines available to date. As the drama around Unity has unfolded, you have 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](https://editor.godotengine.org/releases/latest/) or [Android version](https://godotengine.org/download/android/) of the editor, 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 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. You can even use C# for scripting if that is more up your alley, as itās the other language officially supported by Godot. That said, if you would still like to write some code in another language entirely, Godot provides the means to use alternative programming languages by way of GDExtension.
+
+Theoretically, GDExtension supports any programming language that can interact with its C-based API. While Godot officially supports scripting in GDScript and C#, GDExtension allows the community to introduce new language bindings to Godotās development ecosystem, including [Rust](https://godot-rust.github.io/), [Go](https://github.com/grow-graphics/gd), [Swift](https://github.com/migueldeicaza/SwiftGodot), and [Haxe](https://hxgodot.github.io/). Not all language bindings are feature-complete, but many are in active development. With that in mind, committing to one language for an entire project is unnecessary, as GDExtension languages can work alongside GDScript. This means developers can, for example, even use GDScript with other languages like Rust in the same project.
+
+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 when using 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 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 tune 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.
+
+
+
+
+{% img 'Open 3D Engine Logo' '/images/blog/2024-03/o3de-logo.webp' %}
+
+
+### Open 3D Engine
+* Written in C++, Supported Languages: C++, Lua
+* Platforms:
+ * Development: Windows, Linux
+ * Target: Windows, Mac, Linux, iOS, Android
+
+[Open 3D Engine](https://o3de.org/)ās origins trace back to Amazonās foray into game development. Amazon licensed Crytekās CryEngine 3 and then used it as the foundation for their own game engine: Amazon Lumberyard. In the following years, Amazon offered Lumberyard for free to the community with specific terms requiring games built with Lumberyard use Amazon Web Services for their online features. By 2021, Amazon overhauled Lumberyard, rewrote 95% of the code, rebranded it as Open 3D Engine (O3DE), and placed it under the supervision of The Linux Foundation. Now, O3DE is available as a free and open-source engine under dual Apache and MIT Licenses for everyone, with no strings attached.
+
+Only a few game engines offer visual scripting out of the box, and O3DE is one of them. O3DE supports both C++ and Lua for scripting, but for folks less inclined to write code, there is also [Script Canvas](https://docs.o3de.org/docs/user-guide/scripting/script-canvas/), OD3Eās visual scripting environment. Visual scripting provides a way to write game logic without needing to write code in C++ or Lua. It presents programming concepts like functions, variables, and events as nodes that can be strung together in a graph. Script Canvas also allows developers to write custom nodes either in C++ or within Script Canvas itself to better fit their workflow. Fortunately, anything written using O3DEās visual scripting system will not incur any serious performance hits, as the engine ultimately converts the graphs into Lua scripts.
+
+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. For example, it is possible to swap out features like the physics engine, allowing developers to choose between PhysX 4, PhysX 5, or another solution entirely, custom or commercial. The modularity afforded by 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 as they want and in whatever combination best fits their needs.
+
+With the [Atom Renderer](https://www.docs.o3de.org/docs/atom-guide/), the engineās 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 Atom. 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 incredible flexibility to developers.
+
+
+
+