Compare commits
30 Commits
2d12cf2a47
...
hexTiling
| Author | SHA1 | Date | |
|---|---|---|---|
| 1b8e4b2676 | |||
| dd8361cf33 | |||
| 4f20dce37f | |||
| eb36acac39 | |||
| ebe7c41578 | |||
| 97172aedf3 | |||
| 6ddf3b2949 | |||
| 4722783018 | |||
| 96d485aabb | |||
| d53b6a97c9 | |||
| eb5b39529a | |||
| af8fdfd30e | |||
| 2adbecea71 | |||
| a0b2aa96ad | |||
| cb1b0bb541 | |||
| 6e51b2f115 | |||
| 738e92c16b | |||
| 938160f053 | |||
| 75a173d0af | |||
| 3bb43edcee | |||
| b318adb469 | |||
| cee4d886c0 | |||
| cd313b363c | |||
| acca8eb92b | |||
| 75f70a1bac | |||
| 5a85c0cae2 | |||
| 3f84ddd8df | |||
| f95f23562e | |||
| 8732caef73 | |||
| dde4848101 |
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
textures/old/
|
||||
12
MazeMesh.js
@ -12,19 +12,18 @@ export default class MazeMesh extends THREE.InstancedMesh {
|
||||
this.map = new Array(length).fill().map(() => new Array(width).fill(1))
|
||||
this.start = new THREE.Vector3(width/2, .1, length/2)
|
||||
this.exit = new THREE.Vector3(Math.floor(width/2), 0, 1)
|
||||
this.count = length * width - 2
|
||||
|
||||
this.dig(this.exit)
|
||||
this.dig(new THREE.Vector3(Math.floor(width/2), 0, 0))
|
||||
this.build ( this.exit )
|
||||
let matrix = new THREE.Matrix4()
|
||||
let i=0
|
||||
this.count = 0
|
||||
this.map.forEach((row, z) => {
|
||||
row.forEach((isWall, x) => {
|
||||
if (isWall) {
|
||||
matrix.setPosition( x + .5 - width/2, 0.5, z + .5 - length/2)
|
||||
this.setMatrixAt( i, matrix );
|
||||
i++
|
||||
this.setMatrixAt( this.count, matrix );
|
||||
this.count++
|
||||
}
|
||||
})
|
||||
})
|
||||
@ -55,6 +54,7 @@ export default class MazeMesh extends THREE.InstancedMesh {
|
||||
|
||||
isWall(position) {
|
||||
if (0 <= position.x && position.x < this.width &&
|
||||
0 <= position.y &&
|
||||
0 <= position.z && position.z < this.length) {
|
||||
return this.map[Math.floor(position.z)][Math.floor(position.x)]
|
||||
} else {
|
||||
@ -62,6 +62,10 @@ export default class MazeMesh extends THREE.InstancedMesh {
|
||||
}
|
||||
}
|
||||
|
||||
collision(position) {
|
||||
return this.isWall(this.worldToLocal(position))
|
||||
}
|
||||
|
||||
toString() {
|
||||
return this.map.map(row =>
|
||||
row.map(isWall => isWall? "██":" ").join("")
|
||||
|
||||
BIN
favicon.ico
Normal file
|
After Width: | Height: | Size: 762 B |
38
favicon.php
@ -2,43 +2,15 @@
|
||||
header('Content-Type: image/x-icon');
|
||||
|
||||
const SIZE = 16;
|
||||
const WALL = 1;
|
||||
const GROUND = 0;
|
||||
|
||||
$favicon = imagecreatetruecolor(SIZE, SIZE);
|
||||
$wallColor = imagecolorallocate($favicon, 165, 80, 30);
|
||||
$groundColor = imagecolorallocate($favicon, 203, 162, 133);
|
||||
$x = filter_input(INPUT_GET, "x", FILTER_SANITIZE_NUMBER_INT);
|
||||
$y = filter_input(INPUT_GET, "y", FILTER_SANITIZE_NUMBER_INT);
|
||||
|
||||
imagefill($favicon, 0, 0, $wallColor);
|
||||
$favicon = imagecreatefrombmp("favicon.ico");
|
||||
|
||||
$maze = array();
|
||||
for ($y = 0; $y < SIZE; $y++) {
|
||||
$maze[$y] = array();
|
||||
for ($x = 0; $x < SIZE; $x++) {
|
||||
$maze[$y][$x] = WALL;
|
||||
}
|
||||
}
|
||||
$red = imagecolorallocate($favicon, 255, 0, 0);
|
||||
imagesetpixel($favicon, $x, $y, $red);
|
||||
|
||||
function dig($position) {
|
||||
global $maze;
|
||||
global $favicon;
|
||||
global $groundColor;
|
||||
$directions = [[0, 1], [0, -1], [1, 0], [-1, 0]];
|
||||
shuffle($directions);
|
||||
foreach ($directions as $direction) {
|
||||
$step1 = [$position[0] + $direction[0], $position[1] + $direction[1]];
|
||||
$step2 = [$step1[0] + $direction[0], $step1[1] + $direction[1]];
|
||||
if (0 <= $step2[1] and $step2[1] < SIZE and 0 <= $step2[0] and $step2[0] < SIZE and $maze[$step2[1]][$step2[0]] == WALL) {
|
||||
$maze[$step1[1]][$step1[0]] = GROUND;
|
||||
imagesetpixel($favicon, $step1[0], $step1[1], $groundColor);
|
||||
$maze[$step2[1]][$step2[0]] = GROUND;
|
||||
imagesetpixel($favicon, $step2[0], $step2[1], $groundColor);
|
||||
dig($step2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dig([1, 1]);
|
||||
imagebmp($favicon);
|
||||
imagedestroy($favicon);
|
||||
?>
|
||||
23
index.html
@ -1,19 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<title>Daedalus</title>
|
||||
<meta charset=utf-8 />
|
||||
<title>Daedalus</title>
|
||||
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
|
||||
<link rel="shortcut icon" type="image/x-icon" href="favicon.php"/>
|
||||
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" id="favicon"/>
|
||||
<link rel="stylesheet" href="style.css">
|
||||
<!-- Import maps polyfill -->
|
||||
<!-- Remove this when import maps will be widely supported -->
|
||||
<script async src="https://unpkg.com/es-module-shims@1.6.3/dist/es-module-shims.js"></script>
|
||||
<script async src="https://cdn.jsdelivr.net/npm/es-module-shims@1.8.3/dist/es-module-shims.min.js"></script>
|
||||
<script type="importmap">
|
||||
{
|
||||
"imports": {
|
||||
"three": "https://unpkg.com/three@0.153/build/three.module.js?module",
|
||||
"three/addons/": "https://unpkg.com/three@0.153/examples/jsm/"
|
||||
"three": "https://cdn.jsdelivr.net/npm/three@0.161.0/build/three.module.min.js",
|
||||
"three/addons/": "https://cdn.jsdelivr.net/npm/three@0.161.0/examples/jsm/",
|
||||
"three-hex-tiling": "https://cdn.jsdelivr.net/npm/three-hex-tiling@0.1.1/dist/index.js"
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@ -142,16 +143,18 @@
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container"></div>
|
||||
<span id="message" class="loading">
|
||||
<div id="loading">
|
||||
<table id="labyTable"></table>
|
||||
<div id="loadingMessage">Construction du labyrinthe : <span id="progress">0</span>%</div>
|
||||
<div>
|
||||
Se déplacer : ↑←↓→, ZQSD ou clic<br/>
|
||||
Sauter : ESPACE<br/>
|
||||
Regarder : Souris
|
||||
</div>
|
||||
<div id="progressCircle" style="--progress: 0deg;">0%</div>
|
||||
</span>
|
||||
</div>
|
||||
<div id="container"></div>
|
||||
<span id="message"></span>
|
||||
|
||||
<script type="module" src="main.js"></script>
|
||||
<script type="module" src="./main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
92
style.css
@ -1,9 +1,47 @@
|
||||
body {
|
||||
margin: 0;
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
font-family: Georgia, serif;
|
||||
background-color: #041626;
|
||||
font-size: 1.3em;
|
||||
overscroll-behavior: none;
|
||||
cursor: wait;
|
||||
}
|
||||
|
||||
#loading {
|
||||
width: fit-content;
|
||||
color: #2c5c88;
|
||||
font-size: 1.3em;
|
||||
top: 20vh;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
#loadingMessage {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
#labyTable {
|
||||
width: 230px;
|
||||
height: 230px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin-top: 20vh;
|
||||
margin-bottom: 5vh;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
#labyTable td {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
transition: background-color 1s;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.wall {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.ground {
|
||||
background-color: #214464;
|
||||
}
|
||||
|
||||
#container {
|
||||
@ -32,58 +70,18 @@ body {
|
||||
justify-content: center;
|
||||
z-index: 1;
|
||||
color: gray;
|
||||
}
|
||||
|
||||
#message.loading {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
top: 20vh;
|
||||
width: 100%;
|
||||
margin: auto;
|
||||
align-items: center;
|
||||
gap: 5rem;
|
||||
text-align: center;
|
||||
font-size: 1.7em;
|
||||
}
|
||||
|
||||
#progressCircle {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
border: 4px solid dimgray;
|
||||
border-radius: 50%;
|
||||
font-size: 0;
|
||||
font-size: 3vh;
|
||||
font-weight: 700;
|
||||
font-family: system-ui;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#progressCircle::after {
|
||||
content: "";
|
||||
display: flex;
|
||||
position: absolute;
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
top: -4px;
|
||||
left: -4px;
|
||||
border: 4px solid #1da8b7;
|
||||
border-radius: 50%;
|
||||
mask: conic-gradient(black var(--progress), transparent var(--progress));
|
||||
font-family: Times, "Times New Roman", Georgia, serif;
|
||||
}
|
||||
|
||||
#message a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
#message.escaped {
|
||||
display: flex;
|
||||
display: block;
|
||||
opacity: 100%;
|
||||
font-size: 10vh;
|
||||
font-size: 4vh;
|
||||
text-align: center;
|
||||
top: 30vh;
|
||||
animation: escaped 5s;
|
||||
}
|
||||
|
||||
3
textures/Poly-cobblestone-wall/Made with Poly.txt
Normal file
@ -0,0 +1,3 @@
|
||||
This asset was made with Poly, an AI-generated design asset marketplace that lets you find and create incredibly life-like, detailed, and artistic assets for your next project, in seconds.
|
||||
|
||||
Get started for free at https://withpoly.com
|
||||
BIN
textures/Poly-cobblestone-wall/ao_map.jpg
Normal file
|
After Width: | Height: | Size: 4.8 MiB |
BIN
textures/Poly-cobblestone-wall/ao_map.webp
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
textures/Poly-cobblestone-wall/color_map.jpg
Normal file
|
After Width: | Height: | Size: 7.3 MiB |
BIN
textures/Poly-cobblestone-wall/color_map.webp
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
BIN
textures/Poly-cobblestone-wall/displacement_map.jpg
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
textures/Poly-cobblestone-wall/displacement_map.webp
Normal file
|
After Width: | Height: | Size: 209 KiB |
BIN
textures/Poly-cobblestone-wall/normal_map_opengl.jpg
Normal file
|
After Width: | Height: | Size: 5.7 MiB |
BIN
textures/Poly-cobblestone-wall/normal_map_opengl.webp
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
textures/Poly-cobblestone-wall/render_map.jpg
Normal file
|
After Width: | Height: | Size: 7.4 MiB |
BIN
textures/Poly-cobblestone-wall/render_map.webp
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
BIN
textures/Poly-cobblestone-wall/roughness_map.jpg
Normal file
|
After Width: | Height: | Size: 2.6 MiB |
BIN
textures/Poly-cobblestone-wall/roughness_map.webp
Normal file
|
After Width: | Height: | Size: 324 KiB |
23
textures/Poly-cobblestone-wall/settings.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"prompt_text": "cobblestone wall with grass and flowers between rocks",
|
||||
"patch": {
|
||||
"ext": "png",
|
||||
"dtype": "uint8",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"url": "https://static-dev.withpoly.com/v3-voronoi/textures/patches/486f8eed-0dfd-4bdc-9dee-3776fc72b1f1.png",
|
||||
"patch_id": "GVpEsGuQ8S"
|
||||
},
|
||||
"seamless_prompt_text": "cobblestone wall with grass and flowers between rocks",
|
||||
"seamless_patch_scale": 0.98,
|
||||
"upscale_prompt_text": "cobblestone wall with grass and flowers between rocks",
|
||||
"upscale_resolution": 4096,
|
||||
"is_seamless": true,
|
||||
"pbr_mode": "organic",
|
||||
"pbr_use_render_as_color": true,
|
||||
"pbr_generate_normal": true,
|
||||
"pbr_generate_height": true,
|
||||
"pbr_generate_ao": true,
|
||||
"pbr_generate_roughness": true,
|
||||
"pbr_generate_metallic": false
|
||||
}
|
||||
3
textures/Poly-wood/Made with Poly.txt
Normal file
@ -0,0 +1,3 @@
|
||||
This asset was made with Poly, an AI-generated design asset marketplace that lets you find and create incredibly life-like, detailed, and artistic assets for your next project, in seconds.
|
||||
|
||||
Get started for free at https://withpoly.com
|
||||
BIN
textures/Poly-wood/ao_map.jpg
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
textures/Poly-wood/ao_map.webp
Normal file
|
After Width: | Height: | Size: 372 KiB |
BIN
textures/Poly-wood/color_map.jpg
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
textures/Poly-wood/color_map.webp
Normal file
|
After Width: | Height: | Size: 595 KiB |
BIN
textures/Poly-wood/displacement_map.jpg
Normal file
|
After Width: | Height: | Size: 542 KiB |
BIN
textures/Poly-wood/displacement_map.webp
Normal file
|
After Width: | Height: | Size: 184 KiB |
BIN
textures/Poly-wood/normal_map_opengl.jpg
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
textures/Poly-wood/normal_map_opengl.webp
Normal file
|
After Width: | Height: | Size: 803 KiB |
BIN
textures/Poly-wood/render_map.jpg
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
BIN
textures/Poly-wood/render_map.webp
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
textures/Poly-wood/roughness_map.jpg
Normal file
|
After Width: | Height: | Size: 475 KiB |
BIN
textures/Poly-wood/roughness_map.webp
Normal file
|
After Width: | Height: | Size: 128 KiB |
23
textures/Poly-wood/settings.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"prompt_text": "wood, planks, wooden, green paint, painted wood, paint, scrathes, raw wood, peeling paint",
|
||||
"patch": {
|
||||
"ext": "png",
|
||||
"dtype": "uint8",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"url": "https://static-dev.withpoly.com/v3-voronoi/textures/patches/0ddfc901-a5dd-40f0-993b-8de3ccefb7f7.png",
|
||||
"patch_id": "a79eceALs5"
|
||||
},
|
||||
"seamless_prompt_text": "wood, planks, wooden, green paint, painted wood, paint, scrathes, raw wood, peeling paint",
|
||||
"seamless_patch_scale": 0.8,
|
||||
"upscale_prompt_text": "wood, planks, wooden, green paint, painted wood, paint, scrathes, raw wood, peeling paint",
|
||||
"upscale_resolution": 4096,
|
||||
"is_seamless": true,
|
||||
"pbr_mode": "matte",
|
||||
"pbr_generate_color": true,
|
||||
"pbr_generate_normal": true,
|
||||
"pbr_generate_height": true,
|
||||
"pbr_generate_ao": true,
|
||||
"pbr_generate_roughness": true,
|
||||
"pbr_generate_metallic": false
|
||||
}
|
||||
BIN
textures/angled-blocks-vegetation/albedo.webp
Normal file
|
After Width: | Height: | Size: 566 KiB |
BIN
textures/angled-blocks-vegetation/ao-roughness-metalness.png
Normal file
|
After Width: | Height: | Size: 2.3 MiB |
BIN
textures/angled-blocks-vegetation/ao-roughness-metalness.webp
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
textures/angled-blocks-vegetation/ao.webp
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
textures/angled-blocks-vegetation/height.webp
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
textures/angled-blocks-vegetation/metallic.webp
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
textures/angled-blocks-vegetation/normal-dx.webp
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
textures/angled-blocks-vegetation/roughness.webp
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
textures/calm-sea-skybox/bk.webp
Normal file
|
After Width: | Height: | Size: 160 KiB |
BIN
textures/calm-sea-skybox/dn.webp
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
textures/calm-sea-skybox/ft.webp
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
textures/calm-sea-skybox/lf.webp
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
textures/calm-sea-skybox/rt.webp
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
textures/calm-sea-skybox/up.webp
Normal file
|
After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 7.0 MiB |
|
Before Width: | Height: | Size: 556 KiB |
|
Before Width: | Height: | Size: 5.6 MiB |
|
Before Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 9.6 MiB |
|
Before Width: | Height: | Size: 2.4 MiB |
BIN
textures/waternormals.webp
Normal file
|
After Width: | Height: | Size: 81 KiB |
|
Before Width: | Height: | Size: 115 KiB |