Merge pull request #287 from stride3d/master
Initiating deployment of latest website updates to production
This commit is contained in:
Коммит
ed41ad9623
|
@ -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 }}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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: .
|
|
@ -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:
|
||||
|
|
12
README.md
12
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
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,6 +45,13 @@
|
|||
</li>
|
||||
</ul>
|
||||
<hr>
|
||||
<h2 class="h4">FOSS Game Engines</h2>
|
||||
<ul class="ps-1 ms-3">
|
||||
<li><a title="Bevy" href="https://bevyengine.org/" target="_blank" rel="noopener">Bevy</a></li>
|
||||
<li><a title="Godot" href="https://godotengine.org/" target="_blank" rel="noopener">Godot</a></li>
|
||||
<li><a title="Open 3D Engine" href="https://o3de.org/" target="_blank" rel="noopener">Open 3D Engine</a></li>
|
||||
</ul>
|
||||
<hr>
|
||||
<h2 class="h4">Other</h2>
|
||||
<ul class="ps-1 ms-3">
|
||||
<li>
|
||||
|
|
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 4.1 KiB |
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 40 KiB |
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 25 KiB |
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 4.7 KiB |
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 6.6 KiB |
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 5.5 KiB |
|
@ -1,7 +1,6 @@
|
|||
---
|
||||
title: 'Stride 4.0 is Now Live'
|
||||
author: virgile
|
||||
popular: true
|
||||
tags: ['Release', 'Tutorials']
|
||||
---
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
---
|
||||
title: 'Community Meeting February 2022'
|
||||
author: aggror
|
||||
popular: true
|
||||
tags: ['Meeting']
|
||||
---
|
||||
|
||||
|
|
|
@ -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']
|
||||
---
|
||||
|
|
|
@ -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?
|
||||
|
||||
---
|
||||
|
||||
<div align="center">
|
||||
{% img 'Girl thinking about game development' '/images/blog/2024-03/foss-engine-girl-banner.webp' %}
|
||||
</div>
|
||||
|
||||
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.
|
||||
|
||||
<br>
|
||||
|
||||
<div align="center">
|
||||
{% img 'Bevy Logo' '/images/blog/2024-03/bevy-logo.webp' %}
|
||||
</div>
|
||||
|
||||
### 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.
|
||||
|
||||
<br>
|
||||
|
||||
<div align="center">
|
||||
{% img 'Godot Logo' '/images/blog/2024-03/godot-logo.webp' %}
|
||||
</div>
|
||||
|
||||
### 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.
|
||||
|
||||
<br>
|
||||
|
||||
<div align="center">
|
||||
{% img 'Open 3D Engine Logo' '/images/blog/2024-03/o3de-logo.webp' %}
|
||||
</div>
|
||||
|
||||
### 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.
|
||||
|
||||
<br>
|
||||
|
||||
<div align="center">
|
||||
{% img 'Stride Logo' '/images/blog/2024-03/stride-logo.webp' %}
|
||||
</div>
|
||||
|
||||
### Stride
|
||||
* Written in C#, Supported Languages: C#, F#, Visual Basic
|
||||
* Platforms:
|
||||
* Development: Windows
|
||||
* Target: Windows, Linux, iOS, Android
|
||||
|
||||
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 higher profile 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 engine’s core logic. With that said, [the code-only version of Stride](https://stride3d.github.io/stride-community-toolkit/manual/code-only/index.html) 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. 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 often 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, and other platforms into Stride, enhancing your workflow. Stride is modular enough that [sections of Stride are available as standalone NuGet packages](https://www.nuget.org/profiles/Stride). The engine provides the ability to tailor-make your game development experience.
|
||||
|
||||
The engine does its best to ensure 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](https://github.com/stride3d/stride/pull/2131), it becomes possible to have tens of thousands of physics-based objects concurrently in a scene with little effort. Stride provides the space to explore multi-threading and have fun with it.
|
||||
|
||||
## What engine should you pick? And other closing thoughts
|
||||
|
||||
There is no one right answer. Don’t trust anyone claiming otherwise. Here is the truth: the answer lies in whichever 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 commit to your project and put in your full effort.
|
||||
|
||||
All these engines are 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 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](https://www.youtube.com/watch?v=ENoCsY9a10o). 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.
|
||||
|
||||
When you settle on an engine, remember this: your engine is not your identity. Your tools are a means to creating something, not a core pillar of your very being. I cannot stress this enough. Your tools do not define you. This may sound obvious, but I have seen many, many folks make their engine of choice a centerpiece of who they are and become unnecessarily hostile toward other engine communities. Please don’t do that.
|
||||
|
||||
You are not simply a Bevy developer, Godot developer, O3DE developer, Stride developer, or whatever else. You are a game developer. So don’t get hung up on which engine you should pick. Choose the engine that resonates with you the most, and you’ll quickly learn skills you can apply anywhere. 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.
|
||||
|
||||
## Acknowledgments
|
||||
|
||||
This article was only possible with the input of contributors and users involved in these game engines. I appreciate all the folks who were kind and patient enough to fact-check me and provide their feedback, including [Vaclav Elias](https://github.com/VaclavElias), [Joreyk](https://github.com/IXLLEGACYIXL), [Doprez](https://github.com/Doprez/), [Judah Perez](https://www.inconsistent.software/), [Clay John](https://github.com/clayjohn), [Adam Scott](https://github.com/adamscott), [Fredia Huya-Kouadio](https://github.com/m4gr3d), [Pāvels Nadtočajevs](https://github.com/bruvzg), as well as [the Open 3D Foundation and Open 3D Engine contributors](https://o3d.foundation/).
|
||||
|
||||
Last but not least, thank you to [Ed (Meltted)](https://twitter.com/meltt_ed) for creating the featured image.
|
384
wiki/Content.md
384
wiki/Content.md
|
@ -1,384 +0,0 @@
|
|||
# Table of Contents
|
||||
|
||||
- [Content Updates](#content-updates)
|
||||
- [Small Updates](#small-updates)
|
||||
- [Major Updates](#major-updates)
|
||||
- [Updating Wiki](#updating-wiki)
|
||||
- [Creating New Post](#creating-new-post)
|
||||
- [Post Naming Convention](#post-naming-convention)
|
||||
- [Post Front Matter](#post-front-matter)
|
||||
- [Post Content](#post-content)
|
||||
- [Excerpt](#excerpt)
|
||||
- [Creating New Page](#creating-new-page)
|
||||
- [Page Front Matter](#page-front-matter)
|
||||
- [Shortcodes and Includes](#shortcodes-and-includes)
|
||||
- [Alert](#alert)
|
||||
- [Alert Banner](#alert-banner)
|
||||
- [Image](#image)
|
||||
- [Video](#video)
|
||||
- [Web Assets](#web-assets)
|
||||
- [Styling](#styling)
|
||||
- [Bootstrap Customization](#bootstrap-customization)
|
||||
- [CSS Guidelines](#css-guidlines)
|
||||
- [Submitting your Changes](#submitting-your-changes)
|
||||
|
||||
# Content Updates
|
||||
|
||||
If you want to contribute and update the website, please follow the instructions below.
|
||||
|
||||
Small updates can be done directly in the GitHub web interface, for bigger updates the local development environment is required, which is described in the [Installation](Installation) section.
|
||||
|
||||
You can use any text editor to make changes. If you are using **Visual Studio**, you can open `Stride.Web.sln` solution file in the root of the repository and start making your updates directly from this IDE.
|
||||
|
||||
You are always welcome to create an issue to discuss your changes before you start working on them.
|
||||
|
||||
## Small Updates
|
||||
|
||||
Creating an issue is not required for small updates, but it is recommended to let others know what you are working on. If you are not sure whether your update is small or not, please create an issue first.
|
||||
|
||||
### What is a small update?
|
||||
|
||||
We can define small updates as changes to the content of the website:
|
||||
|
||||
- Update the content of an existing page
|
||||
- Update the content of an existing blog post
|
||||
- Add a [new page](#creating-new-page) or [blog post](#creating-new-post)
|
||||
- Fix a typo
|
||||
- Minor navigation or footer update
|
||||
- This will update all pages containing the navigation or footer
|
||||
|
||||
### Steps
|
||||
|
||||
**Note:** This guide assumes you are already familiar with updating files in GitHub.
|
||||
|
||||
1. Go to the [Stride Website GitHub](https://github.com/stride3d/stride-website) repository
|
||||
1. Locate the file you wish to edit
|
||||
1. Click the `Edit this file` (pencil) icon in the top right corner
|
||||
1. If prompted, fork the repository by clicking `Fork this repository`
|
||||
1. Make your changes to the file, then write a brief commit message describing the changes
|
||||
1. Click on the `Propose changes` button
|
||||
1. On the next screen, click the `Create pull request` button
|
||||
1. Provide a title and description for your pull request, and click on `Create pull request` again
|
||||
1. Wait for the review and merge
|
||||
|
||||
## Major Updates
|
||||
|
||||
[Creating an issue](https://github.com/stride3d/stride-website/issues) is **required** for major updates, so that others can comment on your changes and provide feedback.
|
||||
|
||||
We can define bigger updates as changes to the design of the website, where you would like to see the impact of your changes beforehand to assess the desired result:
|
||||
|
||||
- Add new Eleventy shortcodes and Liquid includes
|
||||
- Update Bootstrap library or other libraries
|
||||
- Update layouts
|
||||
|
||||
You would start with the local development environment, which is described in the [Installation](Installation) section.
|
||||
|
||||
Then you would make your changes and test them locally. Once you are happy with the result, you can create a pull request to merge your changes into the `master` branch.
|
||||
|
||||
## Updating Wiki
|
||||
|
||||
While wiki pages can be updated directly in the GitHub web interface, this feature is restricted only to contributors who can edit the wiki directly. We have decided to move our wiki pages to a regular folder in this repository called [wiki](https://github.com/stride3d/stride-website/tree/master/wiki), allowing us to use the same process as we do for the website content. If any changes are made directly on the wiki pages, they will be overwritten by the next wiki deployment.
|
||||
|
||||
Wiki pages are deployed through a separate GitHub action, `stride-web-wiki.yml`, which is triggered by updates in the `wiki` folder or can be triggered manually. The `wiki` folder is ignored by the Eleventy build process, ensuring that the wiki pages are not deployed to the website. Additionally, any pushes to the `wiki` folder will not trigger the website deployment.
|
||||
|
||||
You can update the wiki pages as any other content pages, by following the steps in the [Small Updates](#small-updates) section.
|
||||
|
||||
⚠️**Important:** If you are updating any headers in the wiki pages, please make sure to update the *Table of Contents* at the top of the page, [Home](https://github.com/stride3d/stride-website/blob/master/wiki/Home.md) page and [_Sidebar.md](https://github.com/stride3d/stride-website/blob/master/wiki/_Sidebar.md). Also, you might need to search for all the links to the updated header and update them as well.
|
||||
|
||||
# Creating New Post
|
||||
|
||||
To create a new blog post, you can follow one of these methods:
|
||||
|
||||
1. Copy an existing post and update the front matter and content. This is the fastest way to get started with a new post
|
||||
1. Alternatively, create a new file in the `posts` folder, ensuring that the file name follows the appropriate naming convention
|
||||
|
||||
Either method will allow you to create a new blog post, so choose the one that best suits your needs.
|
||||
|
||||
## Post Naming Convention
|
||||
|
||||
`YYYY-MM-DD-post-title.md`
|
||||
|
||||
Replace `YYYY-MM-DD` with the date of the post and `post-title` with the title of the post.
|
||||
|
||||
⚠️**Important SEO Note:** Ensure the file title includes essential keywords related to your post's content. This is crucial as the file title dictates the URL of the post, which plays a significant role in search engine optimization (SEO).
|
||||
|
||||
## Post Front Matter
|
||||
|
||||
The file should start with the following front matter:
|
||||
|
||||
```yaml
|
||||
---
|
||||
title: 'Post title'
|
||||
# author's id, defined in the _data/site.json
|
||||
author: vaclav
|
||||
# optional, if not set, the default tags will be used, tags are merged with the default tags
|
||||
# you can find all tags in the live site in the /tags/ page
|
||||
tags: ['Announcement']
|
||||
# optional, if not set, the default image will be used
|
||||
# use webp format for best performance, images should be located in the /images/blog/YYYY-MM-DD-post-title folder
|
||||
image: /images/blog/2023-04/new-home-page.webp
|
||||
# optional, if true, the post will be featured in the popular section
|
||||
pupular: true
|
||||
# permlink is automatically generated based on the file name, but you can override it here
|
||||
permalink: /blog/2023-04/my-custom-link/ # this is a custom link
|
||||
---
|
||||
```
|
||||
|
||||
The same example, without the comments:
|
||||
|
||||
```yaml
|
||||
---
|
||||
title: 'Post title'
|
||||
author: vaclav
|
||||
tags: ['Announcement']
|
||||
image: /images/blog/2023-04/new-home-page.webp
|
||||
pupular: true
|
||||
permalink: /blog/2023-04/my-custom-link/
|
||||
---
|
||||
|
||||
```
|
||||
|
||||
Default front matter, which is used for all posts, can be found in the `posts/posts.json` file.
|
||||
|
||||
```json
|
||||
{
|
||||
"layout": "post",
|
||||
"eleventyComputed": {
|
||||
"year": "{{ page.date | date: '%Y' }}",
|
||||
"modified": "Last Modified"
|
||||
},
|
||||
"permalink": "/blog/{{ page.fileSlug }}/",
|
||||
"tags": [ "blog", "search" ]
|
||||
}
|
||||
```
|
||||
|
||||
### Image
|
||||
|
||||
The image specified in the front matter serves dual purposes: It appears in the blog listing at [Stride Blog](https://www.stride3d.net/blog/) and is used as the **og:image** meta tag for social sharing. Here are three ways to specify this image:
|
||||
|
||||
- Not including an image in the front matter will use the default image
|
||||
- Including an image in the front matter will override the default image. The size of the image should be minimum **1200 x 600px** e.g. `image: /images/blog/2023-04/new-home-page.webp`
|
||||
- External image URL e.g. `image: https://i.imgur.com/7GVEiSR.jpg`
|
||||
|
||||
## Post Content
|
||||
|
||||
Check the previous posts for an example of the post content. Ideally you should use the same format as the previous posts to preserve the consistency of the blog.
|
||||
|
||||
You can use shortcodes and includes which are described in the [Shortcodes and Includes](#shortcodes-and-includes) section.
|
||||
|
||||
You can also use majority of the Bootstrap classes in your content if you combine HTML and Markdown.
|
||||
|
||||
💡**Tip:** We have a folder called `_drafts` where you can store your drafts. These files are not published. Once you are ready to publish your post, you can move it to the `posts` folder.
|
||||
|
||||
## Excerpt
|
||||
|
||||
The excerpt is the first paragraph of the post. Separated from the rest of the content by three dashes `---`. The excerpt is used in the blog post list, meta description and in the RSS feed.
|
||||
|
||||
**Example**
|
||||
|
||||
```yaml
|
||||
---
|
||||
title: 'Stride 4.1 is Now Live'
|
||||
author: aggror
|
||||
tags: ['Tutorials','Release', 'Graphics']
|
||||
---
|
||||
|
||||
Stride contributors are proud to announce a new release now running on .NET 6 supporting the latest C# 10. That means you can now head to the download page and start developing your games using the latest .NET technologies.
|
||||
|
||||
---
|
||||
|
||||
Additional content goes here...
|
||||
|
||||
```
|
||||
|
||||
# Creating New Page
|
||||
|
||||
To create a new page, create a new file in the root folder or create a new folder and add an `index.md` file to it. You can use any templating language supported by Eleventy. We use Markup, html, nunjacks.
|
||||
|
||||
## Page Front Matter
|
||||
|
||||
The page front matter works the same way as the post front matter. The only difference is that the `layout` property is required.
|
||||
|
||||
**Example:** file `features.html`
|
||||
|
||||
```yaml
|
||||
---
|
||||
layout: default
|
||||
title: Features
|
||||
description: 'Stride supports an extensive list of features: Scene Editor, Physically Based Rendering, Particles, UI Editor, Prefabs, DX12 & Vulkan, C# Scripting, etc...'
|
||||
# permlink is automatically generated based on the file name, but you can override it here
|
||||
permalink: /my-features/ # otherwise it would be /features/
|
||||
---
|
||||
```
|
||||
|
||||
# Shortcodes and Includes
|
||||
|
||||
You can see examples here https://www.stride3d.net/blog/examples/.
|
||||
|
||||
## Alert
|
||||
|
||||
To add an alert, use the following include, where:
|
||||
|
||||
- `type` is one of the following: `primary`, `secondary`, `success`, `danger`, `warning`, `info`, `light`, `dark`. Using these types will automatically include a relevant icon
|
||||
- `icon` is a Font Awesome icon, which is optional. You can use any free icon, e.g., fa-check.
|
||||
- `title` is the title of the alert
|
||||
|
||||
```liquid
|
||||
# This will render as a green box without the icon
|
||||
{% include _alert.html type:'success' icon:'' title:'No icon: Stride contributors are proud to announce a new release now running on .NET 6 supporting the latest C# 10.' %}
|
||||
|
||||
# This will render as a green box with a check icon
|
||||
{% include _alert.html type:'success' title:'No icon: Stride contributors are proud to announce a new release now running on .NET 6 supporting the latest C# 10.' %}
|
||||
|
||||
# This will render as a green box with a custom icon
|
||||
{% include _alert.html type:'success' icon:'fa-face-smile' title:'No icon: Stride contributors are proud to announce a new release now running on .NET 6 supporting the latest C# 10.' %}
|
||||
```
|
||||
|
||||
## Alert Banner
|
||||
|
||||
A global alert banner can be used for promotional purposes. The banner can be activated in `site.json`.
|
||||
|
||||
```json
|
||||
"alert-banner": true
|
||||
```
|
||||
|
||||
The HTML can be updated in the `/_includes/alert-banner.html` file.
|
||||
|
||||
## Image
|
||||
|
||||
Add responsive images using shortcodes. Be sure to include a descriptive title, as it will improve your post's search engine visibility. Also, if possible, use the **webp** format for images, which can also be used for transparent images. This will improve the performance of your site.
|
||||
|
||||
To add a responsive image, use the following shortcode:
|
||||
|
||||
`{% img 'title' 'url' %}`
|
||||
|
||||
Replace `title` with a descriptive title for the image and `url` with the image URL. This shortcode renders as:
|
||||
|
||||
```html
|
||||
<img alt="title" src="url" class="img-fluid mb-2" loading="lazy" data-src="url">
|
||||
```
|
||||
|
||||
To add a responsive image with a clickable link that opens the image in full size, use the following shortcode:
|
||||
|
||||
`{% img-click 'title' 'url' %}`
|
||||
|
||||
Replace `title` with a descriptive title for the image and `url` with the image URL. This shortcode renders as:
|
||||
|
||||
```html
|
||||
<a href="url" title="title" class="mb-2"><img alt="title" src="url" class="img-fluid" loading="lazy" data-src="url"></a>
|
||||
```
|
||||
|
||||
To add a responsive image with a clickable link that directs users to a custom destination, use the following shortcode:
|
||||
|
||||
`{% img-click 'title' 'url' 'destinationUrl' %}`
|
||||
|
||||
Replace `title` with a descriptive title for the image, `url` with the image URL, and `destinationUrl` with the target URL when the image is clicked. This shortcode renders as:
|
||||
|
||||
```html
|
||||
<a href="destinationUrl" title="title" class="mb-2"><img alt="title" src="url" class="img-fluid" loading="lazy" data-src="url"></a>
|
||||
```
|
||||
|
||||
## Video
|
||||
|
||||
We should consider hosting our videos on YouTube whenever possible.
|
||||
|
||||
To embed a **YouTube video**, use the following shortcode:
|
||||
|
||||
`{% youtube 'id' %}`
|
||||
|
||||
Replace `id` with the YouTube video ID. This shortcode renders as:
|
||||
|
||||
```html
|
||||
<div class="ratio ratio-16x9 mb-2"><iframe src="https://www.youtube.com/embed/id" title="YouTube video" allowfullscreen></iframe></div>
|
||||
```
|
||||
|
||||
To embed a **YouTube playlist**, use the following shortcode:
|
||||
|
||||
`{% youtube-playlist 'id' %}`
|
||||
|
||||
Replace `id` with the YouTube playlist ID. This shortcode renders as:
|
||||
|
||||
```html
|
||||
<div class="ratio ratio-16x9 mb-2"><iframe src="https://www.youtube.com/embed/videoseries?list=id" title="YouTube video" allowfullscreen></iframe></div>
|
||||
```
|
||||
|
||||
To embed a video hosted elsewhere, use the following shortcode:
|
||||
|
||||
### Hosting our own videos
|
||||
|
||||
`{% video 'url' %}`
|
||||
|
||||
Replace `url` with the video URL (e.g., .mp4 file). Make sure you have a matching .jpg file with the same name as the .mp4 file for the poster attribute. This shortcode renders as:
|
||||
|
||||
```html
|
||||
<!-- jpgUrl = url.replace(".mp4", ".jpg") // make sure you have a pair .mp4 and .jpg -->
|
||||
<div class="ratio ratio-16x9 mb-2"><video autoplay loop class="responsive-video" poster="jpgUrl"><source src="url" type="video/mp4"></video></div>
|
||||
```
|
||||
|
||||
### How to encode videos
|
||||
|
||||
Videos can be generated by many software in various formats & size, so they might end up being incompatible with web browsers or mobile, or simply be way too large.
|
||||
It is better to stick to a format with low requirements such as H264 baseline profile (works almost everywhere).
|
||||
|
||||
To do so, process the file using [fmpeg](https://ffmpeg.org/download.html):
|
||||
|
||||
```
|
||||
ffmpeg -i myvideo_original.mp4 -profile:v baseline -level 3.0 -an myvideo.mp4
|
||||
```
|
||||
|
||||
Also, generate a static thumbnail so that people can preview it before downloading the video (very important on mobile):
|
||||
|
||||
ToDo: Check if webp can be generated from ffmpeg
|
||||
|
||||
```
|
||||
ffmpeg -i myvideo.mp4 -vframes 1 -f image2 -y myvideo.jpg
|
||||
```
|
||||
|
||||
ToDo: Maybe we could provide a simple tool to do that without using command line.
|
||||
|
||||
|
||||
# Web Assets
|
||||
|
||||
Our main web assets are:
|
||||
|
||||
- `css/custom-bootstrap.scss` - Slightly modified Bootstrap theme
|
||||
- Some Bootstrap variables are overridden
|
||||
- Some Bootstrap parts are disabled so they don't bloat the website (e.g. button-group, breadcrumb, ..)
|
||||
- `css/styles.scss` - Main stylesheet
|
||||
- Styles also Dark Mode
|
||||
- `css/syntax-highlighting.scss` - Imported prismjs styling, Light and Dark Mode
|
||||
- `assets/search.liquid` - Script for search
|
||||
- `assets/site.liquid` - Not used
|
||||
- `assets/theme-selector.liquid` - Script for Ligth and Dark Mode selection
|
||||
- `search.liquid` - Renders as `search.json` contains search meta
|
||||
|
||||
|
||||
# Styling
|
||||
|
||||
## Bootstrap Customization
|
||||
|
||||
Our website uses the [Bootstrap](https://getbootstrap.com/) framework, version **5.3**.
|
||||
|
||||
⚠️**Important:** Prioritize the use of Bootstrap's inherent styling before integrating any custom styles. You should be familiar with [Bootstrap Utilities](https://getbootstrap.com/docs/5.3/utilities/api/) which help you to achieve most of the styling requirements.
|
||||
|
||||
## CSS Guidelines
|
||||
|
||||
Our goal is to write as little CSS as possible to ensure the website remains lightweight. We maximize the utilization of the Bootstrap framework to achieve this.
|
||||
|
||||
Further, we are using also [FontAwesome](https://fontawesome.com/) free icons. The icons are loaded in the `src/_includes/css/main.css` file.
|
||||
|
||||
# Submitting your Changes
|
||||
|
||||
Assuming you have made all necessary changes and tested them on the development server, you can submit a pull request to the `master` branch. The pull request will be reviewed and merged by the website maintainers.
|
||||
|
||||
Steps to contribute your updates:
|
||||
|
||||
1. Commit your changes to your forked repository:
|
||||
- Commit the changes with a meaningful message
|
||||
- Push the changes to your forked repository
|
||||
1. Create a pull request to the main repository:
|
||||
- You can create a pull request from your forked repository by navigating to Pull requests page and click **New pull request** button
|
||||
- Select the **master** branch as the base branch and your branch as the compare branch
|
||||
- Click **Create pull request** button
|
||||
|
||||
Once your pull request has been reviewed and approved, your changes will be merged into the main repository and deployed to the website.
|
|
@ -1,73 +0,0 @@
|
|||
# Table of Contents
|
||||
|
||||
- [Step-by-Step Guide to Deploying Azure Web Apps (Windows) with IIS](#step-by-step-guide-to-deploying-azure-web-apps-windows-with-iis)
|
||||
- [Setting up a new Azure Web App (Windows) with IIS](#setting-up-a-new-azure-web-app-windows-with-iis)
|
||||
- [Adjusting the Web App Configuration](#adjusting-the-web-app-configuration)
|
||||
- [Modifying the GitHub Action](#modifying-the-github-action)
|
||||
|
||||
# Step-by-Step Guide to Deploying Azure Web Apps (Windows) with IIS
|
||||
|
||||
This guide assumes you already have permission to access the Azure subscription.
|
||||
|
||||
## Setting up a new Azure Web App (Windows) with IIS
|
||||
|
||||
These instructions pertain to the staging environment. For the production environment, follow the same steps, but with a different web app name.
|
||||
|
||||
1. Navigate to the [Azure Portal](https://portal.azure.com/)
|
||||
1. Select **Create a resource**
|
||||
1. Choose **Create a Web App**
|
||||
1. In the Basic Tab
|
||||
- Choose your existing subscription and resource group
|
||||
- Under Instance Details, enter:
|
||||
- Name: **stride-website-staging**
|
||||
- Publish: **Code**
|
||||
- Runtime stack: **ASP.NET V4.8**
|
||||
- OS: **Windows**
|
||||
- Region: as the current web
|
||||
- Pricing Plan - An existing App Service Plan should appear if the region and resource group match that of the existing web app. Currently we use **Standard S1**.
|
||||
- Click **Next**
|
||||
1. In the Deployment Tab - This step can be completed later if preferred.
|
||||
- Enable Continuous deployment
|
||||
- Select account, organisation `Stride`, repository `stride-website` and branch `staging-next`
|
||||
- Click **Next**
|
||||
1. In the Monitoring Tab
|
||||
- Leave all settings as default
|
||||
- Click **Next**
|
||||
1. Monitoring Tab
|
||||
- Disable Application Insights - This is not needed at this stage
|
||||
- Click **Next**
|
||||
1. In the Tags Tab
|
||||
- Leave this blank unless you wish to add tags
|
||||
- Click **Next**
|
||||
1. In the Review Tab
|
||||
- Review your settings
|
||||
- Click **Create**
|
||||
- The GitHub Action will be added to the repository and run automatically. It will fail at this stage, but this will be resolved in the subsequent steps.
|
||||
|
||||
## Adjusting the Web App Configuration
|
||||
|
||||
1. Proceed to the newly created Web App
|
||||
1. Click on **Configuration**
|
||||
1. Select **General Settings**
|
||||
1. Change the Http Version to **2.0**
|
||||
1. Click **Save** to apply the changes
|
||||
|
||||
## Modifying the GitHub Action
|
||||
|
||||
The previous step will have added a GitHub Action to the repository, which will fail at this point. You need to modify the GitHub Action to correct the issue.
|
||||
|
||||
1. Navigate to the repository
|
||||
1. Select Actions
|
||||
1. You have the option to stop the currently running action
|
||||
1. Locate the new GitHub Action *(within this folder Stride Website -> staging-next repo -> .github -> workflows)* which was automatically generated by the Azure Portal. We will need to reference the properties app-name and publish-profile and disable the push trigger.
|
||||
- To disable the push trigger, retain only **workflow_dispatch** (manual trigger) as shown below:
|
||||
```
|
||||
on:
|
||||
# push:
|
||||
# branches:
|
||||
# - staging-next
|
||||
workflow_dispatch:
|
||||
```
|
||||
1. Open the `stride-website-staging-azure.yml` workflow and update it with the properties from the previous step. Save your changes.
|
||||
1. This workflow may also need to be added to the production branch master if it is not already there.
|
||||
1. Execute the workflow stride-website-staging-azure.yml. Ensure you select the correct branch staging-next and click **Run workflow**. This action will deploy the website to the Azure Web App.
|
|
@ -1,79 +0,0 @@
|
|||
# Table of Contents
|
||||
|
||||
We tested five different deployment methods (GitHub Pages, Azure Web App Windows/Linux IIS/Kestrel, Azure Static Web Apps) and chose to continue with the existing Azure Web Apps IIS ASP.NET 4.8 infrastructure.
|
||||
|
||||
- [Azure Web Apps](#azure-web-apps)
|
||||
- [Deploying with .NET Framework](#deploying-with-net-framework)
|
||||
- [Deployment To Wiki](#deployment-to-wiki)
|
||||
- [Deployment Tests](#deployment-tests)
|
||||
|
||||
# Azure Web Apps
|
||||
|
||||
## Deploying with .NET Framework
|
||||
|
||||
The .NET Framework uses IIS to host the website, which serves any static files.
|
||||
|
||||
The [web.config](https://github.com/stride3d/stride-website/blob/master/web.config) file is used to configure IIS, including:
|
||||
|
||||
- Mime types for static files
|
||||
- Redirects
|
||||
- Gzip compression
|
||||
- Static file caching
|
||||
- Custom Headers
|
||||
- Custom 404
|
||||
- Caching
|
||||
|
||||
The GitHub action [stride-website-release-azure.yml](https://github.com/stride3d/stride-website/blob/master/.github/workflows/stride-website-release-azure.yml) builds the website and deploys it to Azure Web Apps.
|
||||
|
||||
[Step-by-Step Deployment Guide for Azure Web Apps (Windows) with IIS and Stride Website](Deployment-Azure).
|
||||
|
||||
# Deployment To Wiki
|
||||
|
||||
While the GitHub wiki offers a convenient way to document a project, it has some drawbacks, such as not being part of the repository by default and restricting edits to collaborators. To address these issues and allow community editing, we have implemented an alternative approach.
|
||||
|
||||
We created a `wiki` folder within the repository, which contains all wiki pages. The GitHub action `stride-web-wiki.yml` deploys the `wiki` folder to the GitHub wiki.
|
||||
|
||||
The GitHub action [stride-website-wiki.yml](https://github.com/stride3d/stride-website/blob/master/.github/workflows/stride-website-wiki.yml) is triggered when:
|
||||
|
||||
1. A push/merge is made to the `master` branch of the `stride-website` repository
|
||||
1. The action is manually triggered
|
||||
|
||||
You can manually trigger the action by navigating to the **Actions** tab and clicking the **Run workflow** button.
|
||||
|
||||
This GitHub action only monitors changes to the `wiki` folder. Any modifications made to the `wiki` folder will be deployed to the GitHub wiki. Note that changes to the `wiki` folder will not trigger other GitHub actions.
|
||||
|
||||
We use the [Wiki Page Creator GitHub Action](https://github.com/marketplace/actions/wiki-page-creator-action) to deploy the `wiki` folder to the GitHub wiki.
|
||||
|
||||
**Note**: ⚠️ A GitHub personal access fine-grained token (GH_PAT) is required for authentication. This token is stored as a secret in the repository settings.⚠️
|
||||
|
||||
# Deployment Tests
|
||||
|
||||
Tests were discussed here https://github.com/stride3d/stride-website/issues/71
|
||||
|
||||
The basic **load tests** we conducted by measuring the `/blog/` page for different deployment scenarios. We only performed 1-2 tests, as this process is time-consuming and likely unnecessary:
|
||||
|
||||
- Hardware for Azure App Service: Basic B1, 1 CPU, 1.75 Memory, CPU type unknown, most likely different for Windows and Linux
|
||||
- Hardware for GitHub Pages: Unknown
|
||||
- Test was running 60 seconds, 2 threads
|
||||
|
||||
**Results**
|
||||
|
||||
1. GitHup Pages - **737 req/sec**
|
||||
- We have no control over various aspects, including security headers, redirects, and caching.
|
||||
1. ASP.NET 4.8 with IIS - **186 req/sec**
|
||||
- We have full control of everything through `web.config`, including security headers, redirects, caching, ..
|
||||
1. SWA (Static Web App - Paid) - **160 req/sec**
|
||||
- No familiar with but should be fair enough control through `staticwebapp.config.json`
|
||||
1. .NET 7 (Windows) with IIS (in-process) - **127 req/sec**
|
||||
- We have full control of everything through `web.config`, including security headers, redirects, caching, ..
|
||||
1. .NET 7 (Windows) with Kestrel (out-of-process) - **88 req/sec**
|
||||
- We have full control of everything through ASP.NET Core middleware, including security headers, redirects, caching, ..
|
||||
1. .NET 7 (Linux) with Kestrel - ***38 req/sec**
|
||||
- We have full control of everything through ASP.NET Core middleware, including security headers, redirects, caching, ..
|
||||
|
||||
**\*** I believe that Linux was slow due to the Azure App Service configuration, where Linux performance is purposely lower but also cheaper.
|
||||
|
||||
**Recommendation**
|
||||
|
||||
1. **ASP.NET 4.8 with IIS** for Staging
|
||||
1. **ASP.NET 4.8 with IIS** for Release
|
143
wiki/Eleventy.md
143
wiki/Eleventy.md
|
@ -1,143 +0,0 @@
|
|||
[Eleventy](https://www.11ty.dev/) is a static site generator that uses JavaScript as its templating language. It is a very powerful tool that allows us to create a website with a lot of flexibility and customization. It is also very easy to use and learn. This section will cover the basics of Eleventy configuration on the Stride website. Creating and updating the content is described in our [Content](Content) section.
|
||||
|
||||
We used to use **Jekyll** as our static site generator, but we decided to switch to Eleventy because of its flexibility and ease of use. We also wanted to use a tool that is more widely used and supported, which is why we decided to switch to Eleventy.
|
||||
|
||||
# Table of Contents
|
||||
|
||||
- [Packages and Dependencies](#packages-and-dependencies)
|
||||
- [Configuration](#configuration)
|
||||
- [Global Data](#global-data)
|
||||
- [Folder Structure](#folder-structure)
|
||||
- [Layouts](#layouts)
|
||||
- [Includes](#includes)
|
||||
- [Advanced Topics](#advanced-topics)
|
||||
- [Creating Custom Shortcodes and Includes](#creating-custom-shortcodes-and-includes)
|
||||
|
||||
# Packages and Dependencies
|
||||
|
||||
Eleventy is a **Node.js** application. Please follow our [Installation](Installation) guide to install Node.js and all the required dependencies.
|
||||
|
||||
Packages we currently use:
|
||||
|
||||
- Dev Dependencies
|
||||
- `@11ty/eleventy` v2.0 - Main package for the static site generator
|
||||
- `@11ty/eleventy-plugin-rss` - RSS feed plugin
|
||||
- `@11ty/eleventy-plugin-syntaxhighlight` - Syntax highlighting plugin (dark and light theme in `/css/syntax-highlighting.scss`)
|
||||
- Dependencies
|
||||
- `@11ty/eleventy-fetch` - Fetch plugin
|
||||
- `@fortawesome/fontawesome-free` - Font Awesome with a variety of awesome icons 😃🤩
|
||||
- `bootstrap` - Bootstrap 5.3
|
||||
- `lunr` - Lunr search plugin that consumes local `search.json (/search.liquid)` and remote `index.json` from the docs website; the script is in `/assets/scripts/search.liquid`
|
||||
- `markdown-it-anchor` - Anchor plugin for markdown-it
|
||||
- `markdown-it-table-of-contents` - Table of contents plugin for markdown-it, used mainly in blog posts as `[[TOC]]`
|
||||
- `sass` - Sass compiler for our `/css/*.scss` files
|
||||
|
||||
# Configuration
|
||||
|
||||
The Eleventy configuration is located in the `.eleventy.js` file at the root of the project. This file contains all the configuration settings for the Eleventy build process. As it is a JavaScript file, you can utilize all JavaScript features and syntax within it.
|
||||
|
||||
**What do you find in this file?**
|
||||
|
||||
- plugins configuration - All the plugins we use
|
||||
- pass through files - Files that are copied to the output folder without any processing
|
||||
- custom collections - Custom collections used in the templates like `tagList` and `yearList`
|
||||
- filters - Custom filters used in the templates
|
||||
- custom shortcodes - Custom [shortcodes](Content#shortcodes-and-includes) used in the templates, pages or blog posts.
|
||||
|
||||
The file is well-commented and should be self-explanatory. If you need to add a new configuration, please follow the existing structure and include a comment to explain the new configuration.
|
||||
|
||||
# Global Data
|
||||
|
||||
Global data is located in the `/_data` folder. It contains all the global data that is accessible in all the templates. Currently, we have these JSON files:
|
||||
|
||||
- `site.json` - Contains all the global data for the website, used in the templates and shortcodes.
|
||||
- `features.json` - Contains all the data for the features page and its features sections.
|
||||
- `sponsors.json` - Contains sponsor information used in multiple places on the website.
|
||||
|
||||
Our `site.json` file contains these main properties, with only some listed below:
|
||||
|
||||
- `dark-mode` - Dark mode toggle `true|false`
|
||||
- `alert-banner` - Global banner below navigation `true|false`
|
||||
- `docs-search` - Includes docs website content in the search `true|false`
|
||||
- `links` - Contains all the main links used across the website (social media, docs, GitHub, etc.)
|
||||
- `authors` - Contains all the authors used in the blog posts
|
||||
- repeated data - like `csharp-version`, `dotnet-version`, `download-version` which are used in multiple places on the website and are updated with every release
|
||||
|
||||
# Folder Structure
|
||||
|
||||
The folder structure is crucial for Eleventy, as it determines the output of the build process. The folder structure is organized as follows:
|
||||
|
||||
**Folders**
|
||||
|
||||
- `/_data` - Global data
|
||||
- `/_drafts` - Draft blog posts (excluded from the build process)
|
||||
- `/_includes` - Reusable code snippets that can be included in multiple pages
|
||||
- `/_layouts` - Main layout pages (`container`, `page`, `post`) using the primary layout page `default`
|
||||
- `/_site` - Output build folder (excluded in `.gitignore` and used for deployment)
|
||||
- `/assets` - Additional assets, such as scripts
|
||||
- `/blog` - Blog content page
|
||||
- `/css` - Website stylesheets
|
||||
- `/files` - Stride installer files
|
||||
- `/images` - Images and MP4 files used on the website
|
||||
- `/legal` - Content page
|
||||
- `/posts` - Blog posts
|
||||
- `/posts/2014-2021` - Old blog posts which are merged to the same output folder as `/posts`
|
||||
- this folder is only for convenience to easily access new posts
|
||||
- `/wiki` - Excluded from build process, used only for wiki deployment
|
||||
|
||||
**Files**
|
||||
|
||||
- `/posts/posts.json` - Blog post defaults so they don't have to be repeated in the front matter
|
||||
- `*.html` - HTML content pages
|
||||
- `*.liquid` - Liquid content pages
|
||||
- `*.md` - Markdown content pages
|
||||
- `*.njk` - Nunjucks content pages
|
||||
- `.eleventy.js` - Eleventy configuration file
|
||||
- `.eleventyignore` - Lists files and folders not to be processed by Eleventy
|
||||
- `package.json` - Eleventy project metadata used by `npm`
|
||||
|
||||
**Non Eleventy files:**
|
||||
|
||||
- `.nojekyll` - Special file for GitHub Pages
|
||||
- `CNAME` - Custom domain for GitHub Pages
|
||||
- `appsettings.json` - ASP.NET Core configuration file
|
||||
- `appsettings.Development.json` - ASP.NET Core configuration file
|
||||
- `Program.cs` - ASP.NET Core startup file
|
||||
- `Stride.Web.csproj` - ASP.NET Core project file
|
||||
- `Stride.Web.sln` - ASP.NET Core solution file
|
||||
- `Stride.Web.csproj.user` - ASP.NET Core project file
|
||||
- `web.config` - Configuration file for IIS deployment
|
||||
- `web.Release.config` - Configuration file for Windows ASP.NET Core deployment
|
||||
|
||||
|
||||
**Note:** This project includes ASP.NET Core solution and files, as they can be used seamlessly with Eleventy. Read more about this in our [Installation](Installation#asp-net-core) section.
|
||||
|
||||
|
||||
# Layouts
|
||||
|
||||
All the layouts are located in the `/_layouts` folder. The `default` layout is the main layout page and is used by all the other layouts.
|
||||
|
||||
- `default` - Main layout page
|
||||
- `container` - Used by some pages
|
||||
- `page` - Used by most of the pages
|
||||
- `post` - Used by blog posts
|
||||
|
||||
# Includes
|
||||
|
||||
All the includes are located in the `/_includes` folder. The includes are reusable code snippets that can be included in multiple pages.
|
||||
|
||||
Some includes are used solely by the layouts, while others are used by the content pages.
|
||||
|
||||
# Advanced Topics
|
||||
|
||||
## Creating Custom Shortcodes and Includes
|
||||
|
||||
If you need to create a custom shortcode or include, please follow the existing structure and [include a comment](Content#shortcodes-and-includes) to explain the new shortcode or include.
|
||||
|
||||
The shortcodes are defined in the `.eleventy.js` file, while the includes are located in the `/_includes` folder.
|
||||
|
||||
You can explore the existing shortcodes and includes to get a better understanding of how they work and how to create new ones.
|
||||
|
||||
## Performance Optimization
|
||||
|
||||
ToDo: Remove this section if not needed
|
73
wiki/Home.md
73
wiki/Home.md
|
@ -1,73 +0,0 @@
|
|||
Welcome to the Stride Website Wiki.
|
||||
|
||||
This wiki serves as a comprehensive guide to help you navigate and contribute to the **Stride website**.
|
||||
|
||||
If you're looking to make minor changes, such as adding or updating a post or page, or fixing a typo, you can jump straight to the [Content Updates](Content#content-updates) section.
|
||||
|
||||
For more extensive updates 🤯🤦♂️ and a deeper understanding of the website project, we recommend exploring all the sections provided. Happy browsing and contributing!
|
||||
|
||||
Technologies we use to build our website:
|
||||
|
||||
- [Eleventy](https://www.11ty.dev/docs/) (static site generator)
|
||||
- Markdown
|
||||
- Mainly [Liquid](https://shopify.github.io/liquid/) and a bit Nunjucks (template engines)
|
||||
- Bootstrap
|
||||
- Font Awesome
|
||||
- GitHub Wiki
|
||||
- HTML, JavaScript, CSS, SCSS, and JSON
|
||||
- GitHub Actions (CI/CD) - Don't worry, this is already set up, you don't need to worry about it.
|
||||
|
||||
## Important Links
|
||||
|
||||
- https://www.stride3d.net/legal/privacy-policy/
|
||||
- This links is used in the Stride Installer
|
||||
- https://www.stride3d.net/feed.xml
|
||||
- This feed is loaded in the Stride Launcher
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Installation](Installation)
|
||||
- [Prerequisites](Installation#prerequisites)
|
||||
- [Installation Steps](Installation#installation-steps)
|
||||
- [Running the Development Server](Installation#running-the-development-server)
|
||||
- [ASP.NET Core](Installation#aspnet-core)
|
||||
- [Content](Content)
|
||||
- [Content Updates](Content#content-updates)
|
||||
- [Small Updates](Content#small-updates)
|
||||
- [Major Updates](Content#major-updates)
|
||||
- [Updating Wiki](Content#updating-wiki)
|
||||
- [Creating New Post](Content#creating-new-post)
|
||||
- [Post Naming Convention](Content#post-naming-convention)
|
||||
- [Post Front Matter](Content#post-front-matter)
|
||||
- [Post Content](Content#post-content)
|
||||
- [Excerpt](Content#excerpt)
|
||||
- [Creating New Page](Content#creating-new-page)
|
||||
- [Page Front Matter](Content#page-front-matter)
|
||||
- [Shortcodes and Includes](Content#shortcodes-and-includes)
|
||||
- [Alert](Content#alert)
|
||||
- [Alert Banner](Content#alert-banner)
|
||||
- [Image](Content#image)
|
||||
- [Video](Content#video)
|
||||
- [Web Assets](Content#web-assets)
|
||||
- [Styling](Content#styling)
|
||||
- [Bootstrap Customization](Content#bootstrap-customization)
|
||||
- [CSS Guidelines](Content#css-guidlines)
|
||||
- [Submitting your Changes](Content#submitting-your-changes)
|
||||
- [Roadmap](Roadmap)
|
||||
- [Eleventy](Eleventy)
|
||||
- [Packages and Dependencies](Eleventy#packages-and-dependencies)
|
||||
- [Configuration](Eleventy#configuration)
|
||||
- [Global Data](Eleventy#global-data)
|
||||
- [Folder Structure](Eleventy#folder-structure)
|
||||
- [Layouts](Eleventy#layouts)
|
||||
- [Includes](Eleventy#includes)
|
||||
- [Advanced Topics](Eleventy#advanced-topics)
|
||||
- [Creating Custom Shortcodes and Includes](Eleventy#creating-custom-shortcodes-and-includes)
|
||||
- [Deployment](Deployment)
|
||||
- [Azure Web Apps](Deployment#azure-web-apps)
|
||||
- [Deploying with .NET Framework](Deployment#deploying-with-net-framework)
|
||||
- [Deployment To Wiki](Deployment#deployment-to-wiki)
|
||||
- [Troubleshooting and FAQ](Troubleshooting-and-FAQ)
|
||||
- [Known Issues](Troubleshooting-and-FAQ#known-issues)
|
||||
- [Common Issues and Solutions](Troubleshooting-and-FAQ#common-issues-and-solutions)
|
||||
- [Frequently Asked Questions](Troubleshooting-and-FAQ#frequently-asked-questions)
|
|
@ -1,62 +0,0 @@
|
|||
This guide will walk you through the steps to install the Stride website on your local machine for development purposes. Although we use the Windows operating system for development, the steps should be similar for other operating systems.
|
||||
|
||||
[Minor updates](Content#small-updates) can be made directly on GitHub. However, for [more significant updates](Content#major-updates) that affect multiple pages, we recommend using a local development environment so you can see the impact of your changes beforehand. This is because we use the **Eleventy** static site generator, and in some cases, all pages need to be regenerated. This approach helps you assess your changes before submitting a pull request.
|
||||
|
||||
This guide assumes you have a basic understanding of the technologies used in the Stride website.
|
||||
|
||||
# Table of Contents
|
||||
|
||||
- [Prerequisites](#prerequisites)
|
||||
- [Installation Steps](#installation-steps)
|
||||
- [Running the Development Server](#running-the-development-server)
|
||||
- [ASP.NET Core](#aspnet-core)
|
||||
|
||||
# Prerequisites
|
||||
|
||||
Before updating the Stride website, ensure you are familiar with the following prerequisites:
|
||||
|
||||
1. **Node.js 16+ (including npm) installed:** You can download the installer from the [Node.js website](https://nodejs.org/en/download)
|
||||
- If Node.js is already installed, ensure you have version 16 or higher. You can check your version by running `node -v` in a terminal. Note that `npm`, the package manager for Node.js, is included with the installation
|
||||
1. **Git installed:** You will need Git for version control. If you don't have Git installed, you can download it from the [Git website](https://git-scm.com/downloads)
|
||||
1. **Development IDE of choice:** Choose an Integrated Development Environment (IDE) that you're comfortable with for development. Although there are various popular choices, such as Visual Studio, Visual Studio Code, and others, this guide will focus on using **Visual Studio**, as it is the primary IDE for the Stride project, and as of writing, we use **Visual Studio 2022**. You can download the free Community edition from the [Visual Studio website](https://visualstudio.microsoft.com/downloads/)
|
||||
|
||||
# Installation Steps
|
||||
|
||||
1. ❓You might want to create an issue so we can track your contribution and avoid duplicate work. If you're unsure whether your contribution is needed, feel free to create an issue and ask
|
||||
1. 🍴 Fork the repository by navigating to the [Stride website repository](https://github.com/stride3d/stride-website) and clicking the **Fork** button in the top-right corner
|
||||
1. 📥 Clone your forked repository using the following command, replacing `your-username` with your GitHub username: `git clone https://github.com/your-username/stride-website.git`
|
||||
- 💡**Tip:** It's a good idea to create a new branch for each feature or bug fix you work on. This helps keep your forked repository organized and makes it easier to manage multiple pull requests
|
||||
1. 📁 Go to the project folder `cd stride-website`
|
||||
1. 🚀 Run `npm install` to install all dependencies
|
||||
|
||||
# Running the Development Server
|
||||
|
||||
1. 🚀 Run `npm start` (`npx @11ty/eleventy --serve`) in the command line to start the development server
|
||||
1. 📋 You should see many logs in the command line, indicating the progress and displaying any errors
|
||||
- ⚠️ A Windows Security warning may appear on the first run (Allow Node.js JavaScript Runtime to communicate on these networks). Click **Allow access**
|
||||
1. 🌐 Open the site in your browser by navigating to `http://localhost:8080/`
|
||||
1. 💻 Open the project in Visual Studio by opening the `Stride.Web.sln` solution file, or use the IDE of your choice
|
||||
1. 🔄 Once you save the updated file, the website will automatically refresh in the browser
|
||||
1. 😃 Happy coding!
|
||||
|
||||
*ToDo: Attach a screenshot of the command line output*
|
||||
|
||||
Let's [update the content](Content) now!
|
||||
|
||||
# ASP.NET Core
|
||||
|
||||
This static website can also be hosted using ASP.NET Core.
|
||||
|
||||
Although we're not currently using the ASP.NET Core website, it remains available for future use. If necessary, we can integrate dynamic ASP.NET Core pages with the static pages generated by Eleventy.
|
||||
|
||||
To edit the website through Visual Studio, open the `Stride.Web.sln` solution, which will load the website in the IDE. You can then modify the pages and content and run the website directly from Visual Studio.
|
||||
|
||||
During the Visual Studio build process, `npm run build` is executed, generating the static website in the same `_site` folder as previously described. The ASP.NET Core website uses this folder instead of the default `wwwroot`. This customization is specified in the `Program.cs` file.
|
||||
|
||||
```csharp
|
||||
var builder = WebApplication.CreateBuilder(new WebApplicationOptions
|
||||
{
|
||||
Args = args,
|
||||
WebRootPath = "_site" // Set the folder where the static files are located (e.g., Eleventy output folder)
|
||||
});
|
||||
```
|
|
@ -1,10 +0,0 @@
|
|||
This is a proposal for our website roadmap and ongoing website development plan.
|
||||
|
||||
- Tackle existing issues listed in the [Issues](https://github.com/stride3d/stride-website/issues)
|
||||
- Convert images to WebP for better performance
|
||||
- Streamline the website by decoupling media from the site
|
||||
- Host videos on YouTube
|
||||
- Host images in Azure Blob Storage or another location
|
||||
- Optimize the website for possible deployment on Azure Static Web Apps
|
||||
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
# Table of Contents
|
||||
|
||||
- [Known Issues](#known-issues)
|
||||
- [Common Issues and Solutions](#common-issues-and-solutions)
|
||||
- [Frequently Asked Questions](#frequently-asked-questions)
|
||||
|
||||
# Known Issues
|
||||
|
||||
1. **Sponsor Page - Widget Incompatibility with dark theme:** Widgets on the Sponsor Page currently do not support the dark theme. As a workaround, we can either fetch data from https://opencollective.com/stride3d/members/all.json and render it before deployment or make it dynamic. Both options would give us more control over the content and design, and allow for better compatibility with the dark theme in the future.
|
||||
1. **Search Page - Lack of pagination:** At present, the Search Page does not have pagination, which limits the maximum number of search results displayed to 100. To resolve this issue, we can implement a pager in JavaScript. This would enable users to navigate through multiple pages of search results, providing a more comprehensive view of the available content.
|
||||
|
||||
# Common Issues and Solutions
|
||||
|
||||
Any issue should be added to Stride Website [GitHub issues](https://github.com/stride3d/stride-website/issues) so it can be tracked and elaborated by the community.
|
||||
|
||||
# Frequently Asked Questions
|
||||
|
||||
**Q:** I just want to fix a typo in a post. Do I need to follow your installation steps?
|
||||
|
||||
**A:** *No, you can fix the typo directly on the GitHub website. However, you will still need to fork the repo, make your update on the main branch or a new branch, and then create a pull request. You can follow this guide for [minor updates](Content#small-updates).*
|
||||
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
- [Home](https://github.com/stride3d/stride-website/wiki)
|
||||
- [Installation](Installation)
|
||||
- [Prerequisites](Installation#prerequisites)
|
||||
- [Installation Steps](Installation#installation-steps)
|
||||
- [Running the Development Server](Installation#running-the-development-server)
|
||||
- [ASP.NET Core](Installation#aspnet-core)
|
||||
- [Content](Content)
|
||||
- [Content Updates](Content#content-updates)
|
||||
- [Small Updates](Content#small-updates)
|
||||
- [Major Updates](Content#major-updates)
|
||||
- [Updating Wiki](Content#updating-wiki)
|
||||
- [Creating New Post](Content#creating-new-post)
|
||||
- [Post Naming Convention](Content#post-naming-convention)
|
||||
- [Post Front Matter](Content#post-front-matter)
|
||||
- [Post Content](Content#post-content)
|
||||
- [Excerpt](Content#excerpt)
|
||||
- [Creating New Page](Content#creating-new-page)
|
||||
- [Page Front Matter](Content#page-front-matter)
|
||||
- [Shortcodes and Includes](Content#shortcodes-and-includes)
|
||||
- [Alert](Content#alert)
|
||||
- [Alert Banner](Content#alert-banner)
|
||||
- [Image](Content#image)
|
||||
- [Video](Content#video)
|
||||
- [Web Assets](Content#web-assets)
|
||||
- [Styling](Content#styling)
|
||||
- [Bootstrap Customization](Content#bootstrap-customization)
|
||||
- [CSS Guidelines](Content#css-guidlines)
|
||||
- [Submitting your Changes](Content#submitting-your-changes)
|
||||
- [Roadmap](Roadmap)
|
||||
- [Eleventy](Eleventy)
|
||||
- [Packages and Dependencies](Eleventy#packages-and-dependencies)
|
||||
- [Configuration](Eleventy#configuration)
|
||||
- [Global Data](Eleventy#global-data)
|
||||
- [Folder Structure](Eleventy#folder-structure)
|
||||
- [Layouts](Eleventy#layouts)
|
||||
- [Includes](Eleventy#includes)
|
||||
- [Advanced Topics](Eleventy#advanced-topics)
|
||||
- [Creating Custom Shortcodes and Includes](Eleventy#creating-custom-shortcodes-and-includes)
|
||||
- [Deployment](Deployment)
|
||||
- [Azure Web Apps](Deployment#azure-web-apps)
|
||||
- [Deploying with .NET Framework](Deployment#deploying-with-net-framework)
|
||||
- [Deployment To Wiki](Deployment#deployment-to-wiki)
|
||||
- [Troubleshooting and FAQ](Troubleshooting-and-FAQ)
|
||||
- [Known Issues](Troubleshooting-and-FAQ#known-issues)
|
||||
- [Common Issues and Solutions](Troubleshooting-and-FAQ#common-issues-and-solutions)
|
||||
- [Frequently Asked Questions](Troubleshooting-and-FAQ#frequently-asked-questions)
|
Загрузка…
Ссылка в новой задаче