Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
186 changes: 186 additions & 0 deletions astro.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
import starlight from '@astrojs/starlight';
import { defineConfig } from 'astro/config';
import rehypeMathjax from 'rehype-mathjax';
import remarkMath from 'remark-math';
import starlightLinksValidator from 'starlight-links-validator';

export default defineConfig({
vite: {
server: {
watch: {
usePolling: true,
},
},
},
site: 'https://wiki.tuhuratech.org.nz/',
integrations: [starlight({
title: 'Wiki',
description: 'A collection of guides and resources for learning technology targeted towards rangatahi and kura in Aotearoa',
logo: {
light: './src/assets/logo-light.png',
dark: './src/assets/logo-dark.png',
replacesTitle: true
},
lastUpdated: true,
editLink: {
baseUrl: 'https://github.com/Tuhura-Tech/Wiki/blob/main/'
},
social: {
mastodon: 'https://mastodon.nzoss.nz/@tuhuratech',
discord: 'https://discord.gg/PNxh7cwKfQ',
github: 'https://github.com/Tuhura-Tech/Wiki'
},
customCss: [
// Relative path to your custom CSS file
'./src/styles/custom.css',
],
sidebar: [
{
label: "Python", items: [{
label: "Python Basics",
link: 'python'
}, {
label: "Conditionals and Loops",
link: "python/conditionals-loops"
}, {
label: "Lists, Tuples, Dictionaries, and Sets",
link: "python/lists-tuples-dicts"
}, {
label: "Functions and Docstrings",
link: "python/functions"
}, {
label: "Classes and Object-Oriented Programming (OOP)",
link: "python/classes"
}, {
label: "Turtle",
link: "python/turtle/0-setup/"
}, {
label: "Setting Up",
link: 'python/setting-up'
}, {
label: "Flask",
autogenerate: {
directory: 'python/flask'
},
collapsed: true
}]
},
{
label: "Game Design",
items: [{
label: "About",
link: 'game-design/index'
}, {
label: "Godot", items: [{
label: "Godot Basics",
link: "game-design/godot/basics"
},{
label: "Universal Features",
link: "game-design/godot/universal"
},{
label: "Survivors-Like",
link: "game-design/godot/survivors"
},{
label: "Top-down Dungeon Crawler",
link: "game-design/godot/dungeoncrawler/0-scenesetup/"
},{
label: "3D Intro",
link: "game-design/godot/3d-intro/0-making-project/"
},{
label: "3D Game",
link: "game-design/godot/3dgame"
},{
label: "Setting up C# For Godot",
link: "game-design/godot/projectsetup"
},{
label: "3D Racing Game",
link: "game-design/godot/3dracinggame/0-main-scene/"
}],
collapsed: true
},
{
label: "Procedural Generation", items: [{
label: "Infinite 3D Racing",
link: "game-design/proceduralgeneration/infinite3dtutorial/0-setup/"
},
],
collapsed: true
}],
},
{
label: "Blender",
autogenerate: {
directory: 'blender'
}
},
{
label: "Cybersecurity",
autogenerate: {
directory: 'cybersecurity'
}
},
{
label: "SQL",
autogenerate: {
directory: 'sql'
}
}, {
label: "Javascript",
items: [{
label: "Setting Up",
link: 'javascript/index'
}, {
label: "Creative Coding",
autogenerate: {
directory: 'javascript/creative-coding'
},
collapsed: true
}]
}, {
label: "Git",
autogenerate: {
directory: 'git'
}
}, {
label: "Tūhura Tech Resources",
autogenerate: {
directory: 'tuhura-tech'
}
}],
locales: {
root: {
label: 'English',
lang: 'en' // lang is required for root locales
},

mi: {
label: 'Māori',
lang: 'mi'
}
},
favicon: '/images/favicon.svg',
head: [
// Add ICO favicon fallback for Safari.
{
tag: 'link',
attrs: {
rel: 'icon',
href: '/images/favicon.ico',
sizes: '32x32'
}
}],
plugins: [starlightLinksValidator({
errorOnLocalLinks: false,
})],
components: {
Hero: './src/components/starlight/Hero.astro',
TableOfContents: './src/components/starlight/TableOfContents.astro',
Pagination: './src/components/starlight/Pagination.astro',
MobileTableOfContents: './src/components/starlight/MobileTableOfContents.astro',
},
})],
markdown: {
remarkPlugins: [remarkMath],
rehypePlugins: [rehypeMathjax],
}
});
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,4 @@ This is a game. What you have made is a game. It might not look like it, but if

If you made some 3D models of platforms, a button, a character, and added a skybox it would look like a real game. That's truly the only difference. Well, that, and maybe a goal.

Next you should go join a [game jam](https://itch.io/jams) or go through our [3D racing game](/src/content/docs/game-design/godot/3dracinggame/0-main-scene/) tutorial!
Next you should go join a [game jam](https://itch.io/jams) or go through our [3D racing game](/game-design/godot/3dracinggame/0-main-scene/) tutorial!
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { Steps } from '@astrojs/starlight/components';

# Preview
:::note[If you're a beginner...]
Read through and implement [3D Game](/game-design/godot/3dgame) or [3D Intro](/game-design/godot/3d) until you know the basics of how 3D works in Godot.
Read through and implement [3D Intro](/game-design/godot/3d-intro/0-making-project/) until you know the basics of how 3D works in Godot.
:::
![Preview of end result](/src/assets/godot/3DRacing/endResultPreview.png)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ To drive the car, you'll need to map these four inputs:
1. "Right" -> D key.

:::note
If you don't know how to do this, refer to [this 3D game resource](/game-design/godot/3dgame#changing-the-controls).
If you don't know how to do this, refer to [this 3D game resource](/game-design/godot/3d-intro/4-changing-controls/).
:::
## Adding a Script

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@ import { Steps } from '@astrojs/starlight/components';
## Next Steps

You've just made your very own 3D racing game! It's now all yours to add on new features and change it to your liking!
Here's some ideas for what your next steps:
Here's some ideas for what your next steps should be:

<Steps>
1. Showing a speedometer in your HUD.
2. Collect powerups or extra boosts as you drive along the track.
3. Have a crack at multiplayer if you're feeling up for it!
4. Make an endless track through procedural generation! [Link to the tutorial here](/game-design/proceduralgeneration/infinite3dtutorial/0-setup/)
</Steps>

Thanks for following along this far! Happy Godoting and have fun.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import Checklist from '/src/components/Checklist.astro';
import Box from '/src/components/tutorial/Box.astro';
import { Steps } from '@astrojs/starlight/components';

This is a guide to making a 3-dimensional game in [Godot](https://godotengine.org/). If you are unfamiliar with Godot, check out the [Godot basics](/game-design/godot/basics) doc and the [3D fundmentals](/game-design/godot/3d) doc.
This is a guide to making a 3-dimensional game in [Godot](https://godotengine.org/). If you are unfamiliar with Godot, check out the [Godot basics](/game-design/godot/basics) doc and the [3D fundmentals](/game-design/godot/3d-intro/0-making-project/) doc.

:::note[Version]
This guide is up-to-date with Godot 4.3 stable official release but will most likely work with any 4.x release.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
---
type: tutorial
unitTitle: Infinite 3D Procedural Generation
title: Catching up
description: This page works through how to integrate procedural generation with a 3D game
---

import Checklist from '/src/components/tutorial/Checklist.astro';
import Box from '/src/components/tutorial/Box.astro';
import { Steps } from '@astrojs/starlight/components';

:::note[If you're a beginner...]
Read through and implement [3D Intro](/game-design/godot/3d-intro/0-making-project/) until you know the basics of how 3D works in Godot.
:::

:::note[Another Note]
If you have already done the [3D Racing Game](/game-design/godot/3dracinggame/0-main-scene/), you can skip this page!
:::

## What you'll be making

![Screenshot preview of the game](/src/assets/proceduralgeneration/3dinfinitegame/finalProductRunning.png)

In this tutorial, you'll work step by step through creating your very own infinite 3D racing game! In this game, the car will navigate across windy roads, straight roads, and bumpy roads infinitely!

You'll learn to:
- Create a car (through a previous tutorial)
- Create a track (also through a previous tutorial)
- Then, a neverending track
- Code randomness into track making
- And code procedural noise into your track!

<details>
<summary>What is procedural noise?</summary>
**Procedural noise** is a way to create natural-looking patterns for things like textures, animations, and 3D models in computer graphics.

It uses math to make patterns that look random but can be repeated exactly when needed. These patterns are smooth, work well in any
direction, and can be made at different levels of detail using powerful computers.

Two common types of procedural noise are **Perlin noise** and **Simplex noise**, both invented by Ken Perlin.

- Perlin noise, made in 1983, creates smooth patterns using a grid but can sometimes show unwanted lines in complex designs.
- Simplex noise, created later in 2001, fixes these problems by using triangles instead of squares, making it faster and
better for more detailed or high-dimensional projects.

Both are great for creating things like clouds, landscapes, and other realistic effects in games and movies.
</details>

## Catching up

### Creating a car

As we are following straight from another tutorial, you will need to create a car. If you want to go through the whole tutorial in detail, [go through this 3D racing tutorial](/game-design/godot/3dracinggame/0-main-scene/).


If you want to quickly make a car, go through:
<Steps>
1. [Making The Car section](/game-design/godot/3dracinggame/1-making-the-car/)
2. [Car Controls first page](/game-design/godot/3dracinggame/2-car-controls/)
3. The second page of "Car Controls": [Driving the Car](/game-design/godot/3dracinggame/2-car-controls/1)
</Steps>
Then, you've made your car!


### Creating a track

This tutorial also assumes you have made at least one track from the 3D racing game tutorial.
To make your track, follow [these steps to catch up.](/game-design/godot/3dracinggame/3-track-building/)
You do not need to implement the last page (the Extra: Boost page) if you don't want to.


<Box>
## Checklist
<Checklist>
- [ ] I have gone through the other tutorials.
- [ ] I know what procedural noise is.
</Checklist>
</Box>
Loading
Loading