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} } },