Done with the samples, and can be released as first version!

This commit is contained in:
2025-01-13 14:27:20 +01:00
parent 425e583bbe
commit 6a16200a51
27 changed files with 628 additions and 93 deletions

30
main.py
View File

@ -43,7 +43,35 @@ def uni():
@app.route('/projects') @app.route('/projects')
def projects(): def projects():
return render_template('projects/projects.html') posts = []
with open("posts.json", "r") as f:
posts = json.load(f)
posts.reverse()
return render_template('projects/projects.html', post_data=posts)
@app.route('/projects/search', methods=['GET', 'POST'])
def search():
searched = request.args.get('searched')
searched = str(searched).lower()
posts = []
with open("posts.json", "r") as f:
posts = json.load(f)
posts.reverse()
if searched == "":
return render_template('projects/projects.html', post_data=posts)
found = []
for i in posts:
if searched in [j.lower() for j in i['topics']] and i not in found:
found.append(i)
if searched in i['title'].lower() and i not in found:
found.append(i)
if searched in i['content'].lower() and i not in found:
found.append(i)
if searched in i['date'] and i not in found:
found.append(i)
return render_template('projects/projects.html', post_data=found)
@app.route('/git') @app.route('/git')
def git(): def git():

View File

@ -16,11 +16,19 @@
"topics": ["Godot", "Game developement"] "topics": ["Godot", "Game developement"]
}, },
{ {
"slug": "third-post-title", "slug": "platformer-game-developement-in-unity",
"title": "My Third Post", "title": "Game developement in Unity 6",
"content": "This is the content for my third post. It's about a new journey I'm embarking on.", "content": "The content of thi spost is generated, and its only purpose is to test the site.",
"date": "2025-01-14", "date": "2025-01-14",
"image_location": "images/post3.jpg", "image_location": "images/posts/platformer-game-developement-in-unity/unity_wide_logo.png",
"topics": ["Adventure", "Personal", "Growth"] "topics": ["Unity", "Game developement", "Guide"]
},
{
"slug": "platformer-game-developement-in-unreal-engine",
"title": "Game developement in Unreal Engine ",
"content": "The content of thi spost is generated, and its only purpose is to test the site.",
"date": "2025-01-14",
"image_location": "images/posts/platformer-game-developement-in-unreal-engine/unreal_engine_wide_logo.png",
"topics": ["Unreal Engine", "Game developement", "Guide"]
} }
] ]

View File

@ -151,9 +151,12 @@ body {
} }
.main .card img { .main .card img {
width: 100%; width: fit-content;
height: 150px; height: fit-content;
object-fit: cover; margin: auto;
max-height: 150px;
max-width: 100%;
object-fit: contain;
border-radius: 8px; border-radius: 8px;
margin-bottom: 10px; margin-bottom: 10px;
} }
@ -221,3 +224,52 @@ body {
.footer a:hover { .footer a:hover {
text-decoration: underline; text-decoration: underline;
} }
.card-buttons {
display: flex;
justify-content: center;
gap: 20px;
margin-top: 15px;
height: fit-content;
}
.card-buttons .btn {
padding: 12px 24px;
font-size: 1rem;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
text-transform: uppercase;
color: #fff;
border: none;
border-radius: 8px;
cursor: pointer;
transition: transform 0.3s ease, background 0.3s ease;
width: 100%;
max-width: 160px;
height: 100%;
}
.card-buttons .btn {
background: linear-gradient(to right, #5a0fb8, #1f65d6);
}
.card-buttons .btn:hover {
background: linear-gradient(to right, #1f65d6, #5a0fb8);
transform: scale(1.05);
}
.card .topics {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 8px;
margin: 5px;
}
.card .topics .topic {
font-size: 0.85em;
color: #777;
background-color: #efefef;
border-radius: 16px;
padding: 4px 10px;
height: fit-content;
}

View File

@ -40,16 +40,6 @@ a:hover {
color: #ff5733; color: #ff5733;
} }
img {
width: 30%;
min-height: 30%;
height: auto;
border-radius: 10px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
margin-bottom: 20px;
float: right;
margin-left: 20px;
}
.step { .step {
margin-bottom: 2em; margin-bottom: 2em;
@ -58,20 +48,33 @@ img {
border-radius: 10px; border-radius: 10px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
display: flex; display: flex;
align-items: center; align-items: center; /* This will center the image vertically */
gap: 20px; gap: 20px;
justify-content: flex-start; /* Ensure the content is aligned at the start horizontally */
} }
.step img { .step img {
max-width: 40%; width: 30%;
margin: 0; min-height: 30%;
height: auto;
border-radius: 10px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
margin: auto;
float: none;
} }
.step-content { .step-content {
flex: 1; flex: 1;
display: flex;
flex-direction: column;
justify-content: flex-start;
gap: 20px;
overflow: hidden;
} }
.step pre { .step pre {
margin: auto;
text-align: left;
background: rgba(30, 30, 30, 1); background: rgba(30, 30, 30, 1);
color: #cfcfcf; color: #cfcfcf;
font-family: 'Courier New', Courier, monospace; font-family: 'Courier New', Courier, monospace;
@ -80,12 +83,41 @@ img {
border: 1px solid #444; border: 1px solid #444;
border-radius: 10px; border-radius: 10px;
overflow-x: auto; overflow-x: auto;
width: fit-content;
max-width: 100%;
box-sizing: border-box;
height: auto;
position: relative; /* Needed for positioning the button */
word-wrap: break-word;
white-space: pre-wrap;
} }
.copy-btn {
position: absolute;
top: 10px;
right: 10px;
background-color: #1f65d6;
color: white;
border: none;
padding: 5px 10px;
font-size: 0.8rem;
cursor: pointer;
border-radius: 5px;
transition: background-color 0.3s;
}
.copy-btn:hover {
background-color: #5a0fb8;
}
.copy-btn:focus {
outline: none;
}
.button { .button {
display: inline-block; display: inline-block;
padding: 10px 20px; padding: 10px 20px;
margin-top: 10px;
background: linear-gradient(to right, #5a0fb8, #1f65d6); background: linear-gradient(to right, #5a0fb8, #1f65d6);
color: white; color: white;
border-radius: 5px; border-radius: 5px;
@ -93,6 +125,8 @@ img {
text-decoration: none; text-decoration: none;
text-shadow: none; text-shadow: none;
transition: background 0.3s; transition: background 0.3s;
width: fit-content;
margin: 0px auto;
} }
.button:hover { .button:hover {
@ -100,15 +134,6 @@ img {
color: white; color: white;
} }
pre{
max-width: 100%;
width: fit-content;
align-content: left;
text-align: left;
margin: auto;
overflow-x: auto;
}
@media (max-width: 768px) { @media (max-width: 768px) {
img { img {
float: none; float: none;
@ -120,11 +145,11 @@ pre{
.step { .step {
flex-direction: column; flex-direction: column;
text-align: center; text-align: center;
} max-width: 100%;
width: 100%;
pre, code {
margin: 10px auto;
max-width: 90%;
} }
} }
article p{
text-align: justify;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 668 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

View File

@ -0,0 +1,69 @@
document.addEventListener("DOMContentLoaded", () => {
const images = Array.from(document.getElementsByTagName('img'));
images.forEach(image => {
image.style.cursor = 'pointer';
image.addEventListener("click", function (){
const fullScreenDiv = document.createElement("div");
fullScreenDiv.style.position = "fixed";
fullScreenDiv.style.top = 0;
fullScreenDiv.style.left = 0;
fullScreenDiv.style.width = "100%";
fullScreenDiv.style.height = "100%";
fullScreenDiv.style.backgroundColor = "rgba(0, 0, 0, 0.8)";
fullScreenDiv.style.display = "flex";
fullScreenDiv.style.justifyContent = "center";
fullScreenDiv.style.alignItems = "center";
fullScreenDiv.style.zIndex = 1000;
const fullScreenImage = document.createElement("img");
fullScreenImage.src = image.src;
fullScreenImage.style.maxWidth = "90%";
fullScreenImage.style.maxHeight = "90%";
fullScreenImage.style.boxShadow = "0 4px 10px rgba(0, 0, 0, 0.5)";
fullScreenImage.style.borderRadius = "10px";
fullScreenImage.style.cursor = 'pointer';
fullScreenDiv.appendChild(fullScreenImage);
fullScreenDiv.addEventListener("click", () => {
document.body.removeChild(fullScreenDiv);
});
document.body.appendChild(fullScreenDiv);
});
});
});
function copyToClipboard(button) {
// Find the <pre> block (the parent of the button)
const preBlock = button.closest('pre');
// Get the text content of the <code> inside the <pre> block
const codeContent = preBlock.querySelector('code').innerText;
// Create a temporary textarea to copy the content
const tempTextArea = document.createElement('textarea');
tempTextArea.value = codeContent;
// Append the textarea to the document (it needs to be in the DOM to work)
document.body.appendChild(tempTextArea);
// Select the text inside the textarea
tempTextArea.select();
// Execute the copy command
document.execCommand('copy');
// Remove the temporary textarea from the document
document.body.removeChild(tempTextArea);
// Optionally: Provide feedback to the user (e.g., change button text)
button.innerText = "Copied!";
// Reset the button text after 2 seconds
setTimeout(() => {
button.innerText = "Copy";
}, 2000);
}

View File

@ -1,22 +1,6 @@
{% extends "main.html" %} {% extends "main.html" %}
{% block content %} {% block content %}
<style> <style>
.card .topics {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 8px;
margin-top: 20px;
}
.card .topics .topic {
font-size: 0.85em;
color: #777;
background-color: #efefef;
border-radius: 16px;
padding: 4px 10px;
}
</style> </style>
<main class="main"> <main class="main">
<div class="intro"> <div class="intro">

View File

@ -3,7 +3,8 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Portfolio</title> <meta name="author" content="Máté Gosztolya">
<title>Matthew's website</title>
<link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}">
<link rel="shortcut icon" href="{{ url_for('static', filename='images/home/logo.jpg') }}" type="image/x-icon"> <link rel="shortcut icon" href="{{ url_for('static', filename='images/home/logo.jpg') }}" type="image/x-icon">
@ -16,7 +17,7 @@
<nav> <nav>
<a href="{{ url_for('home') }}">Home</a> <a href="{{ url_for('home') }}">Home</a>
<a href="{{ url_for('git') }}">Git</a> <a href="{{ url_for('git') }}">Git</a>
<a href="{{ url_for('projects') }}">Projects</a> <a href="{{ url_for('projects') }}">Posts</a>
<a href="{{ url_for('uni') }}">UNI</a> <a href="{{ url_for('uni') }}">UNI</a>
<a href="{{ url_for('about') }}">About</a> <a href="{{ url_for('about') }}">About</a>

View File

@ -2,6 +2,7 @@
{% block content %} {% block content %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/post.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='css/post.css') }}">
<script src="{{ url_for('static', filename='script/image_viewer.js') }}"></script>
<main class="main"> <main class="main">
<section class="intro"> <section class="intro">
<h1></h1> <h1></h1>
@ -49,7 +50,7 @@
<div class="step-content"> <div class="step-content">
<h3></h3> <h3></h3>
<p></p> <p></p>
<pre><code class="language-gdscript"></code></pre> <pre><code class="language-gdscript"><button class="copy-btn" onclick="copyToClipboard(this)">Copy</button></code></pre>
</div> </div>
</article> </article>
@ -58,7 +59,7 @@
<div class="step-content"> <div class="step-content">
<h3></h3> <h3></h3>
<p></p> <p></p>
<pre><code class="language-gdscript"></code></pre> <pre><code class="language-gdscript"><button class="copy-btn" onclick="copyToClipboard(this)">Copy</button></code></pre>
</div> </div>
</article> </article>

View File

@ -2,6 +2,7 @@
{% block content %} {% block content %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/post.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='css/post.css') }}">
<script src="{{ url_for('static', filename='script/image_viewer.js') }}"></script>
<main class="main"> <main class="main">
<section class="intro"> <section class="intro">
<h1>Game Development from Scratch: A Comprehensive Guide</h1> <h1>Game Development from Scratch: A Comprehensive Guide</h1>
@ -62,7 +63,7 @@
<pre><code class="language-gdscript">extends Node2D <pre><code class="language-gdscript">extends Node2D
func _ready(): func _ready():
print("Hello, Godot!")</code></pre> print("Hello, Godot!")<button class="copy-btn" onclick="copyToClipboard(this)">Copy</button></code></pre>
</div> </div>
</article> </article>
@ -83,7 +84,7 @@ func _physics_process(delta):
velocity.x += SPEED velocity.x += SPEED
if Input.is_action_pressed("ui_left"): if Input.is_action_pressed("ui_left"):
velocity.x -= SPEED velocity.x -= SPEED
velocity = move_and_slide(velocity)</code></pre> velocity = move_and_slide(velocity)<button class="copy-btn" onclick="copyToClipboard(this)">Copy</button></code></pre>
</div> </div>
</article> </article>

View File

@ -0,0 +1,142 @@
{% extends "main.html" %}
{% block content %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/post.css') }}">
<script src="{{ url_for('static', filename='script/image_viewer.js') }}"></script>
<main class="main">
<section class="intro">
<h1>Game Development in Unity: A Comprehensive Guide</h1>
<p>
Welcome to the ultimate guide for Unity game development! Whether youre a beginner or an experienced developer, this page walks you through the entire process of creating a game from scratch using Unity. Explore every step, tool, and resource needed to bring your vision to life.
</p>
<p>
Unity is a powerful and versatile game engine that allows you to create both 2D and 3D games. Lets dive in and learn how to make your dream game a reality!
</p>
</section>
<section class="features">
<h2>Why Choose Unity?</h2>
<div class="step">
<img src="{{ url_for('static', filename='images/posts/platformer-game-developement-in-unity/unity_wide_logo.png') }}" alt="Unity Logo">
<div class="step-content">
<ul>
<li><strong>Cross-Platform:</strong> Build games for PC, consoles, mobile, and web from a single project.</li>
<li><strong>Beginner-Friendly:</strong> Intuitive interface with extensive documentation and tutorials.</li>
<li><strong>Powerful Tools:</strong> Industry-standard tools for animation, physics, and lighting.</li>
<li><strong>Asset Store:</strong> Access to a vast library of pre-made assets and plugins.</li>
</ul>
</div>
</div>
</section>
<section class="steps">
<h2>Step-by-Step Game Development Process</h2>
<article class="step">
<div class="step-content">
<h3>Step 1: Plan Your Game</h3>
<p>
Start with a solid concept. Define your games genre, core mechanics, and target audience. Tools like <a href="https://www.miro.com/" target="_blank">Miro</a> or <a href="https://www.trello.com/" target="_blank">Trello</a> can help you organize your ideas and tasks.
</p>
<blockquote>Tip: Create a Game Design Document (GDD) to outline your games vision and technical details.</blockquote>
</div>
</article>
<article class="step">
<img src="{{ url_for('static', filename='images/posts/platformer-game-developement-in-unity/unity_installation.png') }}" alt="Unity Installation">
<div class="step-content">
<h3>Step 2: Install Unity</h3>
<p>
Download Unity Hub from the <a href="https://unity.com/" target="_blank">official website</a>. Use Unity Hub to manage Unity versions and create new projects. Choose a version compatible with your project requirements.
</p>
</div>
</article>
<article class="step">
<div class="step-content">
<h3>Step 3: Create Your First Scene</h3>
<p>
In Unity, games are built from scenes. Start by creating a new scene and organizing the hierarchy with GameObjects for your player, environment, and UI. Use prefabs to save reusable components.
</p>
<pre><code class="language-csharp">using UnityEngine;
public class HelloWorld : MonoBehaviour {
void Start() {
Debug.Log("Hello, Unity!");
}
}<button class="copy-btn" onclick="copyToClipboard(this)">Copy</button></code></pre>
</div>
</article>
<article class="step">
<img src="{{ url_for('static', filename='images/posts/platformer-game-developement-in-unity/player_design.gif') }}" alt="Player Character Design">
<div class="step-content">
<h3>Step 4: Design the Player Character</h3>
<p>
Use the <code>Rigidbody</code> component for physics-based movement or <code>CharacterController</code> for customized control. Add animations using Unitys Animator system.
</p>
<pre><code class="language-csharp">using UnityEngine;
public class PlayerMovement : MonoBehaviour {
public float speed = 5f;
void Update() {
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
transform.Translate(new Vector3(horizontal, 0, vertical) * speed * Time.deltaTime);
}
}<button class="copy-btn" onclick="copyToClipboard(this)">Copy</button></code></pre>
</div>
</article>
<article class="step">
<img src="{{ url_for('static', filename='images/posts/platformer-game-developement-in-unity/game_environment.jpg') }}" alt="Game Environment">
<div class="step-content">
<h3>Step 5: Build the Game Environment</h3>
<p>
Use Unitys Terrain tools for 3D environments or Tilemap tools for 2D levels. Add materials, lighting, and post-processing effects to enhance the visuals.
</p>
<a href="#" class="button">Learn More</a>
</div>
</article>
<article class="step">
<img src="{{ url_for('static', filename='images/posts/platformer-game-developement-in-unity/gameplay_mechanics.png') }}" alt="Game Mechanics">
<div class="step-content">
<h3>Step 6: Implement Gameplay Mechanics</h3>
<p>
Add interactivity using scripts. Use Unitys physics engine, triggers, and events to create gameplay features like jumping, collecting items, or enemy AI.
</p>
</div>
</article>
<article class="step">
<img src="{{ url_for('static', filename='images/posts/platformer-game-developement-in-unity/game_testing.jpg') }}" alt="Testing the Game">
<div class="step-content">
<h3>Step 7: Test and Polish</h3>
<p>
Test your game frequently to catch bugs early. Use Unitys Profiler to optimize performance. Add audio, particle effects, and UI elements to enhance the player experience.
</p>
<blockquote>Pro Tip: Gather feedback from players and iterate on your design.</blockquote>
</div>
</article>
<article class="step">
<img src="{{ url_for('static', filename='images/posts/platformer-game-developement-in-unity/export.png') }}" alt="Exporting the Game">
<div class="step-content">
<h3>Step 8: Export and Share</h3>
<p>
Export your game for your desired platform. Unity supports platforms like Windows, iOS, Android, and WebGL. Share your game on <a href="https://itch.io/" target="_blank">Itch.io</a> or <a href="https://store.steampowered.com/" target="_blank">Steam</a> to reach a wide audience.
</p>
<blockquote>Tip: Create an eye-catching trailer and game page to attract players.</blockquote>
</div>
</article>
</section>
<footer>
<p>
Thank you for exploring this guide! We hope you enjoy creating your games with Unity. For more tutorials and resources, check out the <a href="https://learn.unity.com/" target="_blank">official Unity Learn page</a>.
</p>
</footer>
</main>
{% endblock %}

View File

@ -0,0 +1,134 @@
{% extends "main.html" %}
{% block content %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/post.css') }}">
<script src="{{ url_for('static', filename='script/image_viewer.js') }}"></script>
<main class="main">
<section class="intro">
<h1>Game Development in Unreal Engine: A Comprehensive Guide</h1>
<p>
Welcome to the ultimate guide for Unreal Engine game development! Whether youre a beginner or an experienced developer, this page walks you through the entire process of creating a game from scratch using Unreal Engine. Explore every step, tool, and resource needed to bring your vision to life.
</p>
<p>
Unreal Engine is a powerful and versatile game engine that allows you to create both 2D and 3D games with stunning visuals and performance. Lets dive in and learn how to make your dream game a reality!
</p>
</section>
<section class="features">
<h2>Why Choose Unreal Engine?</h2>
<div class="step">
<img src="{{ url_for('static', filename='images/posts/platformer-game-developement-in-unreal-engine/unreal_engine_wide_logo.png') }}" alt="Unreal Engine Logo">
<div class="step-content">
<ul>
<li><strong>High-Quality Graphics:</strong> Industry-leading tools for creating realistic visuals and effects.</li>
<li><strong>Blueprint System:</strong> Visual scripting makes game development accessible to non-programmers.</li>
<li><strong>Cross-Platform:</strong> Build games for PC, consoles, mobile, VR, and more.</li>
<li><strong>Active Community:</strong> Access a wealth of tutorials, assets, and plugins.</li>
</ul>
</div>
</div>
</section>
<section class="steps">
<h2>Step-by-Step Game Development Process</h2>
<article class="step">
<div class="step-content">
<h3>Step 1: Plan Your Game</h3>
<p>
Start with a solid concept. Define your games genre, core mechanics, and target audience. Tools like <a href="https://www.miro.com/" target="_blank">Miro</a> or <a href="https://www.trello.com/" target="_blank">Trello</a> can help you organize your ideas and tasks.
</p>
<blockquote>Tip: Create a Game Design Document (GDD) to outline your games vision and technical details.</blockquote>
</div>
</article>
<article class="step">
<img src="{{ url_for('static', filename='images/posts/platformer-game-developement-in-unreal-engine/install.png') }}" alt="Unreal Engine Installation">
<div class="step-content">
<h3>Step 2: Install Unreal Engine</h3>
<p>
Download Unreal Engine from the <a href="https://www.unrealengine.com/" target="_blank">official website</a>. Use the Epic Games Launcher to install and manage different versions of the engine. Choose the latest version to access the newest features.
</p>
</div>
</article>
<article class="step">
<img src="{{ url_for('static', filename='images/posts/platformer-game-developement-in-unreal-engine/first_level.jpg') }}" alt="Creating Your First Level">
<div class="step-content">
<h3>Step 3: Create Your First Level</h3>
<p>
In Unreal Engine, games are built from levels. Start by creating a new level using the default template or a blank template. Organize your level using Actors, which include meshes, lights, cameras, and more.
</p>
<pre><code class="language-cpp">#include "GameFramework/Actor.h"
#include "MyActor.generated.h"
UCLASS()
class MYPROJECT_API AMyActor : public AActor {
GENERATED_BODY()
public:
AMyActor();
};<button class="copy-btn" onclick="copyToClipboard(this)">Copy</button></code></pre>
</div>
</article>
<article class="step">
<img src="{{ url_for('static', filename='images/posts/platformer-game-developement-in-unreal-engine/blueprints.jpg') }}" alt="Blueprints in Unreal Engine">
<div class="step-content">
<h3>Step 4: Use Blueprints for Logic</h3>
<p>
Unreal Engines Blueprint system allows you to create gameplay logic visually. Drag and drop nodes to implement mechanics like movement, interactions, and animations without writing code.
</p>
<blockquote>Tip: Combine Blueprints with C++ for maximum flexibility and performance.</blockquote>
</div>
</article>
<article class="step">
<img src="{{ url_for('static', filename='images/posts/platformer-game-developement-in-unreal-engine/environment.jpg') }}" alt="Environment Design">
<div class="step-content">
<h3>Step 5: Build the Game Environment</h3>
<p>
Use Unreal Engines powerful tools to create stunning environments. Add landscapes, foliage, and lighting. The Material Editor allows you to design custom materials for realistic surfaces.
</p>
<a href="#" class="button">Learn More</a>
</div>
</article>
<article class="step">
<div class="step-content">
<h3>Step 6: Implement Gameplay Mechanics</h3>
<p>
Add interactivity using Blueprints or C++. Implement mechanics like character movement, combat, or puzzles. Use Unreals built-in AI tools to add intelligent behaviors to NPCs.
</p>
</div>
</article>
<article class="step">
<img src="{{ url_for('static', filename='images/posts/platformer-game-developement-in-unreal-engine/testing.png') }}" alt="Testing and Optimization">
<div class="step-content">
<h3>Step 7: Test and Optimize</h3>
<p>
Playtest your game frequently. Use Unreals Profiling tools to identify performance bottlenecks and optimize assets, scripts, and rendering settings for smooth gameplay.
</p>
<blockquote>Pro Tip: Use LOD (Level of Detail) settings to improve performance on lower-end systems.</blockquote>
</div>
</article>
<article class="step">
<img src="{{ url_for('static', filename='images/posts/platformer-game-developement-in-unreal-engine/export.png') }}" alt="Exporting the Game">
<div class="step-content">
<h3>Step 8: Export and Share</h3>
<p>
Export your game for your desired platform. Unreal Engine supports platforms like Windows, PlayStation, Xbox, iOS, Android, and more. Share your game on platforms like <a href="https://itch.io/" target="_blank">Itch.io</a> or <a href="https://store.steampowered.com/" target="_blank">Steam</a>.
</p>
<blockquote>Tip: Create a trailer and professional game page to attract players.</blockquote>
</div>
</article>
</section>
<footer>
<p>
Thank you for exploring this guide! We hope you enjoy creating your games with Unreal Engine. For more tutorials and resources, check out the <a href="https://www.unrealengine.com/en-US/learn" target="_blank">official Unreal Engine Learning portal</a>.
</p>
</footer>
</main>
{% endblock %}

View File

@ -1 +1,123 @@
{% extends "main.html" %} {% extends "main.html" %}
{% block content %}
<style>
.search-container {
position: relative;
border-radius: 1000px;
padding: 10px;
display: grid;
place-content: center;
z-index: 0;
max-width: 600px;
width: 90%;
margin: 10px auto -20px auto;
}
.search-search-container {
position: relative;
width: 100%;
border-radius: 50px;
background: linear-gradient(to right, #5b0fb886, #1f65d686);
padding: 5px;
display: flex;
align-items: center;
}
.search-search-container::after, .search-search-container::before {
content: "";
width: 100%;
height: 100%;
border-radius: inherit;
position: absolute;
}
.search-search-container::before {
top: -1px;
left: -1px;
background: linear-gradient(to right, #5b0fb886, #1f65d686);
z-index: -1;
}
.search-search-container::after {
bottom: -1px;
right: -1px;
background: linear-gradient(to right, #5b0fb886, #1f65d686);
box-shadow: rgba(79, 156, 232, 0.1) 3px 3px 5px 0px, rgba(79, 156, 232, 0.1) 5px 5px 20px 0px;
z-index: -2;
}
.input {
padding: 10px;
width: 100%;
background: linear-gradient(135deg, rgba(218, 232, 247, 0.1) 0%, rgba(214, 229, 247, 0.1) 100%);
border: none;
color: #9EBCD9;
font-size: 20px;
border-radius: 50px;
margin: 0px 5px;
}
.input:focus {
outline: none;
background: linear-gradient(135deg, hsla(210, 100%, 97%, 0.1) 0%, hsla(214, 229, 247, 0.1) 100%);
}
.search__icon {
width: 50px;
aspect-ratio: 1;
border-left: 2px solid white;
border-top: 3px solid transparent;
border-bottom: 3px solid transparent;
border-radius: 50%;
padding-left: 12px;
margin-right: 10px;
cursor: pointer;
}
.search__icon:hover {
border-left: 3px solid white;
}
.search__icon path {
fill: white;
}
.search-button {
border: none;
background: none;
padding: 0;
cursor: pointer;
}
</style>
<div class="search-container">
<form method="PUT" action="{{ url_for('search')}}" class="search-search-container">
<input class="input" type="text" name="searched" placeholder="Search...">
<button type="submit" class="search-button">
<svg viewBox="0 0 24 24" class="search__icon">
<g>
<path d="M21.53 20.47l-3.66-3.66C19.195 15.24 20 13.214 20 11c0-4.97-4.03-9-9-9s-9 4.03-9 9 4.03 9 9 9c2.215 0 4.24-.804 5.808-2.13l3.66 3.66c.147.146.34.22.53.22s.385-.073.53-.22c.295-.293.295-.767.002-1.06zM3.5 11c0-4.135 3.365-7.5 7.5-7.5s7.5 3.365 7.5 7.5-3.365 7.5-7.5 7.5-7.5-3.365-7.5-7.5z">
</path>
</g>
</svg>
</button>
</form>
</div>
<main class="main">
<div class="card-container">
{% for post in post_data %}
<div class="card">
<img src="{{ url_for('static', filename=post['image_location']) }}" alt="Post Image">
<h3>{{ post['title'] }}</h3>
<div class="date">{{ post['date'] }}</div>
<p>{{ post['content'] }}</p>
<p class="topics">
{% for topic in post['topics'] %}
<span class="topic">{{ topic }}</span>
{% endfor %}
</p>
<a href="{{ url_for('post', slug=post['slug']) }}">Read More</a>
</div>
{% endfor %}
</div>
</main>
{% endblock %}

View File

@ -1,38 +1,6 @@
{% extends "main.html" %} {% extends "main.html" %}
{% block content%} {% block content%}
<style> <style>
.card-buttons {
display: flex;
justify-content: center;
gap: 20px;
margin-top: 15px;
height: fit-content;
}
.card-buttons .btn {
padding: 12px 24px;
font-size: 1rem;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
text-transform: uppercase;
color: #fff;
border: none;
border-radius: 8px;
cursor: pointer;
transition: transform 0.3s ease, background 0.3s ease;
width: 100%;
max-width: 160px;
height: 100%;
}
.card-buttons .btn {
background: linear-gradient(to right, #5a0fb8, #1f65d6);
}
.card-buttons .btn:hover {
background: linear-gradient(to right, #1f65d6, #5a0fb8);
transform: scale(1.05);
}
</style> </style>
<main class="main"> <main class="main">
<div class="card-container"> <div class="card-container">