diff --git a/CHANGELOG.md b/CHANGELOG.md
index 92101c9..866dde7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,29 @@
+## Version 1.2.7 (December 2025) (not complete)
+
+ - Remove standard deviation graphs from BiomeGen page.
+ - Automatically check most efficient number of processes for BiomeGen page.
+
+## Version 1.2.6 (November 2025)
+
+ - Added 4K and 10K x 10K results to BiomeGen graphs.
+
+## Version 1.2.5 (November 2025)
+
+ - Updated BiomeGen statistics for v3.0.1.
+
+## Version 1.2.4 (November 2025)
+
+ - Updated BiomeGen page and statistics for v3.0.0.
+
+## Version 1.2.3 (November 2025)
+
+ - Removed C rewrite progress bar.
+ - Edited BiomeGen page for v2.1.6.
+
+## Version 1.2.2 (November 2025)
+
+ - Changed C language colour.
+
## Version 1.2.1 (November 2025)
- Added cookie reader function.
@@ -7,7 +33,7 @@
- Added a cookie for improved data loading speed.
- Added a cookie for improved elements loading speed.
- - Remove usage of JavaScript var keyword.
+ - Removed usage of JavaScript var keyword.
## Version 1.1.0 (November 2025)
@@ -17,7 +43,7 @@
- Added documentation comments for Python.
- Added PwrStat GUI v1.1.2 files.
- - Remove PwrStat GUI all_versions download (exceed GitHub size limits).
+ - Removed PwrStat GUI all_versions download (exceed GitHub size limits).
## Version 1.0.11 (October 2025)
@@ -48,7 +74,7 @@
## Version 1.0.6 (September 2025)
- Added C to language statistics, removed Bash, C#, and Java.
- - Fix text covering in projects bar chart.
+ - Fixed text covering in projects bar chart.
- Change project text colouring.
## Version 1.0.5 (September 2025)
diff --git a/README.md b/README.md
index b3a3931..a20a47f 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# My Website
### Released August 2025
-### Version 1.2.1
+### Version 1.2.6
### Updated November 2025
diff --git a/data-loader.js b/data-loader.js
index 93d0c48..c6932fe 100644
--- a/data-loader.js
+++ b/data-loader.js
@@ -61,9 +61,9 @@ async function loadData() {
let html = new Language("HTML", "html", "#DD4000", "None", [""]);
let css = new Language("CSS", "css", "#600090");
let javaScript = new Language("JavaScript", "js", "#DDAA00");
- let c = new Language("C", "c", "#050520");
- // let cpp = new Language("C++", "cpp", "#101040");
- // let cSharp = new Language("C#", "cs", "#151560");
+ let c = new Language("C", "c", "#5050a0");
+ // let cpp = new Language("C++", "cpp", "#202040");
+ // let cSharp = new Language("C#", "cs", "#080820");
let languages = [python, html, css, javaScript, c];
// Licenses
@@ -78,7 +78,7 @@ async function loadData() {
let biomeGen = new Project(
"BiomeGen", "A map generation and visualization tool.", gpl3, "July 2025",
- ["main.py", "autorun.c"]
+ ["main.c", "autorun.c"]
);
let pwrStatGUI = new Project(
"PwrStat GUI", "An app for viewing CyberPower UPS info.", gpl3, "July 2025", ["main.py"]
diff --git a/projects/biomegen/index.html b/projects/biomegen/index.html
index 0bdaaef..1a383ff 100644
--- a/projects/biomegen/index.html
+++ b/projects/biomegen/index.html
@@ -95,26 +95,21 @@
-
-
BiomeGen is a map generation and visualization console app,
- written in Python. It uses Python's multiprocessing library for
- better generation speed and efficiency. It can generate various
- land biomes and water with shading for depth. It uses by own
- algorithm, and splits the map into polygons, which allows for a
- good final product, while avoiding the resource demand of
- individually generating every pixel. The generator also has a
- number of settings, allowing users to influence the map's
- general look, including map dimensions, island abundance and
- size, and coastline smoothness. You can also change the number
- of CPU threads used in map generation, allowing for reduced
- generation times. Version 1.0.0 was released in July 2025, and
- the project is under the General Public License v3.0.
+ written in C. It uses forks in C for better efficiency. It can
+ generate various land biomes and water with shading for depth.
+ It uses my own algorithm, and splits the map into polygons,
+ which allows for a good final product, while avoiding the
+ resource demand of individually generating every pixel. The
+ generator also has a number of settings, allowing users to
+ influence the map's general look, including map dimensions,
+ island abundance and size, and coastline smoothness. You can
+ also change the number of CPU threads used in map generation,
+ allowing for reduced generation times. Version 1.0.0 was
+ released in July 2025, and the project is under the General
+ Public License v3.0.
@@ -146,14 +141,15 @@
Below are a variety of graphs relating to BiomeGen's performance
across versions, processor counts, and resolutions. Graphs with
no specified resolution are at 1080p, and graphs with no
- specified number of processes are at the fastest number, 8.
- Pixels per second are measured by the number of pixels generated
- (~2.07M for 1080p) divided by the seconds of generation. The
- machine used for these tests has a 16-thread processor, 32 GB of
- RAM, and is running on antiX 23.2 (a Debian-based Linux distro).
- Versions not included are not significantly different from
- their previous version. Versions 2.1.0 and 2.1.1 are not
- significantly different from 2.1.2, the first included version.
+ specified number of processes are at the fastest number, 8 or
+ 16. Pixels per second are measured by the number of pixels
+ generated (~2.07M for 1080p) divided by the seconds of
+ generation. The machine used for these tests has a 16-thread
+ processor, 32 GB of RAM, and is running on antiX 23.2 (a
+ Debian-based Linux distro). Versions not included are not
+ significantly different from their previous version. Versions
+ 2.1.0 and 2.1.1 are not significantly different from 2.1.2, the
+ first included version.
@@ -162,9 +158,6 @@
-
-
-
@@ -183,9 +176,6 @@
-
-
-
diff --git a/projects/biomegen/script.js b/projects/biomegen/script.js
index 0850d56..e9a6603 100644
--- a/projects/biomegen/script.js
+++ b/projects/biomegen/script.js
@@ -2,20 +2,15 @@
const startTime = new Date();
-// Import From Data Loader
-
-import { projects } from "/data-loader.js";
-
// Test Result Class
class TestResult {
- constructor(version, width, height, processes, mean, std_dev, pix_per_sec, pct5, pct50, pct95){
+ constructor(version, width, height, processes, mean, pix_per_sec, pct5, pct50, pct95){
this.version = version;
this.width = width;
this.height = height;
this.processes = processes;
this.mean = mean;
- this.std_dev = std_dev;
this.pix_per_sec = pix_per_sec;
this.pct5 = pct5;
this.pct50 = pct50;
@@ -24,38 +19,16 @@ class TestResult {
}
-// C Rerwite Progress Bar
-
-// Getting Number of Lines Left
-
-let urlName =
- "https://raw.githubusercontent.com/Liam-Ralph/biomegen/refs/heads/c-rewrite/main_left.txt";
-let response = await fetch(urlName);
-const fileText = await response.text();
-const linesLeft = fileText.split("\n").length;
-
-// Calculating Progress Percentage
-
-const linesTotal = projects[0].linesList[0];
-const progress = (linesTotal - linesLeft) / linesTotal;
-
-// Updating Progress bar
-
-let barInner = document.getElementById("c-rewrite-progress-bar-inner");
-barInner.textContent =
- "C Rewrite Progress: " + Math.round(progress * 1000) / 10 + "%";
-barInner.style.width =
- (document.getElementById("c-rewrite-progress-bar").offsetWidth * progress - 20) + "px";
-
-
// Statistics
// Getting CSV Data
-urlName = "https://raw.githubusercontent.com/Liam-Ralph/biomegen/refs/heads/main/autorun_results.csv";
-response = await fetch(urlName);
-const csvLines = await response.text()
-let csvTextLines = csvLines.split("\n");
+
+let urlName =
+ "https://raw.githubusercontent.com/Liam-Ralph/biomegen/refs/heads/main/autorun_results.csv";
+let response = await fetch(urlName);
+const csvLines = await response.text();
+let csvTextLines = csvLines.trim().split("\n");
csvTextLines = csvTextLines.splice(1, csvTextLines.length - 1);
// Creating Test Results
@@ -63,19 +36,34 @@ csvTextLines = csvTextLines.splice(1, csvTextLines.length - 1);
let testResults = [];
for (let i in csvTextLines) {
- let textLine = csvTextLines[i].split(", ");
+ let textLine = csvTextLines[i].split(", ");
testResults.push(
new TestResult(
textLine[0], Number(textLine[1]), Number(textLine[2]), // version, width, height
Number(textLine[3]), // processes (reps ignored)
- Number(textLine[5]), Number(textLine[6]), // mean, standard_deviation
- Number(textLine[7]), // pixels per second
+ Number(textLine[5]), Number(textLine[7]),
+ // mean (standard deviation ignored), pixels per second
Number(textLine[8]), Number(textLine[10]), Number(textLine[12])
// 5th, 50th, and 95th percentiles (25th and 75th ignored)
)
);
}
+const newestVersion = testResults[testResults.length - 1].version;
+
+let bestProcesses = {1920: 8, 2560: 8, 3840: 8, 7680: 8, 10000: 8};
+let results8 = {1920: 0, 2560: 0, 3840: 0, 7680: 0, 10000: 0};
+for (let i in testResults) {
+ let result = testResults[i];
+ if (result.version == newestVersion) {
+ if (result.processes == 8) {
+ results8[result.width] = result.mean;
+ } else if (result.processes == 16 && result.mean < results8[result.width]) {
+ bestProcesses[result.width] == 16;
+ }
+ }
+}
+
// Getting Graph Values
let xValues = {
@@ -86,15 +74,13 @@ let xValues = {
};
let yValues = {
"Version vs Time": [[], [], [], []], // mean, 5th pct, 50th pct, 95th pct
- "Version vs Pix Per Sec": [[], [], []], // 1080p, 1440p, 4K
- "Version vs Std Dev": [[], [], []],
+ "Version vs Pix Per Sec": [[], [], [], [], []], // 1080p, 1440p, 4K, 8K, 10K
"Resolution vs Time": [[], [], [], []],
"Pixels vs Time": [[], [], [], []],
"Resolution vs Pix Per Sec": [],
"Pixels vs Pix Per Sec": [],
"Processes vs Time": [[], [], [], []],
- "Processes vs Pix Per Sec": [[], [], []],
- "Processes vs Std Dev": [[], [], []]
+ "Processes vs Pix Per Sec": [[], [], [], [], []]
};
for (let i in testResults) {
@@ -103,7 +89,10 @@ for (let i in testResults) {
// Not in order
- if (result.processes === 8) {
+ if (
+ result.version != newestVersion ||
+ (result.version == newestVersion && (bestProcesses[result.width] == result.processes))
+ ) {
let index = 0;
@@ -132,15 +121,23 @@ for (let i in testResults) {
break;
+ case 7680:
+
+ index = 3;
+
+ break;
+
+ case 10000:
+
+ index = 4;
+
+ break;
+
}
yValues["Version vs Pix Per Sec"][index].push(result.pix_per_sec);
- yValues["Version vs Std Dev"][index].push(
- result.std_dev / result.mean * 100
- );
-
- if (result.version === testResults[0].version) {
+ if (result.version === newestVersion) {
xValues["Resolution"].push(result.width + "x" + result.height);
xValues["Pixels"].push(result.width * result.height);
@@ -163,7 +160,7 @@ for (let i in testResults) {
}
- if (result.version === testResults[0].version) {
+ if (result.version === newestVersion) {
let index = 0;
@@ -192,14 +189,22 @@ for (let i in testResults) {
break;
+ case 7680:
+
+ index = 3;
+
+ break;
+
+ case 10000:
+
+ index = 4;
+
+ break;
+
}
yValues["Processes vs Pix Per Sec"][index].push(result.pix_per_sec);
- yValues["Processes vs Std Dev"][index].push(
- result.std_dev / result.mean * 100
- );
-
}
}
@@ -220,28 +225,35 @@ new Chart(graph, {
{
label: "5th Percentile",
backgroundColor: "#808080",
+ borderColor: "#808080",
data: yValues["Version vs Time"][1]
},
{
label: "Mean",
backgroundColor: "#0000FF",
+ borderColor: "#0000FF",
data: yValues["Version vs Time"][0]
},
{
label: "50th Percentile",
backgroundColor: "#00FF00",
+ borderColor: "#00FF00",
data: yValues["Version vs Time"][2]
},
{
label: "95th Percentile",
backgroundColor: "#808080",
+ borderColor: "#808080",
data: yValues["Version vs Time"][3]
}
]
},
options: {
plugins: {
- legend: {display: false},
+ legend: {
+ display: true,
+ position: "bottom",
+ },
title: {
display: true,
text: "Version vs Time",
@@ -280,53 +292,14 @@ new Chart(graph, {
{
label: "4K",
data: yValues["Version vs Pix Per Sec"][2]
- }
- ]
- },
- options: {
- plugins: {
- legend: {
- display: true,
- position: "bottom",
- },
- title: {
- display: true,
- text: "Version vs Pixels per Second",
- font: {size: 26}
- }
- },
- scales: {
- x: {
- grid: {color: "#606060"}
- },
- y: {
- grid: {color: "#606060"},
- min: 0
- }
- }
- }
-});
-
-// Processes vs Standard Deviation
-
-graph = document.getElementById("graph-version-std_dev");
-
-new Chart(graph, {
- type: "line",
- data: {
- labels: xValues["Version"],
- datasets: [
- {
- label: "1080p",
- data: yValues["Version vs Std Dev"][0]
},
{
- label: "1440p",
- data: yValues["Version vs Std Dev"][1]
+ label: "8K",
+ data: yValues["Version vs Pix Per Sec"][3]
},
{
- label: "4K",
- data: yValues["Version vs Std Dev"][2]
+ label: "10K x 10K",
+ data: yValues["Version vs Pix Per Sec"][4]
}
]
},
@@ -338,7 +311,7 @@ new Chart(graph, {
},
title: {
display: true,
- text: "Version vs Standard Deviation",
+ text: "Version vs Pixels per Second",
font: {size: 26}
}
},
@@ -354,7 +327,6 @@ new Chart(graph, {
}
});
-
// Resolution vs Time
graph = document.getElementById("graph-resolution-time");
@@ -544,16 +516,16 @@ new Chart(graph, {
data: {
labels: xValues["Processes"],
datasets: [
- {
- label: "Mean",
- borderColor: "#0000FF",
- data: yValues["Processes vs Time"][0]
- },
{
label: "5th Percentile",
borderColor: "#808080",
data: yValues["Processes vs Time"][1]
},
+ {
+ label: "Mean",
+ borderColor: "#0000FF",
+ data: yValues["Processes vs Time"][0]
+ },
{
label: "50th Percentile",
borderColor: "#00FF00",
@@ -610,53 +582,14 @@ new Chart(graph, {
{
label: "4K",
data: yValues["Processes vs Pix Per Sec"][2]
- }
- ]
- },
- options: {
- plugins: {
- legend: {
- display: true,
- position: "bottom",
- },
- title: {
- display: true,
- text: "Processes vs Pixels per Second",
- font: {size: 26}
- }
- },
- scales: {
- x: {
- grid: {color: "#606060"}
- },
- y: {
- grid: {color: "#606060"},
- min: 0
- }
- }
- }
-});
-
-// Processes vs Standard Deviation
-
-graph = document.getElementById("graph-processes-std_dev");
-
-new Chart(graph, {
- type: "line",
- data: {
- labels: xValues["Processes"],
- datasets: [
- {
- label: "1080p",
- data: yValues["Processes vs Std Dev"][0]
},
{
- label: "1440p",
- data: yValues["Processes vs Std Dev"][1]
+ label: "8K",
+ data: yValues["Processes vs Pix Per Sec"][3]
},
{
- label: "4K",
- data: yValues["Processes vs Std Dev"][2]
+ label: "10K x 10K",
+ data: yValues["Processes vs Pix Per Sec"][4]
}
]
},
@@ -668,7 +601,7 @@ new Chart(graph, {
},
title: {
display: true,
- text: "Processes vs Standard Deviation (Percent of Mean Time)",
+ text: "Processes vs Pixels per Second",
font: {size: 26}
}
},