<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://i3luki.github.io/-roboarena-team1-TUE-UNI-TEAMPROJEKT/feed.xml" rel="self" type="application/atom+xml" /><link href="https://i3luki.github.io/-roboarena-team1-TUE-UNI-TEAMPROJEKT/" rel="alternate" type="text/html" /><updated>2026-05-13T10:04:33+00:00</updated><id>https://i3luki.github.io/-roboarena-team1-TUE-UNI-TEAMPROJEKT/feed.xml</id><title type="html">-roboarena-team1-TUE-UNI-TEAMPROJEKT</title><entry><title type="html">Sprint 2</title><link href="https://i3luki.github.io/-roboarena-team1-TUE-UNI-TEAMPROJEKT/2026/05/06/secondSprint.html" rel="alternate" type="text/html" title="Sprint 2" /><published>2026-05-06T00:00:00+00:00</published><updated>2026-05-06T00:00:00+00:00</updated><id>https://i3luki.github.io/-roboarena-team1-TUE-UNI-TEAMPROJEKT/2026/05/06/secondSprint</id><content type="html" xml:base="https://i3luki.github.io/-roboarena-team1-TUE-UNI-TEAMPROJEKT/2026/05/06/secondSprint.html"><![CDATA[<ol>
  <li>Simon Schmauch:<br />
Zuerst wurde ein Game Window erstellt mit Größe 1000x1000<br />
Danach wurde eine Arena aus verschiedenen 50x50 Blöcken gebaut.
    <ul>
      <li>Dunkelgrauer Block: Arenabegrenzung</li>
      <li>Blauer Block: Interne Arenawand</li>
      <li>Roter Block: Gegnerspawnfeld</li>
      <li>Grüner Block: Heilungsfeld</li>
      <li>Gelber Block: Powerupfeld
<img width="500" height="512" alt="arena (1) (2)" src="https://github.com/user-attachments/assets/87624e69-65a6-4424-9c54-0ff5736b58d5" />
<br />
Spielidee:
<img width="776" height="561" alt="589690260-a195a0f5-f39d-4433-b062-2045772dd2b5 (2)" src="https://github.com/user-attachments/assets/abd731b4-1109-4986-b090-47d001651d2b" /></li>
    </ul>
  </li>
</ol>

<p><br />
Basisspiel Ideen:
<br /></p>

<p>Unsere Spielidee soll ein Roguelike werden und ist inspiriert von Spielen wie “Vampire Survivors”.<br />
Man spielt einen Charakter mit automatischen Angriffen und muss sich durch unendlich viele spawnende Gegner kämpfen.<br />
Roguelike heißt: Gegner, Upgrades usw. in jedem Spieldurchlauf zufällig und wenn man stirbt, verliert man alles und fängt von neuem an.</p>

<p>Charakter:<br />
Der Charakter hat Waffen, die ohne Input des Spielers automatisch angreifen.<br />
Der Charakter soll bestimmt viele Leben haben.<br />
Der Spieler kann durch generische Angriffe Schaden bekommen.<br />
Wenn die Leben auf 0 fallen, ist das Spiel vorbei.<br />
Der Charakter soll außerdem Energie haben, die eingesetzt werden kann, um Fähigkeiten auszuführen.</p>

<p>XP:<br />
Wenn man Gegner tötet, droppen sie XP, die man einsammeln kann.<br />
Wenn man genug XP gesammelt hat, bekommt man ein Level-Up.</p>

<p>Level-Up:<br />
Mit einem Level-Up kann man zwischen drei Upgrades aussuchen, die Stats des Spielers verbessern, neue Angriffe/Fähigkeiten hinzufügen usw.<br />
Upgrades sollen in verschiedenen Seltenheiten eingestuft sein: Je seltener, desto besser.</p>

<p>Gegner:<br />
Gegner sollen immer weiter spawnen und je länger das Spiel geht, desto mehr und stärkere Gegner spawnen.<br />
Alle 5 Level des Charakters oder nach einer bestimmten Zeit soll ein Boss spawnen, der besondere Waffen/Fähigkeiten droppt.</p>

<p>Fähigkeiten:<br />
Der Charakter soll Fähigkeiten freischalten und benutzen können wie z.B. Dash, Explosion, Boosters.<br />
Diese kann der Spieler mit definierten Tasten aktivieren können.</p>

<p>Felder:<br />
Es sollen Felder auf vorher definierten Teilen der Map sein, die Leben oder Energie regenerieren, den Charakter buffen oder sonstiges können.<br />
Es soll auch Felder geben, die sowohl dem Charakter, als auch Gegner Schaden hinzufügen können z.B. Fallen.</p>

<ol>
  <li>Noah Utech:<br />
Der Roboter wurde gezeichnet als Viereck mit einem runden Kopf.</li>
</ol>

<p><img width="300" height="300" alt="Screenshot 2026-05-12 221824" src="https://github.com/user-attachments/assets/1fa9eb6e-a1ee-47e7-969f-e31c2b7cc00b" /></p>

<p>Außerdem wurden Bewegungen über wasd und den Pfeiltasten eingefügt.</p>

<p>Probleme: Wir müssen überlegen wie wir unseren Roboter mit der Kollision im Endefekt machen, wenn wir den Roboter komplizierter zeichnen. Überlgeungen sind ob wir eine etwas größeres Viereck um den Roboter zeichnen.</p>

<ol>
  <li>Joshua Supper:</li>
</ol>

<p>Damit der Spieler jederzeit erkennen kann, in welche Richtung der Roboter blickt, wurde eine Rotationsfunktion implementiert. Der Roboter dreht sich nun dynamisch in Richtung der Maus. Dadurch werden spätere Spielmechaniken wie Angriffe, Schüsse oder Dashes für den Spieler intuitiver verständlich.</p>

<p>Zusätzlich wurde in der Testumgebung von Dennis Andler eine Visualisierungslinie zwischen Roboter und Maus eingebaut. Diese erleichtert das Debugging und hilft dabei, Richtungen sowie spätere Kollisions- oder Trefferberechnungen besser nachvollziehen zu können.</p>

<p><img width="400" height="420" alt="Video sprint2" src="https://github.com/user-attachments/assets/a9cc5baa-bf82-4fd8-b940-4b392932ec7d" /></p>

<ol>
  <li>Dennis Andler:</li>
</ol>

<p>Um Exp zum leveln zu bekommen sollen Orbs eingefügt werden. Diese sollen erstmal nur beim Spielstart spawnen und wenn der Roboter sie berührt verschwinden.</p>

<p>Das größte Problem hier ist die Kollision einzuführen. Hierfür benutzen wir die berühmten Axis-Aligned-Bounding-Boxes. Diese haben einen sehr schnellen Kollisionstest und können in Zukunft für feingranularere Objekte einfach übereinander gestacked werden. Bisher ist die AABB nur für den Roboter und die Orbs definiert.</p>

<p>Mit den AABBs und einem einfachen Kollisioncheck der für jeden Frame ausgeführt wird, lassen sich die Orbs nun einfach durch eine neue Klasse einfügen. Die Orbpositionen lassen sich mit einer eingebauten Methode zufällig innerhalb des Screens setzen.
(Achtung: Bisher werden die Orbs zufälig innherhalb des Screens mit der Methode generiert, dies ist jedoch nicht immer sinnvoll, da Screengröße und Arenagröße nicht gleich sein müssen. Auch ist in der Arena noch keine Wandlogik eingebaut, so dass das spawnen des Orbs auf einer Wand bisher möglich ist.)</p>

<p>Für die Zukunft könnte man für bessere Performance überlegen ob sich ein anderes Modell als “Kollisionscheck mit jedem Objektpaar auzurechnen” lohnen könnte, da dies für viele Objekte schlecht skaliert (Buzzwords: Quadtree, Spatial Hashmap).</p>

<p><img width="420" height="420" alt="newfeature_orbs" src="https://github.com/user-attachments/assets/e5783426-1ed7-4309-9f36-8d4be6678c48" /></p>

<p>Ein Testmodus wurde eingefügt der mit einer Flag in der main Datei an und ausgeschaltet werden kann. Der Testmodus dient unserem Entwicklerteam zur Visualisierung von sonst versteckten Berechnungen. Ein gutes Beispiel sind die AABB, die sonst dem Spieler nicht gezeigt werden. Das ganze soll dann beim debuggen helfen.</p>

<p><img width="353" height="379" alt="screen_feature_testmodus" src="https://github.com/user-attachments/assets/78ee1e65-bfa2-4292-9eb2-e931810728a7" /></p>]]></content><author><name></name></author><summary type="html"><![CDATA[Simon Schmauch: Zuerst wurde ein Game Window erstellt mit Größe 1000x1000 Danach wurde eine Arena aus verschiedenen 50x50 Blöcken gebaut. Dunkelgrauer Block: Arenabegrenzung Blauer Block: Interne Arenawand Roter Block: Gegnerspawnfeld Grüner Block: Heilungsfeld Gelber Block: Powerupfeld Spielidee:]]></summary></entry><entry><title type="html">Sprint 1</title><link href="https://i3luki.github.io/-roboarena-team1-TUE-UNI-TEAMPROJEKT/2026/04/29/firstSprint.html" rel="alternate" type="text/html" title="Sprint 1" /><published>2026-04-29T00:00:00+00:00</published><updated>2026-04-29T00:00:00+00:00</updated><id>https://i3luki.github.io/-roboarena-team1-TUE-UNI-TEAMPROJEKT/2026/04/29/firstSprint</id><content type="html" xml:base="https://i3luki.github.io/-roboarena-team1-TUE-UNI-TEAMPROJEKT/2026/04/29/firstSprint.html"><![CDATA[<ol>
  <li>Noah Utech:</li>
</ol>

<p>Issue 1
Eine grundlegende Struktur wurde angelegt mit einem Fenster, Game-loop und Bildschrim-Updates</p>

<p><img width="400" height="400" alt="Screenshot 2026-04-29 132510" src="https://github.com/user-attachments/assets/df940d1a-cdeb-48f3-9014-81e143f9b9f6" /></p>

<p>Issue 2
Die Key-Press wurden angelegt, sowie die gegensätzlichen Bewegungen definiert, damit die Schlange sich nur um eine 90 Grade Rotation bewegen kann.</p>

<p>2.
Simon Schmauch:</p>

<p>Um die Bewegungslogik in eine animierte Bewegung umzusetzen, wird immer ein neuer Kopf in die Richtung platziert, wo der Spieler mit den Pfeiltasten hin drückt.</p>

<p>Gleichzeitig wird das letzte Element der Schlange entfernt.</p>

<p>Somit bleibt die Anzahl der Schlangenelemente gleich und kann sich durch den Raum bewegen.</p>

<p>Dies bietet auch eine Grundlange zum Wachsen der Schlange:</p>

<p>Wenn die Schlange in einer Iteration des Spiels ein Apfel isst, wird das letzte Element nicht entfernt, wodurch die Schlange 1 Element mehr bekommt.</p>

<p><img width="400" height="420" alt="SnakeMovement" src="https://github.com/user-attachments/assets/cb038061-af7c-49b0-84eb-8c15cc3b0fb5" /></p>

<ol>
  <li>Joshua Supper:</li>
</ol>

<p>Die Schlange verschwindet nun nicht mehr wenn sie den Bildschirm verlässt sondern kommt auf der
anderen Seite wieder raus. Dadurch bleibt die Schlange auch immer im Sichtbereich des Spielers.</p>

<p><img width="400" height="420" alt="Bildschirmaufnahme 2026-04-29 um 14 18 58" src="https://github.com/user-attachments/assets/638bbc81-7fc5-43ce-9ed9-f4f0a92db352" /></p>

<p>4.
   Dennis Andler:</p>

<p>Bisher haben wir nur eine Schlange die sich bewegen lässt. Leider ist diese bisher auf strenger Diät. Um das zu fixen wurde ein Apfel(oder eher ein leckeres rotes Rechteck) eingefuegt.</p>

<p>Dieser Apfel kann von der Schlange gegessen werden indem der Schlangenkopf den Apfel berührt. Wird der Apfel gegessen so wird er an einer zufälligen Stelle des Bildschirms neu generiert.</p>

<p>Damit der Apfel auch immer schön in der Mitte des Kopfes liegt, wird der Apfel immer in der Mitte möglicher Position des Schlangenviereckes generiert. (nur optisch, eigentlich liegt er genau auf der Ecke vom Schlangendreieck)</p>

<p><img width="400" height="420" alt="SnakeWithApple" src="https://github.com/user-attachments/assets/2fc1df55-a740-4092-933b-37878e178eca" /></p>]]></content><author><name></name></author><summary type="html"><![CDATA[Noah Utech: Issue 1 Eine grundlegende Struktur wurde angelegt mit einem Fenster, Game-loop und Bildschrim-Updates]]></summary></entry><entry><title type="html">Our First Post!</title><link href="https://i3luki.github.io/-roboarena-team1-TUE-UNI-TEAMPROJEKT/2026/04/20/firstPost.html" rel="alternate" type="text/html" title="Our First Post!" /><published>2026-04-20T00:00:00+00:00</published><updated>2026-04-20T00:00:00+00:00</updated><id>https://i3luki.github.io/-roboarena-team1-TUE-UNI-TEAMPROJEKT/2026/04/20/firstPost</id><content type="html" xml:base="https://i3luki.github.io/-roboarena-team1-TUE-UNI-TEAMPROJEKT/2026/04/20/firstPost.html"><![CDATA[<h2 id="-github-pages">🥳 github pages</h2>

<p><strong>Hello World!</strong> Today marks the day our pages have been created. Our Pages will be written in Markdown through Jkyll.
The following had to be done:</p>

<ul>
  <li><strong>make Repository public</strong> because Pages in private Repository demand a subscription.</li>
  <li><strong>add index.md</strong> file</li>
  <li><strong>add _config.yml</strong> (for now we are using the minima style as recommended for blog sites)</li>
  <li>add this post under the new folder <strong>_posts</strong></li>
</ul>

<p>We thank on the behalf of our team the ever helpful Octocat Mona for her help in creating our github pages and hope to be able to share our Jounrney with all of you Readers.</p>

<p><em>Sincerely,</em> <br />
<em>The #1 Roboarena Developer Team</em></p>]]></content><author><name></name></author><summary type="html"><![CDATA[🥳 github pages]]></summary></entry></feed>