Nach oben

Über mich...

Mein Name ist Jakob Maier, ich wurde 1992 geboren und wohne in Niederösterreich.

Ausbildung

Diese Seite...

Auf dieser Seite möchte ich einige meiner Programme (vor allem Computerspiele) vorstellen, die ich im Laufe meiner Ausbildung hobbymäßig geschrieben habe, bzw. an denen ich gerade arbeite.

Beginnen werde ich mit Konsolenspielen, die ich in meinem ersten Jahr als Programmierer geschrieben habe. Zu diesem Zeitpunkt waren meine Programmierkenntnisse noch sehr überschaubar, dennoch habe ich etliche spielbare Anwendungen zustande gebracht. Teilweise stehen auch Links für den Download der Spiele bereit.

Ich habe mich ständig weiterentwickelt und immer an neuen Projekten und Herausforderungen gearbeitet. Diese Seite ist so aufgebaut, dass man meine Entwicklung über die letzten Jahre leicht nachverfolgen kann.

Kontakt

Wenn mich jemand kontaktieren möchte, kann man mir gerne eine E-Mail zukommen lassen:

Konsolenspiele

... nein, keine Spielekonsolen, nur die Windows Konsole.

Meine ersten Computerprogramme und -spiele sind 2006 entstanden. Jedesmal, wenn in der HTL neue C Funktionalitäten vorgestellt und erklärt wurden, habe ich diese in ein Spiel eingebaut.

Meine erstes Spiel "Schiffe versenken" habe ich programmiert, bevor ich noch wusste, was Unterprogramme sind. Dementsprechend groß und unübersichtlich war daher auch der Quellcode.

Das erste nützliche und verwendbare Programm war "Paint". Damit konnte (und kann) man in einer Konsolenanwendung Bilder zeichnen und diese als Textfile abspeichern. Durch viele Features wie Kopieren, Spiegeln und Transparenz, konnte ich dieses Programm für das Erstellen der Grafiken in all meinen nachfolgenden Konsolenspielen verwenden.

Obwohl die Steuerung von Paint mühsam war (die Steuerung funktioniert ausschließlich über die Tastatur) und ich nur 16 Farben zur Verfügung hatte, konnte ich bald die ersten gut aussehenden Spiele vorweisen.

Form-Fix

Die ersten Bilder sind vom Spiel "Form Fix", mein erstes Spiel, bei dem ich Grafiken verwendet habe.
Ziel des Spiels ist es, gleiche Formen nebeneinander zu platzieren. Dadurch ändert sich deren Form zu einer niederwertigeren.
zB. 2 Quadrate nebeneinander werden zu Dreiecken geändert. Dreiecke verwandeln sich in Kreise. Und wenn man mehrere Kreise kombiniert, verschwinden diese vom Spielfeld.
Im Zuge des Spiels werden neue Level freigeschalten und es kommen neue Formen ins Spiel, die man bis zu 11 mal kombinieren muss, bevor sie das Spielfeld verlassen.
Das Spiel ist verloren, wenn keine neuen Formen mehr ins Spiel gebracht werden können.

Snake / Tron

Hier habe ich die Spiele Snake und Tron in einem Programm verpackt. Das Spielprinzip sollte jedem bekannt sein.
Im Programm befindet sich ein Einstellungsmenü, bei dem zahlreiche Elemente wie Steuerung, Aussehen und der Speicherpfad für Spielstände geändert und angepasst werden können.
Tron kann von 0-4 Spielern gespielt werden, wobei die Tastatur für 4 Spieler bereits etwas eng wird.
Bei 0 Spielern treten ausschließlich Computergegner aneinander an, deren Intelligenz man in den Einstellungen anpassen kann.

Time

Als wir gelernt haben, die Uhrzeit des Computers abzufragen, war nichts naheliegender, als eine Uhr zu programmieren.
Man kann hier auswählen zwischen einer analogen, digitalen und binären Uhr. Obwohl das Programm keinen besonderen Nutzen hat, war ich wegen dessen Einfachkeit dennoch vom Resultat begeistert.

OpenGL

2009 habe ich begonnen, OpenGL auszuprobieren. Das führte zum Ende meiner Konsolenspiele und das letze Projekt "Tic-Tac-Toe", das auch einen AI-Designer beinhaltet hätte, habe ich abgebrochen.

Minesweeper

Um OpenGL kennen zu lernen, habe ich mit einem einfachen Minesweeper-Spiel begonnen. Programmiertechnisch war dieses Projekt nicht sehr anspruchsvoll.

Slingshot

Slingshot ist das erste Spiel, das ich in C++ programmiert habe. Ziel des Spiels ist es, die Schleuder zu spannen und dadurch Bälle in die herumfliegenden Körbe zu werfen. Mann kann zwischen 1 bis 6 Körben auswählen, die sich auf vorbestimmtem Pfaden durch die Luft bewegen. Wenn die Zeit abgelaufen ist, werden die Treffer ausgezählt.

Space Attack

In Space Attack ging es hauptsächlich um die Physik. Die Spieler befinden sich an fixen Punkten im All und sind von Planeten umgeben. Sie müssen in einem rundenbasierten Spiel versuchen, sich gegenseitig abzuschießen, wobei die Geschosse von den Anziehungskräften der Planeten beinflusst werden.

Web solutions

Der "Business Manager" dient zum Vewalten eines landwirtschaftlichen Betriebes und ist bis heute im täglichen Einsatz.

Hierbei handelt es sich zwar um kein Computerspiel, dennoch habe ich mich entschieden, dieses Programm aus Gründen der Vollständigkeit hier vorzustellen. Ich habe mich bereits sehr viel mit Webentwicklung beschäftigt und wollte diese Seite daher nicht erstellen, ohne auf diesen wichtigen Bestandteil näher einzugehen.

Der Kunde, für den diese Individualsoftware entwickelt wurde, vermarktet seine landwirtschaftlichen Erzeugnisse selbst und verwendet die Anwendung zum Verwalten seiner Produkte, Kunden, Lieferungen und Bestellungen.

Die Software übernimmt vor allem das Erstellen von Rechnungen und Lieferscheinen, die im pdf-Format ausgegeben werden. Da diese zuvor händisch vom Kunden geschrieben wurden, konnte das Programm die Arbeit des Kunden erheblich erleichtern.

Geschrieben ist die Anwendung in HTML, JavaScript und PHP. Im Hintergrund befindet sich ein SQL-Server (MySQL/PostGreSQL).

Die wichtigsten Punkte bei diesem Projekt waren für mich sowohl Usability als auch Reliability. Es mussten diverse Security- und Backupstrategien angewandt werden, um die Zuverlässigkeit der Applikation zu gewährleisten.
Die schwerste Herausforderung stellte die Anforderung bzw. Erwartungshaltung des Kunden dar, dass das Programm "genauso flexibel wie das bisherige Karteikartensystem" sein muss.

SokoRun

SokoRun ist ein Puzzlespiel und beinhaltet die selben Spielelemente wie das Original "Sokoban", allerdings mit einigen Erweiterungen.
Das Spiel wurde von mir und einem Studienkollegen im Zuge der IT-Projektarbeit im ersten Semester an der FH Technikum Wien geschrieben.

Der Spieler steuert das rote Quadrat und kann sich so durchs Spielfeld bewegen. Die blauen Bälle können dabei von der Spielfigur verschoben werden. Das Ziel des Spieles ist es, alle so genannten "Zielfelder" mit Kugeln zu füllen.

Neben etlichen Spezialfeldern und Animationen gibt es auch einen Leveleditor zum Spiel.

2048

Im vierten Semester an der Fachhochschule habe ich mich dann (wenig überraschend) als Spezialisierung für Game Engineering und Mobile Development entschieden.

Das 3D-Spiel "2048" habe ich im Zuge eines Unterrichtsprojekts mit 2 weiteren Studienkollegen innerhalb einer Woche abgeschlossen. Neben Animationen wurden hier auch Materialien und Beleuchtung verwendet. Als OpenGL Library wurde GLUT verwendet.

Fave

Fave ist mein aktuelles Projekt, an dem ich mit mehreren FH- und ehemaligen HTL-Kollegen seit 2013 arbeite. Die Abkürzung "Fave" steht dabei für "Fave Visual Engine" und ist ein rekursives Akronym.

Fave ist mein bisher größtes Projekt und wir haben bereits einige Fortschritte erzielt. Es handelt sich hierbei um eine Webapplikation zur Erstellung von so genannten Visual Novels. Das Ziel ist es, Personen mit keinen oder nur geringen Programmierkenntnissen die Möglichkeit zu bieten, eigene Visual Novels zu erstellen.

Im Gegensatz zu vielen bereits existierenden Frameworks ist es bei Fave möglich, die erzeugten Spiele im Browser zu spielen - ohne den Download irgendwelcher ausführbaren Programme. Dadurch kann vom Ersteller ein größeres Publikum angesprochen werden.
Der Nutzer muss bei der Verwendung von Fave keinerlei Programmcode selbst schreiben - es sei denn, er will den Funktionsumfang mittels eigenen Plug-Ins erweitern.

Die Programmiersprache ist fast ausschließlich JavaScript und es werden viele neue HTML5-Features (unter anderem Multithreading mit WebWorkern) verwendet. Die Grafische Ausgabe erfolgt über das neue HTML5 Canvas-Element, wobei auch WebGL und CSS als Fallback unterstützt wird.
Ein besonders wichtiger Punkt ist auch, dass die Software Multilanguage-Support besitzt. Derzeit werden sowohl Englisch als auch Deutsch vollständig unterstützt.

Sobald wir die erste Version der Software fertig gestellt haben, werden wir sie als Open Source zur Verfügung stellen und unser Repository öffentlich zur Verfügung stellen.

Fave besteht aus mehreren voneinander unabhängigen Teilen.

Game Engine

Die Game Engine liest vom Parser erzeugte Befehlslisten ein und leitet die Befehle an die entsprechenden Enginemodule weiter. Enginemodule können mit Hilfe eines Pluginsystems dynamisch geladen werden. Beispiele für Module sind unter anderem das Grafikmodul, das Soundmodul, der Savepoint-Manager und so weiter.
Die Engine ist jener Teil von Fave, der die Visual Novel für den Spieler (Endnutzer) abspielt.

Parser

Der Parser liest vom Benutzer verfasste Storyfiles ein und generiert daraus die Befehlslisten für die Game-Engine. Befehle des Storyfiles werden durch Parsermodule definiert. Durch den modularen Aufbau kann jeder beliebige Sprachsyntax beschrieben werden. Neben zahlreichen Visual Novel spezifischen Befehlen werden unter anderem auch bereits Unterprogramme, Schleifen und Conditions unterstützt.

IDE

Um eine Visual Novel auch im Browser erstellen zu können, bzw. um sich das Bearbeiten von Config-Files zu ersparen, ist eine In-Browser-IDE notwendig. Neben dem Steuern von Parser und Engine sind auch Projekt- und Usermanagement, File-browser, Image-editor, Up- und Download, Rechtemanagement, ein Editor sowie zahlreiche weitere Features vorhanden bzw. geplant.

API Dokumentation

Da der User eigene Module für Parser und Engine programmieren und einbinden kann, ist eine API-Dokumentation notwendig. Diese befindet sich derzeit noch in Planung.
Ziel ist es auch, die API in die IDE (und dadurch den Editor) zu integrieren, um eine bessere User Experience zu ermöglichen.

Java Webserver

JavaScript hat einige Limitierungen, was den Zugriff auf das Dateisystem betrifft. Um eine nützliche IDE anbieten zu können, ist ein eigener Java Webserver vorhanden, welcher dem Benutzer erlaubt, Features wie das Erstellen, Bearbeiten und Löschen von Dateien und Ordnern am Server zu verwenden. Dadurch ist es auch möglich, als größere Gruppe gemeinsam ein Spiel in Fave zu entwickeln.

Der Webserver stellt eine RESTful API zur Verfügung und beherrscht unter anderem eine Benutzer- und Rechteverwaltung.

Dark Space Conquest

Eines meiner aktuellen Projekte ist ein Multiplayer Spiel für PC und Android, dass ich mit 2 weiteren FH-Kollegen im Zuge eines FH Semesterprojekts entwickle. Zur Entwicklung verwenden wir dafür die Game Engine Unity, als Programmiersprache C#.

Meine Aufgabe bei diesem Projekt ist unter anderem die Netzwerkkommunikation, um das Spiel Multiplayer-fähig zu machen. Ein weiteres Aufgabenbebiet meinerseits ist die Umsetzung der Spielelogik.

Der Sourcecode des Spiels ist auf GitHub unter https://github.com/simonides/dark_space_conquest erreichbar.

Im Laufe des Projektes werde ich eine Spielbeschreibung und weitere Bilder online stellen.

4Wins

4Wins ist ein C++ Spiel, geschrieben mithilfe der Library sfml. Ich habe dabei die Spielelogik und die AI-Gegner geschrieben. Animationen wie das Partikelsystem stammen ebenfalls von mir.

Der Sourcecode des Spiels, sowie aktuelle Builds können auf GitHub unter https://github.com/simonides/4wins gefunden werden.

Durch Multithreading und Netzwerkkommunikation ist es möglich, AI's in anderen Programmiersprachen wie zB. C# oder Java zu schreiben, und anschließend mit 4Wins zu verknüpfen.

Forest Demo

Eine Wochenendbeschäftigung: Diese Demo zeigt die Implementierung eines Terrains mithilfe von Heightmaps sowie Billboards, Billboard clouds, Level of Detail und dem OpenGl Fog.

Downloads

Wer sich selbst ein Bild von meinen Spielen machen will, ist hier genau richtig.

Anmerkung: In den zip-Archiven befinden sich ausführbare Dateien, wodurch der Browser eventuell eine Warnung ausgeben kann. Aber keine Sorge, es handelt sich hierbei um keine Viren oder Malware und die Programme benötigen auch keine Installation.

Auf Wunsch kann ich auch den Source Code der neueren Spiele online stellen, oder die Repositories von aktuellen Projekten öffentlich zugänglich machen.

Hier klicken, um alle Programme herunter zu laden.